多目標(biāo)優(yōu)化設(shè)計(jì)完整過程
[/attach]用的是9.0版。
1. 我們用optistruct時只能有一個objective.如下圖:

我只用過min,其他三個我沒有用過。特別是后兩個,誰用過說一下。
2.我們可以設(shè)置多個response,可以把很多response用dconstraint約束,但是只能有一個objective。有時我們需要同時滿足某幾個response的最小值或是最大值。但是deconstraint只能設(shè)置response的上限或是下,不能設(shè)置為min或是max。(聽說可以將上限和下限設(shè)置成相近的值可以使約束近似定為某一確定的值)。


3.多目標(biāo)其實(shí)在help里有說明,如下。
DRESP2 – Design Response via equations for design optimization
Description
When a desired response is not directly available from OptiStruct, it may be calculated using DRESP2. This response can be a functional combination of any set of responses that are the result of a design analysis iteration. These responses can be used as a design objective or as design constraints. The DRESP2 card identifies the equation to use for the response relationship and the input values to evaluate the response function.
我看過一些論文,現(xiàn)在還沒有什么新的理論可以實(shí)現(xiàn)多目標(biāo)(可能我沒有發(fā)現(xiàn)),現(xiàn)在對多目標(biāo)的處理情況是response用函數(shù)關(guān)聯(lián)起來,將不同的response設(shè)置為函數(shù)的變量,把多目標(biāo)處理成為一個單目標(biāo)。方程形式如下:f=w1*response1+w2*response2
W1,w2 為權(quán)值。
Optistruct中就是如此處理的,
首先在dequation中設(shè)置方程,如下圖:
我對設(shè)置方程還有些地方?jīng)]有弄明白,我只是舉個簡單的例子。(希望哪位高人能把編輯方程的詳細(xì)過程,及要注意的地方,單獨(dú)發(fā)個帖子,特別是復(fù)雜的方程的編寫過程。)
4. 寫方程。
我以單工況情況下最小化compliance和最大化一階固有頻率為例子,(這個最簡單,多工況的情況,和這個差不多).
寫方程時,我們不能簡單的將方程寫成f=w1*response1+w2*response2形式,因?yàn)?/font>w1*response1的值和w2*response2值可能會相差太大,并且兩者的值很可能不是同時變大或是同時變小。所以我們要對兩個response作一定的數(shù)學(xué)處理。(至于為什么要這樣,大家可以想明白)。數(shù)學(xué)處理的方法很簡單,我主要是通過看這篇論文想到的:
汽車車架結(jié)構(gòu)多目標(biāo)拓?fù)鋬?yōu)化方法研究 范文杰,范子杰,蘇瑞意 (強(qiáng)烈推薦)
Multiobjective optimal topology design of structures
T.-Y. Chen, S.-C. Wu
Uni?ed topology design of static and vibrating structures
using multiobjective optimization
Seungjae Min, Shinji Nishiwaki, Noboru Kikuchi
(1)
至于為什么這樣處理,都至少是本科生了,這個我想不需要說明(數(shù)學(xué)處理的方法肯定不只這一種,這個比較簡單,也好理解,誰要是有其他的處理方法,大家討論一下)
這里只討論一個工況情況下,k=1,
=1, 方程1里面的參數(shù)自己看論文去。
是我們設(shè)置的參數(shù),為柔度,
怎么得到:以原模型做分析,原模型的柔度應(yīng)該是最小的,因?yàn)槲覀円獪p小模型的柔度,提高剛度。它的值可以在out文件中取得。
怎么得到:將增加了設(shè)計(jì)區(qū)域的模型進(jìn)行拓?fù)鋬?yōu)化,objective設(shè)為compliance最小,經(jīng)過優(yōu)化可以得到最小的compliance值,out文件中可以取得。
為我們設(shè)置的變量,一階固有頻率。
怎么得到:將增加了設(shè)計(jì)區(qū)域的模型進(jìn)行拓?fù)鋬?yōu)化,objective設(shè)為frequency最大,out文件中可以得到優(yōu)化后最大值。
怎么得到:將原模型進(jìn)行分析,得出的值為最小值,因?yàn)槲覀円玫奖冗@個大的值。
W為權(quán)值,0至1之間,我們可以設(shè)置不同的權(quán)值,得出不同的結(jié)果,然后作出比較。
寫方程:
我是用
這在help里面有,大家自己看。
![]()

注意左邊必需有變量的列表,我當(dāng)時就搞了好久才試出來。我對編寫方程不熟,看了好久也沒有完全搞懂,很希望有位高手出來說說。
5.將方程中的變量和要優(yōu)化的response聯(lián)系起來。
(1)首先要定義要用到的response,本例中是compliance最小,和frequency最大。
(2)然后定義一個類型為function的response。

(3)在dequation中選已經(jīng)定義的方程。其他有關(guān)no regiond之類的設(shè)置我不懂,大家討論。
(4)點(diǎn)擊edit.

這里面是關(guān)鍵了,我只會用response和response_by_loadstep,其他是什么意思我也不懂,(很想知道),我只是碰巧試出來的。
Response有兩種,這兩種只能存在一個(也不知道為什么),選擇一個后,另一個沒有了。選第三個是沒有loadstep的,第四個是有loadstep的,這就要看定義objective時是否要loadstep,比如我們在objective中定義frequency最大時,要選loadstep,在objective中定義compliance最小是也要選loadstep。這要看設(shè)置的response了,這里例子中選的是第四個。
打勾后如下圖:

方框中的數(shù)字2是設(shè)置的response個數(shù),有幾個寫幾個。然后在黃色的按鍵中點(diǎn)相應(yīng)的response和loadstep。注意,response的選擇必需方程中它所對應(yīng)的變量相對應(yīng),比如:x1代表最小化compliance,那么第一個response必需選compliance最小。順序要對應(yīng)。。。
6. 在objective中定義,和平常的做法一樣。

結(jié)束語: 這是我自己摸索出來的方法,有很多地方不清楚,我只是把我發(fā)現(xiàn)問題,解決問題的過程完整寫出來,可能不太通順。我也不保證完全正確,希望大家能完善一下。
想解決的問題:
1. 比較復(fù)雜的方程編寫,例子中我只寫了一行方程,不知道多行怎么寫。不知道多個方程之間的變量是如何調(diào)用的,我試著寫個多行的方程,但是在定義function類型的response時,只有第一行的那個方程可以用,其他行方程沒有顯示。
2. 下圖中的其他幾個變量用法我不懂,想搞清楚, 
第一個是不是將不同的design_variables聯(lián)系起來?第二個是什么意思?第五個nodes是不是將不同的設(shè)計(jì)區(qū)域聯(lián)系起來?第六個我不知道是什么意思?
我發(fā)這個只是起拋磚引玉的作用,大家有什么不同的看法,希望一起討論一下。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















