启发式算法,元启发式算法与超启发式算法的区别

启发式算法,元启发式算法与超启发式算法的区别

废话不多说,网上百度有的东西(定义那些)我也不重复叙述了,把自己对这三者有什么不同的理解说一下。


启发式算法(heuristics)

启发式算法是依赖于问题的技术。因此,他们通常适应当前的问题,并试图充分利用这一问题的特殊性。然而,由于它们往往过于贪婪,它们通常陷入局部最优状态,因而通常无法获得全局最优解。


元启发式算法(metaheuristics)

元启发式是独立于问题的技术。因此,它们没有利用问题的任何特殊性,因此可用作黑匣子。一般来说,他们并不贪婪。事实上,他们甚至可能接受某个具体问题中解的暂时恶化(例如,模拟退火技术),这使他们能够更彻底地探索解的空间,从而得到一个有希望的更好的解(有时会与全局最优相吻合)。请注意,尽管元启发式算法是一种独立于问题的技术,但仍有必要对其内在参数进行一些微调,以便使该技术适应手头的问题。


超启发式算法(Hyper-heuristics)

事实上它不同于以上两者算法的对象,上两者的对象其实都是针对问题找解,只是启发式算法针对特殊问题找出较优解,而元启发式对普遍问题,不加入任何特殊条件找出通解空间。超启发算法的特殊性在于它找出的空间不是解的空间,而是启发式或元启发式的空间。事实上,超启发式可以被看作是“启发式搜索启发式”。还有一个稍微不同的叫法,定义为“启发式生成启发式”。


总结

三者之间对象不同,搜索得出的空间也不同,启发式算法(heuristics)搜索得出的是特殊解空间,元启发式算法(metaheuristics)搜索得出的是普遍问题的解空间,而超启发式算法(Hyper-heuristics)搜索得出的是启发式的空间。

发布于 2018-05-23 15:18