在合作中防止零和游戏中的遗传算法

时间:2017-05-15 16:58:23

标签: algorithm genetic-algorithm genetic

我有一个特定的游戏,这不是字面上的零和,因为游戏在比赛期间获得积分,但接近它,在总积分数有明确上限的意义上,所以你得分越高,你的对手得分就越少。 该游戏由5名玩家组成,没有任何球队。

我正在使用伪随机"突变"使遗传算法对抗自身。世代之间。

但经过几百代,一种模式总会出现。该算法最终强烈支持特定玩家(例如:首先玩的玩家)。由于突变给出了最好的结果"作为下一代的基础,这似乎转向某些版本的"如果你是第一个玩家,那么就这样玩(这种方式是一种非常具体而又非常随机的技术,可以提供不好的,或者至多是平均的,结果),如果没有,那么以这种特定的方式玩,间接但强烈支持第一个玩家"。

然后,对于下一代,轮流受到强烈青睐的玩家开始随机变异,因为无论它做什么,它都会赢得每一轮,只要有利于该玩家的算法部分仍然完整。

我正在寻找一种方法来阻止这种特定的进化路线,但我无法弄清楚如何可能"奖励"你自己的战略胜利胜过胜利,因为你得到了很多帮助。

2 个答案:

答案 0 :(得分:1)

我认为这是因为只有圆形游戏锦标赛的获胜者才能在每一代中得到提升和变异。起初,玩家或多或少会随机获胜,但随后会出现一种有利于某个位置的策略。现在我猜这种策略略有偏离(伪随机突变)会让你失去那些你处于有利位置而不会赢得任何其他人的游戏,所以你永远不会偏离那个策略,比如当地的纳什平衡。

您可以尝试每代保留多个人并从中生成突变。但我怀疑这会有所帮助,最多会延迟效果。因为最好的个人的代码很快就会传播给所有人。这似乎是问题的根本原因。

因此,我的建议是让每个部落都有x / t个体的部落。现在,每个人都只参加其他部落的比赛,而不是参加围棋比赛。然后你保持每个部落最好的个体,变异并继续下一代。因此,部落永远不会混合基因。

答案 1 :(得分:0)

对我而言,似乎有一个简单的解决方法:每次评估都会玩多个游戏。

而不是每一代只测试一个游戏,强烈支持起始玩家,玩5个游戏并分配谁首先平等开始(所以每个玩家至少首先开始一次)。

<小时/> 我想你的人口大于5,对吧?那么你如何相互测试基因组呢?你绝对不应该让他们只玩一个游戏,因为也许你已经将一个中等玩家与4个简单玩家配对,让它看起来像中等玩家更好。