基于MATLAB 与ANSYS 的结构优化设计 您所在的位置:网站首页 ansys与matlab 基于MATLAB 与ANSYS 的结构优化设计

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

2024-07-15 12:59| 来源: 网络整理| 查看: 265

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

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

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

1.1 遗传算法基本思想

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

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

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

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

x = ga( @ fitnessfcn,nvars,options)

[x, fval]= ga( @ fitnessfcn,nvars,options)

[x, fval, reason]= ga ( @ fitnessfcn,nvars,options)

[x,fval,reason,output] = ga ( @ fitnessfcn,nvars,options)

[x, fval, reason,output,population]= ga( @ fitnessfcn,nvars,options)

其中各参数说明如下:

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

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

reason 为算法终止的原因;

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

中的各种相关信息;

population 为程序终止时的种群;

fitnessfcn 为适应度函数;

nvars 为设计变量个数;

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

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

2 MATLAB 调用ANSYS

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

2.1 MATLAB 与ANSYS 数据传递

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

 blob.png

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

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

fprintf( fid, format,dv ) /obj = fscanf ( fid, format)

fclose( fid)

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

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

读取数据

* dim,dv,arrary,n

* vread,dv( 1) ,mta, txt,, ijk,n

( format)

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

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

* cfopen,atm, txt

* vwrite,obj

( 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 为数据库打下。

3 结构优化算例

以一3 层4 跨平面钢框架结构为例,如图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 m、bh = 0. 3 m、cb = 0. 3 m。顶层承受200 kN 的均布荷载,其余各层均承受100 kN的均布荷载。材料弹性模量为210 GPa,拉压许用应力均为235 MPa。用混合遗传算法优化该结构,使其所用钢材的体积最小。

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

 blob.png

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

4 结论

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有