VB环境下ANSYS二次开发的优化算法探索

利用有限元法进行自动优化设计日益成为当前研究的热点。ANSYS给用户提供了两种优化方法,分别是零阶方法和一阶方法,利用这两种方法,ANSYS程序将循环进行“分析-评估-修正”的过程,直到获得最优结果。优化可以针对所要分析的问题的各个方面,比如尺寸、形状、支撑位置、材料等。



ANSYS优化分析的概念

ANSYS优化分析的概念可以通过下例问题来形象说明。某人租船从A港旅行到B港,全程100公里,船的每小时租金为200元,最大船速可达每小时40公里,假设每公里耗油量oil与速度v的平方成反比,即:

1.png

以上公式省略了单位,下同。汽油价格为每升7元,现要求在一小时内抵达,且尽量降低使用费用,试确定船的行进速度。这是一个典型的优化问题,其中速度v是要确定的变量,称为设计变量,旅行时间t为状态变量(t=100/v),而总花费为目标函数:

2.png

约束条件为:

3.png

设计变量(DVs)为自变量,优化结果的取得是通过改变设计变量的数值实现的,每个设计变量都有上下限,它定义了设计变量的变化范围。ANSYS优化程序允许定义多大60个设计变量。状态变量(SVs)是因变量,是设计 变量的函数(比如上例中t=100/v)状态变量一般都有上下限,也可能只有单侧限制,即只有上限或只有下限。ANSYS优化程序允许定义多大100个状态变量。

目标函数是要尽量减小的数值。它必须是设计变量的函数,也就是说,改变设计变量的数值将改变目标函数的数值。在以上问题中,总话费是目标函数,是设计变量速度V的函数。

设计变量、状态变量和目标函数统称为优化变量。在ANSYS优化程序中,这些变量是由用户定义参数来指定的。用户需要定义设计变量及其约束范围、状态变量及其约束范围以及目标函数。

ANSYS优化分析的目的是寻求满足所有给定的约束条件(设计变量的约束和状态变量的约束),并使目标函数达到最小值的设计变量。ANSYS分析结束后会给出若干设计序列,SET1、SET2等等。在这些设计序列中,一般情况下存在满足约束条件的合理解释以及满足目标函数最小化的最优解,但有时也可能所有解都不满足约束条件(说明用户给定的约束条件不合理)。

ANSYS优化分析文件是一个命令流输入文件,应包括一个完整的分析过程前处理、求解以及后处理(主要是提取相关参数),分析过程必须参数化。此外,还要在优化分析文件中指定变量、状态变量及目标函数。由这个文件可以自动生成优化循环文件(Jobname.loop),并在优化计算中循环处理。每一次循环均执行一次分析文件。最后一次循环的输出结果存储在Jonname.opo中。



优化算法

理解ANSYS优化算法对于执行优化分析是很有必要的。ANSYS现有的优化算法主要有:零阶方法、一阶方法、单步运行、随机搜索法、等步长搜索法、乘子计算法和最优梯度法。此外,用户还可以通过UPFs定义自己的优化算法。下面重点说明零阶方法和一阶方法。



1.零阶方法

由于优化过程中只用到因变量本身,而不利用因变量的导数,所以称为零阶方法。使用该方法的命令为:

optype,subp

零阶方法是一种函数逼近优化方法,该种方法的本质是采用最小二乘法逼近,求取一个函数曲线或函数面来拟合解空间,然后再对该函数曲线或函数面求极值。这是一种普适的优化方法,不容易陷入局部极值点,但优化精度一般不是很高,因此多用来做前期优化。在零阶函数逼近优化中,默认的最大循环次数为30,默认当连续出现7次不可行解时,就认为优化过程发散。用户可通过OPSUB命令对最大循环次数及优化发散判断标准进行调整,例如:

Opsub,500,10

以上命令调整后,最大循环次数为500,当连续出现10次不可行解时,认为优化过程发散。对于大多数分析,建议采用零阶方法,因为该方法通用性强,且计算速度快。

零阶方法的近似值:

4.png

其中,需要几个设计序列来形成近视式。ANSYS产生随机设计序列(默认为7个),或用优化数据库中的现成设计,也可由随机法或单步循环法(或任何其他方法)开始,以产生一些设计方案,然后只保留可行域内的或最好的n个设计。



2.一阶方法

一阶方法与零阶方法相比,一阶方法因变量的导数来决定搜索方向并获得优化结果。因为优化过程中没有近似值,所以这种方法更精确。每次迭代涉及多次分析(对分析文件的多次循环),以确定适当的搜索方向,因而需消耗较多的时机。使用该方法的命令为:

optype,first

用户可以通过OPFRST命令来调整一阶方法的设置:

OPFRST,NITR,SIZE,DELTA

其中,NITR是最大迭代次数(默认为10),SIZE及DELTA取默认值。

一阶方法收敛判据是同时满足以下两个条件:

●改变目标函数,使当前设计和最优可行设计的目标函数之间的差值小于允差,即:

6.png

●改变目标函数,使当前设计和前一设计的目标函数之间的差值小于允差,即

7.png


3.其他优化方法

●单步运行:实现一次循环并求出一个FEA解。可以通过一系列的单次循环,每次求解前设定不同的设计变量来研究目标函数与设计变量的变化关系。

●随机搜索法:进行多次循环,每次循环设计变量随机变化。用户可以指定最大循环次数和期望合理解的数目。随机搜索法主要用来研究整个设计空间,并为以后的优化分析提供提供合理解。

●等步长搜索法:以一个参考设计序列为起点,生成几个设计序列。它按照单一步长在每次计算后将设计变量在变化范围内加以改变。对于目标函数和状态变量整体变化评估可以用等步长搜索法实现。

●乘子计算法:是一个统计工具,用来生成由各种设计变量极限值组合设计序列。这种技术与称之为经验设计的技术相关,后者是用二阶的整体和部分因子分析。主要目标是计算目标函数和状态变量的关系和相互影响。

●最优梯度法:对用户指定的参考设计序列,本工具计算目标函数和状态变量对设计变量的梯度。使用本工具可以确定局部的设计敏感性。

●用户二次开发的优化工具:用户提供的优化工具,可以用外部过程(USEROP)替代ANSYS优化工具。将自己的方法和工具补充进去。




APDL优化设计步骤

1.生成分析文件

分析文件的生成是ANSYS优化设计的关键,ANSYS程序利用分析文件构造循环文件,以便进行循环分析。分析文件可以包括ANSYS提供的任意分析类型(结构、热、电磁等)。

生成分析文件与通常的ANSYS分析并没有很大的不同,唯一的区别就是:优化分析的分析文件必须是参数化的。也就是说,必须定义一些参量,至少要把所有的设计变量,状态变量和目标变量定义为参量形式。而且,用于优化的参量只能是标量数值参量,而不是数组或者字符参量。 分析文件应该尽量简单,不必要的语句,例如完成图形显示功能的命令应当从扽系文件中省略掉。

生成分析文件的具体过程为:首先建立参数化模型,接着求解,然今从中提取需要用到的优化参数,最后保存为分析文件即可。例如用lgwrite生成分析文件:

Lgwrite,’beam’,’lgw’,’D:\ansys16.0 work\’,comment



2.声明优化变量

在完成了分析文件的建立以后,就可以进入优化处理器/OPT开始优化分析。首先读入优化分析文件,命令为:

OPANL,Fname,Ext

其中,Fname为分析文件的文件名,Ext为文件的扩展名。

然后声明优化变量。APDL命令为OPVAR,该命令用法如下:

OPVAR,Name,Type,MIN,MAX,TOLER

其中,Name为变量名,Type为优化变量类型(DV表示设计变量,SV表示状态变量,OBJ表示目标函数,若为DEL则表示删除该优化变量),MIN和MAX分别表示相应变量的最小、最大值(即约束范围),TOLER为收敛相关的容差,Type不同则含义不同。



3.选择优化方法。

命令为OPTYPE。除了前面介绍的零阶和一阶方法外,用户可以使用OPTYPE,RAND命令激活随机搜索法,用OPTYPE,RUN命令激活单步运行,用OPTYPE,FACT命令激活乘子计算法,用OPTYPE,GRAD命令激活最优梯度法,用OPTYPE,SWEEP命令激活等步长搜索法,此外用户还可以用OPTYPE,USER命令激活由用户子程序userop定义的用户自定义优化算法。



4.设定循环控制参数。

每种优化方法都有相应的循环控制参数,且分别对应不同的命令。除了各优化方法自己的命令外,ANSYS还提供了几个总体控制来控制优化过程中的数据存储方法。比如OPDATA命令用于指定优化数据的存储文件名,OPPRNT命令用于激活详细的结果输出,OPKEEP命令用于确定是否存储最佳设计序列的数据等。



5.执行优化分析

对应命令是OPEXE,执行命令后ANSYS程序会根据分析文件生成优化循环文件。循环将在以下情况发生时终止:收敛;中断(不收敛,但达到了最大循环次数或最大不合理设计循环序列);分析完成。



6.查看分析结果

可以通过OPLIST命令列出优化序列,也可以通过PLVAROPT命令查看变量随迭代的变化情况。



APDL实现过程

首先清空内存,开始新的分析,并进入前处理器,给设计变量赋初值,然后建立有限元模型并求解:

!1.定义工作文件名及文件标题

!(1)定义工作文件名:

/FILNAME,shiyan_thermal,0

!(2)定义文件标题

/TITLE,shiyan of experiment

!2.定义单元类型及材料属性

!(1)定义单元类型:

/PREP7

!*

ET,1,185

!(2)设置材料属性

!*

MPTEMP,,,,,,,,

MPTEMP,1,0

MPDATA,EX,1,,2e11  

MPDATA,PRXY,1,,0.3

MPTEMP,,,,,,,,

MPTEMP,1,0

MPDATA,DENS,1,,7800

!3.建立几何模型

!(1)显示工作平面

WPSYYLE,,,,,,,,1

!(2)建立模型

BLOCK,0,10,0,20,0,2,

/REPLO

wpoff,3,5,0

/REPLO

CYLIND,1, ,0,10,0,360,

/REPLO

wpoff,0,10,0

CYLIND,1, ,0,10,0,360,

wpoff,0,-5,0

CYLIND,1, ,0,10,0,360,

wpoff,4,0,0

CYLIND,1, ,0,10,0,360,

wpoff,0,5,0

CYLIND,1, ,0,10,0,360,

wpoff,0,-10,0  

CYLIND,1, ,0,10,0,360,

!(3)体布尔操作

FLST,3,6,6,ORDE,2  

FITEM,3,2  

FITEM,3,-7

VSBV,       1,P51X

!4.生成有限元模型

/REPLO

FINISH

/AUX12

FINISH

/PREP7

MSHAPE,1,3D

MSHKEY,0

!*

CM,_Y,VOLU

VSEL, , , ,       8

CM,_Y1,VOLU

CHKMSH,'VOLU'  

CMSEL,S,_Y

!*

VMESH,_Y1  

!*

CMDELE,_Y  

CMDELE,_Y1

CMDELE,_Y2

!*

!5.加载以及求解

!(1)加载

//REPLO

VPLOT  

FINISH

/SOL

FLST,2,1,5,ORDE,1  

FITEM,2,3  

!*

/GO

DA,P51X,ALL,0

/REPLO

FLST,2,1,4,ORDE,1  

FITEM,2,7  

/GO

FLST,2,1,5,ORDE,1  

FITEM,2,4  

/GO

!*

SFA,P51X,1,PRES,1000

!*

/STATUS,SOLU

SOLVE  

FINISH

接着进行后处理,提取参数。

/POST1

!*

PLDISP,2

!*

/EFACET,1  

PLNSOL, S,EQV, 0,1.0

!参数化提取结果

nsort,u,z                        !以UY为基准点对节点排序

etable,volu,volu                  !建立单元体积表

etable,smax_i,nmisc,1             !smax_i=每个单元i结点处应力最大值

etable,smax_j,nmisc,3             !smax_j=每个单元j结点处应力最大值

ssum                           !单元表数据求和

*get,volume,ssum,,item,volu        !获得总体积

esort,stab,smax_i,,1               !按照smax_i绝对值的大小对单元排序

*get,smaxi,sort,,max              !获得smax_i最大值,存入smaxi

esort,eatb,smax_j,,1               !按照smax_j绝对值的大小对单元排序

*get,smaxj,sort,,max              !获得smax_j最大值,存入smaxi

smax=smaxi>smaxj               !获得最大应力值

finish

     保存文件至当前工作目录。

     最后进入优化处理器,设计变量、状态变量、目标函数、优化方法以及迭代步数等,然后进行优化分析并列出分析结果。

!进入优化处理器

/opt

opan1,solid,lgw    

opvar,d,dv,0.01,0.03             !定义设计变量d及其范围

opvar,smax,sv,0,3000000         !定义状态变量最大应力smax及其范围

opvar,volume,obj               !定义总体积volume为目标函数

optype,subp               !分析方法为1阶

opsub,500                 !最大迭代次数

opexe                    !开始优化分析

oplist,all                  !列出所有分析结果

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空