首页 理论教育 移动渐进系列优化算法

移动渐进系列优化算法

时间:2023-06-28 理论教育 版权反馈
【摘要】:移动渐进算法实际上是一种复杂的序列凸规划算法,又称为MMA,可以把它看作是对CONLIN算法的一种推广[497]。由于移动渐进算法的近似精度优于序列线性规划算法,计算量又小于序列二次规划算法,因此其在拓扑优化问题中得到广泛的应用。现在移动渐进系列算法包括MMA、GMMA、GBMMA、GCMMA等[498]。GMMA等对原始的MMA进行了改进,从而增强了算法的稳定性和收敛性。因为是严格凸函数,是凸函数,所以移动近似子问题有唯一的最优解。

移动渐进系列优化算法

移动渐进算法(Method of Moving Asymptotes)实际上是一种复杂的序列凸规划算法,又称为MMA,可以把它看作是对CONLIN算法的一种推广[497]。MMA利用混合变量近似的方法,使用前一步或多步的函数及其导数信息,用一系列凸子问题来近似原问题。然后用对偶方法或原始对偶内点算法求解子问题,通过一系列移动渐进子问题的解来不断逼近原问题的解。

由于移动渐进算法的近似精度优于序列线性规划算法,计算量又小于序列二次规划算法,因此其在拓扑优化问题中得到广泛的应用。现在移动渐进系列算法包括MMA、GMMA、GBMMA、GCMMA等[498]。MMA的主要缺点是计算稳定性和收敛性不够理想,此种情况在处理复杂的连续体拓扑优化问题时尤为突出。GMMA等对原始的MMA进行了改进,从而增强了算法的稳定性和收敛性。Zillober提出的SCPIP算法是在解完MMA子问题后又加入一个线性搜索步,同时他是采用预测校正原对偶内点算法求解子问题[499-501]。优化问题的标准形式为

式中,f0(x)是目标函数;fi(x)是约束函数。

GMMA求解的优化问题形式为

式中,设计变量x=(x1,…,xnT∈Rn,附加设计变量y=(y1,…,ymT∈Rm,z∈R,f0,f1,…,fm为连续可微函数,实数,且有a0>0,ai≥0,ci≥0,di≥0,ci+di≥0。该式与标准形式,即式(5.37)略有差异。

如果令式(5.38)中a0=1,ai=0,那么对于任何优化问题附加设计变量z的最优解只能为0。进一步令di=0,ci是一个“大数”,使得附加设计变量y的最优解为0。此时式(5.38)中设计变量x的最优解也就是式(5-37)的最优解。之所以采用这种表达方式是因为式(5.38)可以保证至少存在一个可行解。即使采用式(5-37)不存在可行解,式(5.38)也可以保证当yi≥0时存在一个最优解。

式(5.38)的Lagrange(拉格朗日)函数为

式中,λ=(λ1,…,λmT,ξ=(ξ1,…,ξnT,η=(η1,…,ηmT,ζ=(ζ1,…,ζmT,μ为非负Lagrange乘子。由此可得式(5.38)的Karush-Kuhn-Tucker(KKT)条件为

因为拓扑优化问题的目标函数和约束函数常常是设计变量的隐式非线性函数,这使得直接求解KKT条件形成的方程组非常困难。因此,必须将式(5.38)转化为易于求解的凸性可分离子问题(又称为移动近似子问题),然后建立对应于移动近似子问题的拉格朗日函数及KKT条件,并用对偶方法求解。将式(5.38)的目标函数和约束函数在倒变量1/(uj-xj)或1/(xj-lj)处线性展开为

于是有

渐进参数是随着优化迭代过程不断更新。(www.xing528.com)

当k=1,2时,有

当k≥3时,有

式中,变量采用经验化的更新策略有

由式(5.45)可看出:移动近似子问题实际上是在当前点(x(k),y(k),z(k))处将式(5.38)中的隐函数fi(x)用一阶显式近似凸函数(x)代替。当渐进参数时,移动近似子问题就转化为序列线性规划算法中的线性近似;当渐进参数时,移动近似子问题就等价于CONLIN算法中的近似方法。因为是严格凸函数,是凸函数,所以移动近似子问题有唯一的最优解。这样用一系列的移动近似子问题的解就可以逐步逼进原问题的解。通常用对偶方法求解移动近似子问题,因为对偶变量的数目依赖于积极约束条件的数目,所以对于约束条件不多的拓扑优化问题,对偶方法可以缩减设计变量空间,以利于优化问题的求解。因此,GMMA求解拓扑优化问题的步骤可归纳为:

(1)选择初始点(x(0),y(0),z(0)),计算该点处的目标函数和约束函数的函数值fi(x(0))和梯度值∇fi(x(0)),i=0,1,…,m,令k=0;

(2)计算渐进参数,构造移动近似子问题,即式(5.41);

(3)用对偶方法求解移动近似子问题,得到该问题的解x(k+1)

(4)判断条件x(k+1)=x(k)是否成立;如果成立,则x(k+1)是式(5.41)的近似解。否则转入下一步;

(5)计算点x(k+1)处的目标函数和约束函数的函数值fi(x(k+1))和梯度值∇fi(x(k+1)),令k=k+1,然后转入第(2)步。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈