結構優化設計兩大優化算法比較:OC vs MMA
在結構拓撲優化設計技術的發展過程中出現了許多優化算法,其中確定性的算法主要有優化準則法(OC:Optimality Criteria Method)和數學規劃法(MP:Mathematical Programming)。這里將從兩方面比較OC算法和隸屬于MP算法的“移動漸進線方法”(MMA: Method of Moving Asymptotes)。
OC算法從一個空間的一個初始設計點出發,著眼于每次迭代應滿足的優化條件,依據迭代公式
MMA算法,它也從空間的一個初始設計點
以一個一般的對于多元函數的不等式約束優化問題為例:
其中,
OC算法:
首先構造拉格朗日函數,將有約束的非線性優化問題轉化為無約束的優化問題。
其確定最優點主要是根據Kuhn-Tucker條件(駐值條件)
通過引入兩個人工參數,阻尼因子
MMA算法:
MMA方法更適于處理目標函數復雜且具有多約束的拓撲優化問題,只要求約束函數對設計變量的微分可以通過解析或者數值方法求得,對復雜的拓撲優化問題,MMA方法具有更好的適定性。MMA方法通過引入移動漸近線,將隱式的優化問題轉化成一系列顯式的更為簡單的嚴格凸的近似子優化問題,在每一步迭代中,通過求解一個近似的凸的子問題
MMA優化的數學模型表示如下:
其中:
MMA子問題的數學模型為:
MMA算法還分為GCMMA,GBMMA等類型。有關OC、MMA的詳細理論研究可參考華中科技大學羅震博士的畢業論文。
拓撲優化中的源程序
OC算法的源程序實例:
function [xnew]=OC(nelx,nely,x,volfrac,dc)
l1 = 0; l2 = 100000; move = 0.2;
while (l2-l1 > 1e-4)
lmid = 0.5*(l2+l1);
xnew = max(0.001,max(x-move,min(1.,min(x+move,x.*sqrt(-dc./lmid)))));
if sum(sum(xnew)) - volfrac*nelx*nely > 0;
l1 = lmid;
else
l2 = lmid;
end
end
x是原設計變量,xnew為更新后的設計變量。nelx為x軸方向的單元數目,nely為y軸方向的單元數目,volfrac為體積比,dc為敏度分析結果
實例比較:
某懸臂梁的初始邊界條件為:
[采用OC算法的最終優化結果(XFEM,紅色為子三角形):
1. 二維圖
2. 三維水平集函數
3. 目標函數與體積函數的收斂圖
MMA優化結果(常規有限元法,無子三角形):
1. 二維圖
2. 三維水平集
3. 收斂曲線
顯然OC算法和MMA算法得到了非常相似的優化結果。但收斂過程完全不同。
OC收斂速度很快,10步左右就完成了迭代;MMA則較慢。
對于案例中只有一個約束的優化問題(體積約束50%),OC適應性更好。
----------------------------------------------------------------------------------------
發帖怎么樣編輯公式?由于word的公式搬運不上來,只能截圖上傳,給大家閱讀帶來了不便~~非常抱歉
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















