2

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

我正在做一个遗传算法,在几代人之间用伪随机“突变”来对抗自己。

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

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

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

4

2 回答 2

1

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

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

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

于 2017-05-15T18:29:54.490 回答
0

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

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


我想你的人口超过5,对吧?那么你是如何测试基因组的呢?你绝对不应该让他们只玩一场游戏,因为也许你已经将一名中型玩家与 4 名简单玩家配对,让中型玩家看起来更好。

于 2017-05-15T17:26:26.133 回答