《启发式优化算法综述》由会员分享,可在线阅读,更多相关《启发式优化算法综述(7页珍藏版)》请在金锄头文库上搜索。
1、启发式优化算法综述一、启发式算法简介1、定义 由于传统的优化算法如最速下降法,线性规划,动态规划,分支定界法,单纯形法,共 轭梯度法,拟牛顿法等在求解复杂的大规模优化问题中无法快速有效地寻找到一个合理可靠 的解,使得学者们期望探索一种算法:它不依赖问题的数学性能,如连续可微,非凸等特性; 对初始值要求不严格、不敏感,并能够高效处理髙维数多模态的复杂优化问题,在合理时间 内寻找到全局最优值或靠近全局最优的值。于是基于实际应用的需求,智能优化算法应运而 生。智能优化算法借助自然现象的一些特点,抽象出数学规则来求解优化问题,受大自然的 启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于
2、那些受大自然的运 行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法 (Heuristic Algorithm)。为什么要引出启发式算法,因为NP问题,一般的经典算法是无法求解,或求解时间过 长,我们无法接受。因此,采用一种相对好的求解算法,去尽可能逼近最优解,得到一个相 对优解,在很多实际情况中也是可以接受的。启发式算法是一种技术,这种技术使得在可接 受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况 下,无法阐述所得解同最优解的近似程度。启发式算法是和问题求解及搜索相关的,也就是说,启发式算法是为了提高搜索效率才 提出的。人在解决问题时
3、所采取的一种根据经验规则进行发现的方法。其特点是在解决问题 时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案, 以随机或近似随机方法搜索非线性复杂空间中全局最优解的寻取。启发式解决问题的方法是 与算法相对立的。算法是把各种可能性都一一进行尝试,最终能找到问题的答案,但它是在 很大的问题空间内,花费大量的时间和精力才能求得答案。启发式方法则是在有限的搜索空 间内,大大减少尝试的数量,能迅速地达到问题的解决。2、发展历史 启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,才能取得了 巨大的成就。纵观启发式算法的历史发展史:40年代:由于实际需要,提出
4、了启发式算法(快速有效)。 50年代:逐步繁荣,其中贪婪算法和局部搜索等到人们的关注。60 年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且 对大规模的问题仍然无能为力(收敛速度慢)。70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内 找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在 局部的区域内找解,等到的解没有全局最优性。由此必须引入新的搜索机制和策略。Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的 兴趣。80年代以后:模拟退火算法(Simula ted
5、 Annealing Algori thm),人工神经网络(Ar ti ficial Neural Net work),禁忌搜索(Tabu Search)相继出现。最近比较火热的:演化算法(Evolu tionary Algori thm),蚁群算法(Ant Algori thms), 拟人拟物算法,量子算法等。二、启发式算法类型1、类型简介 大部分的算法都是仿生演变而来,如下:仿动物类的算法:粒子群优化,蚁群算法,鱼 群算法,蜂群算法等;仿植物类的算法:向光性算法,杂草优化算法等;仿人类的算法有: 遗传基因算法,和声搜索算法,神经网络;以及其他的理论成熟并被广泛使用的算法如:模 拟退火算法、
6、禁忌搜索等等 、粒子群算法 粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解粒子群算法源于复杂适应系统(Complex Adap tive Sys tem,CAS)。CAS理论于1994年正式提 出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有 适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验” 改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和 多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断 发现新的食物)。设想这样一个场景:一群鸟在随机的
7、搜索食物。在这个区域里只有一块食物,所有的 鸟都不知道食物在那。但是它们知道自己当前的位置距离食物还有多远。那么找到食物 的最优策略是什么?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 、蚁群算法蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优 化路径的机率型算法。它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于 蚂蚁在寻找食物过程中发现路径的行为。蚂蚁在运动过程中,会留下一种称为信息素的东西,并且会随着移动的距离,播散的信 息素越来越少,所以往往在家或者食物的周围,信息素的浓度是最强的,而蚂蚁自身会根据
8、信息素去选择方向,当然信息素越浓,被选择的概率也就越大,并且信息素本身具有一定的 挥发作用。蚂蚁的运动过程可以简单归纳如下:1当周围没有信息素指引时,蚂蚁的运动具有一定的惯性,并有一定的概率选择其 他方向;2当周围有信息素的指引时,按照信息素的浓度强度概率性的选择运动方向;3找食物时,蚂蚁留下家相关的A信息素,找家时,蚂蚁留下食物相关的B信息素, 并随着移动距离的增加,洒播的信息素越来越少;4随着时间推移,信息素会自行挥发; 由上面4点原则构成蚁群算法的核心规则。 、遗传基因算法遗传算法(Genetic Algorithm)又叫基因进化算法,或进化算法。生物只有经过许多 世代的不断进化(evo
9、lution,演化),才能更好地完成生存与繁衍的任务。遗传算法也遵循 同样的方式,需要随着时间的推移不断成长、演化,最后才能收敛,得到针对某类特定问题 的一个或多个解。遗传算法是一种基于自然选择和群体遗传机理的捜索算法,它模拟了自然选择和自然遗 传过程中的繁殖、杂交和突变现象。标准的遗传算法包括四个组成部分:1)编码(产生初始种群)。在利用遗传算法求解问题时,首先要确定问题的目标函数和 解变量,然后对解变量进行编码,遗传算法的所有操作都是基于这种实际变量的编码。编码 是遗传算法的一个重要环节。它不仅决定了染色体的组织方式,还影响到交叉、变异算子的 执行方式。不同的编码策略对遗传算法的运行效率有
10、较大的影响。问题的编码一般应满足完 备性、健全性和非冗长性H个原则,完备性是指问题空间中的所有点都能成为GA编码空间 中点的表现型;健全性是指GA编码空间中染色体必须对应问题空间中的某一潜在解;非冗 长性是指染色体和潜在解必须对应PS1。对于一个特定的问题,如何设计出一种高效的 编码方式是遗传算法所面临的难题之一,遗憾的是,研究者们至今也没能找到一种通用的编 码策略。目前,工程优化中多采用两种常用的编码方式,即二进制编码Psi和实数编码PD1。 二进制编码的染色体是由一个二值集合0,1所组成的二进制符号串。作为GA算法的标准 编码方式,该编码方式尤其适用于能用二值向量描述的优化问题,如化学反应
11、P11、多用途 过程规划P3和最优水流参数评估Psi等;实数编码是指个体的每个基因值用某一范围的一 个浮点数表示,个体的编码长度等于其决策变量(设计变量)的个数。这种编码方式适用于 精度要求较高的遗传算法中,便于较大空间的遗传搜索:改善了遗传算法的计算复杂性,提 高了运算效率;便于遗传算法和经典优化算法的混合使用:目前基于实数编码的遗传算法也 被广泛用于优化问题中,如多目标优化IW,凸轮轮廓设汁等。2)选择操作。选择是指从群体中选择优良的个体并淘汰劣质个体的操作。它建立在适 应度评估的基础上,遼应度楚大的个体,被选择的可能性就越大,它的吁孙在下一代的个 数就越多。选择出来的个体被放入配对库中。
12、目前常用的选择方法有轮盘赌方法、最佳个体 保留法、期望值法和排序选择法等。3)交叉操作。交叉是指两个父代个体的部分结构加W替换重组而生成新个体的操作, 目的是为了能够在下一代产生新的个体。通过交叉操作,遗传算法的搜索能力得W提高。交 叉是遗传算法获取新优良个体最重要的手段,按照一定的交叉概率在配对库中随机地选取两 个个体进行交叉,交叉的位置也是随机确定的。4)变异。变异就是很小的变异概率随机地改变群体中个体的某些基因的值。变异操作 中位置选取的基本过程如下:产生一个在01之间的随机数,如果小于Pm则进行变异操作。 、模拟退火 模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充
13、分高,再 让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐 趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。模拟退火算法新解的产生和接受可分为如下四个步骤: 第一步是由一个产生函数从当前解产生一个位于解空间的新为解;便于后续的计算 和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法如, 对构成新解的全部或部分元素进行置换互、换等,注意到产生新解的变换方法决定了当 前新解的邻域结构,因而对冷却进度表的选取有一定的影响。第二步是计算与新解所对应的目标函数差因。为目标函数差仅由变换部分产生所, 以目标函数差的计算最好按增量计算
14、事。实表明,对大多数应用而言,这是计算目标函 数差的最快方法。第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则:若AT0则接受作为新的当前解S,否则以概率exp(-AT/T)接 受S,作为新的当前解S。第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生 新解时的变换部分予以实现同,时修正目标函数值即可此。时,当前解实现了一次迭代。 可在此基础上开始下一轮试验而。当新解被判定为舍弃时,则在原当前解的基础上继续 下一轮试验。模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关; 模拟退火算法具有渐近收敛性
15、,已在理论上被证明是一种以概率 l 收敛于全局最优解的全 局优化算法;模拟退火算法具有并行性。2、设计良好的启发式算法上述的启发式算法都有一个共同的特点:从随机的可行初始解出发,才用迭代改进的策 略,去逼近问题的最优解。他们的基本要素:1)随机初始可行解;2)给定一个评价函数(常常与目标函数值有关);3)邻域,产生新的可行解;4)选择和接受解得准则;5)终止准则。 但在启发式算法中,局部最优值的陷入是无法避免。启发式,本质上是一种贪心策略, 这也在客观上决定了不符合贪心规则的更好(或者最优)解会错过。那么如何避免陷入局部最优呢?随机。具体实现手段上,可以根据所采用的启发式框架来灵活地加入随机性
16、。比如遗传里面, 可以在交叉变异时,可以在控制人口策略中,也可以在选择父本母本样本时;禁忌里面,可 以在禁忌表的长度上体现,也可以在解禁策略中使用,等等。这些都要结合具体问题特定的 算例集,需要反复尝试摸索才行。参数的敏感性是一个问题,建议不要超过3个参数,参数 越不敏感越好。不同算例集用不同种子运行多次(100次左右才有统计意义),统计平均性 能即可。需注意全局的随机重启通常来说不是一个好办法,因为等于主动放弃之前搜索结果, 万不得已不要用,或者就是不用。三个原则应该把握:越随机越好;越不随机越好;二者平衡最好。越随机越好没有随机性,一定会陷入局部最优。为了获得更大的找到最优解的期望,算 法中一定要有足够的随机性。具体体现为鲁棒性较好,搜索时多样性较好。算法的每一步选 择都可以考虑加入随机性,但要控制好概率。比如,某个贪心策略下,是以概率1做某一动 作,可以