当前位置: 首页 > news >正文

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

这里是实验代码仓库: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的“可扩展性”板块指引添加新的方法或者自由修改更多参数。

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

实验现象

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

  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博客

相关文章:

  • 数据结构与算法:贪心(一)
  • java中的类与对象
  • QGraphicsView
  • 使用Word2Vec实现中文文本分类
  • 【均价趋势副图指标】识别洗盘,拉升,最佳潜伏点,止盈防守跟踪操盘技术图文解说
  • Emacs定制:文件管理dired
  • 2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
  • 坚持做一件事情和好奇做一件事,本质区别和思考
  • 知识点|MVC模式(Model–view–controller)
  • 知识点|MTV模式(Model-template-view)
  • Day53打卡 @浙大疏锦行
  • 三维重建 —— 3. 单视几何
  • 为应对激烈竞争环境,IBMS系统如何提升企业管理效率
  • 深入讲解 Ollama 的源码
  • 快速幂算法详解:从暴力到优雅的数学优化
  • ELK日志文件分析系统——概念
  • 实验复现:应用 RIR 触发器的 TrojanRoom 后门攻击实现
  • 网盘直链解析网页版
  • 贫血模型与充血模型
  • 实现网页中嵌入B站视频播放器:解决high_quality=1 失效的问题
  • 个体户 做网站/搜索引擎优化实训
  • 腾讯空间个人认证 企业认证 网站认证哪种功能用途最齐全??/浙江seo外包
  • 做不锈钢管网站/品牌网站建设制作
  • asp网站开发四酷全书/谷歌seo综合查询
  • 网站有几种/seo每天一贴
  • 资料网站怎么做/最打动人心的广告语