ANSYS優化設計揭密 適合初學者

2023-02-07 20:27:04 字數 4883 閱讀 6839

ansys優化揭密

引子 時下ansys高手頗多,但還有很多fea戰友對ansys的優化過程用之不熟,這裡拋磚引玉,寫下自己對ansys優化模組的使用心得,不當之處敬請指正。

deform@smth

aug. 14,2002

1. 認識ansys優化模組

1.1 什麼時候我需要它的幫忙?

什麼是ansys優化?我想說明乙個例子要比我在這裡對你絮叨半天容易理解的多。

注意過普通的水杯嗎?底面圓圓的,上面加蓋的哪一種。仔細觀察一下,你會發現比較老式的此類水杯有乙個共同特點:底面直徑=水杯高度。

圖1 水杯的簡化模型

為什麼是這樣呢?偷偷的告訴你:因為只有滿足這個條件,才能在原料耗費最少的情況下使杯子的容積最大。

可不是,在材料一定的情況下,如果水杯的底面積大,其高度必然就要小;如果高度變大了,底面積又大不了,如何調和這兩者之間的矛盾?其實這恰恰就反應了乙個完整的優化過程。

在這裡,乙個水杯的材料是一定的,所要優化的變數就是杯子底面的半徑r和杯子的高度h,在ansys的優化模組裡面把這些需要優化的變數叫做設計變數(dv);優化的目標是要使整個水杯的容積最大,這個目標在ansys的優化過程裡叫目標函式(obj);再者,對設計變數的優化有一定的限制條件,比如說整個杯子的材料不變,這些限制條件在ansys的優化模組中用狀態變數(sv)來控制。閒話少說,下面我們就來看看ansys中怎麼通過設定dv、sv、obj,利用優化模組求解以上問題。

首先引數化的建立乙個分析檔案(我假設叫水杯初始半徑為r=1,高度為h=1(dv),由於水杯材料直接喝水杯的表面積有關係,這裡我假設水杯表面積不能大於100,這樣就有s=2πrh+2πr2<100(sv),水杯的容積為v=πr2h (obj)。

r=1h=1

s=2*3.14*r*h+2*3.14*r*r

v=10000/(3.14*r*r*h)

然後再建乙個優化分析檔案(我假設叫設定優化變數,並求解。

/clear,nostart

/input,volu,inp

/opt

opanl,volu,inp

opvar,r,dv,1,10,1e-2

opvar,h,dv,1,10,1e-2

opvar,s,sv,,100,1e-2

opvar,v,obj,,,1e-2

opkeep,on

optype,subp

ops**e,optvolu,opt0

opexec

最後,哈,開啟ansys6.1,在命令輸入框中鍵入」/input,optvolu,inp」,整個優化過程就開始了。

圖2 ansys優化過程圖

幾秒鐘的優化過程結束後,讓我們來看一下優化的結果:

/opt

optlist,all

圖3 優化結果1

上圖中左右帶*的set 22是最優解,由此可以看出,要想在表面積一定的情況下使水杯容積最大,的確有這樣乙個規律 h=d=2*r。有興趣的同志可以用求極值的方法演算一下,一定會得到相同的答案。(話外語:

原來那些無蓋的糖瓷盆有乙個規律是h=r,也是為了滿足瓷盆容積最大。)

ansys的優化模組是用來求解工程分析中的優化例子的,但上面乙個例子說明即使這樣於工程毫無關係純數學極值問題,也能夠輕鬆求解。不過在細節處會有一些技巧,後面再仔細分析。(其實用ansys的優化模組完全能解決數學上比較負責的極值問題,不過現在有了matlab、mathematica,大概也沒有人願意來用ansys獻醜了)

1.2 ansys優化設計基礎

前面寫了乙個例子,來說明ansys的基本優化過程。在這一節中,我們結合這個例子來說明一下優化模組中的一些概念。

1.2.1 優化模組中的三大變數:

設計變數(dv):即自變數。例子中的opvar,r,dv,1,10,1e-2就是用來定義乙個設計變數r,其上限為10,下限為1,公差為10-2(公差和優化過程的收斂有關)。

ansys優化模組中允許定義不超過60個設計變數。

狀態變數(sv):用來體現優化的邊界條件,是設計變數的函式。例子裡面opvar,s,sv,,100,1e-2就是定義了乙個狀態變數s,它的上限為100,無下限,公差為10-2。

從檔案中可以看到,s=2*3.14*r*h+2*3.14*r*r。

可見,定義這樣乙個狀態變數,即是限制水杯的表面積(可以認為表示材料的多少)不大於100。在ansys優化模組中使用者可以定義不超過100個狀態變數。

目標函式(obj):最終的優化目的。它必須是設計變數的函式,而且只能求其最小值。

看到裡面目標函式的定義了吧v=10000/(3.14*r*r*h),為了把求最大體積轉化為求最小值,只好對它求倒數了;如果知道目標函式的上限,還可以用乙個大數減目標函式的方法來轉換。例子中opvar,v,obj,,,1e-2就是定義了乙個目標函式v,它的公差是10-2。

1.2.2 ansys優化模組中的兩種求解模式

ansys優化模組的求解有兩種執行模式,一種是在gui方式下執行,即已經開啟ansys的分析介面後進行分析;另一種是batch模式,無需開啟ansys分析介面,後台執行求解。

前面例子的執行過程其實就是乙個典型的gui方式體現,它涉及到兩個重要的檔案:乙個就是類似的ansys分析檔案,如果是乙個工程問題,該檔案中應該有引數定義、引數建模、求解、結果提取、目標函式賦值的乙個全過程(由於優化求解是乙個不斷跌代的過程,ansys分析檔案其實是包涵了乙個完整的迴圈)。另乙個檔案是類似的優化控制檔案,基本語句就那麼幾條,無非是定義三大變數、優化方式、優化控制等幾條,使用者拿過去稍稍替換下就可以用在不同的問題上。

(注:細心的讀者可能會提問,既然ansys分析檔案包涵了乙個完整的迴圈,但是整個優化過程中是要求設計變數不斷改變的,每次迴圈都有乙個引數重定義的過程,不會使設計變數恢復初始值嗎?這一點勿用擔心,正是由於有了另乙個優化控制檔案,優化過程只在第一次進行完全的引數定義工作,在後續迴圈中,優化控制檔案中宣告的設計變數定義將被忽略)。

有了這樣兩個檔案,簡單的在命令視窗把優化控制檔案輸入進去(其中的opanl命令會自動呼叫指定的ansys分析檔案),就可以完成整個優化過程。以上說明的是完全使用命令流的gui方式,至於如何在選單中進行優化過程的定製,竊以為沒有命令流方式快捷,這裡就不再贅述了。

另一種方式是後台執行的batch方式,它只需要乙個輸入命令流檔案(batc**件)。該檔案可以簡單的把gui方式下ansys分析檔案和優化控制檔案合併得到。不過有幾個注意點:

1、需要把optanl語句去掉,因為在batc**件中,不需要提供ansys分析檔案名字,系統預設batc**件中/opt語句以前的所有部分為ansys分析檔案內容。2、以前為防止在gui方式下的重新定義錯誤而引入的一些語句,如/cle,nostart需要去除。上述例子經過合併、處理,就可以得到batch方式下需要的batc**件

r=1h=1

s=2*3.14*r*h+2*3.14*r*r

v=10000/(3.14*r*r*h)

/opt

opvar,r,dv,1,10,1e-2

opvar,h,dv,1,10,1e-2

opvar,s,sv,,100,1e-2

opvar,v,obj,,,1e-2

opkeep,on

optype,subp

ops**e,optvolu,opt0

opexec

假定在目錄bvolu下,在cmd命令列方式下,進入bvolu目錄,執行命令:

ansys61 -b -j bvolu -p ane3flds -i –o

命令中 -b 引數指定用batch模式求解;

-j bvolu引數指定該求解預設工作名字為bvolu (不指定就預設為file)

-p ane3flds 引數指定使用ansys/multiphysics/ls-dyna求解器

-i 引數指定輸入batc**件為

-o 引數指定把輸出導向到中,便於檢視過程糾錯

執行結束後,可以從檔案中看到最有解是多少:

檔案中的一部分資料:

>>>>>> solution has converged to possible optimum <<<<<<

(based on dv tolerances between final two designs)

final variables are

set 22

feasible)

s (sv) 99.997

r (dv) 2.2851

h (dv) 4.6830

v (obj) 130.23

其結果與用gui方式求解完全一樣,生成的檔案中也有最優解的資訊,同時還能看到求解整個引數迭代求解過程。

1.2.3 ansys的優化方法和收斂準則

例子中優化控制檔案裡面的優化命令,還有opkeep,on(用來要求保留最優解的db),opexec(執行優化),剩下重要的命令就只有optype了,這個命令指定ansys優化中使用的優化方法。

優化方法發展到今天可說是形形色色,比較完善了。ansys的優化模組中只支援兩種優化方法,不能不說是一大遺憾。但ansys的這兩種優化方法對絕大多數的工程問題已經足夠,更何況ansys還留下了使用者話優化介面,方便使用者寫出適合於自己問題的優化方法來使用。

看看例子中的命令」optype,subp」,這裡指定的是第一種通用的函式逼進優化方法。改種方法的本質是採用最小二乘逼進,求取乙個函式面來擬和解空間,然後再對該函式面求極值。無疑這是一種普適的優化方法,不容易陷入區域性極值點,但優化精度一般不是很高,因此多用來做粗優化的手段。

另外一種是針對第一種優化方法缺點的改進方法,叫做梯度尋優。如果說第一種方法是c0階、大範圍普適的粗優化方法;第二種方法就是c1階、區域性尋優的精優化方法。一般來說,乙個比較負責的問題都需要同時採用兩種優化方法,先用函式逼進的第一類方法初步求得最優解基本位置,然後再採用梯度尋優的對最優解的位置進行更精確的確定。

(注:但用第二類梯度尋優進行優化,不僅時間消耗長,還可能陷入區域性最小點,因此通常的問題都建議使用0階函式逼進優化subp)

ANSYS優化設計的基礎內容

本文介紹了ansys優化設計的一些基礎內容。什麼是優化設計 優化設計是一種尋找確定最優設計方案的技術。所謂 最優設計 指的是一種方案可以滿足所有的設計要求,而且所需的支出 如重量,面積,體積,應力,費用等 最小。也就是說,最優設計方案就是乙個最有效率的方案。設計方案的任何方面都是可以優化的,比如說 ...

ANSYS優化設計中的優化變數選擇說明

下面列出了許多如何定義設計變數,狀態變數和目標函式的建議。選擇設計變數 設計變數往往是長度,厚度,直徑或模型座標等幾何引數。其必須是正值。關於設計變數要記住的幾點如下 61548 使用盡量少的設計變數。選用太多的設計變數會使得收斂於區域性最小值的可能性增加,在問題是高度非線性時甚至會引起不收斂。顯而...

PROE和ANSYS的汽車零部件結構優化設計

一 研究方法 選種車型,確定車架具體尺寸,採用pro e三維軟體進行車架建模,然後利用ansys中的一階方法進行有限元分析,通過結合ansys軟體,高效準確地建立分析構件的三維實體模型,自動生成有限元網格,建立相應的約束及載荷工況,並自動進行有限元求解,對模態分析計算結果進行圖形顯示和結果輸出,對結...