Java获得纳什均衡的玩家/策略的所有组合

Posted

技术标签:

【中文标题】Java获得纳什均衡的玩家/策略的所有组合【英文标题】:Java getting all combinations of Player / Strategy for NashEquilibrium 【发布时间】:2014-04-10 16:32:07 【问题描述】:

我正在尝试计算纳什均衡,因此我需要玩家及其策略的所有可能组合。

我有类和方法:

Strategy PlayerLinkedList<Strategy> strategies StrategyCombinationTreeMap<Player, Strategy> combination boolean isNashEquilibrium() 测试 StrategyCombination 是否为 NashEquilibrium

这一切都很好。现在对于给定的玩家列表及其策略,我想计算所有可能的策略组合并测试 isNashEquilibirum 的每个组合。我只是不知道怎么做。我想递归算法是可能的。

到目前为止,我得到了:

        public class Game 

        LinkedList<Player> players = new LinkedList<Player>();

        public Game()
        

        public void addPlayer(Player p)
            this.players.add(p);
        

        public StrategyCombination computeNashEquilibrium()

            StrategyCombination nash = null;

            StrategyCombination sc = new StrategyCombination();

            for(int i = 0; i < this.players.size(); i++)
                    sc.combination.put(this.players.get(i), this.players.get(i).strategies.get(0));
            

            for(int i = 0; i <= this.players.size()-1; i++)
                for(int j = 0; j <= this.players.get(i).strategies.size()-1; i++)
                    StrategyCombination sc2 = sc.createNew(this.players.get(i).strategies.get(j)); /* makes a new StrategyCombination with one Strategy replaced */
                if(sc2.isNashEquilibrium)
                nash = sc2;
                
                    for(int k = i+1; k <= this.players.size()-1; i++)
                        for(int l = i+1; l <= this.players.size()-1; l++)
                            sc2.createNew(...);
                        
                    
                
            

            return nash;
        

那么我怎样才能获得所有的 StrategyCombinations?即使蛮力也可以,我现在无法弄清楚:/。感谢您的阅读和回复。对不起我的英语。

【问题讨论】:

【参考方案1】:

如果需要排序,您可以使用Permutation

如果不需要顺序,请使用Combinations

【讨论】:

【参考方案2】:

您可以将设置与模拟分开...

通常是结合递归来实现。

伪代码示例:

createSetup(listOfplayers, listOfStrategies, indexOfPlayer)
    for each strategy of listOfStrategies
       assign strategy to indexOfPlayer-th player
       if (isLastPlayer())
            executeSimluation(listOfPlayers);
        else 
            createSetup(listOfplayers, listOfStrategies, indexOfPlayer+1);
       

【讨论】:

以上是关于Java获得纳什均衡的玩家/策略的所有组合的主要内容,如果未能解决你的问题,请参考以下文章

占优策略、重复剔除优势、纳什均衡三者的内在联系和区别是啥?

两人零和博弈的纳什均衡

纳什均衡

三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium

计算纳什均衡

高分求一个完全信息静态博弈模型的案例,并用博弈理论的基本概念分析这个案例。(复制粘贴勿入)