李成陽,何劍平,鄭 軍
?
基于ANSYS和MATLAB的優化設計
李成陽,何劍平,鄭 軍
(武漢船用電力推進裝置研究所,武漢430064)
針對ANSYS在優化設計上存在的不足,本文提出了一種通過MATLAB和ANSYS共同進行有限元分析和優化設計的方法。ANSYS執行有限元分析,MATLAB調用ANSYS的結果,通過優化算法工具箱完成優化設計。以高溫超導電機為例,介紹了兩個軟件實現聯合優化的過程。
ANSYS MATLAB 有限元分析 諧波優化
0 引言
ANSYS是世界上主流的有限元分析軟件,被廣泛的應用在結構力學、電磁場、溫度場等多個領域中。ANSYS不僅具有強大的前后處理功能,還可以通過ANSYS參數化設計語言(ANSYS Parametric Design Language, APDL)來實現有限元分析的二次開發工作。但是ANSYS在完成設計變量的優化方面有以下不足[1]:1)ANSYS優化設計模塊優化功能有限,設計變量超過20個之后有可能會收斂到局部最優解,并且只能添加數值形式的約束條件。2)使用ANSYS的優化模塊需要購買額外授權,價格不菲。3)APDL中包含的命令更多的偏向于建模和有限元分析,在數值計算和矩陣操作方面較為不足。APDL通過ANSYS的命令行窗口進行編譯,缺少功能強大的調試工具。4)APDL的大多數語法來自于早期的科學計算語言FORTRAN-77,和目前主流的C語言區別較大,同時命令中包含的參數多,比較難以記憶,學習成本高。
MATLAB是功能強大的科學計算軟件,具有豐富的矩陣操作命令和數值計算函數,可以方便和快速的使用優化算法實現對象設計參數的優化。因此本文設想把ANSYS和MATLAB兩種軟件結合起來,共同完成設計參數的優化設計。
1 MATLAB和ANSYS的聯合優化
1.1優化算法
MATLAB除了可以通過m語言任意編寫優化算法之外,還可以通過一套被稱為工具箱(Toolbox)的擴展應用子程序調用一些常用的優化算法。在MATLAB自帶的優化工具箱中全局搜索能力較為優秀的算法包括多起點搜索、模式搜索、遺傳算法以及模擬退火等。
這里以優化工具箱中的遺傳算法為例介紹算法的調用過程。首先創建一個名為optimization的m文件,通過MATLAB自帶的ga函數就可以完成對工具箱中遺傳算法的調用[2]。
[x,fval]=ga(fitnessfuction,nvars,A,b,Aeq,…beq,lb,ub,constraintfunction]
函數中是最優解輸出矩陣。是目標函數的最優適應值。是變量個數。是輸入變量受到的線性約束的相關參數,約束表達式為和。是輸入參數上限和下限,即。
ConstraintFunction是輸入變量受到的非線性約束函數句柄。若要建立一個這樣一個非約束性的條件,那么只需要將約束條件轉換為的形式,然后創建一個約束函數example的m文件:
function [c,ceq]=example(x,y)
c=[x+y-10];
ceq=[]; %ceq是等式約束%
然后在optimization文件中用以下命令調用非線性約束函數的句柄。
ConstraintFunctioin=@example;
FitnessFunction是適應度函數句柄。和一般的優化計算不同的是,本文中的適應度函數沒有解析表達式,適應度的具體數值需要通過MATLAB調用ANSYS進行有限元計算得到。首先新建一個名為fitness的m文件,假定適應度函數的名稱為fitness,然后在fitness文件中通過下面的語句定義適應度函數。
function y=fitness(x);%x為設計參數矩陣,y為輸出變量。
%此部分為MATLAB調用ANSYS進行有限元分析的計算程序%
y=fitness_value;
fitness_value是有限元分析結束后導入到MATLAB中的結果矩陣。最后需要在optimization文件中使用以下命令調用適應度計算函數
fitnessfunction=@instance;
1.2 MATLAB和ANSYS的數據傳遞
MATLAB和ANSYS都具有很強的文件讀寫能力,通過下述操作可以實現相互之間的數據傳遞。
首先分別創建名為data.txt和result.txt的文本文檔作為數據存儲的中介。
1)設計參數寫入data.txt
MATLAB需要以下語句將輸入變量矩陣的寫入到data.txt的文件中[3]。
fid = fopen (‘data.txt’ ’w+’);
fprintf ( fid,%f, x);
fclos (fid);
語句中的fid是data.txt文件的句柄,當文件打開成功時,fid的返回值為0,反之則為1。’w+’表示文件是以讀寫的形式打開,%f表示寫入的數據格式為浮點型。
2)data.txt文件中的數據寫入到ANSYS
首先利用記事本創建一個后綴名為.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數組的列數和行數。Format為數據讀取格式,可以參照FORTRAN-77的相關命令。比如3F7.3表示每行讀取3個元素,每個矩陣元素占用7個字符寬度,小數點后保留3位有效數字。
3)ANSYS將有限元計算結果寫入到result.txt
ANSYS在完成有限元計算之后,需要通過以下語句,將分析的結果fitness矩陣寫入到result.txt文檔中。
*CFOPEN, result, txt
*VWRITE, fitness
(format)
*CFCLOS
4)MATLAB完成計算結果的讀取
在完成了對于ANSYS有限元分析程序的調用之后,MATLAB需要讀取result.txt文件中的數據并存入適應度fitness_value中。相關的語句如下。
fid = fopen ( ‘result.txt’, ’w+’ );
fitness_value = fscanf ( fid, %f, format );
fclos ( fid );
在MATLAB成功讀取適應度之后,遺傳算法函數會自動根據適應度挑選下一代種群,并開始新的一輪循環計算,直到結果收斂為止。
1.3 MATLAB調用ANSYS
ANSYS提供了一種特殊Batch(批處理)模式,透過批處理模式,ANSYS能夠在不打開程序窗口界面的情況下執行APDL。MATLAB可以通過system命令調用ANSYS批處理模式完成適應度的計算。
cd:(‘d:Ansys Incv145ansysinwinx64’)
system(‘ansys145.exe–b-pane3fl–iC:ansys_analysis.mac-oC:output.txt’)
由于ANSYS的文件路徑中存在空格,因此需要首先使用cd命令表示將MATLAB的默認啟動目錄修改為ANSYS的安裝位置,以避免MATLAB無法搜索到ANSYS。-b表示ANSYS運行在批處理模式;-p ane3fl是ANSYS多物理場分析模塊Multiphysics的產品代碼。C:ansys_analysis.mac是MATLAB需要調用的APDL宏文件所在的路徑;-o C:output.txt是命令自動創建的運行結果輸出文件,內容包含了調用過程中出現的錯誤提示和ANSYS的運行日志。
1.4 ANSYS的自動優化的步驟
在ANSYS利用APDL命令流進行自動優化的過程中包含了自動建模,自適應網格劃分以及模型的自動求解等步驟。在自動優化的過程中,模型和參數占用的內存將不斷增大,因此在每次優化循環開始前需要通過FINISH和/CLEAR命令將內存中所有的模型和參數加以清除。
但是清除后重新建立模型時不能使用常用的RESUME命令,一旦使用,系統所有參數將恢復為第一次創建有限元模型過程中輸入的參數,遺傳算法函數新產生的設計參數值將失去控制作用。
為了實現設計參數在循環中自動更新,首先需要創建一個后綴名為.txt的文本文檔,在ANSYS完成建模前中使用PARSAV命令把除設計參數之外的其他參數保存在該文檔中。在ANSYS讀取了遺傳算法產生的新設計參數之后,再通過PARRES命令將已保存參數從文本文檔中恢復。
1.5 MATLAB和ANSYS聯合優化的步驟
根據上述分析,MATLAB和ANSYS共同優化的過程如圖1所示[6]。其中給定初始變量參數、判斷優化算法是否收斂以及重新取變量賦值等操作在已經包含在優化函數中。
2 應用舉例
2.1 研究對象和約束條件
本文以高溫超導電機為優化對象,由于高溫超導電機磁極對稱,為了方便,建模時采用1/2磁極截面。勵磁線圈由5個雙餅型跑道線圈疊合制成,單根導線寬為5mm。表1列出了電機模型機結構的基本參數。
受到制造工藝和轉子空間的限制,繞組的形狀必須滿足一定的約束條件。電機磁體是用多個不同半徑的雙餅型跑道線圈疊合而成。為了易于繞制和焊接,要求雙餅型線圈的內徑相同,相鄰雙餅線圈的外徑相同[5]。
此外,勵磁線圈必須保持在轉子的內部空間中。利用APDL建立的電機模型如下圖2所示。
2.2 優化目標
優化目標是在電機結構、勵磁線圈通過的電流密度以及設定的約束條件等其他因素不變的情況下,通過改變電機磁體的結構參數,盡可能的降低氣隙磁通的總諧波畸變率。
在ANSYS中,可以通過*MFOURI命令完成對氣隙磁通的傅立葉分析。本文通過諧波畸變率(THD)評價電機氣隙磁通的質量。在通過*GET命令獲得磁場測量路徑中各階氣隙磁通的數據后,總諧波畸變率可以通過下面的公式計算。

2.3 優化結果
當定轉子氣隙磁通的總諧波畸變率最小時,每層線圈的內徑和外徑如表3所示。
由于3次之后的諧波的幅值很小,相比基波,其影響可以忽略不計,因此在計算的時候只統計3次以下的諧波。
在優化前和優化后,根據公式分別對氣隙磁通諧波畸變率進行計算,最終結果如表4所示。
3 結論
根據應用實例中的結果,MATLAB和ANSYS的聯合優化有效的降低了定轉子氣隙磁通中諧波含量,使磁通波形更加趨近于正弦波,證明了MATLAB和ANSYS聯合優化的可行性和有效性。
與常規參數優化中使用手工方法不斷修改參數集合,根據計算結果進行尋優的方法相比,基于ANSYS和MATLAB的優化方法充分發揮了ANSYS和MATLAB兩種軟件的特長,具有自動建模,尋優精度高,不需要人工干預等優點。優化模塊和建模模塊分別通過兩個不同軟件實現,有利未來對模型和優化算法分別進行改進,并且優化程序可以獨立移植到其他的項目中。
[1] MVK Chari. Finite-element solution of the Eddy-current problem in magnetic structures [J].IEEE Transactions on Power Apparatus & System, 1974.
[2] 龔純,王正林. MATLAB最優化計算[M].子工業出版社.
[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-),男,碩士研究生。研究方向:高溫超導電機電磁場分析。