基于MATLAB 与ANSYS 的结构优化设计

伴随着数学力学和计算机的发展结构优化设计也逐渐发展成熟起来ANSYS 是最早开发结构优化设计模块的有限元分析软件之一它提供两种优化方法即零阶方法和一阶方法二者均是将约束的优化问题转化为非约束的优化问题来求解零阶方法只用到因变量而不用它的偏导数其全局搜索能力很强而局部搜索能力较差研究表明该方法可以快速达到最优解的80 %但却很难收敛到最优解一阶方法使用因变量的导数值来确定搜索方向其局部搜索能力很强但全局搜索能力较差很容易收敛到局部极小值点遗传算法是近些年逐渐发展起来的一种智能的优化算法它具有较强的全局搜索能力并且可以与其他常规优化算法相结合进而高效准确地解决大多数的工程优化问题MATLAB 中的遗传算法工具箱集成了当前比较成熟的各种遗传算子借助它可以方便地完成各种问题的优化求解

本文通过在MATLAB 中将ANSYS 作为子程序调用的方法来研究遗传算法在工程结构优化中的应用

遗传算法及MATLAB 遗传算法工具箱

1遗传算法基本思想

遗传算法GA最初是由美国Michigan 大学的John Holland 教授于1975 年提出的它将达尔文的生物进化理论应用于优化设计中把解空间的某个点集映射为生物学中的种群将目标函数映射为种群所处的环境因此按照生物进化理论的观点种群中的个体会不断向着适应环境的方向进化经过若干代进化之后该种群所代表的解就会收敛到问题的最优解该方法最大的特点是全局搜索能力强并且不需要编程人员对问题的优化过程有太深的了解只要选定了种群指定了种群所处的环境该方法就会自动的智能地向最优解进化遗传算法中最基本的操作是遗传操作包括选择交叉和变异自然界中环境按照适者生存的原则来选择优良个体使其优良基因能够传递到下一代遗传算法中的选择操作即是模拟这一过程首先计算种群中每个个体的适应度Fitness) ,然后按照适者生存的原则进行选择操作交叉操作是模拟生物进化中的有性繁殖过程种群个体之间通过基因重组生成新的个体生命体在进化过程中某些基因常常会发生变异好的变异会被环境选择并遗传到下一代而不好的变异则会被环境淘汰因此这种基因变异对种群的进化有巨大的推动作用遗传算法中应用这种变异来产生新的个体使种群中的基因更加丰富有利于算法的收敛

12 MATLAB 遗传算法工具箱(GAOT)

MATLAB 是矩阵实验室的简称它具有丰富的矩阵操作命令使用MATLAB 来实现遗传算法是非常方便的即将种群的数据存入矩阵中然后就可以对整个种群而不是单个个体进行操作从而大大提高了计算效率更重要的是MATLAB本身还带有遗传算法工具箱它集成了当前

较成熟的各种遗传操作算子和各种改进型遗传算法使遗传算法优化变的更加简单高效其主程序ga. m 的调用格式如下:

x = ga@ fitnessfcnnvarsoptions)

x, fval= ga@ fitnessfcnnvarsoptions)

x, fval, reason= ga @ fitnessfcnnvarsoptions)

xfvalreasonoutput] = ga @ fitnessfcnnvarsoptions)

x, fval, reasonoutputpopulation= ga@ fitnessfcnnvarsoptions)

其中各参数说明如下:

为程序最终计算得到的最小值;

fval 为最小值点处的适应度函数值;

reason 为算法终止的原因;

output 为算法输出的结构体包含程序计算

中的各种相关信息;

population 为程序终止时的种群;

fitnessfcn 为适应度函数;

nvars 为设计变量个数;

options 为遗传算法的各种控制选项

此外也可使用工具箱的GUI 界面交互式图形用户界面来执行遗传操作其特点是简洁直观

2 MATLAB 调用ANSYS

MATLAB 遗传算法工具箱需要输入适应度函数对于简单问题其适应度函数很好编写但对于大型的工程问题其目标函数和状态变量需要用有限元计算才能得到因为仅使用MATLAB 语言编写程序来实现往往是很复杂有时甚至是不可能的必须借助于成熟的有限元计算程序ANSYS由于其自带的APDL 语言则成为了有限元计算的首选

21 MATLAB ANSYS 数据传递

若要实现MATLAB ANSYS 的调用首先要能实现MATLAB ANSYS 的数据传递而二者都有很强的文件操作功能这使数据传递的实现成为可能MATLAB 在调用ANSYS 时的数据流向如图1

 blob.png

MATLAB 打开并读写数据文件的基本步骤如下:

fid = fopen'mta. txt', 'w + ')

fprintffid, formatdv /obj = fscanf fid, format)

fclosefid)

其中, 'w + '表示以读写方式打开文件dv 为设计变量obj 为目标函数format 表示以某种格式读写数据语言相同

ANSYS 打开并读写数据文件的基本步骤如下:

读取数据

* dimdvarraryn

* vreaddv1) ,mta, txt,, ijkn

format)

其中为设计变量个数format 为以某种格式读取数据FORTRAN 语言相同

打开并写入数据到数据文件

* cfopenatm, txt

* vwriteobj

format)

* cfclose

2. 2 MATLAB 调用ANSYS

ANSYS 程序提供了batch 批处理运行方式可以在不打开ANSYS 程序界面的情况下后台运行计算并输出结果这使得在其他程序中调用ANSYS 成为可能MATLAB 调用ANSYS 的语句如下:

system'D\Ansys \v100 \ANSYS \ bin \ intel \ ansys100- b - p ansys - product - feature - i input file - o out file. bat')

其中各参数说明如下:

- b batch 为运行模式;

- p 为产品代码可以在ANSYS 的帮助文件里找到) ;

- i 为输入文件ANSYS 分析文件) ;

- o 为输出文件

此外在调用ANSYS 时还可以输入以下控制参数:

- j 为工程名称;

- m 为内存大小;

- db 为数据库打下

结构优化算例

以一跨平面钢框架结构为例如图2

 blob.png

为了减少设计变量个数各层梁的尺寸bb × bh)均相同梁宽bb 的变化范围为0. 1 ~ 0. 3 m梁高的变化范围为0. 2 ~ 0. 4 m各层柱均为方柱cb ×cb) ,柱宽的变化范围为0. 2 ~ 0. 5 m初始截面尺寸为bb = 0. 2 mbh = 0. 3 mcb = 0. 3 m顶层承受200 kN 的均布荷载其余各层均承受100 kN的均布荷载材料弹性模量为210 GPa拉压许用应力均为235 MPa用混合遗传算法优化该结构使其所用钢材的体积最小

为了对比本文分别采用MATLAB 遗传算法工具箱中的混合遗传算法及ANSYS 中的零阶方法一阶方法种方法对该结构进行了优化设计对比结果见表1

 blob.png

  由表可以看出3种优化方法中基于MATLABANSYS 的混合遗传算法的精度最好其最大应力最接近钢材的容许应力用钢量最小而零阶方法的精度最差其计算用钢量与混合遗传算法的计算用钢量相比增大了16.8 %一阶方法的计算结果与零阶方法的计算结果稍好但其用钢量仍然比混合遗传算法增大了8 %

结论

MATLAB 遗传算法工具箱具有很强的优化功能且其操作简单直观ANSYS 又是通用大型有限元分析软件本文充分利用了二者的优势实现了MATLAB ANSYS 的数据传递和调用对一典型钢框架结构进行了优化设计验证了该方法的可行性但从分析精度来看基于MATLABANSYS 的混合遗传算法要优于零阶方法和一阶方法然而从分析成本来看混合遗传算法的分析成本要远远的高于零阶方法和一阶方法这是由于MATLAB ANSYS 的数据传递是间接的每次循环过程计算机都要进行相应文件的读取与写入操作占用了大部分的分析时间因此将该方法应用于大型结构的优化设计还需要进一步的探索与验证

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

2
3
5