元启发式算法(Metaheuristic algorithm)
计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得最佳解或次佳解的算法。而启发式算法则试图一次提供一或全部目标。 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解;它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。
有时候人们会发现在某些特殊情况下,启发式算法会得到很坏的答案或效率极差,然而造成那些特殊情况的数据结构,也许永远不会在现实世界出现。因此现实世界中启发式算法常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的答案。有一类的通用启发式策略称为元启发式算法(metaheuristic),通常使用乱数搜寻技巧。他们可以应用在非常广泛的问题上,但不能保证效率。
算法原理
1. 从一个或多个候选解开始作为初始值(pop(t))。
2. 根据初始值计算目标函数值
3. 基于已获得的信息,通过个体变异、组合等方法不断更新候选解域。
4. 新的候选解域进入下一轮迭代(pop(t+1))
如下图:
编程分析
从程序的角度分析,元启发式算法包括以下几个部分:
1. 内部数据结构G,用于描述候选解域X中的候选解。
2. 从数据结构G,创建候选解实例的法则。
3. 如果G ≠ X,需要定义一个函数g2x(),该函数用于将结果从G域映射到X域,g2x()函数往往对结果直接产生较大的影响。
4. 用于改变候选解的算法,如变异,交叉等。
5. 整体循环流程控制函数。
过程图解如下:
---------------------------------------------------------
参见:http://home.ustc.edu.cn/~chh1990/win/
-------------------------------------------------------------------