基于MATLAB 與ANSYS 的結(jié)構(gòu)優(yōu)化設(shè)計

伴隨著數(shù)學(xué)力學(xué)和計算機的發(fā)展結(jié)構(gòu)優(yōu)化設(shè)計也逐漸發(fā)展成熟起來ANSYS 是最早開發(fā)結(jié)構(gòu)優(yōu)化設(shè)計模塊的有限元分析軟件之一它提供兩種優(yōu)化方法即零階方法和一階方法二者均是將約束的優(yōu)化問題轉(zhuǎn)化為非約束的優(yōu)化問題來求解零階方法只用到因變量而不用它的偏導(dǎo)數(shù)其全局搜索能力很強而局部搜索能力較差研究表明該方法可以快速達(dá)到最優(yōu)解的80 %但卻很難收斂到最優(yōu)解一階方法使用因變量的導(dǎo)數(shù)值來確定搜索方向其局部搜索能力很強但全局搜索能力較差很容易收斂到局部極小值點遺傳算法是近些年逐漸發(fā)展起來的一種智能的優(yōu)化算法它具有較強的全局搜索能力并且可以與其他常規(guī)優(yōu)化算法相結(jié)合進而高效準(zhǔn)確地解決大多數(shù)的工程優(yōu)化問題MATLAB 中的遺傳算法工具箱集成了當(dāng)前比較成熟的各種遺傳算子借助它可以方便地完成各種問題的優(yōu)化求解

本文通過在MATLAB 中將ANSYS 作為子程序調(diào)用的方法來研究遺傳算法在工程結(jié)構(gòu)優(yōu)化中的應(yīng)用

遺傳算法及MATLAB 遺傳算法工具箱

1遺傳算法基本思想

遺傳算法GA最初是由美國Michigan 大學(xué)的John Holland 教授于1975 年提出的它將達(dá)爾文的生物進化理論應(yīng)用于優(yōu)化設(shè)計中把解空間的某個點集映射為生物學(xué)中的種群將目標(biāo)函數(shù)映射為種群所處的環(huán)境因此按照生物進化理論的觀點種群中的個體會不斷向著適應(yīng)環(huán)境的方向進化經(jīng)過若干代進化之后該種群所代表的解就會收斂到問題的最優(yōu)解該方法最大的特點是全局搜索能力強并且不需要編程人員對問題的優(yōu)化過程有太深的了解只要選定了種群指定了種群所處的環(huán)境該方法就會自動的智能地向最優(yōu)解進化遺傳算法中最基本的操作是遺傳操作包括選擇交叉和變異自然界中環(huán)境按照適者生存的原則來選擇優(yōu)良個體使其優(yōu)良基因能夠傳遞到下一代遺傳算法中的選擇操作即是模擬這一過程首先計算種群中每個個體的適應(yīng)度Fitness) ,然后按照適者生存的原則進行選擇操作交叉操作是模擬生物進化中的有性繁殖過程種群個體之間通過基因重組生成新的個體生命體在進化過程中某些基因常常會發(fā)生變異好的變異會被環(huán)境選擇并遺傳到下一代而不好的變異則會被環(huán)境淘汰因此這種基因變異對種群的進化有巨大的推動作用遺傳算法中應(yīng)用這種變異來產(chǎn)生新的個體使種群中的基因更加豐富有利于算法的收斂

12 MATLAB 遺傳算法工具箱(GAOT)

MATLAB 是矩陣實驗室的簡稱它具有豐富的矩陣操作命令使用MATLAB 來實現(xiàn)遺傳算法是非常方便的即將種群的數(shù)據(jù)存入矩陣中然后就可以對整個種群而不是單個個體進行操作從而大大提高了計算效率更重要的是MATLAB本身還帶有遺傳算法工具箱它集成了當(dāng)前

較成熟的各種遺傳操作算子和各種改進型遺傳算法使遺傳算法優(yōu)化變的更加簡單高效其主程序ga. m 的調(diào)用格式如下:

x = ga@ fitnessfcnnvarsoptions)

x, fval= ga@ fitnessfcnnvarsoptions)

x, fval, reason= ga @ fitnessfcnnvarsoptions)

xfvalreasonoutput] = ga @ fitnessfcnnvarsoptions)

x, fval, reasonoutputpopulation= ga@ fitnessfcnnvarsoptions)

其中各參數(shù)說明如下:

為程序最終計算得到的最小值;

fval 為最小值點處的適應(yīng)度函數(shù)值;

reason 為算法終止的原因;

output 為算法輸出的結(jié)構(gòu)體包含程序計算

中的各種相關(guān)信息;

population 為程序終止時的種群;

fitnessfcn 為適應(yīng)度函數(shù);

nvars 為設(shè)計變量個數(shù);

options 為遺傳算法的各種控制選項

此外也可使用工具箱的GUI 界面交互式圖形用戶界面來執(zhí)行遺傳操作其特點是簡潔直觀

2 MATLAB 調(diào)用ANSYS

MATLAB 遺傳算法工具箱需要輸入適應(yīng)度函數(shù)對于簡單問題其適應(yīng)度函數(shù)很好編寫但對于大型的工程問題其目標(biāo)函數(shù)和狀態(tài)變量需要用有限元計算才能得到因為僅使用MATLAB 語言編寫程序來實現(xiàn)往往是很復(fù)雜有時甚至是不可能的必須借助于成熟的有限元計算程序ANSYS由于其自帶的APDL 語言則成為了有限元計算的首選

21 MATLAB ANSYS 數(shù)據(jù)傳遞

若要實現(xiàn)MATLAB ANSYS 的調(diào)用首先要能實現(xiàn)MATLAB ANSYS 的數(shù)據(jù)傳遞而二者都有很強的文件操作功能這使數(shù)據(jù)傳遞的實現(xiàn)成為可能MATLAB 在調(diào)用ANSYS 時的數(shù)據(jù)流向如圖1

 blob.png

MATLAB 打開并讀寫數(shù)據(jù)文件的基本步驟如下:

fid = fopen'mta. txt', 'w + ')

fprintffid, formatdv /obj = fscanf fid, format)

fclosefid)

其中, 'w + '表示以讀寫方式打開文件dv 為設(shè)計變量obj 為目標(biāo)函數(shù)format 表示以某種格式讀寫數(shù)據(jù)語言相同

ANSYS 打開并讀寫數(shù)據(jù)文件的基本步驟如下:

讀取數(shù)據(jù)

* dimdvarraryn

* vreaddv1) ,mta, txt,, ijkn

format)

其中為設(shè)計變量個數(shù)format 為以某種格式讀取數(shù)據(jù)FORTRAN 語言相同

打開并寫入數(shù)據(jù)到數(shù)據(jù)文件

* cfopenatm, txt

* vwriteobj

format)

* cfclose

2. 2 MATLAB 調(diào)用ANSYS

ANSYS 程序提供了batch 批處理運行方式可以在不打開ANSYS 程序界面的情況下后臺運行計算并輸出結(jié)果這使得在其他程序中調(diào)用ANSYS 成為可能MATLAB 調(diào)用ANSYS 的語句如下:

system'D\Ansys \v100 \ANSYS \ bin \ intel \ ansys100- b - p ansys - product - feature - i input file - o out file. bat')

其中各參數(shù)說明如下:

- b batch 為運行模式;

- p 為產(chǎn)品代碼可以在ANSYS 的幫助文件里找到) ;

- i 為輸入文件ANSYS 分析文件) ;

- o 為輸出文件

此外在調(diào)用ANSYS 時還可以輸入以下控制參數(shù):

- j 為工程名稱;

- m 為內(nèi)存大小;

- db 為數(shù)據(jù)庫打下

結(jié)構(gòu)優(yōu)化算例

以一跨平面鋼框架結(jié)構(gòu)為例如圖2

 blob.png

為了減少設(shè)計變量個數(shù)各層梁的尺寸bb × bh)均相同梁寬bb 的變化范圍為0. 1 ~ 0. 3 m梁高的變化范圍為0. 2 ~ 0. 4 m各層柱均為方柱cb ×cb) ,柱寬的變化范圍為0. 2 ~ 0. 5 m初始截面尺寸為bb = 0. 2 mbh = 0. 3 mcb = 0. 3 m頂層承受200 kN 的均布荷載其余各層均承受100 kN的均布荷載材料彈性模量為210 GPa拉壓許用應(yīng)力均為235 MPa用混合遺傳算法優(yōu)化該結(jié)構(gòu)使其所用鋼材的體積最小

為了對比本文分別采用MATLAB 遺傳算法工具箱中的混合遺傳算法及ANSYS 中的零階方法一階方法種方法對該結(jié)構(gòu)進行了優(yōu)化設(shè)計對比結(jié)果見表1

 blob.png

  由表可以看出3種優(yōu)化方法中基于MATLABANSYS 的混合遺傳算法的精度最好其最大應(yīng)力最接近鋼材的容許應(yīng)力用鋼量最小而零階方法的精度最差其計算用鋼量與混合遺傳算法的計算用鋼量相比增大了16.8 %一階方法的計算結(jié)果與零階方法的計算結(jié)果稍好但其用鋼量仍然比混合遺傳算法增大了8 %

結(jié)論

MATLAB 遺傳算法工具箱具有很強的優(yōu)化功能且其操作簡單直觀ANSYS 又是通用大型有限元分析軟件本文充分利用了二者的優(yōu)勢實現(xiàn)了MATLAB ANSYS 的數(shù)據(jù)傳遞和調(diào)用對一典型鋼框架結(jié)構(gòu)進行了優(yōu)化設(shè)計驗證了該方法的可行性但從分析精度來看基于MATLABANSYS 的混合遺傳算法要優(yōu)于零階方法和一階方法然而從分析成本來看混合遺傳算法的分析成本要遠(yuǎn)遠(yuǎn)的高于零階方法和一階方法這是由于MATLAB ANSYS 的數(shù)據(jù)傳遞是間接的每次循環(huán)過程計算機都要進行相應(yīng)文件的讀取與寫入操作占用了大部分的分析時間因此將該方法應(yīng)用于大型結(jié)構(gòu)的優(yōu)化設(shè)計還需要進一步的探索與驗證

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

2
3
5