现代机械优化设计
【Lesson 1】9月14日
【Lesson 2】9月28日
(1)優化設計一般實施步驟
- 設計要求與目的→定義優化設計問題
- 建立問題的數學模型
- 選用合適的優化算法
- 確定必要數據和設計初始點
- 編寫程序,利用計算機求解計算最優備選方案
- 分析結果數據和方案,判斷是否符合工程實際,進行參數分析
(2)優化問題建模:選擇和確定各個獨立參數
- 表示:X=[x1,x2,...,xn]TX=[x_1,x_2,...,x_n]^TX=[x1?,x2?,...,xn?]T
- 維數:變量數 nnn
- 類型:連續/離散變量
- 設計空間:各獨立變量構成的空間
- 超空間:n>3n>3n>3 時的設計空間
(3)目標函數:設計中預期達到的目標
- 表示:f(X)=f(x1,x2,...,xn)f(X)=f(x_1,x_2,...,x_n)f(X)=f(x1?,x2?,...,xn?)
- 分類:單目標函數、多目標函數、綜合目標函數
(4)約束條件:設計變量和響應取值的限制條件
- 邊界約束/區域約束
- 性能約束
- 顯約束/隱約束
(5)數學模型:
find:X=[x1,x2,...,xn]T——設計變量min:f(X)——目標函數s.t.:gu(X)≥0(u=1,2,...,m)hv(X)=0(u=1,2,...,p)}——約束條件\begin{aligned} &{\rm find}:X=[x_1,x_2,...,x_n]^{T}{\qquad}{\qquad}\ ——設計變量 \\ &{\rm min}:f(X){\qquad}{\qquad}{\qquad}{\qquad}{\qquad}{\ \ \ }——目標函數\\ &{\begin{matrix}\begin{aligned}{\rm s.t.:}&g_u(X)≥0(u=1,2,...,m)\\&h_v(X)=0(u=1,2,...,p)\end{aligned}\end{matrix}}\bigg\}{\ \ \ \ \ \ }——約束條件 \end{aligned} ?find:X=[x1?,x2?,...,xn?]T?——設計變量min:f(X)???——目標函數s.t.:?gu?(X)≥0(u=1,2,...,m)hv?(X)=0(u=1,2,...,p)??}??????——約束條件?
① 約束優化與無約束優化;② 線性優化與非線性優化;③ 單目標優化與多目標優化;④ 可行設計點與可行域;⑤ 局部最優與全局最優。
復習:
-
泰勒展開
-
等等
優化設計方法分類;
- 任務:① 找到最優解;② 提高求優過程的效率。
- 對于非線性優化問題,基本是使用迭代算法
【Lesson 3】10月12日
迭代算法:按照一定的邏輯結構進行反復的數值計算,尋求函數值不斷下降的設計點,直到最后獲得足夠精度的近似解時就截斷計算。
迭代種植條件
- 點距準則
∣∣x(k+1)?x(k)∣∣≤ε||x^{(k+1)}-x^{(k)}||{\leq}\varepsilon ∣∣x(k+1)?x(k)∣∣≤ε - 目標函數下降量準則
若∣f(x(k+1))∣?1,∣f(x(k+1))?f(x(k))∣≤ε若∣f(x(k+1))∣?1,∣f(x(k+1))?f(xk)∣∣f(x(k))∣≤ε\begin{aligned} {\rm 若}|f(x^{(k+1)})|{\ll}1&,|f(x^{(k+1)})-f(x^{(k)})|{\leq}\varepsilon\\ {\rm 若}|f(x^{(k+1)})|{\gg}1&,\frac{|f(x^{(k+1)})-f(x^{k})|}{|f(x^{(k)})|}{\leq}\varepsilon \end{aligned} 若∣f(x(k+1))∣?1若∣f(x(k+1))∣?1?,∣f(x(k+1))?f(x(k))∣≤ε,∣f(x(k))∣∣f(x(k+1))?f(xk)∣?≤ε? - 梯度準則
∣∣▽f(x(k+1))∣∣≤ε||{\triangledown}f(x^{(k+1)})||{\leq}\varepsilon ∣∣▽f(x(k+1))∣∣≤ε
設計變量的坐標變換
- 原因:變量的數值大小相差極大,無法用統一步長尋優,無法使用統一的終止條件,需要采用坐標變換對設計變量進行標準化處理。
- 標準化處理:將設計變量用變量區間內的相對坐標來表示,將設計變量真實值化為變量區間的相對值,是變化范圍在0~1之間。
對于xli<xti<xui,設計參數xtixri=xti?xlixui?xli∈[0,1]{\rm 對于\ }x_{li}<x_{ti}<x_{ui}\ {\rm ,設計參數}x_{ti}\\\ \\ x_{ri}=\frac{x_{ti}-x_{li}}{x_{ui}-x_{li}}\in[0,1] 對于?xli?<xti?<xui??,設計參數xti??xri?=xui??xli?xti??xli??∈[0,1]
優化設計方法分類
一維優化方法
一維優化方法是多維優化方法的基礎
要求出
X(K+1)=X(k)+α(k)S(k)minf(X(K+1))=minf(X(k)+α(k)S(k))≈f(X(k))+[▽f(X(k))]TαS(k)+12α2[S(k)]TH(X(k))S(k)f′(x)≈f(x+Δx)?f(x)Δx=0?α=[▽f(X(k))]TS(k)[S(k)]TH(X(k))S(k)X^{(K+1)}=X^{(k)}+\alpha^{(k)}S^{(k)}\\\ \\ \begin{aligned} {\rm min}f(X^{(K+1)})=&{\rm min}f(X^{(k)}+\alpha^{(k)}S^{(k)})\\ {\approx}&f(X^{(k)})+[{\triangledown}f(X^{(k)})]^T{\alpha}S^{(k)}+\frac{1}{2}{\alpha}^2[S^{(k)}]^TH(X^{(k)})S^{(k)} \end{aligned}\\\ \\ f'(x){\approx}\frac{f(x+{\Delta}x)-f(x)}{{\Delta}x}=0\ \Rightarrow\ \alpha=\frac{[{\triangledown}f(X^{(k)})]^TS^{(k)}}{[S^{(k)}]^TH(X^{(k)})S^{(k)}} X(K+1)=X(k)+α(k)S(k)?minf(X(K+1))=≈?minf(X(k)+α(k)S(k))f(X(k))+[▽f(X(k))]TαS(k)+21?α2[S(k)]TH(X(k))S(k)??f′(x)≈Δxf(x+Δx)?f(x)?=0???α=[S(k)]TH(X(k))S(k)[▽f(X(k))]TS(k)?
步驟:
- 確定搜索區間
- 確定步長求解最優
進退法
- 試探計算
初選一個初始點 x1x_1x1? 和初始步長 h0h_0h0?,前進點為 x2=x1+h0x_2=x_1+h_0x2?=x1?+h0?,計算函數值 y1=f(x1)y_1=f(x_1)y1?=f(x1?) 和 y2=f(x2)y_2=f(x_2)y2?=f(x2?)
(1)當 y2>y1y_2>y_1y2?>y1? 時, - y2<y1y_2<y_1y2?<y1? 前進計算
計算第二個前進點 - 后退運算
目的是:形成一個“高-低-高”的區間
算例:
【2021.11.2】
變尺度法
DFP變尺度法能夠適用于多參數函數 f(x)f(x)f(x) 優化,下面以例子來說明。
使用DFP變尺度法對函數 f(x)=4(x1?5)2+(x2?6)2f(x)= 4(x_1-5)^2+(x_2-6)^2f(x)=4(x1??5)2+(x2??6)2 進行優化,初始點為 [00]T[0\ 0]^T[0?0]T ,要求迭代結束條件為梯度 ξ\xiξ 小于0.01。
該函數的梯度向量為
▽f(x)=[8(x1?5)2(x2?6)]T\triangledown f(x)=\left[\begin{matrix}8(x_1-5)&2(x_2-6)\end{matrix}\right]^T ▽f(x)=[8(x1??5)?2(x2??6)?]T
初始變量值、梯度為
x(0)=[00]T▽f(x(0))=[?40?12]Tx^{(0)}=\left[\begin{matrix}0&0\end{matrix}\right]^T\\\ \\ \triangledown f(x^{(0)})=\left[\begin{matrix}-40&-12\end{matrix}\right]^T x(0)=[0?0?]T?▽f(x(0))=[?40??12?]T
初始海塞矩陣為
H(0)=[1001]H^{(0)}=\left[\begin{matrix}1&0\\0&1\end{matrix}\right] H(0)=[10?01?]
第一次迭代后的變量值為
x(1)=x(0)+αS(0)=x(0)?αH(0)▽f(x(0))=[40α12α]Tx^{(1)}=x^{(0)}+\alpha S^{(0)}=x^{(0)}-\alpha H^{(0)}\triangledown f(x^{(0)}) = \left[\begin{matrix}40\alpha&12\alpha\end{matrix}\right]^T x(1)=x(0)+αS(0)=x(0)?αH(0)▽f(x(0))=[40α?12α?]T
則第一次迭代后的函數值為
f(x(1))=4(40α?4)2+(12α?6)2=6544α2?1744α+136f(x^{(1)})=4(40\alpha-4)^2+(12\alpha-6)^2=6544\alpha ^2-1744\alpha +136 f(x(1))=4(40α?4)2+(12α?6)2=6544α2?1744α+136
該值取最小時 α=109/818\alpha=109/818α=109/818,將其帶入 x(1)x^{(1)}x(1) 和 ▽f(x(1))\triangledown f(x^{(1)})▽f(x(1))。有
x(1)=[5.331.60]T,▽f(x(1))=[2.64?8.8]Tx^{(1)}=\left[\begin{matrix}5.33&1.60\end{matrix}\right]^T,{\quad} \triangledown f(x^{(1)})=\left[\begin{matrix}2.64&-8.8\end{matrix}\right]^T x(1)=[5.33?1.60?]T,▽f(x(1))=[2.64??8.8?]T
可分別計算變量和梯度的差值
△x(0)=x(1)?x(0)=[5.331.60]T△g(0)=▽f(x(1))?▽f(x(0))=[42.643.2]T\vartriangle x^{(0)}=x^{(1)}-x^{(0)}=\left[\begin{matrix}5.33&1.60\end{matrix}\right]^T\\\ \\ \vartriangle g^{(0)}=\triangledown f(x^{(1)})-\triangledown f(x^{(0)})=\left[\begin{matrix}42.64&3.2\end{matrix}\right]^T\\ △x(0)=x(1)?x(0)=[5.33?1.60?]T?△g(0)=▽f(x(1))?▽f(x(0))=[42.64?3.2?]T
變尺度法中海塞矩陣的迭代矯正公式為
E(k)=△x(k)[△x(k)]T[△x(k)]T△g(k)?H(k)△g(k)[△g(k)]TH(k)[△g(k)]TH(k)△g(k)H(k+1)=H(k)+E(k)E^{(k)}=\frac{\vartriangle{x^{(k)}}[\vartriangle{x^{(k)}}]^T}{[\vartriangle{x^{(k)}}]^T\vartriangle{g^{(k)}}} -\frac{H^{(k)}\vartriangle{g^{(k)}}[\vartriangle{g^{(k)}}]^TH^{(k)}}{[\vartriangle g^{(k)}]^TH^{(k)}\vartriangle{g^{(k)}}}\\\ \\ H^{(k+1)}=H^{(k)}+E^{(k)} E(k)=[△x(k)]T△g(k)△x(k)[△x(k)]T??[△g(k)]TH(k)△g(k)H(k)△g(k)[△g(k)]TH(k)??H(k+1)=H(k)+E(k)
故可以計算出
H(1)=H(0)+E(0)=[1001]+△x(0)[△x(0)]T[△x(0)]T△g(0)?H(0)△g(0)[△g(0)]TH(0)[△g(0)]TH(0)△g(0)=[0.128?0.038?0.0381.104]\begin{aligned} H^{(1)}&=H^{(0)}+E^{(0)} \\\ \\&=\left[\begin{matrix}1&0\\0&1\end{matrix}\right]+\frac{\vartriangle{x^{(0)}}[\vartriangle{x^{(0)}}]^T}{[\vartriangle{x^{(0)}}]^T\vartriangle{g^{(0)}}} -\frac{H^{(0)}\vartriangle{g^{(0)}}[\vartriangle{g^{(0)}}]^TH^{(0)}}{[\vartriangle g^{(0)}]^TH^{(0)}\vartriangle{g^{(0)}}} \\\ \\&=\left[\begin{matrix}0.128&-0.038\\-0.038&1.104\end{matrix}\right] \end{aligned} H(1)???=H(0)+E(0)=[10?01?]+[△x(0)]T△g(0)△x(0)[△x(0)]T??[△g(0)]TH(0)△g(0)H(0)△g(0)[△g(0)]TH(0)?=[0.128?0.038??0.0381.104?]?
由此,可以依次邏輯繼續向下迭代,直至最終使得梯度小于0.01。
總結