3
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ
Математический факультет
Кафедра алгебры и геометрии
Выпускная квалификационная работа
Методы приближённого решения матричных игр
Выполнила студентка V курса
математического факультета
Ветошкина Е. Н.
______________ /подпись/
Научный руководитель:
к. ф.-м. н., доцент, Ковязина Е. М.
______________ /подпись/
Рецензент:
к. ф.-м. н., доцент, Караулов В.М.
______________ /подпись/
Допущена к защите в ГАК
Зав. кафедрой __________________ Вечтомов Е. М.
«___» __________ 2003 г.
Декан факультета _______________ Варанкина В. И.
«___» __________ 2003 г.
Киров
2003
СОДЕРЖАНИЕ
Введение………………………………………………………………………3
§1. Основные понятия………………………………………………………5
§2. Итеративный метод Брауна-Робинсона……………………………...10
§3. Монотонный итеративный алгоритм решения матричных игр…16
но-мерпартии |
стратегиявторогоигрока |
выигрыш игрока 1 при его стратегиях |
стратегияпервогоигрока |
проигрыш игрока 2при его стратегиях |
||||||||
1 |
2 |
3 |
1 |
2 |
3 |
|||||||
1 |
1 |
0 |
4 |
2 |
2 |
4 |
1 |
2 |
4 |
1 |
5/2 |
|
но-мерпартии |
стратегиявторогоигрока |
выигрыш игрока 1 при его стратегиях |
стратегияпервогоигрока |
проигрыш игрока 2при его стратегиях |
||||||||
1 |
2 |
3 |
1 |
2 |
3 |
|||||||
12 |
12 |
03 |
45 |
22 |
22 |
48 |
12 |
24 |
45/2 |
12/2 |
5/27/2 |
|
В третьей партии игрок 2 выбирает свою 2-ю стратегию, так как из всех суммарных проигрышей наименьшим является 2.
Таким образом, продолжая этот процесс далее, составим таблицу разыгрываний игры за 20 итераций (партий).
но-мер пар тии |
Страте- гия второго игрока |
выигрыш игрока 1 при его стратегиях |
Страте- гия первого игрока |
проигрыш игрока 2 при его стратегиях |
||||||||
1 |
2 |
3 |
1 |
2 |
3 |
|||||||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
1 2 2 2 3 3 1 3 3 3 3 3 2 2 2 2 2 2 2 3 |
0 3 6 9 10 11 11 12 13 14 15 16 19 22 25 28 31 34 37 38 |
4 5 6 7 9 11 15 17 19 21 23 25 26 27 27 29 30 31 32 34 |
2 2 2 2 5 8 10 13 16 19 22 25 25 25 25 25 25 25 25 28 |
2 2 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 |
4 8 8 8 8 8 12 16 20 24 28 32 36 40 44 48 48 48 48 48 |
1 2 5 8 11 14 15 16 17 18 19 20 21 22 23 24 27 30 33 36 |
2 4 5 6 7 8 10 12 14 16 18 20 22 24 26 28 29 30 31 32 |
4 5/2 6/3 9/4 10/5 11/6 15/7 17/8 19/9 21/10 23/11 25/12 26/13 27/14 27/15 29/16 31/17 34/18 37/19 38/20 |
1 2/2 5/3 6/4 7/5 8/6 10/7 12/8 14/9 16/10 18/11 20/12 21/13 22/14 23/15 24/16 27/17 30/18 31/19 32/20 |
5/2 7/2 11/6 15/8 17/10 19/12 25/14 27/16 33/18 37/20 41/22 45/24 47/26 49/28 50/30 53/32 58/34 64/36 68/38 70/40 |
|
Из таблицы видно, что в 20-ти проигранных партиях стратегии 1, 2, 3 для второго игрока встречаются соответственно 2, 10, 8 раз, следовательно, их относительные частоты равны 2/20, 10/20, 8/20. Стратегии 1, 2, 3 для игрока 1 встречаются соответственно 8, 12, 0 раз, следовательно, их относительные частоты равны 8/20, 12/20, 0, а приближённое значение цены игры равно 70/40.
Таким образом, получили приближённое решение игры: x20=(1/10, 1/2, 2/5), y20=(2/5, 3/5, 0), =1,57.
Такой итеративный процесс ведёт игроков к цели медленно. Часто для получения оптимальных стратегий, дающих игрокам выигрыш, приходится проделывать сотни итераций. При этом скорость сходимости заметно ухудшается с ростом размерности матрицы и ростом числа стратегий игроков. Это также является следствием не монотонности последовательностей и . Поэтому, практическая ценность этого метода имеет место, когда вычисления проводятся на достаточно быстродействующих вычислительных машинах. Но наряду с таким недостатком можно выделить и достоинства метода итераций:
1. Этот метод даёт возможность найти ориентировочное значение цены игры и приближённо вычислить оптимальные стратегии игроков.
2. Сложность и объём вычислений сравнительно слабо возрастают по мере увеличения числа стратегий игроков (m и n).
Для рассмотренного алгоритма приведена реализация на языке Pascal (см. приложение).
§3. Монотонный итеративный алгоритм решения матричных игр
Предлагаемый для рассмотрения алгоритм реализуется только для одного игрока в отличие от первого, который работает для двух игроков. Алгоритм позволяет находить точно и приближенно оптимальную стратегию игрока 1 и значение цены игры . С помощью алгоритма можно получить заданную точность решения, причём число шагов, необходимых для достижения результатов, слабо зависит от размерности матрицы выигрышей.
Особенность этого алгоритма в способности генерировать строго монотонно возрастающую последовательность оценок цены игры, что не свойственно ранее предлагаемому алгоритму.
Рассмотрим смешанное расширение =(X,Y,K) матричной игры ГА с матрицей А размера (mn). Процесс разыгрывания игры состоит из нескольких шагов. Пусть каждый из игроков имеет конечное число стратегий.
Введём следующие обозначения:
аi - i-я строка матрицы выигрышей;
xN=(1N,2N,…,mN) X - m-мерный вектор, приближение оптимальной стратеги первого игрока на N-шаге (N-номер шага);
cN=() -n-мерный вектор, определяющий средний накопленный выигрыш на N-шаге.
Зададим начальные условия. Пусть на 0-шаге с0=, x0=(0,…, 1,…, 0), где 1 занимает i0-ю позицию.
Определим итеративный процесс следующим образом: по известным векторам xN-1, cN-1 находим векторы xN и cN , которые вычисляются по следующим формулам:
где параметр 0N1, а векторы вводятся далее.
Как отмечалось, вектор сN определяет средний накопленный выигрыш игрока 1 на N шаге. Компоненты этого вектора - это числа. В худшем случае игрок 1 может получить минимальное из этих чисел. Примем его за нижнюю оценку цену игры, которую обозначим:
. (4)
Запомним множество индексов JN-1=(), (k<n), на которых будет достигается этот минимум, т. е.
.
Далее рассмотрим подыгру ГN игры ГА с матрицей выигрышей АN={}, i=1,…,m, jN-1JN-1. Матрица выигрышей состоит из столбцов данной матрицы, номера которых определяются множеством индексов JN-1. В этой подыгре ГN находим одну из оптимальных смешанных стратегий игрока 1: .
После нахождения , находим вектор по правилу:
.
И рассмотрим игру (2n), в которой у игрока 1 две чистые стратегии, а у игрока 2 - n чистых стратегий. Эта игра задаётся матрицей , решая которую, находим вероятность использования игроком 1 своей стратегии. Это даёт нам коэффициент N.
Далее вычисляем xN, сN и переходим к следующему шагу. Процесс продолжаем до тех пор, пока не выполнится равенство N=0, потому что по теореме о минимаксе , а их равенство (что и нужно) достигается в этом случае, или пока не будет достигнута требуемая точность вычислений.
Сходимость алгоритма гарантируется теоремой.
Теорема. Пусть {xN}, {N} - последовательности, определяемые равенствами (3), (4) . Тогда справедливы следующие утверждения:
1. т. е. последовательность {N-1} строго монотонно возрастает.
2.
3. , где x*X* - оптимальная стратегия игрока 1.
Доказательства этой теоремы достаточно рутинно. Его можно посмотреть в [15].
Рассмотрим применение этого алгоритма к решению конкретной задачи.
Пример. Решить игру с матрицей А=.
Итерация 0. 1. Пусть игрок 1 выбрал свою 1-ю стратегию, т. е. А0=[0, 1, 2]. Тогда за начальные условия примем следующие: x0=(1, 0, 0) - приближение оптимальной стратегии игрока 1; c0=a1=(0, 1, 2) - возможный выигрыш игрока 1.
Найдём множество индексов , на которых игрок 1 может получить, в худшем случае, наименьший выигрыш: , значит множество индексов J0={1}. Для этого индекса выигрыш равен 0. Это есть значение нижней оценки цены игры, т. е. .
2. На этом шаге определим, пользуясь начальными значениями, компоненты векторов . Для этого рассмотрим подыгру . Для этой подыгры оптимальной стратегией игрока 1 будет его 2-ая стратегия, так как она принесёт ему наибольший выигрыш.
Обозначим её через : =(0, 1, 0). Зная , можем вычислить =0а1+1а2+0а3=а2=(4, 2, 1).
3. Найдём 1. Для этого рассмотрим подыгру (23) с матрицей . Решая матрицу графическим способом, получаем, что 1=1/2.
4. Проведённые вычисления позволяют найти значения векторов x1, c1:
x1=1/2x0+1/2 =1/2(1, 0, 0)+1/2(0, 1, 0)=(1/2, 1/2, 0);
c1=1/2c0+1/2 =1/2(0, 1, 2)+1/2(4, 2, 1)=(2, 3/2, 3/2).
Итерация 1. Так как 1 не равно 0, то процесс продолжается дальше. Теперь за начальные условия примем найденные значения векторов x1, c1. С их помощью вычисляем , которые с большей точностью будут близки к истинным оптимальным стратегиям игрока 1.
1. Итак, пусть x1=(1/2, 1/2, 0), c1=(2, 3/2, 3/2).
Найдём множество индексов , на которых игрок 1 может получить наименьший выигрыш: , значит, J1={2,3}. Для этих индексов выигрыш равен 3/2. Это есть значение нижней оценки цены игры, т. е. . Заметим, что .
2. Далее найдём компоненты векторов . Для этого рассмотрим подыгру . В силу симметричности матрицы ее решением будет вектор (1/2, 1/2), т. е. 1/2a1+1/2a2+0a3=
=(4/2, 3/2, 3/2).
3. Вычислим коэффициент 2. Для этого решим подыгру (23):. Стратегии игроков совпадают, поэтому 2=0. В этом случае цена игры совпадает со своим нижним значением, т. е.. Возвращаемся к предыдущему шагу.
Итак, оптимальной стратегией игрока 1 является x*=x1=(1/2, 1/2, 0) и .Задача решена.
На первый взгляд алгоритм практически трудно реализовать, так как не известно, какого размера будет получена матрица для подыгры ГN. Но на самом деле с вероятностью 1 на каждом шаге придётся решать подыгру размера не больше чем m2.[9]
Инженерами-программистами алгоритм был реализован на языке программирования Фортран-IV. Вычислительные эксперименты, проведённые на ЭЦВМ ЕС-1030, показали, что для игр размерности от 2525 до 100100, элементы, матрицы выигрышей которых были заполнены случайными числами, алгоритм позволяет найти искомое приближение за 100-1000 итераций, причём их число слабо зависит от размера матрицы. Для решения одной задачи машина затрачивает не дольше 8 минут. Ими же были разработаны различные модификации алгоритма. [9]
Приложение
В приложении приведена реализация итеративного метода Брауна-Робинсона решения матричных игр на языке программирования Turbo Pascal 7.0.
Пользователь вводит матрицу выигрышей размера mЧn, где m?3, n?3.
Далее машина запрашивает информацию о том, кто из игроков начинает игру, какую стратегию он выбирает и количество итераций.
На дисплее выводится таблица разыгрываний игры за определённое число итераций.
program br;
uses crt;
const matr1:array[1..3,1..3] of byte=((0,4,2),
(3,1,0),
(1,2,3)); {Начальная матрица}
var
matr:array [1..10,1..10] of integer; {Матрица, введенная пользователем}
win_one:array[0..150,1..10] of word; {Массив для выигрышей игр.1}
win_two:array[0..150,1..10] of word; {Массив для выигрышей игр.2}
max,min:integer;
a,i,j,m,n,pl,st,st1,st2,kl:byte;
nol,otr:boolean;
function igr_one:byte; {Функция определения следующего}
var a1,a2,max:integer; {хода для игрока 1}
begin
max:=win_one[a,1];
igr_one:=1;
if pl=1 then a2:=m else a2:=n;
for a1:=1 to a2 do if win_one[a,a1]>max then begin
max:=win_one[a,a1];
igr_one:=a1;
end;
end;
function igr_two:byte; {Функция определения следующего}
var a1,a2,min:integer; {хода для игрока 2}
begin
min:=win_two[a,1];
igr_two:=1;
if pl=1 then a2:=n else a2:=m;
for a1:=1 to a2 do if win_two[a,a1]<min then begin
min:=win_two[a,a1];
igr_two:=a1;
end;
end;
begin
clrscr;
writeln (Итеративный метод Брауна-Робинсона.);
writeln(Матрица пользователя? (y/n));
if (readkey=y)or(readkey=Y) then begin {Матрица из памяти или вводит пользователь}
write (Введите размеры матрицы:);
readln(n,m); {Ввод количества строк и столбцов}
writeln(Введите ,n, строки по ,m, элементов:);
nol:=true;
otr:=false;
min:=0;
for j:=1 to n do for i:=1 to m do begin {Ввод элементов матрицы}
read(matr[i,j]);
if matr[i,j]<>0 then nol:=false; {Установка флага, что не все элементы равны 0}
if matr[i,j]<0 then otr:=true; {Установка флага наличия отрицательных элементов}
if matr[i,j]<min then min:=matr[i,j];{Определение минимального элемента}
end
end else begin {Иначе берем матрицу из константы}
n:=3;m:=3;
for i:=1 to m do for j:=1 to n do matr[i,j]:=matr1[i,j];
end;
clrscr;
writeln (Итеративный метод Брауна-Робинсона.);
if nol then writeln(Все элементы матрицы равны 0!) else begin {если установлен флаг нуля, то алгоритм не работает}
if otr then for j:=1 to n do for i:=1 to m do matr[i,j]:=matr[i,j]-min;{если есть отрицательные элементы,}
writeln(Начальная матрица:); {Вывод окончательной матрицы}
for j:=1 to n do begin
for i:=1 to m do write(matr[i,j]:4);
writeln;
end;
write(Какой игрок начнет игру? ); {Вод стартовых значений}
readln(pl);
write(Какую стратегию выберет ,pl, игрок? );
readln(st);
write(Количество итераций? );
readln(kl);
a:=1; {заглавие таблицы}
writeln( № стр. выигрыш 1-го игр. стр. выигрыш 2-го игр. V W Y);
repeat
write(a:2,st:6, ); {формирование таблицы: номер итерации, стратегия 1игр.}
if pl=2 then begin
for i:=1 to n do begin
win_one[a,i]:=matr[st,i]+win_one[a-1,i];{формирование матрицы выигрышей 1 игр.}
write(win_one[a,i]:4); {вывод на экран}
end;
st1:=igr_one; {определение ответной стратегии 2 игр.}
gotoxy(32,wherey);
write(st1:10, ); {вывод на экран}
for i:=1 to m do begin
win_two[a,i]:=matr[i,st1]+win_two[a-1,i]; {формирование матрицы выигрышей 2 игр.}
write(win_two[a,i]:4); {вывод на экран}
end;
gotoxy(64,wherey);
write(win_one[a,st1]:4); {вывод наибольшего суммарного выигрыша 1 игр.}
st:=igr_two; {определение ответной стратегии 1 игр.}
write(win_two[a,st]:4); {вывод наибольшего суммарного выигрыша 2 игр.}
write((win_one[a,st1]+win_two[a,st])/(a*2):6:2);{приближенное значение цены игры}
end
else
begin
for i:=1 to m do begin
win_one[a,i]:=matr[i,st]+win_one[a-1,i];{формирование матрицы
! | Как писать дипломную работу Инструкция и советы по написанию качественной дипломной работы. |
! | Структура дипломной работы Сколько глав должно быть в работе, что должен содержать каждый из разделов. |
! | Оформление дипломных работ Требования к оформлению дипломных работ по ГОСТ. Основные методические указания. |
! | Источники для написания Что можно использовать в качестве источника для дипломной работы, а от чего лучше отказаться. |
! | Скачивание бесплатных работ Подводные камни и проблемы возникающие при сдаче бесплатно скачанной и не переработанной работы. |
! | Особенности дипломных проектов Чем отличается дипломный проект от дипломной работы. Описание особенностей. |
→ | по экономике Для студентов экономических специальностей. |
→ | по праву Для студентов юридических специальностей. |
→ | по педагогике Для студентов педагогических специальностей. |
→ | по психологии Для студентов специальностей связанных с психологией. |
→ | технических дипломов Для студентов технических специальностей. |
→ | выпускная работа бакалавра Требование к выпускной работе бакалавра. Как правило сдается на 4 курсе института. |
→ | магистерская диссертация Требования к магистерским диссертациям. Как правило сдается на 5,6 курсе обучения. |
Дипломная работа | Формирование устных вычислительных навыков пятиклассников при изучении темы "Десятичные дроби" |
Дипломная работа | Технологии работы социального педагога с многодетной семьей |
Дипломная работа | Человеко-машинный интерфейс, разработка эргономичного интерфейса |
Дипломная работа | Организация туристско-экскурсионной деятельности на т/к "Русский стиль" Солонешенского района Алтайского края |
Дипломная работа | Разработка мероприятий по повышению эффективности коммерческой деятельности предприятия |
Дипломная работа | Совершенствование системы аттестации персонала предприятия на примере офиса продаж ОАО "МТС" |
Дипломная работа | Разработка системы менеджмента качества на предприятии |
Дипломная работа | Организация учета и контроля на предприятиях жилищно-коммунального хозяйства |
Дипломная работа | ЭКСПРЕСС-АНАЛИЗ ФИНАНСОВОГО СОСТОЯНИЯ ООО «АКТ «ФАРТОВ» |
Дипломная работа | Психическая коммуникация |