防止零和博弈中的遗传算法合作

Prevent Genetic algorithm in zero-sum game from cooperating

我有一个特定的游戏,它不是字面上的零和游戏,因为分数是由游戏在比赛中奖励的,但接近于它,在总积分数有明确上限的意义上,因此,您得分越多,对手可获得的分数就越少。 游戏由 5 名玩家进行,没有任何团队。

我正在让遗传算法在几代人之间使用伪随机 "mutations" 与自己进行回合。

但是经过几百代之后,总会出现一种模式。该算法最终强烈支持特定玩家(例如:先玩的玩家)。由于给予 "best results" 的突变作为下一代的基础,这似乎朝着 "If you are the first player, play this way (the way being a very specific yet pretty random technique that gives bad, or at best average, results), and if not, then play in this specific way that indirectly but strongly favors the first player".

的某些版本发展

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

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

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

与其每一代只测试一款游戏,强烈偏向首发玩家,不如玩 5 场游戏并平均分配谁先开始(所以每个玩家至少先开始一次)。


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

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

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

因此我的建议是拥有 t 个部落,每个部落有 x/t 个人。现在,每个人不再参加循环赛,而是只与其他部落的人比赛。然后你保留每个部落最好的个体,变异并继续下一代。使部落永不混杂基因。