启发式算法与元启发式算法的区别到底是什么呢?我将网络上找到的回答做了一个总结:
对一个同样的问题,启发式算法(heuristics)只要给定了一个输入,那么算法执行的步骤就固定下来了,输出也因此固定,多次运算结果保持一致。但是,在求解某个具体问题时,在可以接受的时间和空间内能给出其可行解,但又不保证求得最优解(以及可行解与最优解的偏离)。许多启发式算法是相当特殊的,依赖于某个特定问题(problem specific)。启发式策略在一个寻求最优解的过程中能够根据个体或者全局的经验来改变其搜索路径,因此,其应用场景主要是当寻求问题的最优解变得不可能或者很难完成时(e.g. NP-hard 问题),启发式策略就是一个高效的获得可行解的办法。常见的启发式算法包括遗传算法、模拟退火算法、禁忌搜索算法、神经网络算法等。
而元启发式算法(meta-heuristics)是对启发式算法的改进,里面包括了随机因素,如GA中的交叉因子,模拟退火中的metropolis准则,这些随机因素也使得算法有一定概率跳出局部最优解而去尝试全局最优解,因此元启发式算法在固定的输入下,而输出是不固定的。他们通常不借助于某种问题的特有条件(problem independent),从而能够运用于更广泛的方面。元启发式策略通常会对搜索过程提出一些要求,然后按照这些要求实现的启发式算法便被称为元启发式算法。许多元启发式算法都从自然界的一些随机现象取得灵感(e.g. 模拟退火、遗传算法)。现在元启发式算法的重要研究方向在于防止搜索过早陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火)。新兴的元启发式算法有、粒子群优化算法、差分进化算法,蚁群优化算法、萤火虫算法、布谷鸟算法、和声搜索算法、差分进化算法、随机蛙跳算法、细菌觅食算法、蝙蝠算法等。