Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции рогов / Рогов_Лекция 9_игры

.doc
Скачиваний:
26
Добавлен:
10.02.2015
Размер:
108.54 Кб
Скачать

Лекция 9. Общие методы решения игр размера m*n

Решение игры размера m×n с помощью линейного программирования

В общем случае игра размера m×n не имеет геометрической интерпретации, и для нее нет аналитического решения. Однако теория игр тесно связана с линейным программированием. Любая конечная игра с нулевой суммой может быть представлена в виде задачи линейного программирования и, наоборот, любая задача линейного программирования может быть представлена как конечная игра. Первым установил эту связь американский математик Д. Нейман. Покажем, как свести решение игры размера m×n к решению задачи линейного программирования.

Пусть игра задана платежной матрицей A:

A = , i = 1, 2, …, m; j = 1, 2, …, n.

Можно считать, что цена игры V > 0; этого можно добиться, увеличив все элементы матрицы A на достаточно большое положительное число k. При этом преобразовании матрицы A цена игры также увеличится на k. Оптимальная стратегия первого игрока , =1, обеспечивает ему средний выигрыш, не меньший, чем цена игры V, при любой чистой j = 1, 2, …, n стратегии второго игрока, поэтому получаем систему n линейных неравенств:

(1)

Разделим каждое из неравенств на число > 0 и введем новые переменные , определяемые по формуле:

Так как = 1, то = . Система (1) примет вид:

(3)

Цель первого игрока – максимизировать свой выигрыш, т.е. цену игры V. Это эквивалентно тому, что ему требуется минимизировать величину

=. Тогда задачу первого игрока можно сформулировать так: найти неотрицательные значения переменных , удовлетворяющие системе линейных неравенств (3), при которых линейная функция z = принимает минимальное значение. Мы получили задачу линейного программирования. Решив ее симплекс – методом, перейдем, используя формулы (2), к старым переменным и получим оптимальную стратегию первого игрока и цену игры V.

Для определения оптимальной стратегии второго игрока:

, =1,

следует учесть, что она обеспечивает ему средний проигрыш не больший, чем цена игры V, при любой чистой i = 1, 2, …, m стратегии первого игрока, поэтому получаем систему m линейных неравенств:

(4)

Разделим каждое из неравенств на число V > 0 и введем новые переменные , определяемые по формуле:

Так как =1, то = . Система (4) примет вид:

(6)

Цель второго игрока – минимизировать свой проигрыш, т.е. цену игры V. Это эквивалентно тому, что ему требуется максимизировать величину =. Тогда задачу второго игрока можно сформулировать так: найти неотрицательные значения переменных , удовлетворяющие системе линейных неравенств (6), при которых линейная функция f = принимает минимальное значение. Мы снова получили задачу линейного программирования. Решив ее симплекс – методом, перейдем, используя формулы (5), к старым переменным и получим оптимальную стратегию второго игрока.

Отметим, что задача для второго игрока с системой ограничений (6) является двойственной к задаче первого игрока с системой ограничений (3).

Пример 4. Найти решение игры с платежной матрицей

A =

Для решения игры применим систему компьютерной алгебры Maple. Подключим модуль simplex, зададим систему неравенств (3) под именем sn, определим функцию z = t1+t2+t3 и найдем оптимальное решение задачи линейного программирования с помощью стандартной функции mininmize:

> with(simplex);

>sn:={7*t1+6*t2+5*t3>=1, 6*t1+7*t2+8*t3>=1, 7*t1+9*t2+4*t3>=1,

5*t1+8*t2+6*t3>=1};

> z:=t1+t2+t3;

> minimize(z, sn, NONNEGATIVE); {t3 = 0, t2 = 1/13, t1 = 1/13}

Так как t1+ t2 + t3 = 2/13 =, то цена игры V = 6,5 и, используя формулу (2), находим : t1*V = 0,5, t2*V = 0,5, 0.

Для вычисления оптимальной стратегии второго игрока, снова применим Maple, задавая систему (6) под именем cn и максимизируя функцию f = z1+z2+z3+z4:

> with(simplex);

>cn:={7*z1+6*z2+7*z3+5*z4<=1, 6*z1+7*z2+9*z3+8*z4<=1,

5*z1+8*z2+4*z3+6*z4<=1};

> f:=z1+z2+z3+z4;

> maximize(f, cn, NONNEGAT IVE}; {z2 =1/13, z1 =1/13, z4 = 0, z3 = 0}

Так как цена игры V = 6,5, то, используя формулу (5), находим:

z1*V = 0,5, t2*V = 0,5, 0, 0.