李成陽,何劍平,鄭 軍
?
基于ANSYS和MATLAB的優(yōu)化設計
李成陽,何劍平,鄭 軍
(武漢船用電力推進裝置研究所,武漢430064)
針對ANSYS在優(yōu)化設計上存在的不足,本文提出了一種通過MATLAB和ANSYS共同進行有限元分析和優(yōu)化設計的方法。ANSYS執(zhí)行有限元分析,MATLAB調(diào)用ANSYS的結(jié)果,通過優(yōu)化算法工具箱完成優(yōu)化設計。以高溫超導電機為例,介紹了兩個軟件實現(xiàn)聯(lián)合優(yōu)化的過程。
ANSYS MATLAB 有限元分析 諧波優(yōu)化
0 引言
ANSYS是世界上主流的有限元分析軟件,被廣泛的應用在結(jié)構(gòu)力學、電磁場、溫度場等多個領域中。ANSYS不僅具有強大的前后處理功能,還可以通過ANSYS參數(shù)化設計語言(ANSYS Parametric Design Language, APDL)來實現(xiàn)有限元分析的二次開發(fā)工作。但是ANSYS在完成設計變量的優(yōu)化方面有以下不足[1]:1)ANSYS優(yōu)化設計模塊優(yōu)化功能有限,設計變量超過20個之后有可能會收斂到局部最優(yōu)解,并且只能添加數(shù)值形式的約束條件。2)使用ANSYS的優(yōu)化模塊需要購買額外授權(quán),價格不菲。3)APDL中包含的命令更多的偏向于建模和有限元分析,在數(shù)值計算和矩陣操作方面較為不足。APDL通過ANSYS的命令行窗口進行編譯,缺少功能強大的調(diào)試工具。4)APDL的大多數(shù)語法來自于早期的科學計算語言FORTRAN-77,和目前主流的C語言區(qū)別較大,同時命令中包含的參數(shù)多,比較難以記憶,學習成本高。
MATLAB是功能強大的科學計算軟件,具有豐富的矩陣操作命令和數(shù)值計算函數(shù),可以方便和快速的使用優(yōu)化算法實現(xiàn)對象設計參數(shù)的優(yōu)化。因此本文設想把ANSYS和MATLAB兩種軟件結(jié)合起來,共同完成設計參數(shù)的優(yōu)化設計。
1 MATLAB和ANSYS的聯(lián)合優(yōu)化
1.1優(yōu)化算法
MATLAB除了可以通過m語言任意編寫優(yōu)化算法之外,還可以通過一套被稱為工具箱(Toolbox)的擴展應用子程序調(diào)用一些常用的優(yōu)化算法。在MATLAB自帶的優(yōu)化工具箱中全局搜索能力較為優(yōu)秀的算法包括多起點搜索、模式搜索、遺傳算法以及模擬退火等。
這里以優(yōu)化工具箱中的遺傳算法為例介紹算法的調(diào)用過程。首先創(chuàng)建一個名為optimization的m文件,通過MATLAB自帶的ga函數(shù)就可以完成對工具箱中遺傳算法的調(diào)用[2]。
[x,fval]=ga(fitnessfuction,nvars,A,b,Aeq,…beq,lb,ub,constraintfunction]
函數(shù)中是最優(yōu)解輸出矩陣。是目標函數(shù)的最優(yōu)適應值。是變量個數(shù)。是輸入變量受到的線性約束的相關(guān)參數(shù),約束表達式為和。是輸入?yún)?shù)上限和下限,即。
ConstraintFunction是輸入變量受到的非線性約束函數(shù)句柄。若要建立一個這樣一個非約束性的條件,那么只需要將約束條件轉(zhuǎn)換為的形式,然后創(chuàng)建一個約束函數(shù)example的m文件:
function [c,ceq]=example(x,y)
c=[x+y-10];
ceq=[]; %ceq是等式約束%
然后在optimization文件中用以下命令調(diào)用非線性約束函數(shù)的句柄。
ConstraintFunctioin=@example;
FitnessFunction是適應度函數(shù)句柄。和一般的優(yōu)化計算不同的是,本文中的適應度函數(shù)沒有解析表達式,適應度的具體數(shù)值需要通過MATLAB調(diào)用ANSYS進行有限元計算得到。首先新建一個名為fitness的m文件,假定適應度函數(shù)的名稱為fitness,然后在fitness文件中通過下面的語句定義適應度函數(shù)。
function y=fitness(x);%x為設計參數(shù)矩陣,y為輸出變量。
%此部分為MATLAB調(diào)用ANSYS進行有限元分析的計算程序%
y=fitness_value;
fitness_value是有限元分析結(jié)束后導入到MATLAB中的結(jié)果矩陣。最后需要在optimization文件中使用以下命令調(diào)用適應度計算函數(shù)
fitnessfunction=@instance;
1.2 MATLAB和ANSYS的數(shù)據(jù)傳遞
MATLAB和ANSYS都具有很強的文件讀寫能力,通過下述操作可以實現(xiàn)相互之間的數(shù)據(jù)傳遞。
首先分別創(chuàng)建名為data.txt和result.txt的文本文檔作為數(shù)據(jù)存儲的中介。
1)設計參數(shù)寫入data.txt
MATLAB需要以下語句將輸入變量矩陣的寫入到data.txt的文件中[3]。
fid = fopen (‘data.txt’ ’w+’);
fprintf ( fid,%f, x);
fclos (fid);
語句中的fid是data.txt文件的句柄,當文件打開成功時,fid的返回值為0,反之則為1?!痺+’表示文件是以讀寫的形式打開,%f表示寫入的數(shù)據(jù)格式為浮點型。
2)data.txt文件中的數(shù)據(jù)寫入到ANSYS
首先利用記事本創(chuàng)建一個后綴名為.mac的APDL的宏文件,然后在該文件中通過*VREAD命令將存儲在data.txt文件中的設計變量矩陣讀入到design變量當中[4]。
*DIM,design,array,n,m
*VREAD,design(1),d:data,txt,,IJK,n,m
(format)
其中IJK是矩陣讀取的順序說明,一般使用JIK格式,將矩陣元素按行寫入。n,m在JIK格式下分別表示design數(shù)組的列數(shù)和行數(shù)。Format為數(shù)據(jù)讀取格式,可以參照FORTRAN-77的相關(guān)命令。比如3F7.3表示每行讀取3個元素,每個矩陣元素占用7個字符寬度,小數(shù)點后保留3位有效數(shù)字。
3)ANSYS將有限元計算結(jié)果寫入到result.txt
ANSYS在完成有限元計算之后,需要通過以下語句,將分析的結(jié)果fitness矩陣寫入到result.txt文檔中。
*CFOPEN, result, txt
*VWRITE, fitness
(format)
*CFCLOS
4)MATLAB完成計算結(jié)果的讀取
在完成了對于ANSYS有限元分析程序的調(diào)用之后,MATLAB需要讀取result.txt文件中的數(shù)據(jù)并存入適應度fitness_value中。相關(guān)的語句如下。
fid = fopen ( ‘result.txt’, ’w+’ );
fitness_value = fscanf ( fid, %f, format );
fclos ( fid );
在MATLAB成功讀取適應度之后,遺傳算法函數(shù)會自動根據(jù)適應度挑選下一代種群,并開始新的一輪循環(huán)計算,直到結(jié)果收斂為止。
1.3 MATLAB調(diào)用ANSYS
ANSYS提供了一種特殊Batch(批處理)模式,透過批處理模式,ANSYS能夠在不打開程序窗口界面的情況下執(zhí)行APDL。MATLAB可以通過system命令調(diào)用ANSYS批處理模式完成適應度的計算。
cd:(‘d:Ansys Incv145ansysinwinx64’)
system(‘a(chǎn)nsys145.exe–b-pane3fl–iC:ansys_analysis.mac-oC:output.txt’)
由于ANSYS的文件路徑中存在空格,因此需要首先使用cd命令表示將MATLAB的默認啟動目錄修改為ANSYS的安裝位置,以避免MATLAB無法搜索到ANSYS。-b表示ANSYS運行在批處理模式;-p ane3fl是ANSYS多物理場分析模塊Multiphysics的產(chǎn)品代碼。C:ansys_analysis.mac是MATLAB需要調(diào)用的APDL宏文件所在的路徑;-o C:output.txt是命令自動創(chuàng)建的運行結(jié)果輸出文件,內(nèi)容包含了調(diào)用過程中出現(xiàn)的錯誤提示和ANSYS的運行日志。
1.4 ANSYS的自動優(yōu)化的步驟
在ANSYS利用APDL命令流進行自動優(yōu)化的過程中包含了自動建模,自適應網(wǎng)格劃分以及模型的自動求解等步驟。在自動優(yōu)化的過程中,模型和參數(shù)占用的內(nèi)存將不斷增大,因此在每次優(yōu)化循環(huán)開始前需要通過FINISH和/CLEAR命令將內(nèi)存中所有的模型和參數(shù)加以清除。
但是清除后重新建立模型時不能使用常用的RESUME命令,一旦使用,系統(tǒng)所有參數(shù)將恢復為第一次創(chuàng)建有限元模型過程中輸入的參數(shù),遺傳算法函數(shù)新產(chǎn)生的設計參數(shù)值將失去控制作用。
為了實現(xiàn)設計參數(shù)在循環(huán)中自動更新,首先需要創(chuàng)建一個后綴名為.txt的文本文檔,在ANSYS完成建模前中使用PARSAV命令把除設計參數(shù)之外的其他參數(shù)保存在該文檔中。在ANSYS讀取了遺傳算法產(chǎn)生的新設計參數(shù)之后,再通過PARRES命令將已保存參數(shù)從文本文檔中恢復。
1.5 MATLAB和ANSYS聯(lián)合優(yōu)化的步驟
根據(jù)上述分析,MATLAB和ANSYS共同優(yōu)化的過程如圖1所示[6]。其中給定初始變量參數(shù)、判斷優(yōu)化算法是否收斂以及重新取變量賦值等操作在已經(jīng)包含在優(yōu)化函數(shù)中。
2 應用舉例
2.1 研究對象和約束條件
本文以高溫超導電機為優(yōu)化對象,由于高溫超導電機磁極對稱,為了方便,建模時采用1/2磁極截面。勵磁線圈由5個雙餅型跑道線圈疊合制成,單根導線寬為5mm。表1列出了電機模型機結(jié)構(gòu)的基本參數(shù)。
受到制造工藝和轉(zhuǎn)子空間的限制,繞組的形狀必須滿足一定的約束條件。電機磁體是用多個不同半徑的雙餅型跑道線圈疊合而成。為了易于繞制和焊接,要求雙餅型線圈的內(nèi)徑相同,相鄰雙餅線圈的外徑相同[5]。
此外,勵磁線圈必須保持在轉(zhuǎn)子的內(nèi)部空間中。利用APDL建立的電機模型如下圖2所示。
2.2 優(yōu)化目標
優(yōu)化目標是在電機結(jié)構(gòu)、勵磁線圈通過的電流密度以及設定的約束條件等其他因素不變的情況下,通過改變電機磁體的結(jié)構(gòu)參數(shù),盡可能的降低氣隙磁通的總諧波畸變率。
在ANSYS中,可以通過*MFOURI命令完成對氣隙磁通的傅立葉分析。本文通過諧波畸變率(THD)評價電機氣隙磁通的質(zhì)量。在通過*GET命令獲得磁場測量路徑中各階氣隙磁通的數(shù)據(jù)后,總諧波畸變率可以通過下面的公式計算。
2.3 優(yōu)化結(jié)果
當定轉(zhuǎn)子氣隙磁通的總諧波畸變率最小時,每層線圈的內(nèi)徑和外徑如表3所示。
由于3次之后的諧波的幅值很小,相比基波,其影響可以忽略不計,因此在計算的時候只統(tǒng)計3次以下的諧波。
在優(yōu)化前和優(yōu)化后,根據(jù)公式分別對氣隙磁通諧波畸變率進行計算,最終結(jié)果如表4所示。
3 結(jié)論
根據(jù)應用實例中的結(jié)果,MATLAB和ANSYS的聯(lián)合優(yōu)化有效的降低了定轉(zhuǎn)子氣隙磁通中諧波含量,使磁通波形更加趨近于正弦波,證明了MATLAB和ANSYS聯(lián)合優(yōu)化的可行性和有效性。
與常規(guī)參數(shù)優(yōu)化中使用手工方法不斷修改參數(shù)集合,根據(jù)計算結(jié)果進行尋優(yōu)的方法相比,基于ANSYS和MATLAB的優(yōu)化方法充分發(fā)揮了ANSYS和MATLAB兩種軟件的特長,具有自動建模,尋優(yōu)精度高,不需要人工干預等優(yōu)點。優(yōu)化模塊和建模模塊分別通過兩個不同軟件實現(xiàn),有利未來對模型和優(yōu)化算法分別進行改進,并且優(yōu)化程序可以獨立移植到其他的項目中。
[1] MVK Chari. Finite-element solution of the Eddy-current problem in magnetic structures [J].IEEE Transactions on Power Apparatus & System, 1974.
[2] 龔純,王正林. MATLAB最優(yōu)化計算[M].子工業(yè)出版社.
[3] MATLAB user’s guide [M]. THWORKS Corporation.
[4] ANSYS Programmer’s Manual[M]. ANSYS Corporation.
[5] 何劍平. 高溫超導同步電機及其磁場分析[D]. 華中科技大學,2006.
[6] Joosun Kang,Joon hon Lee. The optimal of shape of HTS motor to improve the critical current of field winding [J]. IEEE Transaction Superconductivity, 2003.
Application of ANSYS and MATLAB to Optimization Design
Li Chengyang, He Jianping, Zheng Jun
( Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China)
TM37
A
1003-4862(2016)05-0051-04
2016-01-09
李成陽(1991-),男,碩士研究生。研究方向:高溫超導電機電磁場分析。