元启发式算法判定准则
一般情况下,元启发式算法需要具备如下条件:
- 易实性:元启发式算法是以简单的或者清晰的原理为基础进行设计的,并具有广泛的实用性。
- 通用性:元启发式算法可以用到不同的问题中,各种元启发式算法应用到特殊问题中需要按照原算法基本步骤进行。
- 有效性:元启发式算法可以对所有问题或大部分问题(benchmark问题)求得最优解或近优解。
- 时效性:元启发式算法需要在有限的时间内获得问题的最优解或者近优解。
- 鲁棒性:元启发式算法需要对于特定问题中的任意实例保证解的有效性和时效性。
- 人性化:元启发式算法要易于定义,易于理解,最重要的是易于应用,即参数要少,便于操控。
- 创新性:针对不同的问题通过将策略机制引入到元启发式算法中可以有更好的有效性或者时效性。
还有一个人说,元启发式算法是启发式算法的改进。他是随机算法与局部搜索算法相结合的产物。
计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得最佳解或次佳解的算法。而启发式算法则试图一次提供一或全部目标。 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解;它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。
有时候人们会发现在某些特殊情况下,启发式算法会得到很坏的答案或效率极差,然而造成那些特殊情况的数据结构,也许永远不会在现实世界出现。因此现实世界中启发式算法常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的答案。有一类的通用启发式策略称为元启发式算法(metaheuristic),通常使用乱数搜寻技巧。他们可以应用在非常广泛的问题上,但不能保证效率。
超启发式算法与启发式算法都是运行在搜索空间上,但是各自的搜索空间构成不同:传统启发式算法是工作在由问题实例的解构成的搜索空间上;而超启发式算法运行在一个由启发式算法构成的搜索空间上,该搜索空间上的每一个顶点代表一系列LLH的组合。因此,超启发式算法的抽象程度高于传统启发式算法。