美文网首页
1.演化博弈入门代码

1.演化博弈入门代码

作者: 谭小飞同学 | 来源:发表于2021-05-05 18:48 被阅读0次

MATLAB演化博弈仿真(双方)操作详解

声明:笔者所用win7+MATLAB2016b版本。安装破解过程可能会有部分问题,可直接联系笔者或百度。

正文

论文标题:《农户与企业合作下的农产品质量安全演化博弈仿真研究》
①首先确定复制动态方程。下述方程是摘自论文中,请读者对方程有个印象。

image.png
image.png image.png

②其次确定参数。数值取值原因详见论文。

image.png
③将上述数值先笔算代入复制动态方程中。
可以得到最后的表达式为:
F(x)=x(1-x)(0.9875y-0.3875) ; F(Y)= y(1-y)(0.135x-0.075)
原论文是用Netlogo仿真,本文改用MATLAB进行实验。打开MATLAB,点击编辑器|新建|脚本,
image.png
输入代码如下:
%定义函数,function开始,end结束
function dxdt=differential(t,x)%定义一个名为differential的函数
dxdt=[x(1)*(1-x(1))*(0.9875*x(2)-0.3875);x(2)*(1-x(2))*(0.135*x(1)-0.075)];
%x(1)是演化博弈中一方的决策概率X,x(2)是演化博弈中另一方的决策概率Y。x(1)*(1-x(1))*(0.6-0.9875*(1-x(2)))是F(X),中间分号隔开,x(2)*(1-x(2))*0.06是F(Y),把初始设定值代入即可
end

注:MATLAB注释符为%,仅起注释作用,读者若视之碍眼可删除,注意代码输入需英文输入法,标点符号容易出bug。有关代码的问题可直接联系笔者。

代码在MATLAB中如下显示:

image.png

点击运行,保存命名为“differential.m”,并“添加到路径”。文件一定要保存在自己清楚的位置。
点击“+””(点击的按钮,笔者均已标注),新建一个脚本,并输入以下代码:

%先做dy/dt与dx/dt的关系图像
for i=0:0.1:1 %横坐标的取值范围是[0,1],图中间隔为0.1
    for j=0:0.1:1 %纵坐标的取值范围是[0,1],图中间隔为0.1
        [T,Y]=ode45('differential',[0 5],[i j]);%ode45()是用于求解微分方程数值解的函数,differential是求解的函数名,出图的代码中的函数名与之前定义的要一样, [0 5]是时间T的区间,[i j]是初始值向量
        figure(1)%建立图形的函数,系统自动从1,2,…建立图形,figure(1)是第一幅图的意思
        grid on %显示网格线,删除或在前面加上%可以不显示网格
        plot(Y(:,1),Y(:,2));% Y(:,1)是dx/dt,Y(:,2)是dy/dt
        hold on%意思是将前面的坐标系、网格线、x、y的图像整合在一起显示
    end%结束第二个for
end%结束第一个for
set(gca,'XTick',[0:0.1:1],'YTick',[0:0.1:1])%设置网格的显示格式,gca获取当前
xlabel('x占比');%在图中的横坐标显示“x占比”
ylabel('y占比'); %在图中的纵坐标显示“y占比”
%其次做dx/dt与时间T的关系图像
for i=0:0.1:1
    for j=0:0.1:1
        [T,Y]=ode45('differential',[0 5],[i j]);
        figure(2)
        grid on
        plot(T,Y(:,1));
        hold on  
    end
end
xlabel('x占比');
ylabel('y占比'); 
%最后做dy/dt与时间T的关系图像
for i=0:0.1:1
    for j=0:0.1:1
        [T,Y]=ode45('differential',[0 5],[i j]);
        figure(3)
        grid on
        plot(T,Y(:,2));
        hold on  
    end
end
xlabel('x占比');
ylabel('y占比');

点击运行|保存|添加到路径,命名为“map.m”。文件一定要保存在自己熟记的位置。


image.png

运行过后,出现三张图,如下:


image.png image.png
image.png

点击文件|另存为,保存类型选择jpg或png,即可复制粘贴至论文中。

读者请注意,前面我们的出图是分散的,现将两个博弈主体的比例放置在同一张图,我们试试改完以后的代码,运行之后有什么不同。

image.png image.png

可以直观看到,图一没变,图二将前面的图二、图三整合到一张图上。
代码如下:

%the first map
for i=0:0.1:1
    for j=0:0.1:1
        [T,Y]=ode45('differential',[0 100],[i j]);
        figure(1)
        grid on
        plot(Y(:,1),Y(:,2));
        hold on
    end
end
set(gca,'XTick',[0:0.1:1],'YTick',[0:0.1:1])%设置网格的显示格式,gca获取当前
xlabel('x占比');
ylabel('y占比');
%the second map
for i=0:0.1:1
    for j=0:0.1:1
        [T,Y]=ode45('differential',[0 100],[i j]);
        figure(2)
        grid on
        plot(T,Y(:,1),'r*-','lineWidth',1);%先绘制F(X)随时间T变化的图像,'r*-'是由“*”绘制的红色线条,'lineWidth',1绘制宽度为1的线条,数值越大线条越粗。
        hold on
        plot(T,Y(:,2),'b--','lineWidth',1);%再绘制F(Y)随时间T变化的图像,' b--'是由“-”绘制的蓝色线条
        hold on  
    end
end
set(gca,'XTick',[0:10:100],'YTick',[0:0.1:1])
legend('企业','农户')%在图中显示各博弈方(企业、农户)对应的线条,因为将博弈方添加到一张图,所以有必要进行标注
xlabel('时间');
ylabel('占比');

原文交代如下:


image.png

只需将上述代码稍改一下即可,笔者已将改动之处做了标记。
代码如下:

%the first map
for i=0:0.1:1
    for j=0:0.1:1
        [T,Y]=ode45('differential',[0 100],[i j]);
        figure(1)
        grid on
        plot(Y(:,1),Y(:,2));
        hold on
    end
end
set(gca,'XTick',[0:0.1:1],'YTick',[0:0.1:1])%设置网格的显示格式,gca获取当前
xlabel('x占比');
ylabel('y占比');
%the second map
for i=0.56%%%%%%%%%%%% hey,改这里
    for j=0.40%%%%%%%%%%%% hey,改这里
        [T,Y]=ode45('differential',[0 100],[i j]);
        figure(2)
        grid on
        plot(T,Y(:,1),'r*-','lineWidth',1);
        hold on
        plot(T,Y(:,2),'b--','lineWidth',1);
        hold on  
    end
end
set(gca,'XTick',[0:10:100],'YTick',[0:0.1:1])
legend('企业','农户')%在图中显示各博弈方(企业、农户)对应的线条
xlabel('时间');
ylabel('占比');

出图效果如下:


image.png
image.png

原论文当中出图如下,请读者自行对比netlogo与MATLAB的不同之处。


image.png

当然,关于演化博弈仿真这块,论文当中还有其他图像,请读者自行根据本文方法实验,笔者不再展开。

相关文章

  • 1.演化博弈入门代码

    MATLAB演化博弈仿真(双方)操作详解 声明:笔者所用win7+MATLAB2016b版本。安装破解过程可能会有...

  • 易经演化时间与内容结构

    ——节选自太极博弈原理之易学入门指迷 易经演化时间 关于易经的演化时间,学界上是有很多争议的地方,但大多无从稽考,...

  • 2.双方演化博弈代码

    论文标题:基于演化博弈视角的“乡贤” 参与乡村治理及其稳定性分析 视频可关注bilibili:谭小飞同学

  • 4. 四方演化博弈代码

    论文标题:重大疫情期医药研究报道质量监管四方演化博弈分析 关注b站:谭小飞同学 %sifang.m sifang2...

  • 3.三方演化博弈代码

    论文标题:政府奖惩机制下药品安全质量监管三方演化博弈及仿真分析 视频可关注bilibili:谭小飞同学 yaopi...

  • 策略的演化

    就好像生物演化是基因的竞争,文化演化是“模因(Meme)”的竞争一样,博弈的演化,是策略的竞争。如果使用...

  • 策略的演化

    就好像生物演化是基因的竞争,文化演化是“模因(Meme)”的竞争一样,博弈的演化,是策略的竞争。如果使用...

  • 1.博弈

    《集装箱改变世界》 创新改变世界,博弈却有可能阻碍创新。不过,世界还是被改变了不是吗? 博弈是什么? 博弈本意是:...

  • 《图解博弈论》读书笔记

    图解博弈论(Game Theory) 1、博弈论入门 “囚徒困境”、“田忌赛马” 分类:零和博弈——一方的得利来自...

  • 九、警察与小偷博弈

    混合策略 随机读书策略有效避开知识短缺 图解博弈论 - 笔记 一、博弈论入门二、纳什均衡三、囚徒博弈四、走出“囚徒...

网友评论

      本文标题:1.演化博弈入门代码

      本文链接:https://www.haomeiwen.com/subject/cdkldltx.html