原理

纳什均衡

概念:player(玩家),strategy(策略),payoff(收益)
纳什均衡:每个玩家在当前策略下的收益都达到了最优,任一玩家改变自己的策略不会使自己的收益升高

纯策略

  • 纯策略:完全信息(知道对手的策略和对应的收益)博弈中,只能选择1种策略(选择概率为1),这个策略叫纯策略(p=1),不能30%概率选策略1,30%概率选策略2,40%概率选策略3
  • 混合策略:以一定概率选择的某些策略,这些策略构成纯策略。30%概率选策略1,30%概率选策略2,40%概率选策略3,30%策略1+30%策略2+40%策略3他们构成1个混合策略。因此,纯策略是混合策略的特例

双人纯策略纳什均衡

站在playerA的角度:在playerB的策略下,A选择的策略的收益,那个收益最大,选择收益最大的策略SA站在playerB的角度:在playerA的策略下,B选择的策略的收益,那个收益最大,选择收益最大的策略SB⇒SA+SB构成纳什均衡点\begin{aligned} 站在playerA的角度:在playerB的策略下,A选择的策略的收益,那个收益最大,选择收益最大的策略S_A \\ 站在playerB的角度:在playerA的策略下,B选择的策略的收益,那个收益最大,选择收益最大的策略S_B \end{aligned} \Rightarrow S_A+S_B构成纳什均衡点 站在playerA的角度:在playerB的策略下,A选择的策略的收益,那个收益最大,选择收益最大的策略SA​站在playerB的角度:在playerA的策略下,B选择的策略的收益,那个收益最大,选择收益最大的策略SB​​⇒SA​+SB​构成纳什均衡点

囚徒困境

已知:

  • 玩家:小偷A,小偷B
  • 策略:小偷A坦白/抗拒,小偷B坦白/抗拒
  • 收益:A和B都抗拒二者收益都是-1(坐年牢);A和B都坦白二者收益都是-8(坐8年牢);A和B一个坦白另一个抗拒,坦白者从宽0(坐0年牢),抗拒者从严-10(坐10年牢)
A\B 坦白 抗拒
坦白 -8,-8 0,-10
抗拒 -10,0 -1,-1

站在小偷A角度思考:

  • 若小偷B坦白,我还是坦白收益高为-8
  • 若小偷B抗拒,我还是坦白由于高为0

站在小偷B角度思考:

  • 若小偷A坦白,我还是坦白收益高为-8
  • 若小偷A抗拒,我还是坦白由于高为0

纳什均衡点:小偷A选择坦白,小偷B选择坦白,小偷A和B都选择坦白

代码

步骤:

  1. 明确player,strategy,payoff
  2. 构建收益矩阵
  3. 获取玩家A最大收益索引:for 玩家B的策略,获取玩家A的最大收益索引
  4. 获取玩家B最大收益索引:for 玩家A策略,获取玩家B的最大收益索引
  5. 标记玩家A最大收益:for 玩家B策略下,for 玩家A最大收益索引值
  6. 标记玩家B最大收益:for 玩家A策略下,for 玩家B最大收益索引值
  7. 标记值=2(针对2个玩家),则是纳什均衡点
import numpy as npclass NashEquilibrium(object):"""nash均衡"""def __init__(self, payoff):"""初始化:param: payoff: 收益矩阵 [[(-8,-8),(0,-10)],[(-10,0),(-1,-1)]]"""self.payoff = payoff# 列数=A的策略数self.num_strategy_A = np.size(payoff, axis=1)# 行数=B的策略数self.num_strategy_B = np.size(payoff, axis=0)# A的收益self.payoff_A = []# B的收益self.payoff_B = []for row in payoff:temp_A = []temp_B = []for e in row:temp_A.append(e[0])temp_B.append(e[1])self.payoff_A.append(temp_A)self.payoff_B.append(temp_B)self.payoff_A = np.array(self.payoff_A)self.payoff_B = np.array(self.payoff_B)def nash_equilibrium_point(self):"""获取纳什均衡点:return:"""# for B策略,获取A的最大收益索引max_A_idxs = [tuple([np.argmax(self.payoff_A[:, b])]) for b in range(self.num_strategy_B)]# for A策略,获取B的最大收益索引max_B_idxs = [tuple([np.argmax(self.payoff_B[a, :])]) for a in range(self.num_strategy_A)]# payoff表中纳什均衡点的索引choose = np.zeros((self.num_strategy_A, self.num_strategy_B))# for B策略下,for A最大收益索引值for b in range(self.num_strategy_B):for max_a in max_A_idxs[b]:choose[max_a, b] += 1# for A策略下,for B最大收益索引值for a in range(self.num_strategy_A):for max_b in max_B_idxs[a]:choose[a, max_b] += 1# np.where(choose==2) 若2维矩阵则将实际位置拆分到2个数组中,若3维矩阵则将实际位置拆分到3个数组中,由外到内nashpi_list = [e.tolist() for e in np.where(choose == 2)]# 解码[[1, 1], [0, 1]] 为[(1,0),(1,1)]nash_point_idxs = list(zip(*nashpi_list))return nash_point_idxsdef show(self, nash_point_idxs):"""展示:param: nash_point_idxs: 纳什均衡点索引:return:"""if len(nash_point_idxs) == 0:print("纯策略纳什均衡不存在")returnprint("纯策略纳什均衡下的收益")for x, y in nash_point_idxs:print('收益矩阵坐标(', x, y, ')收益:', payoff[x][y])if __name__ == '__main__':"""双人纯策略模式纳什均衡代码为囚徒困境"""payoff = [[(-8, -8), (0, -10)], [(-10, 0), (-1, -1)]]ne = NashEquilibrium(payoff)nash_point_idxs = ne.nash_equilibrium_point()ne.show(nash_point_idxs)

纳什均衡/双人纯策略相关推荐

  1. 读书笔记: 博弈论导论 - 05 - 完整信息的静态博弈 纳什均衡

    读书笔记: 博弈论导论 - 05 - 完整信息的静态博弈 纳什均衡 压制信念:纳什均衡(Pinning Down Beliefs: Nash Equilibrium) 本文是Game Theory A ...

  2. 多智能体强化学习入门(三)——矩阵博弈中的分布式学习算法

    一.引言 多智能体系统一直在学术界或者工业届都是一个热点.其核心领域是关于如何将系统采用分布式的算法控制.在分布式算法中,没有一个中心节点进行总体控制,每个智能体通过与环境交互自己学习自己的最优策略, ...

  3. 【博弈论】纳什定理及其证明

    [博弈论]纳什定理及其证明 一.纳什定理的内容 二.布劳尔不动点定理的内容 三.纳什定理的证明 一.纳什定理的内容 定理内容:若允许玩家采用混合策略,则任何有限博弈均存在一个纳什均衡. 有限博弈的含义 ...

  4. 美女主动搭讪?小心数学陷阱

    还记得玛丽莲•沃斯•莎凡特(Marilyn vos Savant)吗?她是吉尼斯世界记录认定的最高IQ人类,在杂志<Parade>上开过一个名叫"问问玛丽莲"(Ask ...

  5. 演化博弈理论与应用研究综述[转]

    原文地址:http://blog.sina.com.cn/s/blog_49d15689010009oq.html 演化博弈理论与应用研究综述 王文宾,达庆利,陈伟达 (东南大学经济管理学院,南京,2 ...

  6. 清华牛人的跨专业考研经验(金融专业)【zz】

    我的跨专业考研经历(不好意思,写得有点长) 走在路上•考研 "这是最美好的时代,这是最糟糕的时代",查尔斯•狄更斯在<双城记>中如是说.面对考研,面对这个大背景,我想这 ...

  7. 江苏大学计算机复试面试题库,江苏大学研究生考试试题a卷答案

    江苏大学研究生考试试题a卷答案 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.9 积分 江苏大学研究生考试试题江苏大学研究生考试试题答案答案 考 ...

  8. 何时是PNE(纯策略纳什均衡)?何时是MNE(混合策略纳什均衡)?

    何时是PNE(纯策略纳什均衡)?何时是MNE(混合策略纳什均衡)? 题目: 何时是PNE(纯策略纳什均衡)?何时是MNE(混合策略纳什均衡)? +----------------+---------- ...

  9. 双人矩阵博弈中的纳什均衡

    目录 双人矩阵博弈 双人零和矩阵博弈中的线性规划 线性规划 线性规划举例 -- 猜硬币 猜硬币纳什均衡代码 双人矩阵博弈 对于双人矩阵博弈,可建立一个由包含各个联合行为对回报的元素所构成的矩阵.由此, ...

  10. python求解双人纳什均衡

    话不多说,直接上代码 import random import numpy as np from numpy.core.arrayprint import printoptions from nump ...

最新文章

  1. 算法-------二分法查找
  2. vector机器人 HOW TO RESET, ERASE AND RESTORE VECTOR 如何重置,删除和恢复向量
  3. kafka 清除topic数据脚本
  4. Boost::filesystem的使用笔记
  5. 链表最终总结【数据结构】
  6. Linux 30岁了~我们也老了
  7. Python函数的概念和使用
  8. 结构体知识------值传递和址传递
  9. linux操作系统的体系结构
  10. mysql pdo prepare_php pdo prepare真的安全吗
  11. spacy 英文模型下载_spaCy2.1中文模型包
  12. PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决
  13. 第三次作业N的阶乘以及第四次一维数组实现杨辉三角
  14. python之路8-内置模块介绍
  15. 计算机怎么开启tftp服务器,win7电脑如何开启tftp服务器 电脑开启tftp服务器操作方法...
  16. Discuz论坛项目架构分析
  17. iOS开发关于“发送原图”功能问题的记录
  18. 光纤收发器的六个指示灯代表是什么意思?
  19. RFID复习笔记(1)——物联网与RFID概述
  20. 第 3-7 课:延伸——Flutter Android Studio 开发环境的搭建

热门文章

  1. 2021.4.17日简报:五子登科、BMEX、优选家、加电、链淘等项目
  2. uni-app - 实现手机扫描二维码并跳转全过程
  3. 【C语言 穷举法编程实例——韩信点兵问题(苏小红版C语言(第3版))】
  4. l310加完墨水后需要怎样设置_epson打印机没有墨水加了墨水后还是打印不了怎么解决...
  5. 中图杯获奖作品计算机组,中图杯大赛试卷
  6. 链家二手房采集数据分析
  7. 罗技键盘鼠标接收器丢了 怎么连接别的接收器
  8. 暴力解题之公务员行测资料分析技巧
  9. 网站如何调用第三方支付接口
  10. 从弗雷格的《概念文字》到模态逻辑的产生与发展