yinda_peng 发表于 2024-7-24 11:11:32

用零和博弈来思考田忌赛马

首先,什么是零和博弈?


零和博弈是一类特殊的博弈问题,在此类博弈中,只有两名局中人,每个局中人的策略为有限个,在任意纯局势下,两个局中人的赢得之和总是为零,即两者的利益争夺是十分激烈的。

设局中人I、II的策略集分别为SI={x1,...,xm}   SII={y1,..,yn}
当局中人I选定策略xi,局中人II选定策略yj后,就形成了一个局势(xi,yj),可见这样的局势共有m*n个。对任意一个局势,记局中人I的获益值为aij,得到获益矩阵如下:

由于博弈是零和的,是以局中人II的获益矩阵即为-A。


“田忌赛马”就是“零和博弈”,齐王所失即为田忌所得,只有两个局中人,策略集是有限的,可以采用零和博弈。
首先齐王和田忌可能的策略有A33 = 3!= 6 种,分别为“上中下”、“上下中”、“中上下”、“中下上”、“下上中”、“下中上”。
那么记齐王的策略集为S1={x1,...x6},田忌的策略集为S2={y1,...y6},则齐王的获益矩阵为:

并设齐王和田忌的最优混合策略分别为x* = *1...x*6]和y* = *1...y*6]。求x*和y*归结为求解如下两个的方程组:

其中x=1,...x6]T;U=T;y=1,...y6]T;V=T。实际上,这两者都有无穷多组解,前一个式子的解为:

对策值u=1。类似地,可以给出y的解。
因为方程组有无穷多解,其中的最小范数解为:xi = 1/6,i = 1,2,...6; yj = 1/6,j = 1,2,...6,u=v=1,即双方都以1/6的概率选取每个纯策略。或者说在6个纯策略中随机地选取一个即为最优策略。总的结局也是齐王赢得的期望值为一千两黄金。(每场输家给赢家一千两黄金)在原故事中,田忌之所以能赢,不外乎是事先知道了齐王选用的策略,也就是马出场的顺序,从而采取针对。
import numpy as np
import sympy as sp

A = np.array([,,,[-1,1,1,3,1,1],,],dtype = int)
Az1 = np.hstack()
Az2 = np.vstack(])
B = np.array([]).T
Az3 = np.hstack()
Az4 = sp.Matrix(Az3.astype(int))
s1 = Az4.rref()
s2 = np.linalg.pinv(Az2) @ B
print("行最简形:",s1)
print("最小范数解:",s2)

不二如是 发表于 2024-7-24 12:02:18

感谢分享
页: [1]
查看完整版本: 用零和博弈来思考田忌赛马