【发布时间】:2016-10-03 23:33:47
【问题描述】:
我创建了一个游戏(基本上是 Agar.io 克隆),其中人类玩家与由遗传算法和神经网络驱动的 AI 控制机器人对抗。
问题是我认为我的算法效率不高。我有 10 个机器人按其适应度函数排名,即存活时间。他们的基因由-1到1之间的实数组成。
从最低到最高适应度,我取 n 个机器人,最多 5 个机器人,并取当前的权重值,然后将其加上一个高斯数乘以 (10^-n)。 我在与浮点数进行交叉时遇到了麻烦,因此我只做了这样的突变。
显然,我的 AI 不是很聪明。
如何改进我的算法?
如果需要,这里是大部分源代码所在的位置:https://github.com/jadenyjw/evo/blob/master/core/src/com/evo/game/stages/GameStage.java
【问题讨论】:
-
这与 SO 无关。也许试试codereview.stackexchange.com
-
@httpNick 谢谢你会试试看。
-
我投票决定将此问题作为离题结束,因为它要求对工作代码进行同行评审(未包含在帖子中)。它可能更适合Code Review,但他们会像我们在这里一样期待帖子本身中的代码。如果该异地位置由于某种原因(脱机、移动、删除等)不可用,则异地位置的代码对未来的读者的价值为零。
-
我的代码应该没问题,我只是想知道一个更聪明的方法来实现这个算法。也许我所要求的可以被认为是 pseudocode。然后我就可以把它翻译成真正的代码了。
-
@KenWhite,我认为这个问题是有效的,并且可以轻松改进。我认为 OP 应该发布一段(伪)代码来实现您的基因交叉功能,然后我们对其进行推理。我假设这是你 Jaden 想要回答的一个狭窄部分。
标签: artificial-intelligence genetic-algorithm evolutionary-algorithm