要提出我的问题,请允许我从一个示例开始:
假设有1000个长度相同的数组(也称为行向量)。每个向量都填充了-1到1之间的随机数。然后,我随机抽取500个行向量,并将它们相加。我现在从总和开始,并希望对原始1000中的选择进行反向工程。
我决定用遗传算法来解决这个问题。我开始了一个1000位长的位串系列,并运行了变异(也就是翻转随机位)和交叉过程。然后,十分之一秒后,我就对了75%。然后,再过一个小时,我是76%正确的。从本质上讲,我一直在等待几十个比特被正确设置。这可能是我的随机数生成器从来没有以一种可以将它们合并到解决方案中的方式引入它们。
该算法在开始时做得很好,但后来未能进一步改进解决方案。我试着确保我的基因家族拥有每一个可能的比特位置。这并没有帮助;您无法判断项目从池中消失的速度有多快。
看来,算法中必须有一个额外的组成部分。一定有什么东西推动了翻转比特(也就是突变)位置的选择。这首曲子的专业术语是什么?梯度?它是从哪里来的?
发布于 2013-06-25 21:02:23
这是一个相当透彻的教程,应该可以帮助你理解训练过程和所涉及的收敛。你说得对,它是一种梯度下降的形式。
http://informatics.indiana.edu/larryy/al4ai/lectures/03.IntroToGAs.pdf
该文档已移动,现在可以在以下位置找到:
http://shinyverse.org/al4ai/lectures/03.IntroToGAs.pdf
https://stackoverflow.com/questions/17297313
复制相似问题