📅  最后修改于: 2023-12-03 14:50:29.841000             🧑  作者: Mango
博弈论是一种数学工具,用于研究决策者之间的策略和行为。其中,范式博弈就是一类常见的博弈,也是博弈论研究的重要对象。本文将介绍第 2 组范式博弈——纯策略游戏,探讨其数学模型和求解方法。
在纯策略博弈中,每个参与者都必须在有限的策略集合中作出决策,而这些决策不受随机性的影响,只有确定性的结果。具体地,一个纯策略博弈可以描述为一个 4 元组 $(N, A, u, \tau)$,其中:
在纯策略博弈中,我们通常关注的是纳什均衡(Nash Equilibrium)。它是指策略组合 $(a_1^, a_2^, \cdots, a_n^)$,其中 $a_i^\in A_i$,满足以下两个条件:
通常情况下,我们可以采用迭代删除劣势策略的方法求解纳什均衡。具体地,每次迭代中,若存在某个参与者发现自己的某一个策略从未被选中过,并且其在所有其他参与者选择了某个策略 $a_{-i}$ 的情况下,其选中该策略并不劣于其他策略,则可以将该策略删除。不断进行这样的迭代,直到不能再删除任何一个策略为止,此时剩下的策略组合就是纳什均衡。
下面是 Python 代码实现迭代删除劣势策略的算法:
def iterated_elimination(game):
# 输入一个二维列表 game,其中 game[i][j] 表示参与者 i 选取策略 j 时对应的效用值
n = len(game)
m = len(game[0])
dominated = set() # 被支配的策略集合
while True:
changed = False
for i in range(n):
if i in dominated:
continue
for j in range(m):
if j in dominated:
continue
better = True
for k in range(n):
if k == i:
continue
if game[k][j] > game[i][j]:
better = False
break
if better:
for k in range(n):
if k == i:
continue
if game[i][j] < game[k][j]:
break
else:
dominated.add(j)
changed = True
if not changed:
break
return [i for i in range(m) if i not in dominated]
代码中,我们维护一个 dominated
集合,表示已经被支配的策略集合。所有参与者在剩余策略中选择一个效用最高的策略作为其当前最优策略,如果某个策略在其他参与者保持策略不变的情况下始终不优,则被称为被支配的策略。在每次循环中,我们尝试找到所有被支配的策略,并将其从候选策略集合中剔除。当剩余的策略集合不再发生变化时,返回其作为纳什均衡。