我对GA很感兴趣,想做自己的事。
这就是我要完成的任务:
我有一个“世界”16x16字段。我创造了16个随机基因的机器人。每个基因都是一个由1-19个数字组成的数组(16-19将转向机器人方向,1-15是机器人向指定方向移动的字段数量)。在这个词中,我采取一个随机的位置,试图使从领头机器人到目标的距离尽可能小。
我创造新一代的方式:
问题是:在我所有尝试的1/100中,我只得到距离== 0。但是我经常得到距离1和2(我一直等到第1000代,然后放弃,再试一次)有什么方法可以改进吗?还是不可能用GA做得更好?
发布于 2018-03-02 22:55:39
有很多事情都出了问题。
关于的一些一般性评论
交叉与突变
交叉是用来交换已知工作的基因组的大部分。突变使基因组的片段细化。粗略地说,交叉可以帮助你将两种好的解决方案结合起来,希望这能很快地引导你找到更好的解决方案,而变异则能探索解决方案附近的空间。
交叉也可以破坏一个好的解决方案,把它分解成两个没有独立意义的部分,或者将两个部分组合在一起,产生一个无意义的输出。
在许多情况下,突变足以探索整个空间,尽管缓慢。这在你的空间里是这样的,因为距离你的目标很远,分数会单调地减少。在一个更复杂的空间里,交叉可以帮助你跨越局部极小值之间的障碍。
把它放在一起
我的建议是,在给定时间的情况下,可以减少种群中交叉的数量,。最初,交叉可能会帮助你获得一些快速的进展。但是,随着时间的推移,尤其是在你的模拟接近尾声的时候,你会想要精致的精致。这种技术类似于模拟退火。
发布于 2018-03-13 08:57:40
我想根据我在GA的经验添加一些东西。在我的研究中,我发现使用“精英选择”来创建N+1一代通常也会在解决方案上造成一个平台:确实,您正在严格地、非常快地达到最优解,但是您可以找到一个局部最小值,并在那里保持阻塞(见图中的橙色)。
所以我所做的是:我增加了一个随机性的步骤(不仅仅是交叉和最佳元素的变异),在这个步骤中,解决方案显然更糟,但是会产生一个新的最小值,它可以是全局最小值(图像中的绿色跳跃)。
你能做什么?尝试在N+1生成中使用最好的7个元素,而不是从N代中选择一个随机元素(可能是最差的)。

发布于 2018-03-05 07:13:21
是时候调试进化了!
最终的解决方案(路径)是什么样子的?我想,他们只能去NSEW。如果是这样的话,那么很容易被困在一个局部的(由一两个)解决方案。
此外,观察最佳解决方案是如何随着时间的推移发展的也是有用的。这可能是非常有洞察力(和有趣的观看!)
祝你调试顺利!
https://stackoverflow.com/questions/49078442
复制相似问题