利用ANSYS進(jìn)行優(yōu)化設(shè)計(jì)時(shí)的幾種優(yōu)化算法
本文探討了利用ANSYS進(jìn)行優(yōu)化設(shè)計(jì)時(shí)的幾種優(yōu)化算法。
優(yōu)化技術(shù)
理解計(jì)算機(jī)程序的算法總是很有用的,尤其是在優(yōu)化設(shè)計(jì)中。在這一部分中,將提供對(duì)下列方法的說(shuō)明:零階方法,一階方法,隨機(jī)搜索法,等步長(zhǎng)搜索法,乘子計(jì)算法和最優(yōu)梯度法。(更多的細(xì)節(jié)參見(jiàn)ANSYS Theory Reference 第20章。)
零階方法
零階方法之所以稱為零階方法是由于它只用到因變量而不用到它的偏導(dǎo)數(shù)。在零階方法中有兩個(gè)重要的概念:目標(biāo)函數(shù)和狀態(tài)變量的逼近方法,由約束的優(yōu)化問(wèn)題轉(zhuǎn)換為非約束的優(yōu)化問(wèn)題。
逼近方法:
本方法中,程序用曲線擬合來(lái)建立目標(biāo)函數(shù)和設(shè)計(jì)變量之間的關(guān)系。這是通過(guò)用幾個(gè)設(shè)計(jì)變量序列計(jì)算目標(biāo)函數(shù)然后求得各數(shù)據(jù)點(diǎn)間最小平方實(shí)現(xiàn)的。該結(jié)果曲線(或平面)叫做逼近。每次優(yōu)化循環(huán)生成一個(gè)新的數(shù)據(jù)點(diǎn),目標(biāo)函數(shù)就完成一次更新。實(shí)際上是逼近被求解最小值而并非目標(biāo)函數(shù)。
狀態(tài)變量也是同樣處理的。每個(gè)狀態(tài)變量都生成一個(gè)逼近并在每次循環(huán)后更新。
用戶可以控制優(yōu)化近似的逼近曲線??梢灾付ň€性擬合,平方擬合或平方差擬合。缺省情況下,用平方差擬合目標(biāo)函數(shù),用平方擬合狀態(tài)變量。用下列方法實(shí)現(xiàn)該控制功能:
Command: OPEQN
GUI: Main Menu>Design Opt>Method/Tool
OPEQN同樣可以控制設(shè)計(jì)數(shù)據(jù)點(diǎn)在形成逼近時(shí)如何加權(quán);見(jiàn)ANSYS Theory Reference。
轉(zhuǎn)換為非約束問(wèn)題
狀態(tài)變量和設(shè)計(jì)變量的數(shù)值范圍約束了設(shè)計(jì),優(yōu)化問(wèn)題就成為約束的優(yōu)化問(wèn)題。ANSYS程序?qū)⑵滢D(zhuǎn)化為非約束問(wèn)題,因?yàn)楹笳叩淖钚』椒ū惹罢吒行省^D(zhuǎn)換是通過(guò)對(duì)目標(biāo)函數(shù)逼近加罰函數(shù)的方法計(jì)入所加約束的。
搜索非約束目標(biāo)函數(shù)的逼近是在每次迭代中用Sequential Unconstrained Minimization Technique(SUMT) 實(shí)現(xiàn)的。
收斂檢查
在每次循環(huán)結(jié)束時(shí)都要進(jìn)行收斂檢查。當(dāng)當(dāng)前的,前面的或最佳設(shè)計(jì)是合理的而且滿足下列條件之一時(shí),問(wèn)題就是收斂的:
& #61548; 目標(biāo)函數(shù)值由最佳合理設(shè)計(jì)到當(dāng)前設(shè)計(jì)的變化應(yīng)小于目標(biāo)函數(shù)允差。
& #61548; 最后兩個(gè)設(shè)計(jì)之間的差值應(yīng)小于目標(biāo)函數(shù)允差。
& #61548; 從當(dāng)前設(shè)計(jì)到最佳合理設(shè)計(jì)所有設(shè)計(jì)變量的變化值應(yīng)小于各自的允差。
& #61548; 最后兩個(gè)設(shè)計(jì)所有設(shè)計(jì)變量的變化值應(yīng)小于各自的允差。
用下列方法指定目標(biāo)函數(shù)和設(shè)計(jì)變量允差:
Command: OPVAR
GUI: Main Menu>Design Opt>Design Variables
Main Menu>Design Opt>Objective
收斂并不代表實(shí)際的最小值已經(jīng)得到了,只說(shuō)明以上四個(gè)準(zhǔn)則之一滿足了。因此,用戶必須確定當(dāng)前設(shè)計(jì)優(yōu)化的結(jié)果是否足夠。如果不足的話,就要另外做附加的優(yōu)化分析。
有時(shí)候求解過(guò)程會(huì)在收斂前終止,這是因?yàn)榘l(fā)生下列情況之一:
& #61548; 指定的循環(huán)次數(shù)達(dá)到了。
& #61548; 連續(xù)的不合理設(shè)計(jì)達(dá)到了指定的值(OPSUBP命令的NINFS域)。缺省值為7。
零階方法的特殊問(wèn)題
由于目標(biāo)函數(shù)和狀態(tài)變量都是使用逼近的,因此優(yōu)化設(shè)計(jì)和逼近數(shù)值具有同樣的精確度。下面給出了一些得到較好的逼近的建議。
& #61548; 對(duì)于零階方法,優(yōu)化處理器開(kāi)始通過(guò)隨機(jī)搜索建立狀態(tài)變量和目標(biāo)函數(shù)的逼近。由于是隨機(jī)搜索,收斂的速度可能很慢。用戶有時(shí)可以通過(guò)給出多個(gè)合理的起始設(shè)計(jì)來(lái)加速收斂。只簡(jiǎn)單的運(yùn)行一系列的隨機(jī)搜索并刪除所有不合理的設(shè)計(jì)。用下列方法之一運(yùn)行隨機(jī)搜索:
Command: OPTYPE,RAND
GUI: Main Menu>Design Opt>method/Tool
用下列方法刪除所有不合理設(shè)計(jì):
Command: OPSEL
GUI: Main Menu>Design Opt>Select/Delete
也可以運(yùn)行多次單獨(dú)的循環(huán),并在每次運(yùn)行前指定新的設(shè)計(jì)變量序列來(lái)生成起始設(shè)計(jì)序列。用下列方法:
Command: OPTYPE,RUN
GUI: Main Menu>Design Opt>Method/Tool
(如果對(duì)問(wèn)題的特性有些認(rèn)識(shí)的話,后一種方法更好些。)
注——做一些小的設(shè)計(jì)分析將有利于收斂。但如果設(shè)計(jì)之間差別不大,也就是說(shuō)設(shè)計(jì)數(shù)據(jù)點(diǎn)“堆積”在一起時(shí),用戶就要指定優(yōu)化處理器沿一個(gè)指定的路徑分析,以避免丟掉好的設(shè)計(jì)。
& #61591; 如果零階方法生成了許多不合理的設(shè)計(jì)的話,可能說(shuō)明狀態(tài)變量的近似不能良好的反映狀態(tài)變量的實(shí)際情況。在這種情況下,可以處理如下:
& #8226;增加連續(xù)不合理設(shè)計(jì)的允許值,然后進(jìn)行附加的零階方法分析(如果合
理的設(shè)計(jì)好象要達(dá)到了)。用下列方法:
Command: OPSUBP,NINFS
GUI: Main Menu>Design Opt>Method/Tool
& #8226;在連續(xù)的逼近中不斷的選擇最佳設(shè)計(jì),可以得到更好的曲線擬合。用
下列方法實(shí)現(xiàn):
Command: OPSEL
GUI: Main Menu>Design Opt>Select/Delete
& #8226;在狀態(tài)變量逼近時(shí)選擇交叉項(xiàng)。用下列方法:
Command: OPEQN,KFSV
GUI: Main Menu>Design Opt>Method/Tool
一階方法
同零階方法一樣,一階方法通過(guò)對(duì)目標(biāo)函數(shù)添加罰函數(shù)將問(wèn)題轉(zhuǎn)換為非約束的。但是,與零階方法不同的是,一階方法將真實(shí)的有限元結(jié)果最小化,而不是對(duì)逼近數(shù)值進(jìn)行操作。
一階方法使用因變量對(duì)設(shè)計(jì)變量的偏導(dǎo)數(shù)。在每次迭代中,梯度計(jì)算(用最大斜度法或共軛方向法)確定搜索方向,并用線搜索法對(duì)非約束問(wèn)題進(jìn)行最小化。
因此,每次迭代都有一系列的子迭代(其中包括搜索方向和梯度計(jì)算)組成。這就使得一次優(yōu)化迭代有多次分析循環(huán)。
OPFRST命令(Main Menu>Design Opt>Method/Tool)有兩個(gè)輸入域可以用來(lái)改善一階方法的收斂。用戶可以指定計(jì)算梯度的設(shè)計(jì)變量范圍變化程度,也可以指定線搜索步長(zhǎng)的范圍。一般來(lái)說(shuō),這兩個(gè)輸入值的缺省數(shù)值就足夠了。見(jiàn)ANSYS Theory Reference。
收斂檢查
一階方法在收斂或中斷時(shí)結(jié)束。當(dāng)當(dāng)前的設(shè)計(jì)序列相對(duì)于前面的和最佳序列滿足下面任意一種情況時(shí),問(wèn)題就稱為收斂:
& #61548; 目標(biāo)函數(shù)值由最佳合理設(shè)計(jì)到當(dāng)前設(shè)計(jì)的變化應(yīng)小于目標(biāo)函數(shù)允差。
& #61548; 從當(dāng)前設(shè)計(jì)到前面設(shè)計(jì)目標(biāo)函數(shù)的變化值應(yīng)小于允差。
同時(shí)要求最后的迭代使用最大斜度搜索,否則要進(jìn)行附加的迭代。
用下列方法指定目標(biāo)函數(shù)允差:
Command: OPVAR
GUI: Main Menu>Design Opt>Objective
問(wèn)題在收斂之前可能中斷。在用OPFRST命令NITR域指定的最大迭代次數(shù)達(dá)到的情況下出現(xiàn)。
一階方法的特殊情況
與零階方法相比,一階方法計(jì)算量大且結(jié)果精確。但是,精確度高并不能保證最佳求解。下面是一些注意點(diǎn):
& #61548; 一階方法可能在不合理的設(shè)計(jì)序列上收斂。這時(shí)可能是找到了一個(gè)局部最小值,或是不存在合理設(shè)計(jì)空間。如果出現(xiàn)這種情況,可以使用零階方法,因其可以更好的研究整個(gè)設(shè)計(jì)空間。也可以先運(yùn)行隨機(jī)搜索確定合理設(shè)計(jì)空間(如果存在的話),然后以合理設(shè)計(jì)序列為起點(diǎn)重新運(yùn)行一階方法。
& #61548; 一階方法更容易獲得局部最小值。(見(jiàn)后面“局部和全局最小值”的說(shuō)明。)這是因?yàn)橐浑A方法從設(shè)計(jì)空間的一個(gè)序列開(kāi)始計(jì)算求解,如果起點(diǎn)很接近局部最小值的話,就會(huì)選擇該最小值而找不到全局最小值。如果懷疑得到的是局部最小值,可以用零階方法或隨機(jī)搜索驗(yàn)證,如上所述。
& #61548; 目標(biāo)函數(shù)允差過(guò)緊將會(huì)引起迭代次數(shù)很多。因?yàn)楸痉椒ㄓ?jì)算實(shí)際有限元解(而非逼近),在計(jì)算過(guò)程中會(huì)根據(jù)給定的允差盡量找到確切的結(jié)果。
隨機(jī)搜索法
對(duì)于隨機(jī)搜索法[OPTYPE,RAND],程序完成指定次數(shù)的分析循環(huán),并在每次循環(huán)中使用隨機(jī)搜索變量值。用戶可以用OPRAND命令(Main Menu>Design Opt>Method/Tool)指定最大迭代次數(shù)和最大合理設(shè)計(jì)數(shù)。如果給出了最大合理設(shè)計(jì)數(shù),在達(dá)到這個(gè)數(shù)值時(shí)循環(huán)將終止,而忽略最大迭代次數(shù)是否達(dá)到。
隨機(jī)搜索法往往作為零階方法的先期處理。它也可以用來(lái)完成一些小的設(shè)計(jì)任務(wù)。例如可以做一系列的隨機(jī)搜索,然后通過(guò)查看結(jié)果來(lái)判斷當(dāng)前設(shè)計(jì)空間是否合理。
等步長(zhǎng)搜索法
等步長(zhǎng)搜索法[OPTYPE,SWEEP]用于在設(shè)計(jì)空間內(nèi)完成掃描分析。將生成n*NSPS個(gè)設(shè)計(jì)序列,n是設(shè)計(jì)變量的個(gè)數(shù),NSPS是每個(gè)掃描中評(píng)估點(diǎn)的數(shù)目(由OPSWEEP命令指定)。對(duì)于每個(gè)設(shè)計(jì)變量,變量范圍將劃分為NSPS-1個(gè)相等的步長(zhǎng),進(jìn)行NSPS次循環(huán)。問(wèn)題的設(shè)計(jì)變量在每次循環(huán)中以步長(zhǎng)遞增,其他的設(shè)計(jì)變量保持其參考值不變。設(shè)計(jì)序列中設(shè)計(jì)變量的參考值用OPSWEEP命令的Dset指定(Main Menu>Design Opt>Method/Tool)。
圖示和列表顯示等步長(zhǎng)搜索結(jié)果
用下列方法圖示設(shè)計(jì)變量數(shù)值和響應(yīng)變量的數(shù)值關(guān)系:
Command: OPLSW
GUI: Main Menu>Design Opt>Tool Results>Sweeps
縱坐標(biāo)表示目標(biāo)函數(shù)或狀態(tài)變量的實(shí)際數(shù)值。橫坐標(biāo)表示正交化(0到1)的設(shè)計(jì)變量,正交范圍為設(shè)計(jì)變量的最大最小值[OPVAR]。
用下列方法生成列表的結(jié)果:
Command: OPRSW
GUI: Main Menu>Design Opt>Tool Results>Print
正交化的響應(yīng)數(shù)據(jù)值和正交化的設(shè)計(jì)變量值將列出。目標(biāo)函數(shù)和狀態(tài)變量的結(jié)果與參考設(shè)計(jì)序列數(shù)值正交[OPSWEEP,Dset]。對(duì)于設(shè)計(jì)變量,0相應(yīng)于最小值,1相應(yīng)于最大值。
乘子計(jì)算法
本工具[OPTYPE,F(xiàn)ACT]用二階技術(shù)生成設(shè)計(jì)空間上極值點(diǎn)上的設(shè)計(jì)序列數(shù)值。(這個(gè)二階技術(shù)在每個(gè)設(shè)計(jì)變量的兩個(gè)極值點(diǎn)上取值。)可以用OPFACT命令(Main Menu>Design Opt>Method/Tool)指定是完成整體的還是部分子的評(píng)估。對(duì)于整體評(píng)估,程序進(jìn)行2n次循環(huán),n是設(shè)計(jì)變量的個(gè)數(shù)。1/2部分的評(píng)估進(jìn)行2n/2次循環(huán),依此類推。
圖示和列表顯示乘子計(jì)算結(jié)果
可以用棒式圖和表格顯示目標(biāo)函數(shù)或狀態(tài)變量的某些方面。例如,可以圖示每個(gè)設(shè)計(jì)變量對(duì)目標(biāo)函數(shù)的主要作用。用戶同樣可以查看兩個(gè)和三個(gè)變量之間的互相作用。
用下列命令顯示棒式圖:
Command: OPLFA
GUI: Main Menu>Design Opt>Tool Results>Factorial
用下列命令對(duì)目標(biāo)函數(shù)或狀態(tài)變量的作用列表:
Command: OPRFA
GUI: Main Menu>Design Opt>Tool Results>Print
要得到更詳細(xì)的說(shuō)明,請(qǐng)查閱ANSYS Theory Reference 第20章“Design Optimization”。
最優(yōu)梯度法
最優(yōu)梯度法[OPTYPE,GRAD]計(jì)算設(shè)計(jì)空間中某一點(diǎn)的梯度。梯度結(jié)果用于研究目標(biāo)函數(shù)或狀態(tài)變量的敏感性。用下列方式指定在哪個(gè)設(shè)計(jì)序列計(jì)算梯度:
Command: OPGRAD
GUI: Main Menu>Design Opt>Method/Tool
本工具做的循環(huán)次數(shù)等于設(shè)計(jì)變量的數(shù)目。
圖示和列表顯示最優(yōu)梯度法的結(jié)果
用戶可以用圖顯示設(shè)計(jì)變量和響應(yīng)變量的數(shù)值??v坐標(biāo)表示目標(biāo)函數(shù)或狀態(tài)變量的實(shí)際數(shù)值。橫坐標(biāo)表示設(shè)計(jì)變量一個(gè)小的(1%)變化值。用下列方法列表表示結(jié)果:
Command: OPRGR
GUI: Main Menu>Design Opt>Tool Results>Print
1%的變化值是相對(duì)于設(shè)計(jì)變量的變化范圍(由OPVAR命令中MAX-MIN數(shù)值確定),而不是相對(duì)于當(dāng)前的設(shè)計(jì)變量數(shù)值的。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















