《使用Python介绍博弈论》
使用博弈论来提升我的Python技能和开发函数的直觉
什么是博弈论?在肯·宾莫尔Ken Binmore的书《Playing for Real: A Text on Game Theory》中,他将其描述为对人群中的理性互动的研究。
基本上,每当你与他人打交道,你都在进行一场博弈。我第一次接触博弈论是在一门微观经济学入门课程中。它似乎相当奇怪,不太直观。
几年后,我参加了一门高级博弈论课程。这门课程涉及大量的数学符号、图表和痛苦。
与我在计量经济学和计算经济学课程中接触到的编程分别是R和Julia不同,我在学习博弈论时没有写过一行代码。
回顾起来,我在那门课程中培养的技能在我的数据科学之旅中给我带来了巨大的好处。
我决定重新学习博弈论,并将其用于提升我的Python技能并回忆一下那段痛苦的时光。
让我们从经典例子开始:囚徒困境 The Prisoner's Dilemma
我们的两名玩家是朱利安Julian和兰迪Randy。
他们都被逮捕并带到警察局,然后分开关进不同的审讯室。审订他们的侦探没有足够的证据,他们需要一份自白供词。以下是我们玩家的策略和回报:
-
如果一个玩家坦白而另一个保持沉默,告密者将被释放,而另一名玩家将服刑10年。
-
如果两名玩家都遵守规则并保持沉默,每名玩家都将因虚假指控而入狱一年。
-
如果两名玩家互相告密,他们都将被判刑九年(因两人合作而减刑一年)。
我们将保持沉默称为“鸽子策略”,而互相告密称为“鹰策略”
使用Python来创建朱利安的回报矩阵:
import numpy as np
import pandas as pd
# 创建包含朱利安回报的数组
x = np.array([[-1, -10],[0, -9