还剩2页未读,继续阅读
文本内容:
四方演化博弈仿真代码matlab以下是基于matlab的四方演化博弈仿真代码:首先,定义四方演化博弈的基本参数N=100;%人数T二50;%演化次数%群体利益参数R=3;S=0;%背叛参数T1二5;%合作参数%囚徒困境参数T2=3;接下来,定义每个个体的策略我们选取两个最常用的策略合作者和背叛者%合作者策略strategy{1}=[onesN/4,T;2*ones N/4,T;3*onesN/4,T;4*onesN/4,T];%背叛者策略strategy{2}=[2*onesN/4,T;l*ones N/4,T;4*ones N/4,T;3*onesN/4,T];、、、然后,定义博弈规则函数在四方演化博弈中,每个个体会和周围的4个个体进行博弈如果他的收益高于周围4个个体,他就会继续保持自己的策略;否则,他就会从周围4个个体中随机选择一个个体,尝试复制这个个体的策略、、、function[newStrategy]=PDGamestrategy,R,S,T1,T2%初始化新的策略newStrategy=strategy;%计算每个个体的收益payoffs=zeros4,N;for i=1Nfor j=1Nif i~=jj=i-2j=i+2if strategy{1}istrategy{2}jpayoffs1,i=payoffs1,i+R;payoffs2,j=payoffs2,j+R;elseif strategy{1}⑴〈strategy{2}jpayoffs1,i=payoffs1,i+S;payoffs2,j=payoffs2,j+S;elsepayoffs1,i=payoffs1,i+Tl;payoffs2,j=payoffs2,j+T1;endif strategy{2}istrategy{1}jpayoffs2,i=payoffs2,i+R;payoffs1,j=payoffs1,j+R;elseif strategy{2}i〈strategy{1}jpayoffs2,i=payoffs2,i+S;payoffs1,j二payoffs1,j+S;elsepayoffs2,i=payoffs2,i+Tl;payoffs1,j=payoffs1,j+Tl;endendendend%更新策略for i=1Nrow=randi[i-2,i+2],1,1;col=randi[i-2,i+2],1,1;if payoffs1,ipayoffs1,row|payoffs2,ipayoffs2,colif rand
0.5newStrategy{1}i,=strategy{1}row,;elsenewStrategy{1}i,=strategy{2}col,;endendendend、、、最后,进行多次演化,并画出演化的结果、、、%进行50次演化for t=1Tstrategy=PDGamestrategy,R,S,T1,T2;end%画出结果figure;subplot2,2,1;hist strategy{1}l N/4,;xlabel合作者;ylabelC个数;subplot2,2,2;histstrategy{1}N/4+l N/2,;xlabel背叛者;ylabel个数;subplot2,2,3;hist(strategy{1}(N/2+13*N/4,));xlabel(合作者’);ylabelC个数);subplot(2,2,4);hist(strategy{1}(3*N/4+l N,));xlabelC背叛者);ylabel(个数);、、、这样,我们就完成了一个基于mat lab的四方演化博弈仿真程序。