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

(3条)
默认 最新
赞👍👍
评论 点赞
感谢分享
评论 点赞

查看更多评论 >

点赞 18 评论 3 收藏 24
关注