Matlab調用ANSYS進行參數優化
使用Maltab中的system函數,實現Matlab與Ansys的交互,即可實現相同模型計算數千遍并輸出數據。
MATLAB調用ANSYS進行有限元分析步驟如下:
MATLAB生成數據,并以科學計數法的形式寫出到一個txt文件input.txt中;
編寫ansys的APDL程序,在MATLAB環境下使用函數"system"調用APDL程序,ANSYS以batch方式運行進行分析求解,并輸出想要分析的結果,寫出到一個txt文件output.txt
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);
%計算適應度 (不知道為什么這里貼代碼就上傳不上去,顯示系統繁忙)
………………………...................................................
后面為遺傳算法迭代尋優過程
運行之后,在文件夾中會出現以下文件,其中beam.txt為100*6個參數數據,weiyi.txt為每次計算時不同參數下位移的值,Dataread.mac和datawrite.mac兩個宏文件分別為數據讀取和寫入功能,bestvalue寫出最佳參數值,而test1.mac則是APDL語言寫成的批處理文件,以下給出部分文件截圖,有的圖片沒有截全




工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















