бесплатно рефераты

бесплатно рефераты

 
 
бесплатно рефераты бесплатно рефераты

Меню

Методы приближённого решения матричных игр бесплатно рефераты

1, если применит свою 2-ю стратегию;

2, если применит свою 3-ю стратегию.

         Поскольку он желает проиграть как можно меньше, то в ответ применит свою 2-ю стратегию.

Тогда первый игрок получит выигрыш равный 3, 1, 0 соответственно при своих 1-й, 2-й, 3-й стратегиях, а его  суммарный выигрыш за две партии составит:

0+3=3 при его 1-й стратегии;

4+1=5 при его 2-й стратегии;

2+0=2 при его 3-й стратегии.

         Из всех суммарных выигрышей наибольшим является 5, который получается при 2-й стратегии игрока 1. Значит, в этой партии он должен выбрать именно эту стратегию.

         При 1-й стратегии игрока 1 игрок 2 проигрывает 4, 1, 2 соответственно 1-й, 2-й, 3-й его стратегиям, а суммарный проигрыш за обе партии составит:

4+4=8 при его 1-й стратегии;

1+1=2 при его 2-й стратегии;

2+2=4 при его 3-й стратегии.

Все полученные данные занесём в таблицу. В столбец u ставится наибольший суммарный выигрыш игрока 1 за две партии, деленный на число партий, т. е. 5/2; в столбец w ставится наименьший суммарный проигрыш игрока 2, деленный на число партий, т. е. 2/2; в столбец n ставится среднее арифметическое этих значений, т. е. 7/2.


но-мер

пар

тии

стратегия

второго

игрока

выигрыш игрока 1 при его стратегиях

стратегия

первого

игрока

проигрыш игрока 2

при его стратегиях

 u

 w

n

  1

  2

  3

  1

  2

  3

1

2

    1

    2

  0

   3

  4

  5

  2

  2

    2

    2

  4

  8

  1

  2

  2

  4

 4

5/2

 1

2/2 

 5/2

 7/2


         В третьей партии игрок 2 выбирает свою 2-ю стратегию, так как из всех суммарных проигрышей наименьшим является 2.

 Таким образом, продолжая этот процесс далее, составим таблицу разыгрываний  игры за 20 итераций (партий).



но-мер

пар

тии

Страте-

гия

второго

игрока

выигрыш игрока 1 при его стратегиях

Страте-

гия

первого

игрока

проигрыш игрока 2

при его стратегиях

 u

 w

n

  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), n=1,57.


Такой итеративный процесс ведёт игроков к цели медленно. Часто для получения оптимальных стратегий, дающих игрокам выигрыш, приходится проделывать сотни итераций. При этом скорость сходимости заметно ухудшается с ростом размерности матрицы и ростом числа стратегий игроков. Это также является следствием не монотонности последовательностей и . Поэтому, практическая ценность этого метода имеет место, когда вычисления проводятся на достаточно быстродействующих вычислительных машинах. Но наряду с таким недостатком можно выделить и достоинства метода итераций:

1.     Этот метод даёт возможность найти ориентировочное значение цены игры и приближённо вычислить оптимальные стратегии игроков.

2.     Сложность и объём вычислений сравнительно слабо возрастают по мере увеличения числа стратегий игроков (m  и n).

         Для рассмотренного алгоритма приведена реализация на языке Pascal (см. приложение).






§3. Монотонный итеративный алгоритм решения матричных игр

Предлагаемый для рассмотрения алгоритм реализуется только для одного игрока в отличие от первого, который работает для двух игроков. Алгоритм позволяет находить точно и приближенно оптимальную стратегию игрока 1 и значение цены игры  n. С помощью алгоритма можно   получить заданную  точность решения, причём число шагов, необходимых для достижения результатов, слабо зависит от размерности матрицы выигрышей.

Особенность этого алгоритма в способности генерировать строго монотонно возрастающую последовательность оценок цены игры, что не свойственно ранее предлагаемому алгоритму.

Рассмотрим смешанное расширение =(X,Y,K) матричной игры ГА с матрицей А размера (m´n). Процесс разыгрывания игры состоит из нескольких шагов. Пусть каждый из игроков имеет конечное число стратегий.

 Введём следующие обозначения:

   аi – i-я строка матрицы выигрышей;

   xN=(x1N,x2N,…,xmN) ÎX – m-мерный вектор,  приближение  оптимальной стратеги первого игрока на N-шаге (N-номер шага);

  cN=() –n-мерный вектор, определяющий средний накопленный выигрыш на N-шаге. 

Зададим начальные условия. Пусть на 0-шаге с0=, x0=(0,…, 1,…, 0), где 1 занимает i0-ю позицию.

Определим итеративный процесс  следующим образом: по известным векторам xN-1, cN-1   находим векторы   xN и cN , которые вычисляются по следующим формулам:


где параметр 0£eN£1, а векторы     вводятся далее.

         Как отмечалось, вектор сN определяет средний накопленный выигрыш игрока 1 на N шаге. Компоненты этого вектора – это числа. В худшем случае игрок 1 может получить минимальное из этих чисел. Примем его за нижнюю оценку цену игры, которую обозначим:

                                                    .                   (4)

Запомним множество  индексов JN-1=(), (k<n), на которых   будет достигается этот минимум, т. е.

.

Далее рассмотрим подыгру  ГN игры   ГА с матрицей выигрышей АN={}, i=1,…,m, jN-1ÎJN-1. Матрица выигрышей состоит из столбцов данной матрицы, номера которых определяются множеством индексов JN-1. В этой подыгре ГN находим одну из оптимальных смешанных стратегий игрока 1:  .

После нахождения , находим вектор  по правилу:

.

          И рассмотрим игру (2´n), в которой у игрока 1 две чистые стратегии, а у игрока 2 – n чистых стратегий. Эта игра задаётся матрицей , решая которую, находим вероятность использования игроком 1 своей стратегии. Это даёт нам коэффициент eN.

Далее вычисляем xN, сN и переходим к следующему шагу. Процесс продолжаем до тех пор, пока не выполнится равенство eN=0, потому что по теореме о минимаксе , а их равенство (что и нужно) достигается в этом случае, или пока не будет достигнута требуемая точность вычислений.

Сходимость алгоритма гарантируется теоремой.

Теорема. Пусть  {xN}, {nN} – последовательности, определяемые равенствами (3), (4) . Тогда справедливы следующие утверждения:

1.      т. е. последовательность {nN-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. Найдём e1. Для этого рассмотрим подыгру (2´3) с матрицей .  Решая матрицу графическим способом, получаем, что e1=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. Так как e1 не равно 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. Вычислим коэффициент e2. Для этого решим подыгру (2´3):. Стратегии игроков совпадают, поэтому e2=0. В этом случае цена игры совпадает со своим нижним значением, т. е..  Возвращаемся к предыдущему шагу.

Итак, оптимальной стратегией игрока 1 является x*=x1=(1/2, 1/2, 0) и .Задача решена.

           На первый взгляд алгоритм практически трудно реализовать, так как не известно, какого размера будет получена матрица для подыгры ГN. Но на самом деле с вероятностью 1 на каждом шаге придётся решать подыгру размера не больше чем m´2.[9]

           Инженерами-программистами алгоритм был реализован на языке программирования Фортран-IV. Вычислительные эксперименты, проведённые на ЭЦВМ ЕС-1030, показали,  что для игр размерности от 25´25 до 100´100, элементы, матрицы выигрышей которых были заполнены случайными числами, алгоритм позволяет найти искомое приближение за 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];{формирование матрицы выигрышей 1 игр.}

write(win_one[a,i]:4);

end;

st1:=igr_one;                                             {определение ответной стратегии 2 игр.}

gotoxy(32,wherey);

write(st1:10,'    ');

for i:=1 to n do begin

win_two[a,i]:=matr[st1,i]+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;

a:=a+1;                                                        {увеличение счетчика итераций}

writeln;

until a=kl+1;

end;

readln;

readln;

end.



 Список литературы


1.     Беленький В.З. Итеративные методы в теории игр и программировании. М.: «Наука», 1977

2.     Блекуэлл Д.А. Теория игр и статистических решений. М., Изд. иностранной литературы, 1958

3.     Вентцель Е.С. Элементы теории игр. М., Физматгиз, 1961

4.     Вилкас Э.И. Оптимальность в играх и решениях. М.: «Наука», 1986

5.     Воробьёв И.Н. Математическая теория игр. М.: «Знание», 1976

6.     Давыдов Э.Г. Методы и модели теории антагонистических игр. М.: «Высшая школа», 1990

7.     Дрешер М. Стратегические игры. Теория и приложения. М., 1964

8.     Исследование операций в экономике / Н.Ш. Кремер, Б.А. Путко, И.М. Тришин, М.Н. Фридман. М.: «Банки и биржи», Юнити, 1997

9.     Итеративный алгоритм решения матричных игр// Доклады Академии наук СССР, том 238, №3, 1978

10.  Карлин С. Математические методы в теории игр, программировании и экономике. М.: «Мир», 1964

11. Крапивин В.Ф. Теоретико-игровые методы синтеза сложных систем в конфликтных ситуациях. М.: «Советское радио», 1972

12. Крушевский А.В. Теория игр: [Учебное пособие для вузов]. Киев: «Вища школа», 1977

13. Льюис Р., Райфа Х. Игры и решения. М.,1961

14. Морозов В.В., Старёв А.Г., Фёдоров В.В. Исследование операций в задачах и упражнениях. М.: «Высшая школа», 1996

15. Матричные игры. [Сборник переводов]. Под ред. Воробьёва И.Н. М., Физматгиз, 1961

16. Оуэн Г. Теория игр. [Учебное пособие]. М.: «Мир», 1973

17. Петросян Л.А., Зенкевич Н.А., Семен Е.А. Теория игр. М., 1989

18.                        Школьная энциклопедия математика. Ред. С. М. Никольский, М.: 1996, с. 380


Страницы: 1, 2