进化算法又称启发式算法,是利用经验法则或者常识来解决问题的方法。
图片来自参考文献(1)。
1. 元启发式算法和启发式算法有什么区别?
启发式策略(heuristic)
启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法, 在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。
启发式算法是一种技术,这种算法可以在可接受的计算费用内找到最好的解,但不一定能保证所得到解的可行性及最优性,甚至大多数情况下无法阐述所得解与最优解之间的近似程度。许多启发式算法是相当特殊的,依赖于某个特定问题。启发式策略在一个寻求最优解的过程中能够根据个体或者全局的经验来改变其搜索路径,当寻求问题的最优解变得不可能或者很难完成时(e.g. NP-Complete 问题),启发式策略就是一个高效的获得可行解的办法。简单的启发式算法如:爬山法,贪心算法。启发式算法没有随机性,根据人为规定的经验公式给出问题的可行解。
元启发式策略(metaheuristic)
元启发式算法通常是一个通用的启发式策略,是启发式算法的改进,通常使用随机搜索技巧。
他们通常不借助于某种问题的特有条件(他们是一种通用的启发式算法,不仅局限于应用到某一种问题上,或者某一个问题上,启发式算法一般会根据不同的问题在进行选择交叉或者变异时做一些有“偏好”的行为),从而能够运用于更广泛的方面。元启发式策略通常会对搜索过程提出一些要求,然后按照这些要求实现的启发式算法便被称为元启发式算法。许多元启发式算法都从自然界的一些随机现象取得灵感(e.g. 模拟退火、遗传算法)。现在元启发式算法的重要研究方向在于防止搜索过早得陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火), 领域搜索, 变领域搜索。
元启发式算法(MetaHeuristic Algorigthm)是启发式算法的改进,它是随机算法与局部搜索算法相结合的产物,常见的元启发式算法包括遗传算法、模拟退火算法、禁忌搜索算法及神经网络算法等。新兴的元启发式算法有、粒子群优化算法、差分进化算法,蚁群优化算法(10分钟搞懂蚁群算法 - 云+社区 - 腾讯云 (tencent.com)、萤火虫算法、布谷鸟算法、和声搜索算法、差分进化算法、随机蛙跳算法、细菌觅食算法、蝙蝠算法的算法等
2. 进化算法和遗传算法有什么区别?
遗传算法属于进化算法,遗传算法偏重于重组,而进化算法偏重于变异。
3. 遗传算法中如何保持种群多样性?
(1)监测种群多样性,低于某个阈值时提高交叉、变异率; (2)对近亲(计算海明距离, 低于某个值则认为是近亲)禁止其交叉产生后代