合作博弈核仁法Python
时间: 2023-11-05 12:55:15 浏览: 68
合作博弈的核仁法(Core)是指对于一个合作博弈,所有合理的收益分配方案中所构成的集合,称为核(Core)。
核心是一个重要的概念,可以帮助我们评估一个合作博弈的稳定性。如果一个合作博弈的收益分配方案不属于核心,那么至少有一个玩家有动机离开该方案,寻求更好的收益分配方案。因此,核心内的方案是玩家们能够接受的最好方案。
下面是 Python 实现合作博弈核仁法的一个例子:
```python
from itertools import combinations
def find_core(game):
"""
:param game: 合作博弈的收益矩阵,是一个 n x m 的矩阵,
其中 n 表示玩家数,m 表示策略数
:return: 核心方案的列表
"""
n_players, n_strategies = game.shape
# 生成所有可能的联盟
alliances = []
for i in range(1, n_players+1):
alliances += list(combinations(range(n_players), i))
# 遍历所有可能的收益分配方案
core = []
for i, alliance in enumerate(alliances):
for j, payoff in enumerate(game.T):
# 如果这个联盟的总收益小于这个联盟的所有成员的最小保证收益,
# 那么这个联盟的收益分配方案不在核心里
if payoff[list(alliance)].sum() < game[list(alliance), j].max():
break
else:
core.append(alliance)
return core
```
该函数接受一个收益矩阵作为输入,返回核心方案的列表。其中,收益矩阵是一个 n x m 的矩阵,其中 n 表示玩家数,m 表示策略数。矩阵中的每个元素表示某个联盟采取某个策略时的收益。
函数首先生成所有可能的联盟,然后遍历所有可能的联盟和收益分配方案,判断某个收益分配方案是否在核心里。具体地,如果一个联盟采取某个策略后的总收益小于这个联盟的所有成员的最小保证收益,那么这个联盟的收益分配方案不在核心里。如果所有的联盟和策略都满足这个条件,那么这个方案就是核心方案之一。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)