许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  三方演化博弈零基础学习附matlab python代码

三方演化博弈零基础学习附matlab python代码

阅读数 3
点赞 0
article_banner

三方演化博弈的复制动态方程写出来三个ODE,ode45跑完曲线收敛到某个角点上,但论文里说的ESS条件对不上,回去查雅可比矩阵的特征值,其中一个特征值实部是正的,那个点压根不稳定。路径D:\EvolutionaryGame\three_party\。


建模的第一步是设策略概率。三方各有两个策略,x、y、z分别表示三方选择“合作”或者“积极”策略的概率,另外三个概率自动是1-x、1-y、1-z,不用单独设变量。收益矩阵按论文里的表填,每方在每个策略组合下的收益写成一个2×2×2的立方体,Matlab里用三个矩阵分开存,payoff_A、payoff_B、payoff_C各一个2×2×2数组,python用numpy的ndarray。


期望收益算完相减得到复制动态方程。养殖户的期望收益是x那方的,U_A1是选参与策略的期望,U_A2是选不参与策略的期望,两者相减再乘x(1-x)就是F(x)。处理中心类似,政府的也类似,三个方程联立。这一套在CSDN那篇三方演化博弈的帖子里有完整推导,公式形式都差不多,区别在收益矩阵的具体参数。


ode45的调用方式记一下,`[t,y] = ode45(@(t,y) three_evo(t,y,p), [0,50], [0.3,0.5,0.4])`,初始概率x=0.3、y=0.5、z=0.4是PLOS ONE那篇网络舆情论文里的设置。three_evo函数里把三个复制动态方程写进去,参数p用struct传,payoff矩阵塞进struct里。时间区间[0,50]够用,大部分情况十几步就收敛到角点了,跑50个时间单位能看到稳态。ode45默认的相对容差1e-3不够,ESS附近收敛很慢,容差给1e-6,`odeset('RelTol',1e-6,'AbsTol',1e-8)`。

三方演化博弈零基础学习

稳定性分析不能只靠看曲线。纯策略均衡点一共八个,坐标是(0,0,0)到(1,1,1)的立方体顶点,每个点代入雅可比矩阵算三个特征值。Nature那篇医疗物资分配的论文里写得清楚,所有特征值实部为负是渐近稳定,至少一个实部为正是不稳定,实部有零的话临界状态判不了。Matlab里用符号工具箱算雅可比矩阵,subs代入每个均衡点,eig函数求特征值,三个实部全负才在论文里标ESS。八个点全跑一遍,有时候只有一两个稳定,有时候一个都没有,没有的话回去检查参数设置。


Python这边有现成的包,egtplot专门画三方演化博弈的相图,pip install egtplot装完用plot_static画三角单纯形上的相图,plot_animated做轨迹动画,底层是scipy的odeint解微分方程,跟Matlab的ode45一个逻辑。不想装包的话scipy.integrate.odeint直接解,参数跟Matlab里一样,画图用matplotlib的mplot3d画三维轨迹,三个轴的坐标都是0到1。CSDN上那篇三方演化博弈的Python实现里给了完整的代码框架,收益矩阵换成自己的数就能跑。


参数敏感性分析用的最多的方法是固定其他参数,扫一个参数从0.1到1.0,看最终收敛到哪个均衡点。Matlab里写个循环,每次改参数重新跑ode45,把最终时刻的三个概率存下来,画成热力图或者龙卷风图。CSDN那个三方演化博弈的仿真引擎里内置了参数灵敏度的功能,自动算雅可比特征值的变化。跑批量实验的时候用parfor并行,每个参数点独立跑,省时间。


下次把那个医疗物资分配的模型复现一下,Nature那篇的收益矩阵参数抄过来,看稳定均衡点是E3(0,1,0)还是E8(1,1,1),条件1和条件2对应的参数范围是……


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空