元启发式算法
简介:“优化是力量之源",利用各种有效的方法和技术对解决问题的方案做出最佳选择称为优化,在既有条件下达到最优。优化步骤:
(1)问题定制(formulation)
客观清晰准确的描述所要解决的问题及其步骤,明确问题的目标以及各种影响因素。
(2)数学建模(modeling)
依据对问题的定制,运用数学的语言和方法建立可计算的数学模型,通常是对实际问题的简化或近似。
(3)问题优化(optimization)
利用各种有效的方法和技术解决问题,所得方案可能是最优的,但多数情况下是近优的,有时仅仅是可行的。
(4)实施方案(implementation)
把优化方案用于实际问题进行验证比较,找出差距并根据结果改进方案。
如图所示:
优化问题与优化算法
1.1优化问题概述
1.1.1 问题定制
优化对象来自现实问题,首先需要对问题做出界定,即通过描述问题的外在表现和内在影响因素及其相互关系,抓住问题的本质。问题定制是数学建模的基础,通常表现为文字上的描述以及数学符号的表达。我们把界定问题的过程称为问题定制,这种定制最初可能是模糊的、不十分明确的,但会随着对问题的深入认识和理解而逐渐得到完善,问题定制需要把握以下3点:
(1)明确解决问题的目的,进而确定所要达到的目标
(2)明确影响目标达成的各种因素,进而确定决策变量
(3)明确适用条件和范围,进而确定约束条件
现实世界往往是复杂的,因此必要的时候需要简化问题和把握重点,仅保留问题的主要目标、影响较大的关键因素及变量之间的主要关系。
例1-1 问题定制举例:为自来水公司选择管道铺设路线
某自来水公司打算为四个小区V1-V4铺设自来水供水管道,如图1-2所示:V0是自来水公司的供水总阀所在地,V1-V4是四个小区的所在位置,连线标注了相互间的距离,管线要尽量沿道路铺设以便于维护。问:如何选择路径以使得所铺设管道最短?
(1)问题定制
目标:管道铺设路线最短
影响因素:供水总阀门位置坐标、小区位置坐标、小区之间的距离
约束条件:尽量沿道路铺设以便于维护
(2)建立数学模型
假设有n条边(道路),各条边的长度l(权重)代表了道路的长度,是影响管道长度的主要因素,
问题课归纳为在一个给定的无向图G(V,E)中寻找一棵无回路支撑树T,这棵树拥有图中所有顶点且满足整棵树的边权之和最小,如图1-2所示。
明确了目标是选择最短路径,影响因素是各条边的长度,可建立一个最小化无回路支撑数学模型。其中,ET是支撑树所有边的集合,数学表达式为:
1.1.2 数学建模
通过假设、简化、抽象等处理手段,把实际问题用数学表达式来表达,建立起包括优化目标、决策变量和约束条件的优化数学模型,以便于进一步运用各种优化方法和技术进行求解,这种从实际问题中抽象、提炼数学模型的过程称为数学模型。
数学模型并非现实问题的直接翻版,建模过程即需要对现实问题深入的观察和分析,去粗取精,去伪存真,又需要灵活地运用各种数学知识来量化表达问题,借助于数学符号描述目标、变量和约束之间的相互关系。
数学模型可以用普遍地用以下通用模板来表达:
式中,f(x)是目标函数,x= (x1,x2,...,xn)是n维决策变量,gi(x)和hi(x)分别是不等式约束和等式约束。
在该模型的基础上可以衍生出各种不同类型问题的数学模型,例如,去掉所有的约束项就成为无约束优化模型;若目标函数和约束函数都是线性的,就成为线性规划模型;若目标函数是指数函数、幂函数等非线性函数,就是非线性规划模型;若目标函数和约束变量均为离散取值,就是组合优化问题模型等。
根据数据之间的相互关系,可以分为以下不同类型的数学模型:
(1)等量关系建立方程模型
(2)不等量关系建立不等式模型
(3)等量关系可建立函数模型
(4)数量关系可建立统计模型
(5)分类问题可建立分类模型
(6)图形描述可建立几何模型
根据目标函数受决策变量的影响情况,可以分为确定性模型、非确定性模型、动态模型和鲁棒模型四种不同类型的数学模型。
(1)确定性模型(deterministic model)
一个完全确定的函数因果关系所决定的模型称为确定性模型。目标函数值的确定性取决于输入变量的值。
(2)非确定性模型(nondeterministic model)
非确定性模型也称为随机概率模型。现实世界中,不确定现象是普遍存在的,例如,粒子运动的轨迹,加工零件的误差,抛硬币出现反正面的情况等。随机模型以概率和数理统计理论为基础,其特点是模型参数、模拟对象是随机变量,相互关系服从概率分布。
(3)动态模型(dynamic model)
影响问题的各种因素随时间t的变化而变化的模型称为动态模型。与非确定性模型不同,动态模型的目标在t时刻是确定的。例如,周期性动态模型表现为目标值和变量随时间的变化而变化有规律的变化。
(4)鲁棒模型(robust model)
某些优化模型所需要的变量环境和约束条件十分苛刻,变量取值范围或者约束条件的些许变化就可可能导致模型的失效。现实中决策变量的扰动变化是难以避免的,决策变量值在一定范围内变化而目标函数仍能维持的模型,称为鲁棒模型。鲁棒优化的目的是对于可能出现的所有情况,约束条件均满足,并且使得最坏情况下的目标函数值仍保持较优。
1.2 优化问题分类
1.按照解空间的性质
按照解空间的性质,优化问题可分为实值函数优化问题和组合优化问题
2.按照优化目标解的性质
可分为最小优化和最大优化
3.按照优化目标解的数量
可分为单目标优化和多目标优化
4.按照有无约束项
有约束优化和无约束优化
5.按照目标函数和约束条件的性质
线性优化问题和非线性优化问题
6.按照变量的形态
确定性优化问题和随机性优化问题
1.3 优化算法及分类
按照优化问题的处理结果,可以把目前已知的各种优化算法大致分为两大类:第一类是基于函数解析性质的确定性优化算法(deterministic optimization),也称为精确优化算法(exact algorithm).例如,拟牛顿法、爬山法、分枝定界法、线性规划和非线性规划算法等。
精确优化算法难以适应实际工程的需要,发展出第二大类算法:基于随机概率策略的非确定性优化算法(nondeterministic optimization),也称为近似优化算法。此处的随机概率策略是指算法中的组合值顺序随机产生。
1.3.1 精确算法和近似算法
精确算法能够获得问题的最优解并确保其最优性。近似算法不能保证获得最优解,但能够在合理的时间和空间下获得近优解或可行解。按照优化问题处理的最终结果,优化方法分类如下图:
图1-3按照问题处理的结果分类优化算法
近似方法又可分为两个子类:近似算法和启发式算法。与通常在合理时间内找到好的解决方案的启发式算法不同,近似算法能够提供可证明的解决方案质量和可证明的运行时限,能够保证所得解的边界和全局最优性。启发式算法可以分为两个系列,即元启发式算法和基于特定问题的启发式算法。前者是指一类通用的启发式算法,通常可用于解决任何优化问题。后者是针对具体的特定问题实例而定制和设计的适用范围有限。根据每次搜索迭代过程中并行目标解的数量,元启发式算法又可分为单解元启发式算法和群解元启发式算法。单解元启发式算法,如模拟退火算法、禁忌搜索算法、邻域搜索算法等,每轮搜索只从一个解出发;群解元启发式算法则每轮搜索从相对独立并行的一组解出发。二者均需按照规则保留满足要求的最优解。
1.3.2 传统优化算法和元启发式优化算法
按照解决优化问题的过程,分为传统优化算法和元启发式优化算法,下表列出了部分目前较流行的这两类优化算法。
传统优化算法(左四) | 元启发式优化算法(右4) |
---|
无约束优化 | 有约束优化 | 数学规划法 | 图论算法 | 进化算法 | 群集智能算法 | 智能仿生优化算法 | 其他智能优化算法 |
---|---|---|---|---|---|---|---|
一维搜索法 | 罚函数法 | 线性规划 | 最短路径法 | 遗传算法 | 蚁群算法 | 布谷鸟搜索算法 | 模拟退火算法 |
基本下降法 | 可行方向法 | 动态规划 | 最小树法 | 进化策略算法 | 粒子群算法 | 鸡群优化算法 | 禁忌搜索算法 |
共轭方向法 | 二次逼近法 | 整数规划 | 网络流算法 | 进化规划算法 | 人工蜂群算法 | 果蝇优化算法 | 量子遗传算法 |
变尺度法 | 极大熵法 | 二次规划 | 最佳匹配算法 | 遗传规划算法 | 人工鱼群算法 | 野草入侵优化算法 | 人工免疫算法 |
直接搜索法 | 最小二乘法 | 多目标规划 | 最小费用算法 | 差分进化算法 | 细菌觅食算法 | 蝙蝠优化算法 | 人工萤火虫算法 |
图染色算法 | 分布估计算法 | 混合蛙跳算法 | 人工植物优化算法 | 文化算法 | |||
Memetic算法 | 狮群优化算法 | 化学反应优化算法 | 和声搜索算法 | ||||
狼群优化算法 | 人工神经网络优化 | 混沌优化算法 | |||||
... | 生物地理优化算法 | ||||||
元启发式算法的提出或模拟某种自然现象和过程或通过观察自然界生物生存行为而受到启发。虽然多数情况下不一定求得问题的最优解,即使得到最优解也难以证明其最优性,但此类算法的效率高、时效性强且具有全局收敛性,在求解现实优化问题时往往有突出的表现。
1.4 元启发式算法
“启发式”(heuristic)一词来源于古希腊语,意思是寻找解决问题的新方法的艺术。
1.4.1 元启发式算法概述
1. 元启发式算法的共性
基于进化(evolutionary)和基于群智能(swarm intelligence)策略的元启发式算法是当前较为流行的两大主流分支。
共性总结:
(1)元启发式算法的主要特征(基本上)
1.与问题无关或不需要问题所提供的信息,如导数、梯度或Hessian矩阵等信息
2.受自然现象启发,如模仿自然界的物理现象、生物或动物的群体生存行为等
3.利用随机概率,优胜劣汰、择优保留、循序渐进等原则。例如,遗传算法中的选择、交叉和变异;粒子群算法中群鸟速度和位置的变化;模拟退火算法中接受新状态;蚁群算法中的蚂蚁转移概率等。
4.借助于计算机这一快速高效的计算工具
5.有保留最好解和接受劣解的策略
6.虽不能保证最优解,但时效性强,搜索效率高,基本上能满足工程的需要
(2)一般流程框架
元启发式算法多是基于迭代搜索策略的,是从一个或一组完整的初始解开始,使用预设步骤在每次更新迭代时对解进行更新变换,直到满足终止条件为止。元启发式优化算法的流程框架如下图。其中,“基于既定更新策略更新当前解”是区别各种元启发式算法的主要环节。
(3)多样性搜索和强化搜索
(4)约束项的处理
(5)参数的处理
(6)编码和解码
(7)目标函数
1)自足目标函数,
2)引导目标函数
3)交互目标函数
4)相对和竞争目标函数
5)元建模目标函数
2.适用性
推荐场景:
1.规模较大、实时性较强的多项式类问题,如GPS定位
2.中等规模以上的NP难问题
3.无须获得精确解的优化问题
4.中等规模以上的整数规划/混合整数规划问题
5.小型约束规划问题
6.非线性连续优化问题
7.黑盒优化问题
8.交互式优化问题
9.适用短期及时决策
1.4.2 基于单解的元启发式算法
算法:单解元启发式算法流程通用模板
Input:t = 0,初始解st = s0
REPEAT Until 满足停止条件:
从st出发,生成一组不重复的邻域解N(st);
按照规则从N(st)选择一个解st+1 = Selected(N(st))作为下一步出发点;
t = t+1;
st = st+1;
END REPEAT
Output: 当前最好解st
1.4.3 基于群解的元启发式算法
算法:群解元启发式算法流程的通用模板
Input: t = 0,令初始解Pt = P0;
Repeat:
从种群Pt出发,生成一个新种群P't;
从(Pt U P't)选择下一代种族,令Pt+1 = (Pt U P't);
t = t + 1;
st = st+1;
Until 满足停止条件
Output: 当前最好解
1.5 元启发式算法应用参考路线图
最开始提到,优化方法解决问题的一般过程涉及问题定制、建模、优化和实现四个主要步骤。具体使用还有额外的技术细节,下图提供了元启发式算法解决优化问题的行动指南: