MATLAB三方演化博弈:均衡点计算错误排查

这个文档对应的视频是https://www.bilibili.com/video/BV1iY41177n5/

以及https://www.bilibili.com/video/BV1f5411S73D?p=14&share_source=copy_web&vd_source=06fa200e6420998218426623bf697896

我们先复习一下,xyz三方演化博弈中,x的取值是{0,x*,1},y的取值是{0,y*,1},z的取值是{0,z*,1},其中x*,y*,z*的取值范围都是(0,1)。那么均衡点最多会有3*3*3=27个。

总共会有2*2*2=8个纯策略博弈均衡点,分别是(0,0,0),(0,0,1),(0,1,0),(1,0,0),(1,1,0),(1,0,1),(0,1,1),(1,1,1)。

混合策略均衡点最少有0个,最多有19个。

之前在视频中,求解的MATLAB代码是:

%复制动态方程组求均衡点解,三方演化博弈 clc,clear;  syms x y z Rp Cph Cpl Cp Bt Fp Mp Ct Ft Mt Cg Tg; %符号变量使用前须定义  [x,y,z] = solve('x*(x-1)*(Cph-Cpl-Cp-Bt-y*(Rp-Bt)-z*(Fp+Mp))=0','y*(y-1)*((1-x)*(Bt-Mt)-(Ft+Mt)*z-Ct)=0','z*(z-1)*(Cg-Fp-Ft-Tg+(Mp+Fp+Tg)*x+(Mt+Ft+Tg)*y-Tg*x*y)=0')

有同学反映MATLAB计算三方演化博弈均衡点出问题了,现在本人来总结一下。

首先,咱两的MATLAB版本不一样,造成solve函数的出错。我的是MATLAB2016b,您的可能是MATLAB2014,或者MATLAB2016a,或MATLAB2020。以MATLAB2020版本为例,可以百度“MATLAB2020的solve函数”。或者试试下面这段代码:

clc,clear;  syms x y z Rp Cph Cpl Cp Bt Fp Mp Ct Ft Mt Cg Tg;   [x,y,z] = solve(x*(x-1)*(Cph-Cpl-Cp-Bt-y*(Rp-Bt)-z*(Fp+Mp))==0,y*(y-1)*((1-x)*(Bt-Mt)-(Ft+Mt)*z-Ct)==0,z*(z-1)*(Cg-Fp-Ft-Tg+(Mp+Fp+Tg)*x+(Mt+Ft+Tg)*y-Tg*x*y)==0)

相信聪明的您一定发现了区别。

其次,如果排除了版本的问题,那么可能是您更改了某些细节方面的东西。例如,有同学通过邮件询问了我这类问题,代码运行之后,均衡点都不是稳定点,孩子快哭了“在求解三方演化博弈均衡点的时候,求出来只有两个解,且不包括前八个边界解。而且第三个变量的取值只有0或1,没有中间解”,等等

clc,clear;  syms x y z Rp Cph Cpl Cp Bt Fp Mp Ct Ft Mt Cg Tg;   [x,y,z] = solve('x*(x-1)*(Cph-Cpl-Cp-Bt-y*(Rp-Bt)-z*(Fp+Mp))=0','y*(y-1)*((1-x)*(Bt-Mt)-(Ft+Mt)*z-Ct)=0','z*(z-1)*(Cg-Fp-Ft-Tg+(Mp+Fp+Tg)*x+(Mt+Ft+Tg)*y-Tg*x*y)=0')

第一行,clc后面的逗号不要改分号。

第二行,syms后面的要写x y z,不要写u v w,也不要写z x y。必须按顺序写x y z。然后,中间都是空格间隔,不要用逗号,末尾用分号不要空了。

第三行,基本就是solve函数在不同版本MATLAB中使用方法不一样,具体可以百度的。注意末尾没有分号,啥符号都不用加。

点击运行之后,MATLAB的命令窗口会提示运行出错,就像下图,玉帝说了“不必管他”。

然后,在查看x y z的解时,左右拖鼠标的时候,不要太快了,有的解很长,有的解是很短的。

对于很长的解怎么放在论文里呢?我的建议是选择一个字符等于它就好了,比如“令X1=...”,然后这个很长的解“...”放在论文的附录里。

QR Code
微信扫一扫,欢迎咨询~

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

* 公司名称:

姓名不为空

手机不正确

公司不为空