蚁群X灾变X生物进化

灾变原理应用[1]

    灾变经常与生物进化的停滞阶段有关。生物进化史表明,生物进化速度不是恒定不变的,而是由快速进化过渡到进化停滞。在停滞期,生物进化趋向于停顿,甚至倒退,但是随后往往能以灾变摆脱僵局,灾变后又进入新一轮的平稳变化时期。

    蚁群算法的一个缺点就是易于陷入局部最优,为克服此问题,观察蚂蚁在遇到自然灾害(如某段路径遇到水灾等)蚂蚁可以更换路径仍然可以觅到原来的食物,对此,在蚁群算法中引入灾变算子。该算子设计思路是当发现多次相同的结果时,算法开始倾向与局部收敛,很难再跳出这个局部最优,于是引入灾变,即在这个局部最优路径上将取任意一段或几段,让信息素大幅度减少甚至减为0。于是下次不得不跳出此路径,而去寻找另外可能的更好路径[2]。实验表明,灾变有助于摆脱局部最优解,对于规模较大的的TSP问题,在引入灾变后,求解结果出现震荡,然后向好的解变化发展。

 

在文献[3]中,在合作型协同进化遗传算法中加入灾变算子,来解决不成熟收敛问题[4]。实验证实,灾变合作型协同进化[5]算法对大规模的优化问题效果比单种群的遗传算法好得多[6],加入的灾变算子可以有效地解决进化过程中的不成熟问题,提高了搜索性能,加快了收敛速度。

所谓灾变,就是外界环境的巨大变化,如冰河期、森林大火、大地震和洪水等。灾变往往是对绝大多数生物的灭顶之灾,造成大量物种的灭绝,只有个别适应能力特别强的物种或个体得以生存,在灾变后重新繁衍后代。显然经历过灾变的物种或个体的生存能力更强[7]

在本文中,提到3种灾变的实施方法:1,突然增大变异率;2,保留最好解,重新初始化其它个体;3,对不同的个体实施不同规模的变异。文中实验采用方法1,而在文献1中,似乎采用的是比较粗暴的方法[8]

灾变算子

当种群中个体之间的差别很小的时候,认为算法将要陷入不成熟收敛了,此时采用灾变算子来提高个体之间的多样性[9]。所以,引进相异因子、灾变因子的定义。在文献1中,对这方面是没有仔细论述的。


[1] 熊伟清, 周扬, 魏平. 具有灾变的动态蚁群算法[J]. 电路与系统学报. 2005, 6

[2] 个人想法:要减少,就减少那些信息素最多的一些路径,也就是枪打出头鸟。它们被削减后,可能上面的信息素变得比原来最差的路径还要稀薄(符合自然规律:祸兮?福兮?),但是没关系:如果它们真的是最优路径的一部分的话,在若干代之后还是会被发掘出来的!(真金不怕火炼)

[3] 许菊花, 虞斌能, 焦斌. 基于灾变因子的协同进化算法及其应用. 上海电机学院学报, 2008,6.

[4] 这里所说的“不成熟收敛”,就是TSP问题中的“陷入局部最优”。

[5] 最需要注意的问题是:何时进行协同、何时进行灾变、如何进行灾变。在一定的时候,“可能陷入局部最优了(对于具体的问题,需要给出具体的计算方法)”。对于TSP和蚁群问题,信息素发生灾变(路径被冲毁);那么对于多目标问题、或者其它的复杂问题,又该如何操作呢?

[6] 强调了“大规模”,同时结果“好得多”。

[7] Goldberg D E, Genetic Algorithm inSearch, Optimization and Machine Learning[M], Addison-Wesley Publishing Co., 1989.

[8] 很明显:蚁群的“灾变”和遗传算法的“灾变”,在实现的时候,存在着很大的差异。

[9] 不禁让我想起现在的人类社会……是不是要打仗,产生灾变了?贫富差距这么大,会战争;人和人之间差异太小,是不是触发这个世界的天灾机制?

你可能感兴趣的:(蚁群X灾变X生物进化)