Matlab調用ANSYS進行參數優化

使用Maltab中的system函數,實現Matlab與Ansys的交互,即可實現相同模型計算數千遍并輸出數據。

MATLAB調用ANSYS進行有限元分析步驟如下:

  1. MATLAB生成數據,并以科學計數法的形式寫出到一個txt文件input.txt中;

  2. 編寫ansys的APDL程序,在MATLAB環境下使用函數"system"調用APDL程序,ANSYS以batch方式運行進行分析求解,并輸出想要分析的結果,寫出到一個txt文件output.txt

  3. MATLAB調用output.txt,進行數據分析

%% 將matlab中的樣本數據以科學計數法的形式導出成txt文件

% the samples  厚懸臂梁在不同參數下的頂端最大位移 荷載P/kN 彈性模量E/GPa 泊松比v 截面寬b 截面高h 截面長L

Mu = [ 2.5,200,0.225,1.0,3,3.5 ];                              % mean value

Std = Mu*0.1;                                                 % standard deviation   標準差

Sigma = diag(Std.^2);                                         % standard deviation;

N = 10;

input = lhsnorm(Mu, Sigma, N);   %拉丁超立方抽樣

a = input;

% fid = fopen('F:\matlabtoansys1\beam.txt', 'wt');             % -t模式按照文本而非二進制模式讀寫   名為beam.txt儲存100*6個參數數據

% fprintf(fid,[repmat('%.4e ', 1, size(a,2)), '\n'], a');      % 轉置并適時(寫完一列后)添加換行

% fclose(fid);

%% 該代碼為基于遺傳算法利用matlab與ansys的數據傳遞最優化

% 清空環境變量

input_test=input; %input(9:end,:)';

%output_test=output';%output(9:end)';

%% 遺傳算法參數初始化

maxgen=40;                        %進化代數,即迭代次數

sizepop=10;                        %種群規模            

pcross=[0.4];                       %交叉概率選擇,0和1之間 

pmutation=[0.2];                    %變異概率選擇,0和1之間 

%節點總數

lenchrom=ones(1,6);       %注意染色體長度

bound=[0.7*Mu(1),1.3*Mu(1);0.7*Mu(2),1.3*Mu(2);0.7*Mu(3),1.3*Mu(3);

       0.7*Mu(4),1.3*Mu(4);0.7*Mu(5),1.3*Mu(5);0.7*Mu(6),1.3*Mu(6)];    %數據范圍

%------------------------------------------------------種群初始化--------------------------------------------------------

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);  %將種群信息定義為一個結構體

avgfitness=[];                      %每一代種群的平均適應度

bestfitness=[];                     %每一代種群的最佳適應度

bestchrom=[];                       %適應度最好的染色體

%初始化種群

for i=1:sizepop

individuals.chrom(i,:) = Code(lenchrom,bound);     

x(i,:) = individuals.chrom(i,:);

end

fid = fopen('F:\matlabtoansys1\beam.txt', 'wt'); % -t模式按照文本而非二進制模式讀寫   名為beam.txt儲存100*6個參數數據

fprintf(fid,[repmat('%.4e ', 1, size(x,2)), '\n'], x');      % 轉置并適時(寫完一列后)添加換行

fclose(fid);

%計算適應度   (不知道為什么這里貼代碼就上傳不上去,顯示系統繁忙)Matlab調用ANSYS進行參數優化的圖1

………………………...................................................

后面為遺傳算法迭代尋優過程

運行之后,在文件夾中會出現以下文件,其中beam.txt為100*6個參數數據,weiyi.txt為每次計算時不同參數下位移的值,Dataread.mac和datawrite.mac兩個宏文件分別為數據讀取和寫入功能,bestvalue寫出最佳參數值,而test1.mac則是APDL語言寫成的批處理文件,以下給出部分文件截圖,有的圖片沒有截全

Matlab調用ANSYS進行參數優化的圖2

Matlab調用ANSYS進行參數優化的圖3

Matlab調用ANSYS進行參數優化的圖4

Matlab調用ANSYS進行參數優化的圖5

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

TOP

19
5
34