`
凤凰涅磐
  • 浏览: 86603 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

启发式算法

阅读更多

大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(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.启发式算法收敛速度的研究等。

 

 

驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从左边褐色大房子的车道进去,就是North Cedar 路714 号。

用启发式方法来描述则可能是这样:找出上一次我们寄给你的信,照着信上面的寄出地址开车到这个镇;到了之后你问一下我们的房子在哪里。这里每个人都认识我们——肯定有人会很愿意帮助你的;如果你找不到人,那就找个公共电话亭给我们打电话,我们会出来接你。

算法和启发式方法之间的差别很微妙,两个术语的意思也有一些重叠。它们之间的差别就在于其距离最终解决办法的间接程度:算法直接给你解决问题的指导,而启发式方法则告诉你该如何发现这些指导信息,或者至少到哪里去寻找它们。

----------------------------------------------------------------------------------------------------------------------------

从上面的启发式算法的解释可以看出,启发式算法的难点是建立符合实际问题的一系列启发式规则。启发式算法的优点在于它比盲目型的搜索法要高效,一个经过仔细设计的启发函数,往往在很快的时间内就可得到一个搜索问题的最优解,对于NP问题,亦可在多项式时间内得到一个较优解。

分享到:
评论

相关推荐

    超启发式算法介绍大全

    超启发式算法和传统启发式算法的主要区别在于,超启发式算法提供了一种高层次启发式方法,通过管理或操纵一系列低层次启发式算法,以产生新的启发式算法,而传统启发式算法则是一种基于直观或经验构造的算法。...

    生产排程之启发式算法

    ### 生产排程之启发式算法 #### 一、引言与概述 在现代工业生产过程中,生产排程是确保高效、经济生产的关键环节之一。它涉及到如何合理安排任务顺序和资源分配,以达到最小化成本、缩短交货时间等目标。传统的...

    元启发式算法文档

    ### 元启发式算法与禁忌搜索综合概述 #### 一、引言 本文主要探讨了元启发式算法在解决特定类型的车辆路径问题(Vehicle Routing Problem, VRP)中的应用,特别是针对多隔间车辆路径问题(Multi-Compartment ...

    数学建模启发式算法

    启发式算法则是数学建模中的一种重要工具,尤其在面对复杂优化问题时,能提供有效的近似解决方案。下面我们将深入探讨这两个核心概念以及它们之间的关联。 一、数学建模基础 数学建模的过程通常包括以下步骤: 1....

    启发式算法在生产排产中的应用

    在这样的背景下,启发式算法作为一种有效的解决工具,被提出并应用于单件生产排产问题中。启发式算法是指在解决优化问题时,通过近似解或合理的方法来找到问题的满意解的算法。这些算法通常在解决问题的过程中不断...

    高级排产计划中启发式算法研究与实现

    在深入探讨“高级排产计划(Advanced Planning and Scheduling,简称APS)中启发式算法的研究与实现”这一主题之前,我们首先需要理解APS系统的基本概念及其在现代制造业中的重要性。APS是一种高度复杂的生产调度...

    狼群算法——一种新的启发式算法

    狼群算法是一种模仿自然界狼群狩猎行为的优化算法,属于启发式算法的一种。启发式算法是基于经验或直观知识的搜索策略,用于在复杂的优化问题中寻找近似最优解。这种算法通常适用于多模态函数优化、工程设计、网络...

    启发式算法的优化

    启发式算法的优化是计算机科学领域中解决复杂问题的一种高效策略,主要应用于人工智能、运筹学、图论和机器学习等多个领域。这类算法基于部分信息或经验,通过设定评价函数来指导搜索过程,以更快地找到近似最优解...

    动态规划启发式算法求解时变车辆调度问题

    ### 动态规划启发式算法求解时变车辆调度问题 #### 一、问题背景及研究意义 在交通网络中,车辆的行驶时间不仅受到节点间距离的影响,还受到多种时变因素(如交通流量、交通管制、天气状况等)的影响。这种特性...

    基于生物启发式算法的多智能体强化学习算法python源码+项目文档+详细注释+模型+示例图片.zip

    基于生物启发式算法的多智能体强化学习算法python源码+项目文档+详细注释+模型+示例图片.zip 基于生物启发式算法的多智能体强化学习算法python源码+项目文档+详细注释+模型+示例图片.zip 基于生物启发式算法的多智能...

    数学建模培训 MATLAB与数学建模 启发式算法简介及其在数学模型中的应用 共147页.pdf

    【启发式算法简介】 启发式算法(Heuristic Algorithm)是一种基于直观或经验的搜索策略,旨在在有限的时间和计算资源内找到问题的解决方案。这些算法通常不保证找到全局最优解,但能提供接近最优或足够好的解。...

    四种经典启发式算法求解TSP问题

    四种经典启发式算法求解TSP问题,包括模拟退火(Simulated annealing)、禁忌搜索(Tabu search)、遗传算法(Genetic algorithms)和蚁群算法(Ant colonies)

    【老生谈算法】CDS启发式算法及Matlab程序.docx

    老生谈算法 - CDS 启发式算法及 Matlab 程序 CDS 启发式算法是一种解决 n-job m-machine 调度问题的方法,用于寻找最优调度以最小化Makespan。该算法由 Campbell、Dudek 和 Simth 提出,是 Johnson 算法的扩展,...

    启发式算法-数学建模-代码

    启发式算法是一种优化技术,常用于解决复杂度高、难以找到全局最优解的问题。这些算法在寻找近似最优解时,通常比传统的精确算法更快,更有效率。在数学建模中,启发式算法被广泛应用于求解各种复杂的优化问题,如...

    启发式算法阅读材料

    ### 启发式算法之大规模邻域搜索技术详解 #### 引言 在解决实际的最优化问题时,经常会遇到计算复杂度极高的情况。针对这类问题,传统的精确求解方法往往难以在合理的时间内找到最优解。因此,启发式算法成为了一种...

    现代启发式算法理论研究

    ### 现代启发式算法理论研究 #### 引言 近年来,一类基于生物学、物理学以及人工智能技术的现代启发式算法得到了快速发展。这类算法具备全局优化能力、强鲁棒性、高通用性,并且适用于并行处理。由于其高效的优化...

    生物启发式算法在VANET中的应用.docx

    ### 生物启发式算法在VANET中的应用 #### 一、引言 随着智能交通系统(Intelligent Transportation System, ITS)的不断发展,车载自组织网络(Vehicle Ad-hoc Network, VANET)作为一种特殊的移动自组织网络...

    数学建模培训 MATLAB与数学建模 启发式算法简介及其在数学模型中的应用 周吕文版 含培训课件及源码.rar

    《MATLAB与数学建模:启发式算法简介及其应用》 数学建模是现代科学研究和技术领域中不可或缺的一部分,它通过构建数学模型来理解和预测复杂的系统行为。MATLAB作为一款强大的数值计算和编程环境,常被用于数学建模...

Global site tag (gtag.js) - Google Analytics