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