022 囚徒困境中的均衡-----从一篇经典论文说起

本文介绍了囚徒困境的概念,它是博弈论中的经典案例,揭示了个体理性选择可能带来的集体非理性。文章回顾了该理论的发展历史,并提到1992年Nowak和May关于囚徒困境的计算机仿真研究,该研究在Nature上发表。虽然仿真程序逻辑相对简单,但理解模型至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.囚徒困境

  囚徒困境(Prisoner’s Dilemma)是博弈论的非零和博弈中具代表性的例子,反映个人最佳选择并非团体最佳选择。或者说在一个群体中,个人做出理性选择却往往导致集体的非理性。虽然困境本身只属模型性质,但现实中的价格竞争、环境保护等方面,也会频繁出现类似情况。
  1950年,由就职于兰德公司的梅里尔·弗勒德(Merrill Flood)和梅尔文·德雷希尔(Melvin Dresher)拟定出相关困境的理论,后来由顾问艾伯特·塔克(Albert Tucker)以囚徒方式阐述,并命名为“囚徒困境”。
  囚徒困境是博弈论中最经典的一个问题。

2.计算机仿真

  1992年Martin A. Nowak 和 Rebort M. May在Nature上发表了一篇论文Evolutionary games and spatial chaos,论文采用了一种极为简单的规则就囚徒困境做了仿真。具体内容大家可以查阅这篇文献。下面是核心代码(MATLAB实现):
  

% 获取个编辑框以及按钮的数值
var = get(handles.popupmenu2, 'Value');
T = get(handles.edit1, 'String');
R = get(handles.edit2, 'String');
P = get(handles.edit3, 'String');
S = get(handles.edit4, 'String');
L = get(handles.edit5, 'String');
TimeStep = get(handles.edit6, 'String');
T = str2double(T);
R = str2double(R);
P = str2double(P);
S = str2double(S);
L = str2num(L);
TimeStep = str2num(TimeStep);

% 获取初始时刻的模式:随机还是几何对称
if get(handles.Regular, 'Value');
    flag = 1;
elseif get(handles.Random, 'Value')
    flag = 0;
end

%获取初始格局
%CurrrentPayers是当前格局
CurrentPlayers = InitMatrix(flag, L, var);

%TempPlayers是博弈时临时存储当前格局的矩阵
TempPlayers = CurrentPlayers;

%存储策略改变信息的矩阵
Changes = zeros(L);

% Payoff记录当前格局中每个点博弈所获得的总收益(与8个邻居及自己)
%每个个体的收益初始化为0

Payoff = zeros(L);
for t = 1:TimeStep
    Frequency = sum(sum(CurrentPlayers))/(L*L);
    Frequency = roundn(Frequency, -3);
    set(handles.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值