基于遗传算法某框架结构优化设计-采用Matlab&ANSYS APDL联合仿真

基于遗传算法某框架结构优化设计-采用Matlab&ANSYS APDL联合仿真

Please Share Us

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

对于优化设计来讲,ANSYS Workbench本身的优化工具箱已经具有非常多的功能,然而也正是由于对算法的过度包装,如果用户想自定义优化算法,用优化工具箱则不太现实,这时候可考虑采用Matlab和ANSYS APDL联合仿真来实现。Matlab负责整个优化算法的实施与控制,而ANSYS则负责对控制函数的求解。下面以一个框架结构来简单说明具体的操作流程。

框架结构的基本概况如下:

某4层4跨钢结构框架,各层矩形截面梁尺寸及各层柱尺寸相同,具体尺寸见下表。顶部两层承受200kN/m 均布荷载,底部两层承受100kN/m均布荷载, 整体结构承受200kN/m的侧向荷载,施加约束及荷载情况下图所示。 钢材弹性模量为210GPa, 泊松比为0.3,许用应力为235MPa,最大层间位移角为1/550,优化目标为各截面尺寸使总体质量最小。

image

各个优化变量的变化范围如下:

1678763729752

遗传算法的基本流程为:

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计

针对本案例,操作流程为:

1、设置种群及遗传算法基本参数,种群 规模popsize,变量个数 N,最大进化代数 gmax,交叉概率 Pc,变异概率 Pm;

2、随机在设计变量的优化区间内初始化设计变量所得的值(A11,A21,A31,A41,,,,An1);

3、将初始的设计变量值存入 Input.txt文件;

4、ANSYS读取Input.txt文件;

5、以读取的值作为设计参数进行结构分析;

6、提取分析结果的状态变量—应力最 大值、层间位移角

7、将状态变量值存到Output.txt文件;

8、MATLAB读取Output.txt文件;

9、计算第i 个设计变量的目标函数值objvaluei;

10、计算第 i 个设计变量的适应度函数 fitvaluei;

计算图示为:

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计2

对于参数的设置,这里有如下建议:

1、对于种群规模的设置,当变量个数小于5时,建议取50,而大于5时,建议取200。种群数量直接决定了计算效率以及收敛性,以种群50,迭代为20代为例,则Matlab需要调用ANSYS计算1000次!

2、交叉概率建议取值在0.4~0.99之间,变异概率建议取值在0.001~0.1之间;

3、对于适应度函数的编写:这里的适应度函数其实是ANSYS目标函数到Matlab适应度形式的映射,所以在编写适应度函数的时候应考虑如下方面:

1)、适应度函数应直接和ANSYS所求目标变量挂钩;

2)、将ANSYS中的状态变量加入到适应度函数中;

3)、适应度函数必须是非负的,因为遗传算法通常是求取最小值;

4)、常见的两种映射关系如下所示。

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计3

对于低版本,可直接采用Matlab遗传算法工具箱进行,对于高版本,只能通过命令调用遗传算法,核心代码如下:

clear
clc

ansys_start_file='C:\Program Files\ANSYS Inc\v211\ansys\bin\winx64\MAPDL.exe';
ansys_work_dir='D:/MatlabEX';
macfile='D:/MatlabEX/kuangjia.mac';
global ansysline
ansysline=makeansys(ansys_start_file,ansys_work_dir,macfile);

bb=210;
bh=330;
ch=450;


fid=fopen('Indata.txt','w');
fprintf(fid,'%10.2f\n',bb);
fprintf(fid,'%10.2f\n',bh);
fprintf(fid,'%10.2f\n',ch);
fclose(fid);

%ansysfun(bb,bh,ch)

Lb=[100;100;100];
Ub=[500;500;500];

%算法控制
options=optimoptions('ga','MaxGenerations',25,'FunctionTolerance',1,'PlotFcn',{@gaplotstopping,@gaplotscorediversity,@gaplotscores,@gaplotdistance,@gaplotbestf,@gaplotbestindiv})

[x,feq]=ga(@ansysfun,3,[],[],[],[],Lb,Ub,[],options)

为了比较分析不同迭代次数对结果的影响,这里分别列出了种群数为50,迭代次数分别为10、15、25次的优化结果,如下所示:

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计4

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计5

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计6

从图中可见,当迭代次数为15次时,适应度函数基本收敛,最终优化的变量数值为:

梁宽BB=120mm左右;梁高HH=300mm左右;柱宽CB=240mm左右。

为了验算上述优化的正确性,采用ANSYS Workbench的优化工具箱进行了验证,最终采用优化工具箱得到的优化结果如下所示:

基于遗传算法 采用Matlab&ANSYS APDL联合仿真 某框架结构优化设计7

从结果可见,两者非常接近,说明上述过程采用Matlab调用ANSYS 并采用遗传算法的优化过程 可靠!

本次案例来源于水哥Matlab&ANSYS APDL联合仿真专题教程的第一个综合案例,欢迎大家购买观看,详细课程目录及案例详情可点击下方文章了解。

Matlab&ANSYS联合仿真系列教程

有任何问题,欢迎留言~

欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院

有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!

Please Share Us
© 版权声明
THE END
喜欢就支持一下吧
点赞2赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容

YOU MAY LIKE…