我在理解进化算法时遇到了问题。我多次尝试使用这种技术,但我总是遇到同样的问题:退化为模拟退火。
可以说我的初始人口(括号中的健身)是:
A (7), B (9), C (14), D (19)
交配和突变后,我有以下孩子:
AB (8.3), AC (12.2), AD (14.1), BC(11), BD (14.7), CD (17)
在消除最弱的之后,我们得到
甲,乙,乙,交流
下一回合,AB 将再次配对,结果约为 8,将 AC 推出。下一轮,AB 再次将 B 推出(假设突变改变适应度主要在 >1 范围内)。
现在,仅仅几圈之后,池中就充满了最初最适合的候选者(A,B)和这两个的突变(AB)。无论初始池的大小如何,都会发生这种情况,只是需要更长的时间。比如说,初始人口为 50,需要 50 个回合,然后所有其他人都被淘汰,从而将整个设置转变为更复杂的模拟退火。一开始我也和自己交配了候选人,使问题恶化。
那么,我想念什么?我的突变率是不是太小了,如果我增加它们会消失吗?
这是我使用它的项目: http ://stefan.schallerl.com/simuan-grid-grad/ 是的,代码有问题,界面很糟糕,但我现在懒得修复它 - 和小心,它可能会锁定您的浏览器。更好地使用 chrome,即使认为 firefox 一次也不比 chrome 慢(可能图像比较的跟踪得到了回报,耶!)。如果有人感兴趣,可以在这里找到代码。
在这里,我只是放弃了 ev-alg 的想法并进行了模拟退火。
ps:我什至不确定模拟退火——它就像进化算法,只是人口规模为 1,对吧?