重复的囚徒困境博弈中应该如何决策?--阿克塞尔罗德竞赛(Axelrod‘s Tournament)实验

发布于:2025-06-14 ⋅ 阅读:(20) ⋅ 点赞:(0)

这里是实验代码仓库:https://github.com/liaoyanqing666/Prisoner-s_Dilemma

当面对囚徒困境时,为了获得个人最佳利益,参与方会倾向于互相背叛这个纳什均衡点。

如果这个选择会重复几十次,而且你面对的对手会观察你以前的行为,再决定如何回报,你还会坚持原来的决定吗?

这就是“重复的囚徒困境”(Iterated Prisoner’s Dilemma)——一个从社会科学、人工智能到现实生活都广泛存在的经典博弈问题。今天,我们不只是谈论这个问题,而是带你回顾一场历史性的实验,并亲自复现它。

阿克塞尔罗德竞赛(Axelrod's Tournament)

1980年,政治学家罗伯特·阿克塞尔罗德(Robert Axelrod)发起了一场实验:他邀请各领域的专家提交策略程序,让它们在重复囚徒困境环境中互相对战,从而观察哪些策略更能在长期互动中获胜。这场被称为 Axelrod’s Tournament 的竞赛后来成为博弈论史上最经典的实验之一。

结果出人意料地简洁:Tit For Tat(以牙还牙) 这样朴素的策略脱颖而出,成为了当时的总冠军。它的策略极为简单:第一轮先合作,以后就复制对方的上一轮选择——友善但不软弱,宽容但有底线。

原始论文名称为《Effective Choice in the Prisoner's Dilemma》,可以在谷歌学术上找到。

所有策略两两对决得分情况

但是当细读这篇文章后,我发现中间存在一些奇怪的点,例如理论上完全合作的两方会得到600分,但是表格中却存在很多600分左右的部分,许多细节实现仍不清晰。因此,我基于论文描述与开源库 Axelrod Python,复现了几乎所有原始策略且增加了一些策略,并构建了一个可以自定义策略组合与博弈规则的实验平台,代码在这里可以访问到。

代码功能

在代码中,除了上表中的(Name Withheld)方法,阿克塞尔罗德竞赛中的所有方法都复现了。​​​​​此外,还新定义了部分方法。同时,如果你有更多想法,也可以根据README的“可扩展性”板块指引添加新的方法或者自由修改更多参数。

编号 策略名称 简要说明
1 TitForTat 首轮合作,之后模仿对方上一次的决策。
2 TidemanAndChieruzzi 逐步加剧报复,若己方得分领先则尝试重新合作。
3 Nydegger 前几轮模仿,之后根据加权历史计算是否合作。
4 Grofman 若双方上轮一致则合作,否则以小概率继续合作。
5 Shubik 对背叛进行递增报复,直到完成惩罚周期。
6 SteinAndRapoport 先合作,判断对手是否随机,再选择应对策略。
7 Grudger 一旦被背叛便永久背叛。
8 Davis 前几轮无条件合作,之后如被背叛则永久背叛。
9 Graaskamp 初期防御强烈,后期根据统计判断是否信任对方。
10 Downing 根据对手对合作与背叛的反应来估算收益并决策。
11 Feld 先模仿,对方合作时合作概率随时间线性下降。
12 Joss 模仿为主,偶尔背叛以测试对手。
13 Tullock 前 11 轮合作,之后根据对手近 10 轮的合作频率调整合作概率。
14 Collaborator 始终合作。
15 Betrayer 始终背叛。
16 Random 随机选择合作或背叛。
17 TwoTitsForTat 若最近两轮有一次被背叛则报复。
18 TitForTwoTats 连续两次被背叛才报复,否则合作。

实验现象

在对这些策略进行对战后,我观察到几个颇具启发性的结论:

  1. 当参与者中好人占比较高时,主动背叛/投机策略往往得分不高。

    • Tullock 方法(以 前 10 步对手背叛概率 +10% 的概率进行背叛)表现不佳;若不加 10%,排名反而更高。
    • 虽然 Betrayer 面对 Collaborator 获得全场最高分,但其总体排名并不高。
  2. 在参与者中全是恶人的环境下,Betrayer 比 Collaborator 更具优势。

  3. 无论在何种组合下,Random 基本都是表现最差的策略。

如果想更深入地分析,欢迎自己定义更多方法或者自由选取参与者的集合。

你会如何选择?

如果你是其中一位参赛者,在一个充满善意与欺诈者混杂的世界中,你会选择哪种策略应对?

是始终信任?谨慎报复?测试对手?还是永远背叛?

欢迎自己定义一个方法,并且运行这段代码,观察不同策略如何对抗,设计一个属于你自己的冠军策略。

👉现在就开始尝试吧

希望这个代码对你有帮助!如果你遇到任何问题,欢迎留言或通过 GitHub/邮件提交问题。如果你觉得这个项目有趣,也别忘了给它一个 Star ⭐


作者的其他有趣文章:

保姆级教程,完全从零搭建简单个人网站(免费,无需服务器无需域名)个人博客网站,个人简历网站模板-CSDN博客

Windows时间悬浮窗程序,开源Windows程序(功能介绍)-CSDN博客

适合初学者的Transformer介绍(通俗易懂),含pytorch代码_transformer入门介绍-CSDN博客

一个基于PVT(Pyramid Vision Transformer)的视频插帧程序(pytorch)_pvt v2处理视频-CSDN博客


网站公告

今日签到

点亮在社区的每一天
去签到