博弈论入门

目录

什么是博弈?

博弈论的发展历史?

博弈的要素有哪些?

博弈的分类?

博弈论的应用

收益矩阵

纳什均衡的定义

博弈论的例子

1、田忌赛马

2、穷途困境

2.1优化反应函数法

2.2Nashpy库

2.3顶点枚举算法

3、Nash游戏

4、巴什博奕(Bash Game)

5、威佐夫博弈(Whthoff Game)

6、电子商务中的定价策略


什么是博弈?

概念1:博弈是指在一定的游戏规则约束下,基于直接相互作用的环境条件,各参与人依靠所掌握的信息,选择各自策略(行动),以实现利益最大化和风险成本最小化的过程。简单说就是人与人之间为了谋取利益而竞争。

概念2:博弈是指在平等的对决中参与双方分别根据对方的策略指定自己的应对策略,从而取得胜利。

博弈论的发展历史?

博弈论的发展历史可以追溯到两千多年前的中国和古希腊,最早的博弈案例包括《孙子兵法》、《孙膑兵法》、《三十六计》、《六韬》等书籍中的故事。然而,博弈论真正成为一门系统的学科,是在20世纪初。

在20世纪20年代,法国数学家波莱尔首次用数学语言刻画了博弈问题,提出了“策略”和“混和策略”概念,并用最佳策略和概念研究了下棋等决策问题。同时,德国哲学家和数学家莱布尼茨在1710年就预言了关于策略博弈理论出现的必要性和可能性。

随后,在1928年,约翰·冯·诺依曼与奥斯卡·摩根斯坦合作出版了《博弈论与经济行为》,标志着博弈论的正式诞生。他们提出了两人零和博弈的极小极大定理,并证明了博弈论的基本定理。

在20世纪50年代,博弈论发展到了鼎盛时期,包括纳什、海萨尼和泽尔腾等人在内的众多学者做出了重要贡献。纳什提出了“纳什均衡”的概念,海萨尼和泽尔腾等人也在合作博弈领域做出了重要贡献。

自那时起,博弈论在经济学、政治学、生物学等多个领域得到了广泛应用。尤其是经济学领域,许多学者如纳什、海萨尼和泽尔腾等,在博弈论领域做出了重要贡献。1994年,纳什、海萨尼和泽尔腾因在博弈论领域的突出贡献获得了诺贝尔经济学奖。

博弈论在军事战略、国际关系、法律等领域也有着广泛的应用。它提供了一种方法来理解和预测在特定环境中的行为结果,帮助人们制定出最优策略。

博弈的要素有哪些?

参与者:至少有两个参与者,他们之间存在相互依赖的关系。

策略集:每个参与者都有一套完整的策略集,定义了在不同状态下他们可以选择的行动。

效用函数:衡量参与者在每一组策略组合下的收益,参与者总是愿意选择高收益而不是低收益。

信息:参与者根据他们所掌握的信息做出决策。

博弈的分类?

博弈可以根据不同的标准进行分类,以下是一些常见的分类方式:

按照参与人数分类:可以分为单人博弈、双人博弈、多人博弈。

按照策略数量分类:可以分为有限策略博弈和无限策略博弈。

按照参与人对其他参与人的了解程度分类:可以分为静态博弈和动态博弈。

按照其他因素分类:例如,按照博弈中的得益分类,可以分为零和博弈、常和博弈、变和博弈;按照参与人之间是否合作分类,可以分为合作博弈和非合作博弈等。

此外,根据博弈的研究范式和研究方法的不同,博弈论还可以分为传统博弈论和演化博弈论等。

博弈论的应用

博弈论在许多领域都有广泛的应用,如生物学、经济学、国际关系、计算机科学、政治学、军事战略等。在经济学中,博弈论已经成为标准分析工具之一,生物学家使用博弈理论来理解和预测进化论的某些结果。

此外,博弈论也可以被视为一种思维方式和决策方法。它帮助人们分析问题,找到最优策略,以及理解和预测他人的行为。在商业、政治和日常生活中,博弈论都有广泛的应用,如商业策略、国际关系分析、法律和政策制定等。

收益矩阵

有两名玩家A 和 B ,每个玩家都有两种策略,A 可以选择“TOP”或者“Bottom”,B 可以选择“Left”或者“Right”。做出不同的行为所对应的收益也是不同的。将二者的收益整理成如下矩阵,A的策略在左边,红色表示A的收益;B的策略在上边,蓝色表示B的收益。

纳什均衡的定义

在博弈论中,纳什均衡是指在博弈中所有参与者都采取最优策略的状态。具体来说,如果在一个博弈中,每参与者都选择了一种策略,且没有任何一个参与者可以通过改变自己的策略来获得更好的结果,那么这个状态就是一个纳什均衡。

纳什均衡可以分成两类:“纯策略纳什均衡”和“混合策略纳什均衡”。

纯策略(pure strategies)指的是如果一个策略规定参与人在每一个给定的信息情况下只选择一种特定的行动,称为纯策略,简称“策略” ,即参与人在其策略空间中选取唯一确定的策略。纯策略纳什均衡指的是,参与人采用纯策略确定的均衡。

混合策略(mixed strategies)指的是如果一个策略规定参与人在给定的信息情况下以某种概率分布随机地选择不同的行动,称为混合策略。参与人采取的不是明确唯一的策略,而是其策略空间上的一种概率分布。混合策略纳什均衡指的是,参与人采用混合策略确定的均衡。

博弈论的例子

1、田忌赛马

齐国大将田忌很喜欢赛马。他和齐威王约定,进行一次赛马比赛。他们各自将自己的马分为上、中、下三等,依次派出上等马、中等马和下等马,进行三轮比赛。由于齐威王每个等级的马都比田忌强,三场比赛下来,田忌都失败了。田忌军师孙膑帮他想了一个对策,建议田忌调整赛马顺序,先用下等马对齐威王的上等马,再拿上等马对齐威王的中等马,最后拿中等马对齐威王的下等马,三局两胜,以弱胜强,反败为胜!

以下为单次对决的代码:

import nashpy as nash
import numpy as np
'''
假设田忌有3匹马(A、B、C),
齐王有4匹马(a、b、c)
Aa上等马
Bb中等马
Cc下等马
'''
tianji_strategies = ["A", "B", "C"]
qiwang_strategies = ["a", "b", "c"]
tianji_payoff = np.array([[-1, 1, 2],[-2, -1, 1],[-3, -2, -1]])
​
qiwang_payoff = np.array([[1, -1, -2],[2, 1, -1],[3, 2, 1]])
​
game = nash.Game(tianji_payoff, qiwang_payoff)
equilibria = game.support_enumeration()
for eq in equilibria:print("纳什均衡策略组合:", eq)
# #重复博弈
# for _ in range(3):
#     game = nash.Game(tianji_payoff, qiwang_payoff)
#     equilibria = game.support_enumeration()
#     tianji_payoff, qiwang_payoff = qiwang_payoff, tianji_payoff # 交换角色
# print(list(equilibria))

纳什均衡策略组合:(array([1., 0., 0.]), array([1., 0., 0.]))

2、穷途困境

两个人因盗窃被捕,警方怀疑其有抢劫行为,但未获得确凿证据可以判他们犯了抢劫罪,除非有一个人供认或两个人都供认。即使两个人都不供认,也可判他们犯盗窃物品的轻罪。犯罪嫌疑人被分离审查,不允许他们之间互通消息,并交代政策如下:如果两个人都供认,每个人都将因抢劫罪加盗窃罪被判2年监禁;如果两个人都拒供,则两个人都将因盗窃罪被判处半年监禁;如果一个人供认而另一个拒供,则供认者被认为有立功表现而免受处罚,拒供者将因抢劫罪,盗窃罪以及抗拒从严而被重判5年。

2.1优化反应函数法

import numpy as np
​
# 定义博弈矩阵
A = np.array([[[-2, -2], [0, -5]],[[-5, 0], [-0.5, -0.5]]
])
​
# 计算最优反应函数
def best_response(A,i):j = 1 - ireturn np.unravel_index(np.argmax(A[i, :, j]), A.shape[:2])[0]
​
# 计算纳什均衡
br1 = best_response(A, 0)
br2 = best_response(A, 1)
if A[br1, br2, 0] == A[br1, br2, 1]:print(f'({br1}, {br2}) is a Nash equilibrium')
else:print('No Nash equilibrium')

(0, 0) is a Nash equilibrium

0-供认,1-拒供

甲乙都供认

2.2Nashpy库

纯策略

import numpy as np
import nashpy as nash
A = np.array([[-2, 0], [-5, -0.5]])
B = np.array([[-2, -5], [0, -0.5]])
game = nash.Game(A, B)
eqs = game.support_enumeration()
for eq in eqs:eq_left, eq_right = eqexpected_payoff_left = np.dot(eq_left, A).dot(eq_right)expected_payoff_right = np.dot(eq_left, B).dot(eq_right)print("左方策略:", eq_left, ",右方策略:", eq_right, ",左方期望效用值:", expected_payoff_left, ",右方期望效用值:", expected_payoff_right)

左方策略:[1. 0.] ,右方策略:[1. 0.] ,左方期望效用值:-2.0 ,右方期望效用值:-2.0

0-供认,1-拒供

甲乙都供认,即刑期2年,

混合策略

import nashpy as ns
import numpy as np
​
A = np.array([[2, 0], [5, 0.5]])
B = np.array([[2, 5], [0, 0.5]])
payoff = ns.Game(A, B)
​
r = np.array([.5, .5])  # A玩家对应策略概率
c = np.array([0.7, 0.3])  # B玩家对应策略概率
​
payoff = ns.Game(A, B)
print(payoff[r, c])

[-2.525 -1.525]

甲以0.5的概率选这供认,0.5的概率选择拒供,收益2.525年刑期

甲以0.7的概率选这供认,0.3的概率选择拒供,收益1.525年刑期

2.3顶点枚举算法

import numpy as np
​
# 两个玩家的收益矩阵
A = np.array([[2, 0], [5, 0.5]])
B = np.array([[2, 5], [0, 0.5]])
​
# 玩家策略空间
strats_A = [0, 1]
strats_B = [0, 1]
​
def vertex_enumeration(A, B, strats_A, strats_B):
​equilibria = []
​# 枚举所有顶点for s_A in strats_A:for s_B in strats_B:
​# 计算最优响应br_A = np.argmax(A[s_B, :])br_B = np.argmax(B[:, s_A])
​# 判断均衡if s_A == br_A and s_B == br_B:equilibria.append((s_A, s_B))
​return equilibria
​
print(vertex_enumeration(A, B, strats_A, strats_B))

[(0, 0)]

3、Nash游戏

裁判拿出n个棋子,n可能很多。你和对手轮流取子,规则是:

当n是奇数时,你和对手都只容许拿走1颗棋子,

n是偶数时,有两个选择:拿走一个,或拿走一半,由自己判断选择采取哪一种做法。取胜的条件是:拿走棋子数量最多的取胜或没有棋子拿的失败。

4、巴什博奕(Bash Game)

一堆n个物品,两个人轮流从中取出(1~m)个,轮到谁取时发现物品没有了,判定该玩家输。

def bash_game(n, m):# 判断当前轮到的玩家是否处于必胜状态if n % (m + 1) == 0:return "后手必胜"else:return "先手必胜"
​
# 输入物品数量n和每轮最多取出的数量m
n = int(input("请输入物品数量n:"))
m = int(input("请输入每轮最多取出的数量m:"))
​
# 调用函数并输出结果
result = bash_game(n, m)
print(result)
​

5、威佐夫博弈(Whthoff Game)

有两堆各若干个物品,两位玩家轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限(两堆不一定一样多),轮到谁取时发现物品没有了,判定该玩家输。

6、电子商务中的定价策略

两家公司A和B在网上销售同一产品。公司A可以选择以10美元或20美元的价格出售其产品,而公司B可以选择以10美元或15美元的价格出售其产品。给出每家公司的最优定价策略?

参考文献1、https://nashpy.readthedocs.io/en/stable/text-book/index.html2、《哈林顿博弈论》,哈林顿,中国人民大学出版社3、《用博弈的思维看世界》,蒋文华,浙江大学出版社

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞书开发学习笔记(五)-Python快速开发网页应用

飞书开发学习笔记(五)-Python快速开发网页应用 一.下载示例代码 首先进入飞书开放平台: https://open.feishu.cn/app 凭证与基础信息 页面,在 应用凭证 中获取 App ID 和 App Secret 值。 教程和示例代码位置:https://open.feishu.cn/document/home/integrating-…

WebSocket在node端和客户端的使用

摘要 如果想要实现一个聊天的功能,就会想到使用WebSocket来搭建。那如果没有WebSocet的时候,我们会以什么样的思路来实现聊天功能呢? 假如有一个A页面 和 B页面进行通信,当A发送信息后,我们可以将信息存储在文件或者…

JDK更换版本不生效问题

JDK版本更换 问题: 当本地电脑拥有多个版本jdk时, 切换jdk版本不生效 解决方案: 1.查看环境变量(高版本的jdk安装时自动注入环境变量) 2.将Path里面的jdk的bin配置上移到最上面 3.查看jdk版本, java -version 启动项目,显示如下使用了jdk17

Adobe premiere裁剪视频尺寸并转为GIF格式

第 1 步:裁剪视频 修改序列设置以适应裁剪之后的图像区域;序列中的编辑模式不能使用默认的,这里使用的是“ProRes RAW” 第 2 步:设置背景色 需要设置“颜色遮罩”的大小和颜色,颜色遮罩放在下面。 第 3 步&#xff1…

el-form添加自定义校验规则校验el-input只能输入数字

0 效果 1 代码 {1,5}是用来限制小数点后几位的 addFormRules: {investAmount: [{ validator: checkInvestAmount, trigger: blur }], }, const checkInvestAmount (rule, value, callback) > {if (value ! && value ! null && value ! undefined) {if (/…

SSL证书对于SEO优化的重要性

SEO是指通过优化网站的内容、结构和技术元素以提升其在搜索引擎结果页上的排名的过程。其中一个经常被忽视但对SEO效果产生深远影响的因素就是SSL证书。 SSL证书是一种数字证书,用于加密网站流量并验证网站身份。它有助于保护用户的敏感数据,并在访问者和…

Django 基于ORM的CURD、外键关联,请求的生命周期

文章目录 基于ORM进行的CURDORM外键关联Django请求的生命周期流程图 基于ORM进行的CURD 本质上就是通过面向对象的方式,对数据库的数据进行增、删、改、查。 这里将会将我们之前所有内容结合到一起,首先确保基于上序操作已经建立好了UserInfo表&#xff…

【BMC】jsnbd介绍

jsnbd介绍 本文主要介绍一个名为jsnbd的开源项目,位于GitHub - openbmc/jsnbd,它实现了一个前端(包含HTML和JS文件)页面,作为存储服务器,可以指定存储内容;还包含一个后端的代理,这…

【计算机网络】VRRP协议理论和配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 2.2、拓扑与配置: 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol&am…

【C++入门篇】保姆级教程篇【下】

目录 一、运算符重载 1)比较、赋值运算符重载 2) 流插入留提取运算符重载 二、剩下的默认成员函数 1)赋值运算符重载 2)const成员函数 3)取地址及const取地址操作符重载 三、再谈构造函数 1)初始化列表 …

C#源代码生成器深入讲解一

C#源代码生成器 01 源代码生成器初体验 新建一个类库,一定是standard2.0版本,否则会出问题。引用Nuget包Microsoft.CodeAnalysis.Common新建一个类,继承自ISourceGenerator接口 //一定要写,制定语言 [Generator(LanguageNames.…

4.2每日一题(求多元函数在某一点的微分)

1、分别求x和y的偏导,再相加即可 2、因为多元函数的表达式不方便求偏导,所以可以使用先代后求法: (1)对x偏导:把y0代入,很容易求出对x偏导的结果 (2)对y偏导&#xff1a…

caffe搭建squeezenet网络的整套工程

之前用pytorch构建了squeezenet,个人觉得pytorch是最好用的,但是有的工程就是需要caffe结构的,所以本篇也用caffe构建一个squeezenet网络。 数据处理 首先要对数据进行处理,跟pytorch不同,pytorch读取数据只需要给数据…

帝国cms中如何让外部链接直接从新窗口打开页面

<?php if($bqr[isurl]) { ?> <a href"<?$bqsr[titleurl]?>" target"_blank"> <?php } else { ?> <a href"<?$bqsr[titleurl]?>"> <?php } ?>

2023最新最全【Adobe After Effection 2023】下载安装零基础教程【附安装包】

AE2023下载点这里 教学 1.鼠标右击【Ae2023(64bit)】压缩包选择&#xff08;win11系统需先点击“显示更多选项”&#xff09;【解压到 Ae2023(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Set-up】选择【以管理员身份运行】。 3.点击【文件夹图标】&#xff0c;…

DNS域名解析

目录 1.概述 1.1产生原因 1.2作用 1.3连接方式 1.4因特网的域名结构 1.4.1拓扑 1.4.2分类 1.4.3域名服务器类型划分 2. DNS域名解析过程 2.1分类 2.2解析图 2.2.2过程分析 3.搭建DNS域名解析服务器 3.1.概述 3.2安装软件 3.3bind服务中三个关键文件 3.4主配置…

PNAS | 蛋白质结构预测屈服于机器学习

今天为大家介绍的是来自James E. Rothman的一篇短文。今年的阿尔伯特拉斯克基础医学研究奖表彰了AlphaFold的发明&#xff0c;这是蛋白质研究历史上的一项革命性进展&#xff0c;首次提供了凭借序列信息就能够准确预测绝大多数蛋白质的三维氨基酸排列的实际能力。这一非凡的成就…

堆排序(大根堆、小根堆)

参考视频&#xff1a; 1、数据结构&#xff0c;小根堆的调整&#xff01;必须熟练掌握&#xff01; 2、数据结构建堆筛选输出最小值 | 计算机软件考研期末知识点2

Scikit-LLM:一款大模型与 scikit-learn 完美结合的工具!

Scikit-LLM 是文本分析领域的一项重大变革&#xff0c;它将像 ChatGPT 这样强大的语言模型与 scikit-learn 相结合&#xff0c;提供了一套无与伦比的工具包&#xff0c;用于理解和分析文本。 有了 scikit-LLM&#xff0c;你可以发现各种类型的文本数据中的隐藏模式、情感和上下…

【STM32】定时器+基本定时器

一、定时器的基本概述 1.软件定时器原理 原来我们使用51单片机的时候&#xff0c;是通过一个__nop()__来进行延时 我们通过软件的方式来进行延时功能是不准确的&#xff0c;受到很多不确定因素。 2.定时器原理&#xff1a;计数之间的比值 因为使用软件延时受到影响&#xff0c…