背景:本文起源于我的硕士毕业论文,主要研究新能源汽车供应链主体之间的博弈问题,其中一个关键内容是制造商和经销商之间的演化博弈。具体来说,是两个博弈成员,每位成员有两个策略,是典型的非对称博弈。
因此,写下这篇文章的目标是:1、整理演化博弈的研究思路 2、熟悉Matlab的使用 3、简介演化博弈代码包
1.1 演化博弈与传统博弈的区别
演化博弈区别于传统博弈的地方是,关于博弈主体的假设条件不同。
a)演化博弈:博弈主体是有限理性的,需要在博弈的过程中学习/模仿不断调整策略,最后达到均衡。
b)传统博弈:博弈主体是完全理性的,在博弈过程中能一次性做出最佳决策,即达到均衡。
因此,演化博弈在分析实际问题时,具备更强的解释性,也更加贴近现实情况。
1.2 演化博弈的基本内容
根据学习群体的大小和学习速率的不同,主要将演化博弈分为了两种:
a) 基于最佳反应动态(Best Response Dynamics)的演化博弈
b) 基于复制动态(Replicator Dynamics)的演化博弈。
由于我的研究问题涉及的是大群体间的博弈问题,因此我使用的是第二种基于复制动态的演化博弈模型(以下简称RD),对实际问题进行刻画,通过复制动态方程描述采取不同策略的群体比例的变化。
1.3 基于复制动态的演化博弈模型的例子
下面以对称博弈为例,简述RD。
通常,有两个因素影响博弈方的学习进化速度:1)模仿对象的数量,即博弈方对应的比例情况;2)模仿对象的策略收益超过平均收益的大小。上述两点分别决定了进化的难易程度和模仿的激励大小。
假设在一个足够大的群体间进行博弈,采用策略1的群体比例为x,采用策略2的群体比例为1-x。采用两种策略博弈方的期望收益和群体平均收益分别是:
因此复制动态方程可以用下面的动态微分方程表示:
接下来研究的问题是关于非对称博弈问题,因此,涉及两个复制动态方程,会稍微复杂一点,但演化博弈的基本原理相同。
我对于Matlb的接触是从大四开始的,但是研究生阶段基本没有使用Matlab这个强大的工具。现重新捡起来发现,这个软件的功能确实强大。因此,对Matlab编程并不熟练的同学,也可以直接使用第三部分的演化博弈代码。
这个演化博弈的工具是一个名为PDToolbox_matlab-master的程序套组,大致包含这些文件:
第一步:下载PDToolbox_matlab-master压缩包,并解压到你的熟悉的位置。
第二步:打开Matlab,将上述压缩包添加到路径。如图
至此,关于Matlab的操作就算告一段落了。
据上,我研究的是双主体双策略的博弈问题,对应使用test2.m文件。下面是关于test.2中的一些代码解读:
上述红框中的代码是演化博弈中的关键参数,X0是一个2*2的矩阵,是演化博弈群体的初始比例。
关于支付矩阵的设置,如上代码是使用的fitness2.m文件。
对应使用RD之后的演化轨迹如下:
上述图像的意思是博弈双方随演化的进行,未能达到均衡状态,采取策略的群体比例会一直呈现规律波动。
使用bnn dynamics(Brown-von Neumann-Nash Dynamics )之后的演化轨迹如下:
说明两博弈群体由最初的0.1和0.2的比例,逐步收敛于0.5和0.5,最终达到均衡。