1.3. Матричные игры с нулевой суммой

Будем рассматривать игры, в которых у каждого из двух игроков А и В конечное число возможных действий – чистых стратегий. Допустим, что игрок А располагает набором из m чистых стратегий А1, ….Am, а игрок В набором из n чистых стратегий B1, …, Bn. Чтобы математическая модель игры была полностью определена, необходимо указать правило, сопоставляющее каждой паре чистых стратегий Ai и Bj число aij – выигрыш игрока А за счет игрока В. Будем рассматривать парные игры с нулевой суммой, в которых выигрыш одного игрока равен проигрышу другого. При aij < 0 игрок А платит игроку В сумму равную |aij|. Если игра состоит только из личных ходов, то выбор пары чистых стратегий (Ai, Bj) однозначно определяет исход (результат) игры. Если известны все значения aij, то их можно свести в прямоугольную матрицу (aij)i=1,m j=1,n размера mxn, которая называется платежной матрицей игры (она является табличной записью функции выигрыша).

А =

В теории матричных игр всегда предполагается, что в платежной матрице записаны выигрыши игрока А. Естественно среди aij могут находиться и отрицательные числа, что фактически означает проигрыш игрока А и выигрыш игрока В.

Пример 1. Игроки А и В записывают цифры 1 и 2. Игра состоит в том, что, кроме своей цифры каждый игрок записывает еще и ту цифру, которую по его мнению, записал соперник. Если оба игрока угадали или оба ошиблись, то партия заканчивается вничью; если же угадал только один, то он получает столько очков, какова сумма записанных им цифр.

Решение. Составим платежную матрицу этой игры. Возможные стратегии для игроков запишем, указывая в скобках для каждой чистой стратегии игрока на первом месте задуманную им цифру, после запятой предполагаемую цифру противника: А1(1,1) А2(1,2) А3(2,1) А4(2,2) В1(1,1) В2(1,2) В3(2,1) В4(2,2). По указанным правилам легко вычислить элементы платежной матрицы:

0 2 -3 0
-2 0 0 3
3 0 0 -4
0 -3 4 0

Эту игру легко реализовать в MATLAB, поручив программе определять выигрыши. Разобьемся на пары. Вводим нулевой начальный выигрыш каждого >>AV=0;BV=0; Игрок А набирает в командной строке >>A=[i j]; (i, j – единица или двойка по его выбору) и clc чтобы скрыть ввод, затем игрок В набирает в командной строке >>B=[i j];sud, вызывая «программу арбитра». Здесь sud имя m-файла “судьи”, содержащего, например, следующие строки кода:

If A(2)==B(1) & B(2)==A(1)

Break

Elseif A(2)~=B(1) & B(2)~=A(1)

Break

Elseif A(2)==B(1) & B(2)~=A(1)

AV=AV+sum(A);

Else

BV=BV+sum(B);

End

%[AV BV]

В результате нескольких реализаций этой игры можно вызвать промежуточный результат игры, набрав команду >>[AV BV].

© 2011-2024 Контрольные работы по математике и другим предметам!