启发式算法简谈–ariszheng

启发式算法简谈(一)
引言:
解决实际的问题,要建模型,在求解。求解要选择算法,只有我们对各种算法的优缺点都很熟悉后才能根据实际问题选出有效的算法。但是对各种算法都了如指掌是不现实的,但多知道一些,会使你的选择集更大,找出最好算法的概率越大。现在研一,要开题了些点文献综述,愿与大家分享。

大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。

启发式算法的发展:
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。
40年代:由于实际需要,提出了启发式算法(快速有效)。
50年代:逐步繁荣,其中 贪婪算法和局部搜索 等到人们的关注。
60年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规
        模的问题仍然无能为力(收敛速度慢)。
70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局最优性。
        由此必须引入新的搜索机制和策略………..
        Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的
        兴趣。
80年代以后:
        模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。
最近比较热或刚热过去的:
演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms), 拟人拟物算法,量子算法等。
各个算法的思想这就不再详细给出(以后会给出一些,关注我的blog) ,为什么要引出启发式算法,因为NP问题,一般的经典算法是无法求解,或求解时间过长,我们无法接受。这里要说明的是:启发式算法得到的解只是近似最优解(近似到什么程度,只有根据具体问题才能给出). 二十一世纪的最大的数学难题NP?=P,如果NP=P启发式算法就不在有存在的意义。

启发式算法的不足和如何解决方法:
(水平有限 仅仅提出6点)
启发式算法目前缺乏统一、完整的理论体系。
很难解决! 启发式算法的提出就是根据经验提出,没有什么坚实的理论基础。
由于NP理论,启发式算法就解得全局最优性无法保证。
等NP?=P有结果了再说吧,不知道这个世纪能不能行。
各种启发式算法都有个自优点如何,完美结合。
如果你没有实际经验,你就别去干这个,相结合就要做大量尝试,或许会有意外的收获。
启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。
还是那句话,这是经验活但还要悟性,只有try again………..
启发算法缺乏有效的迭代停止条件。
还是经验,迭代次数100不行,就200,还不行就1000…………
还不行估计就是算法有问题,或者你把它用错地方了………..
启发式算法收敛速度的研究等。
你会发现,没有完美的东西,要快你就要付出代价,就是越快你得到的解也就远差。      (待续)

优胜劣汰是大自然的普遍规律,它主要通过选择和变异来实现。选择是优化的基本思想,变异(多样化)是随机搜索或非确定搜索的基本思想。“优胜劣汰”是算法搜索的核心,根据“优胜劣汰”策略的不同,可以获得不同的超启发式算法。超启发式算法的主要思想来自于人类经过长期对物理、生物、社会的自然现象仔细的观察和实践,以及对这些自然现象的深刻理解,逐步向大自然学习,模仿其中的自然现象的运行机制而得到的。

遗传算法:是根据生物演化,模拟演化过程中基因染色体的选择、交叉和变异得到的算法。在进化过程中,较好的个体有较大的生存几率。

模拟退火:是模拟统计物理中固体物质的结晶过程。在退火的过程中,如果搜索到好的解接受;否则,以一定的概率接受不好的解(即实现多样化或变异的思想),达到跳出局部最优解得目的。

神经网络:模拟大脑神经处理的过程,通过各个神经元的竞争和协作,实现选择和变异的过程。

禁忌搜索:模拟人的经验,通过禁忌表记忆最近搜索过程中的历史信息,禁忌某些解,以避免走回头路,达到跳出局部最优解的目的。

蚂蚁算法:模拟蚂蚁的行为,拟人拟物,向蚂蚁的协作方式学习。

这几种超启发式算法都有一个共同的特点:从随机的可行初始解出发,才用迭代改进的策略,去逼近问题的最优解。

他们的基本要素:(1)随机初始可行解;

(2)给定一个评价函数(常常与目标函数值有关);

(3)邻域,产生新的可行解;

(4)选择和接受解得准则;

(5)终止准则。

其中(4)集中反映了超启发式算法的克服局部最优的能力。

  虽然人们研究对启发式算法的研究将近50年,但它还有很多不足:

1.启发式算法目前缺乏统一、完整的理论体系。

2.由于NP理论,各种启发式算法都不可避免的遭遇到局部最优的问题,如何判断

3.各种启发式算法都有个自优点如何,完美结合。

4.启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。

5.启发算法缺乏有效的迭代停止条件。

6.启发式算法收敛速度的研究等。

 继续……

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aris_zzy/archive/2006/06/04/772175.aspx

Tagged on:

2 thoughts on “启发式算法简谈–ariszheng

  1. Scott

    顶一个.虽然没有具体的展开
    感觉概念上有比较深的见的

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>