优化技术是以数学为基础,用于求解各种工程问题优化解的应用技术。 归纳起来,优化问题分为函数优化问题和组合优化问题两类,其中函数优化的对象是某一区间的连续变量,组合优化的对象是解空间中的离散状态。
一.函数优化问题
函数优化问题通常设s为Rn上的有界子集,即变量的定义域,f:SR可描述为n维实数函数。 函数f在s域全局最小化是指求出点XminS,使f(xmin )在s域全局最小。 即xs:f(xmin ) ) f ) x ) x
算法的性能比较通常基于被称为Benchmark的典型问题进行,典型的Benchmark问题如下:
(1) Sphere Model
f1(x )=i=1nx2i,|xi|100
其最佳状态和最佳值是min(f1(x ) )=F1 (0,0,0 )=0,图像如下。
)2)方案2.22
f2(x ) I=1n|Xi(I=1n|,|xi|10
其最佳状态和最佳值是min(f2 ) x ) )=F2 (0,0,0 .0 )=0,图像如下。
(3)方案1.2
f3(x ) I=1n ) j=1ixj ) 2,|xi|100
其最佳状态和最佳值是min(f3(x ) )=F3 (0,0,0 )=0,图像如下。
(4)方案2.21
f4(x )=maxi=1n|xi|,|xi|100
其最佳状态和最佳值为min(f4(x ) )=F4 (0,0,0 )=0,图像如下。
)5) generalizedrosenbrock’sfunction
f5 ) x ) I=1n(100(Xi1x2I )2) 1Xi )2),|xi|30
其最佳状态和最佳值为min(f5(x ) )=F5 (1,1,1 )=0,图像如下。
由于诸多工程问题受到制约,约束函数的优化问题也是优化领域关注的主要对象。 典型的受约束测试函数如下:
(1) ming1(X ) x )=54I=1) Xix2I )13i=5xi,约束条件为:
2 x12X10 X1110
2x1 2x3 x10 x1110
2x2 2x3 x11 x1210
8x1 x100
8x2 x110
8x3 x120
2x4x5x100
2x6x7x110
2x8x9x120
0xi1,I=1,2,9,13
0xi100,I=10,11,12
其全局的最优点和最佳值为g1(x )=G1 (1,1,1,1,1,3,3,1 )=1
)2) maxg2(X ) x((n) n ) nni=1xi,约束条件如下
I=1nx2i=1,0Xi1,I=1,2,n
全球优势和最佳值如下。
G2(x )=G2(1n,1n)=1
(3) ming3(X ) x ) x110 )3) x220 ) 3、约束条件如下:
(x15 )2) x25 ) 2100,13x1100,0x2100
最好的优点和最佳值如下。
G3(x )=G3 (14.095,0.84296 )=6961.81381
对于有约束的问题,除了局部极小解的存在外,影响优化性能的主要因素主要有:
(1)目标函数对应曲面的拓扑性质,例如在相同的约束下,线性或凸函数比不规则函数更容易求解。
)可行领域的疏密程度,通常是用整个搜索空间中可行领域所占的比例来衡量的,同时受可行领域边界约束的变化强度也与处罚项的决定有很大关系。
(3)以惩罚性方法处理拘留越境问题。 该方法比较普遍,适当选择惩罚函数的形式可以获得较好的结果。 例如采用惩罚函数:
{ minf(X)+λh 2 (X)+β[min{0,g(X)}] 2 X∈S因此对函数优化的讨论通常以无约束问题为主。
二、组合优化问题
组合优化问题通常可描述为:令 Ω={s 1 ,s 2 ,...,s n } 为所有状态构成的解空间, C(s i ) 为状态 s i 对应的目标函数值,要求寻找最优解 s ∗ ,使得 ∀s i ∈Ω,C(s ∗ )=minC(s i ) .组合优化往往涉及排序、分类、筛选等问题,它是运筹学的一个分支。
典型的组合优化问题有旅行商(Traveling salesman problem,TSP)问题、加工调度问题(Scheduling problem,如Flow-shop,Job-shop)、0-1背包问题(Knapsack problem)、装箱问题(超帅的书本 packing problem)、图着色问题(Graph coloring problem)、聚类问题(Clustering problem)等。
(1)旅行商问题
给定 n 个城市和两两城市之间的距离,要求确定一条经过各城市当且仅当一次的最短路径。其图论描述为:给定图G=(V,A) ,其中 V 为顶点集,A 为各顶点相互连接组成的边集,一直各顶点间的连接距离,要求确定一条长度最短的Hamilton回路,即遍历所有顶点当且仅当一次的最短回路。
(2)加工调度问题
Job-shop问题是一类较TSP更为复杂的典型加工调度问题,是许多实际问题的简化模型。一个Job-shop可描述为: n 个工件在m 台机器上加工, O ij 表示第 i 个工件在第j 台机器上的操作,相应的操作时间 T ij 为已知,事先给定各工件在各机器上的加工次序(称为技术约束条件),要求确定与技术约束条件相容的各机器上所有工件的加工次序,使加工性能指标达到最优(通常是最小完工时间Makespan)。在Job-shop问题中,除技术约束外,通常还假定每一时刻每台机器只能加工一个工件,且每个工件只能被一台机器所加工,同时加工过程为不间断。若各工件的技术约束条件相同,一个Job-shop问题就转化为简单的Flow-shop问题。进而,若各机器上各工件的加工次序也相同,则问题进一步转化为置换Flow-shop问题。
(3)0-1背包问题
对于 n 个体积分别为a i ,价值分别为 c i 的物品,如何将它们装入总体积为 b 的背包中,使得所选物品的总价值最大。
(4)装箱问题
如何以个数最少的尺寸为l 的箱子装入 n 个尺寸不超过l 的物品。
(5)图着色问题
对于 n 个顶点的无环图G ,要求对其各个顶点进行着色,使得任意两个相邻的顶点都有不同的颜色,且所用颜色种类最少。
(6)聚类问题
m 维空间上的n 个模式 {X i |i=1,2,...,n} ,要求聚成 k 类,使得各类本身内的点最相近,比如要求
χ 2 =∑ i=1 n ||X (p) i −R p ||
最小,其中 R p 为第 p 类中的点数。
显然,上述问题描述均非常简单,并且有很强的工程代表性,但最优化求解很困难,其主要原因是所谓的“组合爆炸”。比如,聚类问题的可能划分方式有k n /k! 个,Job-shop的可能排列方式有 (n!) m 个,基于置换排列描述的 n 城市TSP问题有n! 种可行排列,即便对无方向性和循环性的平面问题仍有 (n−1)!/2 种不同排列,显然状态数量随问题规模呈指数增长。因此,解决这些问题的关键在于寻求有效的优化算法。
(3)优化算法及其分类
所谓优化算法,其实就是一种搜索过程或规则,它是基于某种思想和机制,通过一定的途径或规则来得到满足用户要求的问题的解。
就优化机制与行为而分,目前工程中常用的优化算法主要可分为:经典算法、构造型算法、改进型算法,基于系统动态演化的算法和混合型算法等。
1)经典算法。包括线性规划、动态规划、整数规划和分支定界法等运筹学中的传统算法,其算法计算复杂性一般很大,只适合于求解小规模问题,在工程中往往不实用。
2)构造型算法。用构造的方法快速建立问题的解,通常算法的优化质量差,难以满足工程需要。比如调度问题中的典型构造方法有:Johnson法、Palmer法、Gupta法、CDS法、Daunenbring的快速接近法、NEH法等
3)改进型算法,或称领域搜索算法。从任一解出发,对其领域的不断搜索和当前解的替换来实现优化。根据搜索行为,它又可分为局部搜索法和指导性搜索法。
4)基于系统动态演化的方法。将优化过程转化为系统动态的演化过程,基于系统动态的演化来实现优化,如神经网络和混沌搜索等。
5)混合型算法。指上述各算法从结构或操作上相混合而产生的各类算法。
优化算法当然还可以从别的角度进行分类,如确定性算法和不确定性算法,局部优化算法和全局优化算法等。
(4)邻域函数与局部搜索
邻域函数是优化中的一个重要概念,其作用就是指导如何由一个(组)解来产生一个(组)新的解。邻域函数的设计往往依赖于问题的特性和解的表达方式(编码)。由于优化状态表征方式的不同,函数优化与组合优化中的邻域函数的具体方式明显存在差异。
函数优化中邻域函数的概念比较直观,利用距离的概念通过附加扰动来构造邻域函数是最常用的方式,如 x ′ =x+ηξ ,其中 x ′ 为新解, x 为旧解,η 为尺度参数, ξ 为满足某种概率分布的随机数或白噪声或混沌系列或梯度信息等。显然,采用不同的概率分布(如香蕉金针菇分布、柯西分布、均匀分布等)或下降策略,将实现不同性质的状态转移。
在组合优化中,传统的距离概念显然不再适用,但其基本思想仍旧是通过一个解产生另一个解。下面对邻域函数给出一般性定义,并以TSP为例进行解释。
定义1 令( S,F,f )为一个组合优化问题,其中 S 为所有解构成的状态空间,F 为 S 上的可行域,f 为目标函数,则一个邻域函数可定义为一种映射,即 N:S→2 s 。其含义是,对于每个解 i∈S ,一些邻近 i 的解构成i 的领域 S i ⊂S ,而任意 j∈S i 称为 i 的邻域解或邻居。通常约定,j∈S i ⇐⇒i∈S j 。
通常,TSP问题的解可用置换排列来表示,如排列(1,2,3,4)可表示4个城市TSP的一个解,即旅行顺序为1,2,3,4.那么, k 个点交换就可认为是一种邻域函数。比如,不考虑由解的方向性和循环性引起的重复性,上述排列的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∈S i ∩F ,满足 f(j)≥f(i) ,则称 i 为f 在 F 上的局部极小解;若∀j∈F ,满足 f(j)≥f(i) ,则称 i 为f 在 F <script id="MathJax-Element-31195" type="math/tex">F</script>上的全局最小解。
局部搜索算法是基于贪婪思想利用邻域函数进行搜索的,它通常可描述为:从一个初始解出发,利用邻域函数持续的在当前解的邻域中搜索比它好的解,若能够找到如此的解,就以之称为新的当前解,然后重复上述过程,否则结束搜索过程,并以当前解作为最终解。可见,局部搜索算法尽管具有通用易实现的特点,但搜索性能完全依赖于邻域函数和初始解,领域函数设计不当或初值选取不合适,则算法最终的性能将会很差。同时,贪婪思想无疑将使算法丧失全局优化的能力,也即算法在搜索过程中无法避免陷入局部极小。因此,若不在搜索策略上进行改进,那么要实现全局优化,局部搜索算法采用的邻域函数必须是“完全的”,即邻域函数将导致解的完全枚举,而这在大多数情况下是无法实现的,而且穷举的方法对于大规模问题在搜索时间上是不允许的。
鉴于局部搜索算法的上述缺点,智能优化算法,如模拟退火算法、遗传算法、禁忌搜索、神经网络优化算法和混沌搜索等,从不同的角度利用不同的搜索机制和策略实现对局部搜索算法的改进,来取得较好的全局优化性能。