优化技术是一种以数学为基础,用于求解各种工程问题优化解的应用技术。归纳而言,最优化问题分为函数优化问题和组合优化问题两大类,其中函数优化的对象是一定区间的连续变量,而组合优化的对象则是解空间中的离散状态。
一、函数优化问题
函数优化问题通常可描述为:令SS为RnRn上的有界子集(即变量的定义域),f:S→Rf:S→R为nn维实值函数,所谓函数ff在SS域上全局最小化就是寻求点Xmin∈SXmin∈S使得f(Xmin)f(Xmin)在SS域上全局最小,即∀X∈S:f(Xmin)≤f(X)∀X∈S:f(Xmin)≤f(X)。
算法的性能比较通常是基于一些称为Benchmark的典型问题展开的,常用的BenchMark问题如下:
(1)Sphere Model
f1(X)=∑i=1nx2i,|xi|≤100
f1(X)=∑i=1nxi2,|xi|≤100
其最优状态和最优值为 min(f1(X∗))=f1(0,0,...,0)=0min(f1(X∗))=f1(0,0,...,0)=0,图像如下:
(2)Schwefel’s Problem 2.22
f2(X)=∑i=1n|xi|+∏i=1n|xi|,|xi|≤10
f2(X)=∑i=1n|xi|+∏i=1n|xi|,|xi|≤10
其最优状态和最优值为 min(f2(X∗))=f2(0,0,0...,0)=0min(f2(X∗))=f2(0,0,0...,0)=0,图像如下:
(3)Schwefel’s Problem 1.2
f3(X)=∑i=1n(∑j=1ixj)2,|xi|≤100
f3(X)=∑i=1n(∑j=1ixj)2,|xi|≤100
其最优状态和最优值为 min(f3(X∗))=f3(0,0,0,...,0)=0min(f3(X∗))=f3(0,0,0,...,0)=0,图像如下:
(4)Schwefel’s Problem 2.21
f4(X)=maxi=1n|xi|,|xi|≤100
f4(X)=maxi=1n|xi|,|xi|≤100
其最优状态和最优值为 min(f4(X∗))=f4(0,0,0,...,0)=0min(f4(X∗))=f4(0,0,0,...,0)=0,图像如下:
(5)Generalized Rosenbrock’s Function
f5(X)=∑i=1n[100(xi+1−x2i)2+(1−xi)2],|xi|≤30
f5(X)=∑i=1n[100(xi+1−xi2)2+(1−xi)2],|xi|≤30
其最优状态和最优值为 min(f5(X∗))=f5(1,1,1,...,1)=0min(f5(X∗))=f5(1,1,1,...,1)=0,图像如下:
鉴于许多工程问题存在约束条件,受约束函数的优化问题也一直是优化领域关注的主要对象。常用的受约束测试函数包括:
(1) ming1(X)=5∑4i=1(xi−x2i)−∑13i=5ximing1(X)=5∑i=14(xi−xi2)−∑i=513xi,约束条件为:
2x1+2x2+x10+x11≤102x1+2x2+x10+x11≤10
2x1+2x3+x10+x11≤102x1+2x3+x10+x11≤10
2x2+2x3+x11+x12≤102x2+2x3+x11+x12≤10
−8x1+x10≤0−8x1+x10≤0
−8x2+x11≤0−8x2+x11≤0
−8x3+x12≤0−8x3+x12≤0
−2x4−x5+x10≤0−2x4−x5+x10≤0
−2x6−x7+x11≤0−2x6−x7+x11≤0
−2x8−x9+x12≤0−2x8−x9+x12≤0
0≤xi≤1,i=1,2,....,9,130≤xi≤1,i=1,2,....,9,13
0≤xi≤100,i=10,11,120≤xi≤100,i=10,11,12
其全局最优点和最优值为 g1(X∗)=g1(1,1,1,1,1,1,1,1,1,3,3,3,1)=1g1(X∗)=g1(1,1,1,1,1,1,1,1,1,3,3,3,1)=1
(2) maxg2(X)=(n−−√)n∏ni=1ximaxg2(X)=(n)n∏i=1nxi,约束条件为:
∑i=1nx2i=1,0≤xi≤1,i=1,2,...,n
∑i=1nxi2=1,0≤xi≤1,i=1,2,...,n
其全局最优点和最优值为:
g2(X∗)=g2(1n−−√,...,1n−−√)=1
g2(X∗)=g2(1n,...,1n)=1
(3) ming3(X)=(x1−10)3+(x2−20)3ming3(X)=(x1−10)3+(x2−20)3,约束条件为:
(x1−5)2+(x2−5)2≥100,13≤x1≤100,0≤x2≤100
(x1−5)2+(x2−5)2≥100,13≤x1≤100,0≤x2≤100
其已知最优点和最优值为:
g3(X∗)=g3(14.095,0.84296)=−6961.81381
g3(X∗)=g3(14.095,0.84296)=−6961.81381
对于受约束问题,除了局部极小解的存在,影响最优化性能的因素主要包括:
(1)目标函数所对应曲面的拓扑性质,比如在相同约束下,线性或凸函数比无规律的函数要容易求解。
(2)可行区域的疏密程度,通常以可行区域占整个搜索空间的比值来度量,同时,约束在可行区域边界上的变化强度与惩罚项的确定也大有关系。
(3)采用惩罚的方法来处理约束越界问题。这种方法比较通用,适当选择惩罚函数的形式可得到较好的结果。比如采用罚函数:
{minf(X)+λh2(X)+β[min{0,g(X)}]2X∈S
{X∈Sminf(X)+λh2(X)+β[min{0,g(X)}]2
因此对函数优化的讨论通常以无约束问题为主。
二、组合优化问题
组合优化问题通常可描述为:令 Ω={s1,s2,...,sn}Ω={s1,s2,...,sn}为所有状态构成的解空间, C(si)C(si)为状态 sisi对应的目标函数值,要求寻找最优解 s∗s∗,使得 ∀si∈Ω,C(s∗)=minC(si)∀si∈Ω,C(s∗)=minC(si).组合优化往往涉及排序、分类、筛选等问题,它是运筹学的一个分支。
典型的组合优化问题有旅行商(Traveling salesman problem,TSP)问题、加工调度问题(Scheduling problem,如Flow-shop,Job-shop)、0-1背包问题(Knapsack problem)、装箱问题(Bin packing problem)、图着色问题(Graph coloring problem)、聚类问题(Clustering problem)等。
(1)旅行商问题
给定nn个城市和两两城市之间的距离,要求确定一条经过各城市当且仅当一次的最短路径。其图论描述为:给定图G=(V,A)G=(V,A),其中VV为顶点集,AA为各顶点相互连接组成的边集,一直各顶点间的连接距离,要求确定一条长度最短的Hamilton回路,即遍历所有顶点当且仅当一次的最短回路。
(2)加工调度问题
Job-shop问题是一类较TSP更为复杂的典型加工调度问题,是许多实际问题的简化模型。一个Job-shop可描述为:nn个工件在mm台机器上加工,OijOij表示第ii个工件在第jj台机器上的操作,相应的操作时间TijTij为已知,事先给定各工件在各机器上的加工次序(称为技术约束条件),要求确定与技术约束条件相容的各机器上所有工件的加工次序,使加工性能指标达到最优(通常是最小完工时间Makespan)。在Job-shop问题中,除技术约束外,通常还假定每一时刻每台机器只能加工一个工件,且每个工件只能被一台机器所加工,同时加工过程为不间断。若各工件的技术约束条件相同,一个Job-shop问题就转化为简单的Flow-shop问题。进而,若各机器上各工件的加工次序也相同,则问题进一步转化为置换Flow-shop问题。
(3)0-1背包问题
对于nn个体积分别为aiai,价值分别为cici的物品,如何将它们装入总体积为bb的背包中,使得所选物品的总价值最大。
(4)装箱问题
如何以个数最少的尺寸为ll的箱子装入nn个尺寸不超过ll的物品。
(5)图着色问题
对于nn个顶点的无环图GG,要求对其各个顶点进行着色,使得任意两个相邻的顶点都有不同的颜色,且所用颜色种类最少。
(6)聚类问题
mm维空间上的nn个模式{Xi|i=1,2,...,n}{Xi|i=1,2,...,n},要求聚成kk类,使得各类本身内的点最相近,比如要求
χ2=∑i=1n||X(p)i−Rp||
χ2=∑i=1n||Xi(p)−Rp||
最小,其中RpRp为第pp类中的点数。
显然,上述问题描述均非常简单,并且有很强的工程代表性,但最优化求解很困难,其主要原因是所谓的“组合爆炸”。比如,聚类问题的可能划分方式有kn/k!kn/k!个,Job-shop的可能排列方式有(n!)m(n!)m个,基于置换排列描述的nn城市TSP问题有n!n!种可行排列,即便对无方向性和循环性的平面问题仍有(n−1)!/2(n−1)!/2种不同排列,显然状态数量随问题规模呈指数增长。因此,解决这些问题的关键在于寻求有效的优化算法。
(3)优化算法及其分类
所谓优化算法,其实就是一种搜索过程或规则,它是基于某种思想和机制,通过一定的途径或规则来得到满足用户要求的问题的解。
就优化机制与行为而分,目前工程中常用的优化算法主要可分为:经典算法、构造型算法、改进型算法,基于系统动态演化的算法和混合型算法等。
1)经典算法。包括线性规划、动态规划、整数规划和分支定界法等运筹学中的传统算法,其算法计算复杂性一般很大,只适合于求解小规模问题,在工程中往往不实用。
2)构造型算法。用构造的方法快速建立问题的解,通常算法的优化质量差,难以满足工程需要。比如调度问题中的典型构造方法有:Johnson法、Palmer法、Gupta法、CDS法、Daunenbring的快速接近法、NEH法等
3)改进型算法,或称领域搜索算法。从任一解出发,对其领域的不断搜索和当前解的替换来实现优化。根据搜索行为,它又可分为局部搜索法和指导性搜索法。
局部搜索法。以局部优化策略在当前解的领域中贪婪搜索,如只接受优于当前解的状态作为下一当前解的爬山法;接受当前邻域中的最好解作为下一当前解的最陡下降法等
指导性搜索法。利用一些指导规则来指导整个解空间中优良解的探索,如SA、GA、EP、ES和TS等
4)基于系统动态演化的方法。将优化过程转化为系统动态的演化过程,基于系统动态的演化来实现优化,如神经网络和混沌搜索等。
5)混合型算法。指上述各算法从结构或操作上相混合而产生的各类算法。
优化算法当然还可以从别的角度进行分类,如确定性算法和不确定性算法,局部优化算法和全局优化算法等。
(4)邻域函数与局部搜索
邻域函数是优化中的一个重要概念,其作用就是指导如何由一个(组)解来产生一个(组)新的解。邻域函数的设计往往依赖于问题的特性和解的表达方式(编码)。由于优化状态表征方式的不同,函数优化与组合优化中的邻域函数的具体方式明显存在差异。
函数优化中邻域函数的概念比较直观,利用距离的概念通过附加扰动来构造邻域函数是最常用的方式,如x′=x+ηξx′=x+ηξ,其中x′x′为新解,xx为旧解,ηη为尺度参数,ξξ为满足某种概率分布的随机数或白噪声或混沌系列或梯度信息等。显然,采用不同的概率分布(如高斯分布、柯西分布、均匀分布等)或下降策略,将实现不同性质的状态转移。
在组合优化中,传统的距离概念显然不再适用,但其基本思想仍旧是通过一个解产生另一个解。下面对邻域函数给出一般性定义,并以TSP为例进行解释。
定义1 令(S,F,fS,F,f)为一个组合优化问题,其中SS为所有解构成的状态空间,FF为SS上的可行域,ff为目标函数,则一个邻域函数可定义为一种映射,即N:S→2sN:S→2s。其含义是,对于每个解i∈Si∈S,一些邻近ii的解构成ii的领域Si⊂SSi⊂S,而任意j∈Sij∈Si称为ii的邻域解或邻居。通常约定,j∈Si⇐⇒i∈Sjj∈Si⇐⇒i∈Sj。
通常,TSP问题的解可用置换排列来表示,如排列(1,2,3,4)可表示4个城市TSP的一个解,即旅行顺序为1,2,3,4.那么,kk个点交换就可认为是一种邻域函数。比如,不考虑由解的方向性和循环性引起的重复性,上述排列的2点交换对应的邻域函数将产生新解(2,1,3,4)、(3,2,1,4)、(4,2,3,1)、(1,3,2,4)、(1,4,3,2)、(1,2,4,3)。
基于邻域函数的概念,就可以对局部极小和全局极小进行定义。
定义2 若∀j∈Si∩F∀j∈Si∩F,满足f(j)≥f(i)f(j)≥f(i),则称ii为ff在FF上的局部极小解;若∀j∈F∀j∈F,满足f(j)≥f(i)f(j)≥f(i),则称ii为ff在<script id="MathJax-Element-31195" type="math/tex">F</script>上的全局最小解。
局部搜索算法是基于贪婪思想利用邻域函数进行搜索的,它通常可描述为:从一个初始解出发,利用邻域函数持续的在当前解的邻域中搜索比它好的解,若能够找到如此的解,就以之称为新的当前解,然后重复上述过程,否则结束搜索过程,并以当前解作为最终解。可见,局部搜索算法尽管具有通用易实现的特点,但搜索性能完全依赖于邻域函数和初始解,领域函数设计不当或初值选取不合适,则算法最终的性能将会很差。同时,贪婪思想无疑将使算法丧失全局优化的能力,也即算法在搜索过程中无法避免陷入局部极小。因此,若不在搜索策略上进行改进,那么要实现全局优化,局部搜索算法采用的邻域函数必须是“完全的”,即邻域函数将导致解的完全枚举,而这在大多数情况下是无法实现的,而且穷举的方法对于大规模问题在搜索时间上是不允许的。
鉴于局部搜索算法的上述缺点,智能优化算法,如模拟退火算法、遗传算法、禁忌搜索、神经网络优化算法和混沌搜索等,从不同的角度利用不同的搜索机制和策略实现对局部搜索算法的改进,来取得较好的全局优化性能。
————————————————
版权声明:本文为CSDN博主「红枫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。