在Numpy数组结构中选择一对具有最大和的数(博弈论)

2024-05-29 00:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有以下代码来计算和显示一个确定博弈的纳什均衡概率分布和效用:

import numpy
import nash

game = [[[[0,3],[1,2]],[[2,3],[1,0]]],"ShSh","StagHunt"]


def NashStrategySelection(game):
    p1 = game[0][0]  
    p2 = game[0][1]   
    game = nash.Game(p1,p2)
    print (game)
    eqs = game.support_enumeration()
    eql = list(eqs)
    for item in eql:
        print ("Nash distribution", item)
    for s1,s2 in eql:
        row_utility = numpy.dot(numpy.dot(s1,p1),s2)
        print ("Row's utility", row_utility)
        col_utility = numpy.dot(numpy.dot(s1,p2),s2)
        print ("Col's utility", col_utility)

这种情况下的结果是:

^{pr2}$

作为每对效用的结果,其中一个可能的均衡(纳什分布)。在

Nash包生成博弈矩阵并计算纳什均衡(概率分布)

我相信numpy.dot引用了nash数组的索引和游戏数组。编辑:它返回矩阵的乘积,而不是索引!在

这个例子(雄鹿狩猎)是一个典型的多重平衡的例子。我需要的是在这个numpy数组中选择并返回一对策略,其中效用之和最大化(在本例中,Row=3和Col=3)。但是他们需要属于同一对才能保持纳什属性(在某些情况下,每个玩家的最大值属于不同的选择)。在

有人知道怎么做吗?在

提前谢谢你。在


Tags: importnumpygame效用数组doteqlutility

热门问题