鱼C论坛

 找回密码
 立即注册
查看: 133|回复: 1

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

[复制链接]
发表于 2024-7-24 11:11:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  首先,什么是零和博弈?


  零和博弈是一类特殊的博弈问题,在此类博弈中,只有两名局中人,每个局中人的策略为有限个,在任意纯局势下,两个局中人的赢得之和总是为零,即两者的利益争夺是十分激烈的。
  
  设局中人I、II的策略集分别为SI={x1,...,xm}   SII={y1,..,yn}
当局中人I选定策略xi,局中人II选定策略yj后,就形成了一个局势(xi,yj),可见这样的局势共有m*n个。对任意一个局势,记局中人I的获益值为aij,得到获益矩阵如下:
QQ截图20240724102212.png

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



“田忌赛马”就是“零和博弈”,齐王所失即为田忌所得,只有两个局中人,策略集是有限的,可以采用零和博弈。

  首先齐王和田忌可能的策略有A33 = 3!= 6 种,分别为“上中下”、“上下中”、“中上下”、“中下上”、“下上中”、“下中上”。

那么记齐王的策略集为S1={x1,...x6},田忌的策略集为S2={y1,...y6},则齐王的获益矩阵为:

QQ截图20240724104321.png

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

QQ截图20240724105122.png

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

QQ截图20240724105830.png

对策值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([[3,1,1,1,-1],[1,3,1,1,-1,1],[1,-1,3,1,1,1],[-1,1,1,3,1,1],[1,1,-1,1,3,1],[1,1,1,-1,1,3]],dtype = int)
Az1 = np.hstack([A.T,-np.ones((6,1))])
Az2 = np.vstack([Az1,[1,1,1,1,1,1,0]])
B = np.array([[0,0,0,0,0,0,1]]).T
Az3 = np.hstack([Az2,B])
Az4 = sp.Matrix(Az3.astype(int))
s1 = Az4.rref()
s2 = np.linalg.pinv(Az2) @ B
print("行最简形:",s1[0])
print("最小范数解:",s2)

评分

参与人数 2荣誉 +3 鱼币 +4 贡献 +3 收起 理由
Lynn_oyl + 1 + 1 鱼C有你更精彩^_^
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-24 12:02:18 | 显示全部楼层
感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-8 09:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表