启发式算法

启发式算法(heuristic algorithm)是相对于最优化算法提出的。

一个问题的最优算法求得该问题每个实例的最优解。

启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。

现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。

现代启发式算法的各种具体实现方法是相对独立提出的,相互之间有一定的区别。从历史上看,现代启发式算法主要有:

模拟退火算法(SA)、遗传算法(GA)、列表搜索算法(ST)、进化规划(EP)、进化策略(ES)、蚁群算法(ACA)、人工神经网络(ANN)。

人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的 步骤去寻求答案。启发式解决问题的方法是与算法相对立的。算法是把各种可能性都一一进行尝试,最终能找到问题的答案,但它是在很大的问题空间内,花费大量 的时间和精力才能求得答案。启发式方法则是在有限的搜索空间内,大大减少尝试的数量,能迅速地达到问题的解决。但由于这种方法具有尝试错误的特点,所以也 有失败的可能性。科学家的许多重大发现,常常是利用极为简单的启发式规则。

超启发式算法

现有超启发式算法可以大致分为4类:

基于随机选择、基于贪心算法、基于元启发式算法和基于学习的超启发式算法。

基于随机选择的超启发式算法
该类超启发式算法是从给定的集合中随机选择LLH,组合形成新的启发式算法。这类超启发式算法的特点是结构简单、容易实现。同时,这类超启发式算法也经常被用作基准(bench mark),以评价其他类型的超启发式算法性能。该类超启发式算法可以进一步细分为纯随机(pure random)、带延迟接受条件的随机(random with late acceptance)等。
基于贪心策略的超启发式算法
该类超启发式算法在构造新启发式算法时,每次都挑选那些能够最大化改进当前(问题实例)解的LLH。由于每次挑选LLH时需要评估所有LLH,故此该类方法的执行效率低于基于随机选择的超启发式算法。
基于元启发式算法的超启发式算法
该类超启发式算法采用现有的元启发式算法(作为高层策略)来选择LLH。由于元启发式算法研究相对充分,因此这类超启发式算法的研究成果相对较多。根据所采用的元启发式算法,该类超启发式算法可以细分为基于禁忌搜索、基于遗传算法、基于遗传编程、基于蚁群算法和基于GRASP with path-relinking等。[5] 
基于学习的超启发式算法
该类超启发式算法在构造新启发式算法时,采用一定学习机制,根据现有各种LLH的历史信息来决定采纳哪一个LLH。根据LLH历史信息来源的不同,该类超启发式算法可以进一步分为在线学习(on-line learning)和离线学习(off-line learning)两种:前者是指LLH的历史信息是在求解当前实例过程中积累下来的;后者通常将实例集合分为训练实例和待求解实例两部分,训练实例主要用于积累LLH的历史信息,而待求解实例则可以根据这些历史信息来决定LLH的取舍

原文地址:https://www.cnblogs.com/wander-clouds/p/8444424.html

时间: 2024-08-01 11:59:04

启发式算法的相关文章

启发式算法是什么意思

启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的最优解.启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计. 计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得最佳解或次佳解的算法.而启发式算法则试图一次提供一或全部目标. 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解:它通常可在合

人工智能 启发式算法(A,A*)

启发式算法区别于盲目搜索算法,是搜索策略的一种.主要特点是 可以利用问题自身的一些特征信息(启发式信息)来指导搜索的过程,从而可以缩小搜索范围,提高搜索效率. 实际上,启发式算法也代表了"大拇指准则"(在大多数情况下是成功的,但不能保证一定成功的准则). 启发式算法离不开启发式信息,而启发式信息反映在评估函数中. 评估函数f(x)定义为:从初始节点S0出发,约束地经过节点X到达目标节点Sg的所有路径中最小路径代价的估计值. 其一般形式为f(x)=g(x)+h(x),g(x)表示从初始节

Dr.Elephant启发式算法指南 - 【Dr.Elephant系列文章-5】

Map-Reduce Mapper数据倾斜 数据进入到Mapper作业中后,有可能会发生数据的倾斜,Mapper数据倾斜启发式算法(mapper data skew heuristic)能够判定这种情况是否存在.启发式算法会将所有的Mapper分成两部分,其中一部分的所有作业(task)的平均数据量会大于另一部分的平均数据量. 例如:第一部分有900个Mapper作业,每个Mapper作业平均数据量为7MB,而另一份包含1200个Mapper作业,且每个Mapper作业的平均数据量是500MB.

启发式算法(Heuristic Algorithm)

背景: 李航的<统计学习方法>一书中提到:决策树算法通常采用启发式算法,故了解之 问题解答: 时间有限,这里也只是将算法和启发式算法的区别和简单发展摘录如下: 一.算法和启发式方法之间的差别很微妙,两个术语的意思也有一些重叠.就本书的目的而言,它们之间的差别就在于其距离最终解决办法的间接程度:算法直接给你解决问题的指导,而启发式方法则告诉你该如何发现这些指导信息,或者至少到哪里去寻找它们. 二.发展 40年代:由于实际需要,提出了启发式算法(快速有效). 50年代:逐步繁荣,其中贪婪算法和局部

MIP启发式算法:爬山算法 (Hill climbing)

本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 Hill climbing 的伪代码 前言 爬山算法是以local search为核心框架的启发式算法中最简单的算法,当然,结果一般也不太好,因为爬山算法有一个很大的缺点:不能跳出局部解. 就像我们在local search那篇文中提到,以local search 为框架的启发式算法需要综合考虑到算

启发式算法中的合法解与可行解

参考文献: [1] Cheng R , Gen M , Tsujimura Y . A tutorial survey of job-shop scheduling problems using genetic algorithms—I. representation[J]. Computers and Industrial Engineering, 1996, 30(4):983-997. 最近在看一些启发式算法求解经典问题的论文,发现几篇比较新的文献中对于合法解和可行解的定义有一些区别,想起

启发式算法之遗传算法

刚开学便被拉去参加了研究生数模比赛,赛题是一个航班排班的优化问题,所以第一反映便是遗传算法,比赛期间三个问题都使用单目标遗传算法,趁着还比较熟悉,特此记录,以便后续复习.本篇文章使用Python进行实现. 启发式算法 启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度. 就是说这种算法的全局最优解只是理论上可行,大多数情况下都是一个局部最优解.启发式算法用的比较多的有模拟退火算法(SA).遗

元启发式算法相关文献

Bibliography [recommendation] a literature survey of various extensions of the VRP occurring in practice : O. Bräysy, M. Gendreau, G. Hasle and A. Løkketangen. “A Survey of Heuristics for the Vehicle Routing Problem, Part I: Basic Problems and Supply

MIP启发式算法:Variable fixing heuristic

*本文主要记录及分享学习到的知识,算不上原创 *参考文章见链接. 本文简单介绍一下Variable fixing heuristic,这个算法同样以local search为核心框架,它的特点在于定义邻域结构的方式. 目录 Hard variable fixing heuristic Soft Variable fixing heuristic Hard Variable fixing heuristic Variable fixing heuristic 常常与Cplex一起使用.就像刚才提到