防止零和博弈中的遗传算法协同



我有一个特定的游戏,它不是字面上的零和游戏,因为游戏在比赛中会授予积分,但接近它,从某种意义上说,总积分数有明确的上限,所以你得分越多,你的对手可用的积分就越少。 游戏由5名玩家进行,没有任何球队。

我正在让一种遗传算法在几代人之间用伪随机的"突变"来对抗自己。

但是在几百代之后,总会出现一种模式。该算法最终强烈支持特定玩家(例如:先玩的玩家)。由于提供"最佳结果"的突变是下一代的基础,这似乎朝着某种版本的"如果你是第一个玩家,以这种方式玩(这种方式是一种非常具体但非常随机的技术,给出糟糕的,或者充其量是平均的结果),如果不是,那么以这种间接但强烈有利于第一个玩家的特定方式玩"。

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

我正在寻找一种方法来阻止这种特定的进化路线,但是我不知道如何通过自己的策略比胜利更可能"奖励"胜利,因为您得到了很多帮助。

我认为发生这种情况是因为只有循环赛的获胜者才能在每一代中晋升和变异。起初,玩家或多或少是随机获胜的,但随后出现了一种有利于某个位置的策略。现在我猜,稍微偏离这个策略(伪随机突变)会让你只输掉你处于有利位置的比赛,而不是赢得任何其他游戏,所以你永远不会偏离那个策略,就像局部纳什均衡一样。

你可以尝试每代保留一个以上的个体,并从中产生突变。但我怀疑这会有所帮助,充其量只能延迟效果。因为很快,最优秀的个人的代码就会传播到所有人。这似乎是问题的根本原因。

因此,我的建议是建立 t 个部落,每个部落都有 x/t 个个体。现在,每个人不再进行循环赛,而是只与其他部落的个人进行比赛。然后你保留每个部落最好的个体,变异并继续下一代。这样部落就永远不会混合基因。

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

而不是每一代只测试一场比赛,强烈支持首发球员,玩 5 场比赛并平均分配谁先开始(因此每个玩家至少先开始一次)。


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

相关内容

  • 没有找到相关文章

最新更新