复现方格网下囚徒困境博弈程序,分别画出b=0.8~2之间,以0.2为间隔的,均衡状态下的网络快照、及合作者比例变化图。
% 设置囚徒困境博弈参数
b_values = 0.8:0.2:2.0; % 合作者得到的收益相对于双方都不合作时的收益的比例
N = 20; % 网格边长
T = 50; % 游戏进行的轮数
p = 0.5; % 初始合作者的比例
num_iterations = 100; % 模拟的次数
% 进行多次模拟
for i = 1:length(b_values)
b = b_values(i);
% 初始化合作者比例和网络状态的矩阵
cooperation_ratios = zeros(num_iterations, T+1);
network_snapshots = zeros(num_iterations, N*N);
for j = 1:num_iterations
% 初始化网络
network = rand(N,N) < p;
% 记录初始合作者比例
cooperation_ratios(j, 1) = mean(network(:));
% 进行囚徒困境博弈
for t = 1:T
% 随机选择一个智能体
i = randi([1,N]);
j = randi([1,N]);
% 统计邻居的合作者比例
neighbor_cooperation_ratio = sum(network(mod(i-2,N)+1,j) + network(mod(i,N)+1,j) + network(i,mod(j-2,N)+1) + network(i,mod(j,N)+1),'all')/(4*N*N);
% 计算智能体的收益
if network(i,j