【精品】第四章无约束优化的直接搜索法
机械优化设计太原科技大学张学良第四章 无约束优化的直接搜索法X 各种无约束优化方法的区别就在于确定其搜索方向S(k)的方法不同, 所以搜索方向的构成问题是无约束优化方法的关键。 根据构造搜索方向所使用的信息性质的不同, 无约束优化方法可以分为两类:一类是只利用目 标函数值信息的无约束优化方法, 如坐标轮换法、 鲍威尔法, 称为直接搜索法; 另一类是利用目标函数的一阶或二阶导数信息的无约束优化方法, 如梯度法、 牛顿法、 共轭梯度法、 变尺度法, 称为间接搜索法。(k+1)=X (k)+ α(k)S(k)(k =0 , 1 , 2 , …)? 基本思想将n维无约束优化问题转化为n个沿坐标轴方向ei(i=1, 2, … , n)的一维优化问题来求解,并记完成n次一维搜索为一轮。 若一轮搜索后未得到满足精度要求的最优点, 则继续下一轮迭代搜索。 如此反复, 直至得到满足精度要求的最优点为止。 在每一轮搜索中, 每次迭代仅对n元函数的一个变量沿其坐标轴方向进行一维搜索, 其余n-1个变量均保持不变,再依次轮换进行一维搜索的坐标轴, 直至完成沿n个坐标轴方向的n次一维搜索。§ 4.1 坐标轮换法(变量轮换法、 交替法、 降维法)x1x2X0(1)X1(1)X2(1)取初始点X(0)=X0(1),向量S1(1)=e1=[1 0]T,S2(1)= e2=[0 1]T。 x1坐标轴方向的单位x2坐标轴方向的单位向量X1(1)=X0(1)+α1(1)S1(1),X2(1)=X1(1)+α2(1)S2(1)判断是否满足迭代收敛准则:|| X2(1)– X0(1)||≤ε ?X1(1)=X0(1)+α1(1)e1(1)= [x1(0)x2(0)]T+ α1(1)[1 0]TX2(1)=X1(1)+α2(1)e2(1)= [x1(1)x2(1)]T+ α2(1)[0 1]T第一轮迭代搜索:若满足, 则输出最优解, 否则, 继续下一轮迭代搜索。Xi(k)=Xi-1(k)+αi(k)ei(k)( k—迭代轮次, i— k轮迭代的第i次一维搜索αi(k)— 一维搜索求得的最优步长)|| Xn(k) – X0(k)||≤ε ?? 计算步骤与算法框图(图4-13)1) 任选初始点X(0)=X0(1)= [x1(0)x2(0) … xn(0)]T, 给定迭代收敛精度ε, i = 1, k = 1。2) 置n个坐标轴方向向量为单位向量, 即e1=[1 0 … 0 ]T,e2=[0 1 0 … 0]T, … ,en=[0 … 0 1]T。3) 按如下迭代计算公式进行迭代计算Xi(k)=Xi-1(k)+αi(k)ei(k)( k—迭代轮次, i— k轮迭代的第i次一维搜索i =1, 2,… , n)4) 判断是否满足迭代收敛准则|| Xn(k) – X0(k)||≤ε ?若满足, 则输出最优解: X*= Xn(k), f*= f(X*)否则, 令X0(k+1)= Xn(k), k ? k+1, 返回3) 。 举例(作业):用坐标轮换法求目标函数f (X) = x12 + x22 – x1x2– 4x1– 10x2+ 60 的无约束最优解。 初始点X(0)= [ 0 0]T, 迭代收敛精度ε=0.1。? 坐标轮换法搜索过程和收敛情况讨论X0(1)X*X1(1)X0(1)X*X1(1)x1x2X0(1)X1(1)X2(1)X*等值线出现脊线的情况(图4-14c)§ 4.2 鲍威尔(Powell) 法? 基本思想它 是直接利用函数值来构造共轭搜索方向的一种共轭搜索方向法, 又称鲍威尔共轭方向法或方向加速法。 由于对于n维正定二次函数, 共轭搜索方向具有n次收敛的特性, 所以鲍威尔法是直接搜索法中十分有效的一种算法,一般认为对于维数n ≤20的目 标函数它是成功的。 鲍威尔法是在研究具有正定对称矩阵H的二次函数的极小化问题时形成的直线搜索方法,无约束优化方法,约束优化方法, 其基本思想是在不用函数导数信息的前提下,在迭代过程中逐次构造关于H的共轭方向。? 共轭方向的生成设是X(k)和 X(k+1)为从不同点出发, 沿同一方向进行一维搜索而得到的两个极小点。S(j)S(j)S(k)X(k)X(k+1)▽f(X(k) )▽f(X(k+1) )[S(j) ]T▽f(X(k) ) = 0[S(j) ]T▽f(X(k+1) ) = 0具有正定对称矩阵H的二次函数f (X) = 0.5 XT HX + BTX + C在 X(k) 和 X(k+1)两点处的梯度可以表示为▽f(X(k) ) = HX(k)+ B(1)▽f(X(k+1) ) = HX(k+1)+ B(2)(2) - (1) 得▽f(X(k+1) ) - ▽f(X(k) ) = H(X(k+1)- X(k) )(3)(3) 式两边同时左乘[S(j) ]T得[S(j) ]T[▽f(X(k+1) )-▽f(X(k) )]= [S(j) ]TH(X(k+1)-X(k) )=0即[ S(j) ]T H( X(k+1) - X(k) ) = 0若取S(k) = X(k+1) - X(k) 那么,S(k) 和 S(j) 关于H 共轭, 即[ S(j) ]T HS(k) = 0这说明:沿S(j)方向分别对函数做两次一维搜索,得到两个极小点X(k)和 X(k+1), 该两点的连线方向S(k)与S(j)是关于H共轭的方向。 X(k)x1x2X*S(j)X(k+1)S(k)上述生成共轭方向的方法完全可以推广到n维优化问题中, 即在n维空间中, 按上述方法可以生成n个相互共轭的搜索方向。? 鲍威尔法的基本原理和迭代过程1) 采用坐标轮换法顺次沿n个坐标轴方向 进行一维搜索, 然后以初始点X(0)和终点Xn(1)构成一个新的方向 S(1), 并以此方向为搜索方向再作一维搜索得到极小点Xn+1(1)。2) 取始点X0(2)= Xn+1(1), 并去掉原搜索方向组中的第一个方向S1(1)=e1, 而将第一轮构成的新搜索方向 S(1)作为最末一个方向, 以此组成第二轮迭代的n个方向。依此进行下去, 直到获得满足迭代收敛精度要求的近似极小点为止。根据这一原理构造的迭代算法称为鲍威尔基本算法。S(1)x2X1(1)X*(2)S1(1)X0(1)S2(1)x1X2(1)X3(1)X1(2)X2S(2)? 鲍威尔基本算法的缺点鲍威尔基本算法仅具有理论意义, 不要说对于一般的函数, 就是对于二次函数, 它也可能失效。 因为在迭代过程中的n个搜索方向有时会变成线性相关, 而不能形成共轭方向,从而张不成n维空间, 导致随后的迭代搜索在降维(“退化” ) 的空间中进行, 可能求不到极小点, 故需进行改进。 那么, 为什么会产生这种情况呢? 又该如何去改进呢?? 鲍威尔条件及鲍威尔修正算法鲍威尔基本算法中, 每一轮迭代都是用连接始点和终点所产生的新搜索方向去机械地替换原方向组中的第一个搜索方向, 而不做任何的“好坏” 判断, 这正是产生向量线性相关而发生“退化” 的根本原因所在。 为了 避免这种“退化” 现象的发生, 鲍威尔对这一基本算法进行了 修正。 即在每一轮产生新的搜索方向S(k)后, 首先判断原搜索方向组是否可以直接用作下一轮迭代的搜索方向组, 若可以, 则仍用之, 否则, 还要进一步判断原搜索方向组中哪个方向上函数值下降量最大或贡献最大, 然后再用新搜索方向替换这个贡献最大的搜索方向,以保证逐次生成共轭方向, 即每一轮迭代的搜索方向组线性无关。对第 k 轮迭代, 记f1= f(X0(k) )f2= f(Xn(k) )f3= f(2Xn(k) -X0(k) )及 △m(k) = max { f(Xi-1(k) ) - f(Xi n },(k) ) , i=1,2,…, 并记 Sm( k )为 与 △m( k )相 对应的 搜索 方向 ,S(k)= Xn(k)-X0(k)鲍威尔条件:若 f3< f1, 且( f1- 2f2+ f3) (f1- f2- △m(k))2< 0.5 △m(k)(f1- f3)2同时成立, 则用S(k)替代Sm(k); 否则, 仍用原搜索方向组。 这就是鲍威尔修正算法, 通常所说的鲍威尔算法就是指这一修正算法。? 鲍威尔算法的计算步骤及算法框图(图4-18)1) 任选初始点X(0)=X0(1), 给定迭代收敛精度ε1, ε2。 取初始基本方向组为单位坐标向量系,即Si(1)=ei( i = 1, 2, … , n ), 并置迭代轮次k=1。2) 从X0(k)出发, 依次沿Si(k)( i = 1, 2, … , n ) 作一维搜索, 得n个极小点Xi(k)( i = 1, 2, … , n ),构造新的搜索方向 S(k) = Xn(k) -X0(k) , 并沿此方向进行一维搜索得极小点Xn+1(k)。3) 判断迭代终止条件|| Xn+1(k) – X0(k)||≤ ε1?| f(Xn+1(k) ) – f(X0(k) ) |≤ ε2| f(Xn+1(k) ) | ?或若满足, 则终止迭代并输出最优解:X*= Xn+1(k) 和f* = f(X*) 否则, 则继续下面的迭代计算。4) 计算 f(Xi (k) ) ( i = 1, 2, … , n ) , 并求△m(k) = max { f(Xi-1(k) ) - f(Xi (k) ) , i=1,2,…, n }= fm-1- fm及与之对应的两个点Xm-1(k)和Xm(k)(1≤m ≤n),则第k轮迭代中贡献最大的方向为Sm(k) = Xm(k) –Xm-1(k) 5) 确定映射点 X(k) = 2Xn(k) – X0(k) , 并计算f(X(k) ) , 记f1= f(X0(k)), f2=f(Xn(k)) 及 f3=f(X(k))检验鲍威尔条件, 若满足, 则转下一步, 否则转第7) 步。 6) 置第k+1轮迭代的出发点和搜索方向组X0(k+1) = Xn+1(k) Si(k+1) ( i = 1, 2, … , n )即{ S1(k), …, Sm-1(k), S(k), Sm+1(k), …, Sn(k)}并置 k ? k+1 , 返回第2) 步。7) 置第k+1轮迭代的出发点和搜索方向组若 f2< f3, X0(k+1) = Xn(k) ; 否则, X0(k+1) = X(k) 。Si(k+1) = Si(k)( i = 1, 2, … , n )并置 k ? k+1 , 返回第2) 步。举例(例4-6):用鲍威尔法求目标函数f (X) = 10(x1 +x2– 5) 束最优解。 初始点X(0)= [ 0 0]T, 迭代收敛精度ε=0.001。2 +(x1– x2) 2 的无约§ 4.3 单形替换法? 基本思想通过计算出若干点处的函数值, 对其大小进行比较, 可以看出函数值变化的大致趋势,从而可以寻求使函数值下降的搜索方向。 在n维空间中, 由n+1个不同点顺序相连, 就可以构成一个具有n+1个顶点的多面体——称之为单纯形。计算函数在这n+1个顶点的函数值, 并进行比较,据此来确定有利的搜索方向和步长, 找到一个比较好的点来取代单纯形中较差的那个顶点,从而组成了 一个新的单纯形, 并用之取代原来的单纯形。 如此下去, 新单纯形不断地向目 标函数的极小点靠近, 直到搜索到极小点为止。? 计算步骤1) 构造初始单纯形选初始点X0, 和步长h。 从X0出发沿各坐标轴方向分别走步长h, 得到n个顶点Xi(i=1,2, … , n), 与X0构成初始单纯形。X0x2x1X1X22) 计算各顶点的函数值fi= f(Xi)(i=0, 1, 2, … , n)3) 比较函数值大小, 确定最好点XL、 最差点 XH和次差点 XG, 即:fL= f(XL) =min{ fi: i = 0, 1, 2, … , n }fH= f(XH) =max{ fi: i = 0, 1, 2, … , n }fG= f(XG) =max{ fi: i = 0, 1, 2, … , n; i ≠H }4) 检验是否满足迭代收敛条件|( fH– fL) / fL| ≤ ε?若满足, 则结束迭代计算, 并输出X*= XL和 f* = f L否则, 转下一步。5) 计算除XH点外的各点的“重心”即Xn+1,Xn+1 = (∑Xi–XH) / n 计算反射点:Xn+2= 2Xn+1–XH和fn+2= f(Xn+2)当 fL≤ fn+2< fG时, 以Xn+2代替XH,fn+2代替 fH, 构造新的单纯形, 然后返回到 3) 。 X0XHx2x1X1X2XLXGXn+1Xn+26) 扩张: 当 fn+2< fL时, 取扩张点Xn+3, 即Xn+3 = Xn+1 + α (Xn+2 – Xn+1)(α=1.2~2.0 )并计算 fn+3= f(Xn+3) 。代替XH,否则, 以Xn+2代替XH,单纯形; 然后返回到 3) 。若 fn+3< fn+2, 则以Xn+3fn+3代替fH, 构造一个新的单纯形;fn+2代替fH, 构造新的Xn+37) 收缩: 当 fn+2≥ fG时, 则需收缩。若 fn+2< fH, 则取收缩点Xn+4:Xn+4= Xn+1+ β (Xn+2– Xn+1)( β =0.5)fn+4= f(Xn+4)否则, 以XH代替上式中的Xn+2,Xn+4:计算收敛点Xn+4 = Xn+1 + β (XH – Xn+1)fn+4= f (Xn+4 )X0XHx2x1X1X2XLXGXn+1Xn+2Xn+3若 fn+4< fH, 则以Xn+4 代替XH ,fH, 形成新的单纯形, 然后返回到 3) ; 否则转下一步8) 。fn+4代替Xn+4Xn+48) 缩边: 将单纯形向XL缩边, 可以将各向量( Xi– XL)( i = 0, 1, 2, …, n )的长度都缩小一半, 即Xi= XL+ 0.5 (Xi– XL) = 0.5 (Xi+ XL)( i = 0, 1, 2, …, n )形成新的单纯形, 然后返回到 2) 。X0XHx2x1X1X2XLXG举例(例4-7):f (X) = 4(x1– 5) 初始点: X0 = [ 8 9 ]TX3 = [ 8 11 ]T , 迭代收敛精度ε=0.01。用单形替换法求目标函数2 +(x2– 6 ) ,X1 = [ 10 11 ]T ,2 的无约束最优解。 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |