Игроки А и В записывают цифры 1 и 2. Игра состоит в том, что, кроме своей цифры каждый игрок записывает еще и ту цифру, которую по его мнению, записал соперник. Если оба игрока угадали или оба ошиблись, то партия заканчивается вничью; если же угадал только один, то он получает столько очков, какова сумма записанных им цифр.
Платежная матрица игры имеет вид:
|
B1(1;1) |
B2(1;2) |
B3(2;1) |
B4(2;2) |
A1(1;1) |
0 |
2 |
-3 |
0 |
A2(1;2) |
-2 |
0 |
0 |
3 |
A3(2;1) |
3 |
0 |
0 |
-4 |
A4(2;2) |
0 |
-3 |
4 |
0 |
С помощью статистического моделирования убедительно(!) подтвердите и проиллюстрируйте графиками, что оптимальные смешанные стратегии игроков описываются следующими законами распределения:
p*=[0 3/5 2/5 0] и q*=[0 3/5 2/5 0] Что можно сказать о цене игры?
Обратим внимание, что задача не имеет решения в чистых стратегиях. Нижняя цена игры (максмин) равна -2, а верхняя цена (минмакс) равна 2.
Проверим решение в смешанных стратегиях.
Сначала просто смоделируем случай игры без стратегии: рассмотрим результаты игры игрока А, состоящей из 1000 партий по 5 раундов
Теперь пусть p = p* = [0 3/5 2/5 0] и q = q* = [0 3/5 2/5 0] - оба игрока придерживаются стратегии (1,2) или (2,1), в итоге получили ничью.
График - прямая в 0.
Выберем случай, когда
q = [0 3/5 2/5 0] ;
p = [1/4 1/4 1/4 1/4];
Из графика видно, что игрок отклонившийся от оптимальной стратегии проигрывает.
Получаем вывод: Цена игры лежит в пределах от -2 до 2, а в смешанных стратегих существует оптимальная, приводящая к цене игры равной нулю.
Код:
q = [3/5 0 2/5 0];
p = [2/5 0 0 3/5];
test_q_and_p(q, p)
function [] = test_q_and_p(q,p)
myrand([0.5, 0.5]);
strategy = [[1, 1];
[1, 2];
[2, 1];
[2, 2]];
x = 1:1000;
res = zeros(length(x),1);
for i = x
for j = 1:5
res(i)=res(i)+game(strategy(myrand(q)+1,:),strategy(myrand(p)+1,:));
end
end
grid on; hold on;
plot(x, res)
disp(["Sum fail: ", sum(res)])
end
function res = game(A, B)
if A(2)==B(1) && B(2)==A(1)
res = 0;
elseif A(2)~=B(1) && B(2)~=A(1)
res = 0;
elseif A(2)==B(1) && B(2)~=A(1)
res = sum(A);
else
res = -sum(B);
end
end
function res = myrand(q)
res = sum(rand >= cumsum(q));
end
Проверьте, что платежная матрица этой игры для n=5 и С=100 имеет вид:
|
B1 |
B2 |
B3 |
B4 |
B5 |
A1 |
250 |
100 |
200 |
300 |
400 |
A2 |
400 |
200 |
100 |
200 |
300 |
A3 |
300 |
300 |
150 |
100 |
200 |
A4 |
200 |
200 |
200 |
100 |
100 |
A5 |
100 |
100 |
100 |
100 |
50 |
С помощью статистического моделирования убедительно(!) подтвердите и проиллюстрируйте графиками, что оптимальные смешанные стратегии игроков описываются следующими законами распределения:
p*=[3/7 0 2/7 2/7 0] и q*=[0 2/7 4/7 1/7 0] Что можно сказать о цене игры?
Обратим внимание, что задача не имеет решения в чистых стратегиях. Нижняя цена игры (максмин) равна 100, а верхняя цена (минмакс) равна 200.
Проверим решение в смешанных стратегиях.
Эмитируем доход фирмы А за 1000 сезонов по оптимальной стратегии:
Получаем средний доход:
"Avg: " "186.15"
Эмитируем доход фирмы А за 1000 сезонов по не оптимальной стратегии:
Получаем средний доход:
"Avg: " "160.15"
Отсюда вывод:
Данные в задании векторы вероятностей описывают оптимальную стратегию. Средняя цена игры равна 183, что принадлежит промежутку (100, 200). Любое отклонение от оптимальной стратегии приводит к уменьшению среднего выигрыша.
Код:
p = [3/7 0 2/7 0 2/7];
q = [0 2/7 4/7 1/7 0];
test_q_and_p_task2(p, q)
function [] = test_q_and_p_task2(q,p)
n=5; C=100;
matrix = zeros(5,5);
for i=1:5
for j=1:5
if i<j
matrix(i,j)=C*(j-i);
end
if i>j
matrix(i,j)=C*(n-i+1);
end
if i==j
matrix(i,j)=C*(n-j+1)/2;
end
end
end
x_max = 1000;
res = 1:x_max;
for i = 1:x_max
res(i) = matrix(myrand(q)+1, myrand(p) + 1);
end
grid on; hold on;
plot(1:x_max, res)
disp(["Avg: ", sum(res)/x_max])
end
function res = myrand(q)
res = sum(rand >= cumsum(q));
end
Проверьте Вашу платежную матрицу этой игры:
|
П1(6) |
П2(7) |
П3(8) |
A1(6) |
-45 |
-54 |
-64 |
A2(7) |
-52.5 |
-52.5 |
-62 |
A3(8) |
-60 |
-60 |
-60 |
Подтвердите статистическим моделированием верное решение арендатора.
В данной задаче не существует решение в чистых стратегиях. Нижняя цена игры равна -60 , а верхняя -45.
Код:
function [] = test_q_and_p_task3(q,p)
c=7.5;
S=[8.5, 9, 9.5];
N=[6,7,8];
matrix = zeros(3,3);
for i=1:3
for j=1:3
if i<j
matrix (i,j) = -c *N(i)-S(j)*(j-i);
else
matrix (i,j) = -c *N(i);
end
end
end
x_max = 1000;
res = 1:x_max;
for i = 1:x_max
res(i) = matrix(myrand(q)+1, myrand(p) + 1);
end
grid on; hold on;
plot(1:x_max, res)
disp(["Avg: ", sum(res)/x_max])
end
function res = myrand(q)
res = sum(rand >= cumsum(q));
end
Используя команду linprog решите следующие задачи линейного программирования(найти максимум и минимум целевой функции)для неотрицательных переменных х
1.
2.
3.
Используя графический метод решения задачи линейного программирования найдите решение и подтвердите ответы.
Усложните условия первых двух задач, преобразовав ограничения в виде ограничений равенств и смешанные (неравенства и равенства). Естественно размерность задачи возрастет.
Проделайте этот пункт с задачами, составленными Вашим соседом по компьютеру.
1)
Optimization terminated.
x =
1.0e-09 *
0.3018
0.5191
fv =
1.9435e-09
Ответ: fv = 0.
Optimization terminated.
x =
3.0000
2.0000
fv =
-13.0000
Ответ: fv = 13
2)
Optimization terminated.
x =
1.0e-09 *
0.5238
0.7896
fv =
2.1029e-09
Ответ: fv = 0.
Optimization terminated.
x =
1.4604
2.7698
fv =
-7.0000
Ответ: fv = 7
3)
Exiting: One or more of the residuals, duality gap, or total relative error
has stalled:
the dual appears to be infeasible (and the primal unbounded).
(The primal residual < TolFun=1.00e-08.)
x =
1.0e+16 *
0.0000
7.4273
fv =
-1.4855e+17
Ответ: Решений нет.
Optimization terminated.
x =
1.0000
0.0000
fv =
1.0000
Ответ: fv = 1