Java获得纳什均衡的玩家/策略的所有组合
Posted
技术标签:
【中文标题】Java获得纳什均衡的玩家/策略的所有组合【英文标题】:Java getting all combinations of Player / Strategy for NashEquilibrium 【发布时间】:2014-04-10 16:32:07 【问题描述】:我正在尝试计算纳什均衡,因此我需要玩家及其策略的所有可能组合。
我有类和方法:
Strategy
Player
与 LinkedList<Strategy> strategies
StrategyCombination
与 TreeMap<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获得纳什均衡的玩家/策略的所有组合的主要内容,如果未能解决你的问题,请参考以下文章