ANSYS拓扑优化
2024-03-12什么是拓扑优化?
拓扑优化是指形状优化,有时也称为外型优化。拓扑优化的目标是寻找承受单载荷或多载荷的物体的最佳材料分配方案。这种方案在拓扑优化中表现为“最大刚度”设计。
与传统的优化设计不同的是,拓扑优化不需要给出参数和优化变量的定义。目标函数、状态变量和设计变量(参见“优化设计”一章)都是预定义好的。用户只需要给出结构的参数(材料特性、模型、载荷等)和要省去的材料百分比。
拓扑优化的目标——目标函数——是在满足结构的约束(V)情况下减少结构的变形能。减小结构的变形能相当于提高结构的刚度。这个技术通过使用设计变量(hi)给每个有限元的单元赋予内部伪密度来实现。这些伪密度用PLNSOL,TOPO命令来绘出。
例如,给定V=60表示在给定载荷并满足最大刚度准则要求的情况下省去60%的材料。图2-1表示满足约束和载荷要求的拓扑优化结果。图2-1a表示载荷和边界条件,图2-2b表示以密度云图形式绘制的拓扑结果。
图2-1 体积减少60%的拓扑优化示例
如何做拓扑优化
拓扑优化包括如下主要步骤:
1. 定义拓扑优化问题。
2. 选择单元类型。
3. 指定要优化和不优化的区域。
4. 定义和控制载荷工况。
5. 定义和控制优化过程。
6. 查看结果。
拓扑优化的细节在下面给出。关于批处理方式和图形菜单方式
不同的做法也同样提及。
定义拓扑优化问题
定义拓扑优化问题同定义其他线性,弹性结构问题做法一样。用户需要定义材料特性(杨氏模量和泊松比),选择合适的单元类型生成有限元模型,施加载荷和边界条件做单载荷步或多载荷步分析。参见“ANSYS Analysis Procedures Guides”第一、二章。
选择单元类型
拓扑优化功能可以使用二维平面单元,三维块单元和壳单元。要使用这个功能,模型中只能有下列单元类型:
二维实体单元:SOLID2和SOLID82
三维实体单元:SOLID92和SOLID95
壳单元:SHELL93
二维单元用于平面应力问题。
指定要优化和不优化的区域
只有单元类型号为1的单元才能做拓扑优化。可以使用这种限制控制模型优化和不优化的部分。例如,如果要保留接近圆孔部分或支架部分的材料,将这部分单元类型号指定为2或更大即可:
…
ET,1,SOLID92
ET,2,SOLID92
…
TYPE,1
VSEL,S,NUM,,1,,2 !用这些单元划分的实体将被优化
VMESH,ALL
TYPE,2
VSEL,S,NUM,,3 !用这些单元划分的实体将保持原状
VMESH,ALL
…
用户可以使用ANSYS的选择和修改命令控制单元划分和类型号定义。
定义和控制载荷工况
可以在单个载荷工况和多个载荷工况下做拓扑优化。单载荷工况是最简便的。
要在几个独立的载荷工况中得到优化结果时,必须用到写载荷工况和求解功能。在定义完每个载荷工况后,要用LSWRITE命令将数据写入文件,然后用LSSOLVE命令求解载荷工况的集合。
例如,下面的输入演示如何将三个载荷工况联合做一个拓扑优化分析。
…
D,10,ALL,0,,20,1 !定义第一个载荷工况的约束和载荷
NSEL,S,LOC,Y,0
SF,
ALLSEL
LSWRITE,1 !写第一个载荷工况
DDEL,
SFDEL,
NSEL,S,LOC,X,0,1
D,ALL,ALL,0
NSEL,ALL
F,212,FX
LSWRITE,2 !写第二个载荷工况
…
LSWRITE,3 !写第三个载荷工况
…
FINISH
/SOLUTION
TOPDEF,10,3 !定义优化的参数
LSSOLVE,1,3,1 !在拓扑优化前做所有三个载荷工况求解
…
定义和控制优化过程
拓扑优化过程包括两部分:定义优化参数和进行拓扑优化。用户可以用两种方式运行拓扑优化:控制并执行每一次迭代,或自动进行多次迭代。
ANSYS有三个命令定义和执行拓扑优化:TOPDEF,TOPEXE和TOPITER。TOPDEF命令定义要省去材料的量,要处理载荷工况的数目,收敛的公差。TOPEXE命令执行一次优化迭代。TOPITER命令执行多次优化迭代。
— 定义优化参数
首先要定义优化参数。用户要定义要省去材料的百分比,要处理载荷工况的数目,收敛的公差。
命令:TOPDEF
GUI:Main Menu>Solution>-Solve-Topological opt
注——本步所定义的内容并不存入ANSYS数据库中,因此在下一个拓扑优化中要重新使用TOPDEF命令。
— 执行单次迭代
定义好优化参数以后,可以执行一次迭代。迭代后用户可以查看收敛情况并绘出或列出当前的拓扑优化结果。可以继续做迭代直到满足要求为止。如果是在GUI方式下执行,在Topological Optimization 对话框(ITER域)中选择一次迭代。
命令:TOPEXE
GUI:Main Menu>Solution>-Solve-Topological opt
下面的例子说明了如何在拓扑优化中每次执行一次迭代:
…
/SOLUTION
TOPDEF,25,1 !移去25%体积并处理一个载荷工况
SOLVE !执行第一次应力分析
TOPEXE !执行第一次拓扑优化迭代
FINISH
/POST1 !进入后处理器
PLNSOL,TOP0 !画出优化结果
*GET,TIPSRAT,TOPO,,CONV !读取拓扑收敛状态
*STATUS,TOPSTAT !列表
/SOLUTION
SOLVE !执行第二次应力分析
TOPEXE !执行第二次拓扑优化迭代
FINISH
/POST1
…
TOPEXE的主要优点是用户可以设计自己的迭代宏进行自动优化循环和绘图。在下一节,可以看到TOPITER命令是一个ANSYS的宏,用来执行多次优化迭代。
— 自动执行多次迭代
在定义好优化参数以后,用户可以自动执行多次迭代。在迭代完成以后,可以查看收敛情况并绘出或列出当前拓扑形状。如果需要的话,可以继续执行求解和迭代。TOPITER命令实际是一个ANSYS的宏,可以拷贝和定制(见APDL Programmer’s Guide)。
命令:TOPITER
GUI:Main Menu>Solution>-Solve-Topological opt
下面的例子说明了如何使用TOPITER宏执行多次迭代:
… !定义并写第一个载荷工况
LSWRITE
… !定义并写第二个载荷工况
LSWRITE
… !定义并写第三个载荷工况
LSWRITE
…
TOPDEF,80,3,.001 !80%体积减少,3个载荷工况
… 0.001为收敛公差
/DSCALE,,OFF !关闭形状改变
/CONTOUR,,3 !每次显示3个轮廓数值
TOPITER,20,1 !最大20次迭代。每次迭代求解并绘出
… 结果
每次迭代执行一次LSSOLVE命令,一次TOPEXE命令和一次PLNSOL,TOPO显示命令。当收敛公差达到(用TOPDEF定义)或最大迭代次数(用TOPITER定义)达到时优化迭代过程终止。
查看结果。
拓扑优化结束后,ANSYS结果文件(Jobname.RST)将存储优化结果供通用后处理器使用。用户可以使用后面提到的后处理命令。要得到更详细的信息,请查阅ANSYS Commands Reference或ANSYS Basic Analysis Procedures Guide第五章。
要列出结点解和/或绘出伪密度,使用PRNSOL和PLNSOL命令的TOPO变量。
要列出单元解和/或绘出伪密度,使用PLESOL和PRESOL命令的TOPO变量。
可以使用ANSYS表格功能查看结果:
ETABLE,EDENS,TOPO
PLETAB,EDENS
PRETAB,EDENS
ESEL,S,ETAB,EDENS,0.9,1.0
EPLOT
要查看最近(最后一次迭代)的收敛情况和结构变形能,使用*GET命令:
*GET,TOPCV,TOP0,,CONV !如果TOPCV=1(收敛)
*GET,ECOMP,TP0,,COMP !ECOMP=变形能
*STAT
二维多载荷优化设计示例
在本例中,对承受两个载荷工况的梁进行拓扑优化。
问题描述
图2-2表示一个承载的弹性梁。梁两端固定,承受两个载荷工况。梁的一个面是用一号单元划分的,用于拓扑优化,另一个面是用二号单元划分的,不作优化。最后的形状是单元1的体积减少50%。
图2-2 承受两个载荷工况的梁
本问题是用下列的ANSYS命令流求解的。两个载荷工况定义并用LSWRITE命令写入文件。使用ANSYS选择功能,单元SOLID82通过类型号1和2分别指定优化和不优化的部分。TOPDEF命令定义问题有两个载荷工况并要求50%体积减少。TOPEXE命令在本例中没有使用,代之以用TOPITER宏命令指定最大迭代次数为12次。
/TITLE,A 2-d,multiple-load example of topological optimization
/PREP7
BLC4,0,0,3,1 !生成实体模型(3X1矩形)
ET,1,82 !二维实体单元,1号为优化
ET,2,82 !2号不优化
MP,EX,1,118E9 !线性各项同性材料
MP,NUXY,1,0.3
ESIZE,0.05 !较细的网格密度
TYPE,1
AMESH,ALL !自由矩形网格划分
NSEL,S,LOC,X,0,0.4 !选择不优化的部分
ESLN
TYPE,2
EMODI,ALL !定义2号单元
ALLSEL
NSEL,S,LOC,X,0
D,ALL,ALL,0 !在X=0处固定
NSEL,S,LOC,X,3
D,ALL,ALL,0 !在X=3处固定
FORCE=1000 !载荷数值
NSEL,S,LOC,X,1
NSEL,R,LOC,Y,1
F,ALL,FY,FORCE !定义第一个载荷工况
ALLSEL
LSWRITE,1 !写第一个载荷工况
FDEL,ALL
NSEL,S,LOC,X,2
NSEL,R,LOC,Y,0
F,ALL,FY,-FORCE !定义第二个载荷工况
ALLSEL
LSWRITE,2 !写第二个载荷工况
FDEL,ALL
TOPDEF,50,2 !定义拓扑优化有两个载荷工况
/SHOW,topo,grph !将图形输出到文件(在交互方式下删
除本命令
/DSCALE,,OFF
/CONTOUR,,2
TOPITER,12,1 !执行不多于12次迭代
FINISH
求解结果
图2-3表示上例的计算结果。这些结果存入top.grph文件便于后续的显示处理。如果是交互地运行ANSYS程序,将/SHOW命令删除以观看每次迭代的结果。
图2-3 拓扑优化结果——50%体积减少
一些说明
l 结果对载荷情况十分敏感。很小的载荷变化将导致很大的优化结果差异。
l 结果对网格划分密度敏感。一般来说,很细的网格可以产生“清晰”的拓扑结果,而较粗的网格会生成“混乱”的结果。但是,较大的有限元模型需要更多的收敛时间。
l 在一些情况下会得到珩架形状的拓扑结果。这通常在用户指定很大的体积减少值和较细的网格划分时出现。很大的体积减少值如80%或更大(TOPDEF命令)。
l 如果有多个载荷工况时,有多种方式将其联合进行拓扑优化求解。例如,考虑有五个载荷工况的情况。可以选择使用五个单独的拓扑优化分析过程,也可以使用包括这五个工况的一次拓扑优化分析。还有,也可以将这五个工况合成为一个工况,然后做一次优化。综合起来,可以有七个不同的拓扑优化求解:
5 独立的拓扑优化求解(每个工况一次)
1 拓扑优化求解针对五个工况
1 拓扑优化求解针对一个联合工况
附加的结果或结果的组合都是可用的。
l 结果对泊松比敏感但对杨氏模量不敏感。但是,随泊松比变化的效果不明显。
l TOPDEF和TOPITER命令中的指定值并不存储在ANSYS数据库中;因此,用户必须在每次拓扑优化时重新指定优化目标和定义。
ANSYS能够提供工程问题的拓扑优化技术,可用于确定系统的最佳几何形状,ANSYS在使用这种优化思想的原理是让系统的材料发挥最大的应用率,同时保证满足工程问题的实际需要,如同时保证整体刚度、满足自振频率等条件下获得问题的极大或极小值。当前应用中,拓扑优化主要应用于线性静力和模态分析中。
1、引言
ANSYS拓扑优化技术不需要人工定义优化参数,而是自动将材料分布当作优化参数。在进行拓扑优化分析时,同其他分析过程一样需要定义几何结构、有限元模型、载荷与边界条件等,然后定义优化的目标函数、约束参数。拓扑优化的最终目标是满足给定的实际约束条件(如体积最小、重量最小等)需要极大地或极小化参数,通常采用的目标函数是结构柔量能量(the energy of structural compliance)极小化和基频最大等。
拓扑优化的原理是在满足结构体积缩减量的条件下使结构的柔度极小化。极小化得结构度实际就是要求结构刚度最大化。
2、拓扑优化分析步骤
在ANSYS程序中,又专门用于拓扑优化分析的菜单,使用这些菜单能够进行拓扑优化分析过程,分析的基本步骤如下:
1)定义结构问题;
2)选择单元类型;
3)确定优化区域;
4)定义并控制载荷工况或者频率提取;
5)定义并控制优化过程;
6)查看和分析拓扑优化结果。
ANSYS中拓扑优化菜单如图1所示。
ANSYS能够提供工
2.1 定义结构问题
定义拓扑优化问题同ANSYS其他线性分析过程一样,需要定义材料特性(杨氏模量、泊松比和材料密度等),然后选择适用于拓扑优化的单元类型、生成有限元模型,最后根据问题实际情况需求定义拓扑优化的菜单。对此,有两种操作需要定义:
1)采用单载荷步或多载荷步的线性静力分析时,施加相应的载荷和边界条件;
2)采用模态频率分析,只需施加边界条件。
2.2 选择单元类型
拓扑优化分析可以使用的单元类型有二维平面单元、三维块单元和壳单元。如果使用这种功能,模型中只能有下列单元类型:
1)二维实体单元:PLANE2和PLANE82,用于平面应力和轴对称问题;
2)三维实体单元:SOLID92和SOLID95;
3)壳单元:SHELL93。
2.3 确定优化区域
ANSYS程序只对单元类型编号等于1的单元网格部分进行拓扑优化,对于单元类型编号等于或者大于2的网格部分不进行拓扑优化。所以,在进行模型网格定义时,必须确保拓扑优化的区域划分成单元类型1。定义优化和不优化区域的方法既可以通过命令流修改选择的单元类型属性,也可以通过菜单操作完成对单元类型属性的修改。
2.4 定义并控制载荷工况或频率提取
ANSYS拓扑优化功能当前只能用于线性结构静力分析或模态分析,其他分析类型暂不常用或不支持。针对这两种分析类型,ANSYS实际提供的拓扑优化为基于线性结构精力分析的最大静态刚度拓扑优化设计和基于模态分析的最大动态刚度优化设计,同时两种优化设计都要求达到体积最小化的目的。
1)基于线性结构静力分析的最大静态刚度拓扑优化设计,是将结构柔度作为优化目标或优化约束条件(TOCOMP,TOVAR)。此时,必须在拓扑优化循环中执行线性结构静力分析,并接可以使基于单载荷工况求解进行拓扑优化,或是基于多载荷工况求解进行的拓扑优化。
基于单载荷工况求解进行拓扑优化非常简单,但是基于多载荷工况求解进行的拓扑优化则需要利用ANSYS的写载荷工况文件和多载荷工况批求解技术。每个工况都要定义载荷和边界条件,然后利用LSWRITE命令将载荷工况数据写入载荷工况文件,然后利用LSSOLVE命令一次性的按顺序求解完所有载荷工况。
2)最大动态刚度优化设计:基于模态分析
基于模态分析的拓扑优化,是将固有的振动频率作为拓扑优化的目标函数(TOFREO,TOVAR)。此时,在优化循环中必须进行模态分析,并且需要利用MODOPT命令指定求解时提取的模态频率数目,利用MXPAND命令指定要扩展的模态数,同事单元结果计算选项必须设置为:YES。
程问题的拓扑优化技术,可用于确定系统的最佳几何形状,ANSYS在使用这种优化思想的原理是让系统的材料发挥最大的应用率,同时保证满足工程问题的实际需要,如同时保证整体刚度、满足自振频率等条件下获得问题的极大或极小值。当前应用中,拓扑优化主要应用于线性静力和模态分析中。
2.5 定义并控制优化过程
定义拓扑优化过程包含4个步骤:定义拓扑优化函数、定义拓扑目标函数、和约束条件、初始化拓扑优化和执行拓扑优化。执行拓扑优化可以有两种方式进行:
1)仔细控制并执行每一次的拓扑优化迭代。
2)自动进行多次拓扑优化迭代。
ANSYS提供了7条命令定义和执行拓扑优化:
1)TOCOMP和TOFREO命令用于定义拓扑优化函数;
2)TOVAR命令用于定义拓扑优化的目标函数和约束条件;
3)TOTYPE命令用于定义拓扑优化求解时所用的方法;
4)TODEF命令用于在拓扑优化过程中定义收敛公差及初始化。
5)TOEXE执行一次拓扑优化迭代;
6)TOLOOP执行多次拓扑优化迭代。
2.6 查看拓扑优化结果
拓扑优化求解结束后,所有的拓扑优化结果都会存储在ANSYS的接过文件Jobname.rst中,可以直接在拓扑优化求解器环境中利用提供的专用拓扑优化结果处理菜单进行拓扑优化结果处理,也可以利用ANSYS的通用后处理器(POST1)进行拓扑结果后处理。
3、本篇总结
本篇主要讲述ANSYS优化设计-拓扑优化技术的基本概念和基本步骤,只能用来参考,ANSYS使用者要想真正了解和掌握ANSYS的这种高级分析技术,途径只有一条:练习和应用。
ANSYS高级分析-优化设计(一)
本篇作为ANSYS最常用也是最有用的高级分析技术优化设计技术的开篇,主要从概念上讲述ANSYS优化设计以及在进行ANSYS优化设计分析时通用的基本步骤和考虑方法(本篇所讲述优化分析同样是基于APDL工具,其它优化设计技术具体实现过程随着对优化设计的逐渐深入会逐步描述)。
1 前言
优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”,指的是一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应力,费用等)最小。也就是说,最优设计方案就是一个最有效率的方案。设计方案的任何方面都是可以优化的,比如说:尺寸(如厚度),形状(如过渡圆角的大小),支撑位置,制造费用,自然频率,材料特性等。实际上,因为ANSYS具有专业的和强大的分析能力,具有开放的使用环境,所以所有可以参数化的ANSYS选项都可以作优化设计。
ANSYS参数化设计语言APDL用建立智能分析的手段为用户提供了自动循环的功能,也就是说,程序的输入可设定为根据指定的函数、变量以及选出的分析标准决定输入的形式。APDL允许复杂的数据输入,使用户实际上对任何设计或分析有控制权。例如尺寸、材料、载荷、约束位置和网格密度等。APDL扩展了传统有限元分析之外的能力,并扩展了更高级运算,包括灵敏度研究、零件库参数化建模,设计修改和设计优化。APDL是一种为ANSYS二次开发专门设计开发的解释性文本语言,其内容包括参数、数组参数、表达式和函数、分支和循环、重复功能和缩写以及宏和用户程序等。
2 优化设计步骤
基于APDL的参数化设计的方法采用ANSYS的批处理方法进行优化的,其主要的优化设计过程通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不同(批处理GUI方式)而有细微的差别。
生成分析文件:生成分析文件与通常的ANSYS分析并没有很大的不同,唯一的区别就是:优化的分析文件必须是参数化的。也就是说,必须定义一些参量,至少要把所有的设计变量,状态变量和目标变量定义为参量形式。而且,用于优化的参量只能是标量数值参量,而不是数组或者字符参量。
建立优化过程中的参数:在GUI方式下,优化过程中的参数一般在ANSYS数据库中用分析文件来建立,这样做的好处是初始参数值可以作为一阶方法的起点,然而,对于各种优化过程来说,在数据库中的参数可以在GUI下进行操作,便于定义优化变量。
进入OPT,指定分析文件:首次进入优化处理器时,ANSYS数据库中的所有数据会自动作为设计序列,这些参数值假定是一个设计序列。在GUI方式下,用户必须指定分析文件名,这个文件用于生成优化循环文件Jobname.LOOP,在ANSYS优化处理器中,分析文件名无缺省值,用户必须指定一个分析文件名,否则将出错。并且在分析文件中,/PREP7或/OPT命令必须出现在行的第一个非空字符处。在批处理方式中,分析文件通常是批处理命令流的第一部分,从文件的第一行命令到命令/OPT第一次出现时,其缺省的分析文件名是Jobname.BAT,因此在批处理方式下不需要指定分析文件名。
指定优化变量:即要求用户指定哪些是设计变量、哪些是状态变量和目标函数,对于设计变量和状态变量,用户可以指定其最大和最小值,同时每一个变量都有一个公差值,这个公差值可以用户输入,也可以由程序自动选取。用户可以在任何时间简单地通过重新定义参数来改变已经定义过的参数,也可以删除一个优化变量,即该变量将不再作为优化变量使用,但该参数还存在。
选择优化工具或优化方法:优化方法是使单个函数在控制条件下达到最小值的传统优化方法。它由零阶法、一阶法和用户自定义方法。但在使用任何一种方法之前,用户必须指定一个目标函数。一般来说,一阶法精度较高,但是耗费机时,零阶方法速度较快,其精度较低,但对大多数工程问题而言,零阶分析方法足够了。
指定优化循环控制方式:每一种优化方法和优化工具都有相应的循环控制参数,因此在指定好优化优化方法和优化工具后,用户还要选择与此工具和方法相对应的循环控制参数。
进行优化分析:在进行优化分析时,优化循环文件Jobname.LOOP会根据分析文件生成,循环在满足下列情况下终止:收敛、中断、分析完成。所有优化变量和其他参数在每次迭代后将存储在优化数据文件Jobname.OPT中,最多可以存储130组这样的序列,如果已经达到了130个序列,那么其中数据最“不好”的序列将被删除。
察看设计序列结果:在优化设计完成后,用户可以列出指定序列号的参数值,或列出所有参数的值;也可以用图形的方式显示指定的参数随迭代次数的变化,可以看出变量是如何随迭代过程变化的。同时也可以在POST1或POST26中对分析结果进行后处理,在缺省的方式下,最后一个设计序列的结果存储在文件Jobname.RST或Jobname.RTH 中,如果在运行前将命令OPKEEP设置为on,则最佳设计序列的数据也将存储在数据库和结果文件中,最佳结果在文件Jobname.BEST(BRTH)中,最佳数据库在文件Jobname.BDB中。
3 总结
如前面所述,优化是一个复杂的过程,复杂在当多个参数同时作用时再没有经过时间的验证前谁也不知道具体哪几个参数做到最优时能够使设计和产品最能够最实用的要求,我们只能凭借经验确定选择哪几个参数作为优化的最先考虑因素,而ANSYS提供给我们的便利仅仅是一种代替我们计算的工具,而不能替我们思考。所以要作真正分析领域的杰出人物,任何一种软件仅仅只是工具,而真正的利器存在于头脑之中,这种利器的来源只有一个-孜孜以求与不断实践。
ANSYS高级分析:优化设计(三)-优化算法
理解ANSYS优化模块的计算机程序的算法是很有必要的,也只有这样才能弄清楚ANSYS优化设计的来龙去脉,本篇主要讲述了ANSYS优化设计时最常用的优化技术,但因为ANSYS能够兼容使用者自己开发的优化算法,所以ANSYS优化技术有其广阔的提升和发展空间。
1、引言
ANSYS程序最常见的优化算法有零阶方法,一阶方法,随机搜索法,等步长搜索法,乘子计算法和最优梯度法。本篇仅作简单描述,更多的细节参见ANSYS Theory Reference chapter 20。要想深刻的了解这些算法,需要具有一定数学知识,并有一定的兴趣爱好才能精下心了好好的理解和学习这一部分的理论性内容,但这也是快速提升自己水平的好途径。
2、优化算法简介
2.1 零介方法
零阶方法之所以称为零阶方法是由于它只用到因变量而不用到它的偏导数。在零阶方法中有两个重要的概念:
1)目标函数和状态变量的逼近方法;
2)由约束的优化问题转换为非约束的优化问题。
逼近方法是指程序用曲线拟合来建立目标函数和设计变量之间的关系。这是通过用几个设计变量序列计算目标函数然后求得各数据点间最小平方实现的。该结果曲线(或平面)叫做逼近。每次优化循环生成一个新的数据点,目标函数就完成一次更新。实际上是逼近被求解最小值而并非目标函数。状态变量也是同样处理的。每个状态变量都生成一个逼近并在每次循环后更新。用户可以控制优化近似的逼近曲线。可以指定线性拟合,平方拟合或平方差拟合。缺省情况下,用平方差拟合目标函数,用平方拟合状态变量。用下列方法实现该控制功能:
Command: OPEQN
GUI: Main Menu>Design Opt>Method/Tool
转换为非约束问题的原因是状态变量和设计变量的数值范围约束了设计,优化问题就成为约束的优化问题。ANSYS程序将其转化为非约束问题,因为后者的最小化方法比前者更有效率。转换的实现方法是通过对目标函数逼近加罚函数的方法计入所加约束的。
收敛检查:前面的或最佳设计是合理的而且满足下列条件之一时,问题就是收敛的:
1)目标函数值由最佳合理设计到当前设计的变化应小于目标函数允差。
2)最后两个设计之间的差值应小于目标函数允差。
3)从当前设计到最佳合理设计所有设计变量的变化值应小于各自的允差。
4)最后两个设计所有设计变量的变化值应小于各自的允差。
但收敛并不代表实际的最小值已经得到了,只说明以上四个准则之一满足了。因此,用户必须确定当前设计优化的结果是否足够。如果不足的话,就要另外做附加的优化分析。
对于零阶方法,优化处理器开始通过随机搜索建立状态变量和目标函数的逼近。由于是随机搜索,收敛的速度可能很慢。用户有时可以通过给出多个合理的起始设计来加速收敛。只简单的运行一系列的随机搜索并删除所有不合理的设计。也可以运行多次单独的循环,并在每次运行前指定新的设计变量序列来生成起始设计序列。
2.2 一阶方法
一阶方法同零阶方法一样,一阶方法通过对目标函数添加罚函数将问题转换为非约束的。但是,与零阶方法不同的是,一阶方法将真实的有限元结果最小化,而不是对逼近数值进行操作。
一阶方法使用因变量对设计变量的偏导数。在每次迭代中,梯度计算(用最大斜度法或共轭方向法)确定搜索方向,并用线搜索法对非约束问题进行最小化。因此,每次迭代都有一系列的子迭代(其中包括搜索方向和梯度计算)组成。这就使得一次优化迭代有多次分析循环。
OPFRST命令(Main Menu>Design Opt>Method/Tool)有两个输入域可以用来改善一阶方法的收敛。用户可以指定计算梯度的设计变量范围变化程度,也可以指定线搜索步长的范围。一般来说,这两个输入值的缺省数值就足够了。见ANSYS TheoryReference。
一阶方法在收敛或中断时结束。当当前的设计序列相对于前面的和最佳序列满足下面任意一种情况时,问题就称为收敛:
1)目标函数值由最佳合理设计到当前设计的变化应小于目标函数允差。
2)从当前设计到前面设计目标函数的变化值应小于允差。
3)同时要求最后的迭代使用最大斜度搜索,否则要进行附加的迭代。
与零阶方法相比,一阶方法计算量大且结果精确。但是,精确度高并不能保证最佳求解。一阶方法可能在不合理的设计序列上收敛。这时可能是找到了一个局部最小值,或是不存在合理设计空间。如果出现这种情况,可以使用零阶方法,因其可以更好的研究整个设计空间。也可以先运行随机搜索确定合理设计空间(如果存在的话),然后以合理设计序列为起点重新运行一阶方法。一阶方法更容易获得局部最小值。(见后面“局部和全局最小值”的说明。)这是因为一阶方法从设计空间的一个序列开始计算求解,如果起点很接近局部最小值的话,就会选择该最小值而找不到全局最小值。
2.3 随机搜索法
随机搜索法[OPTYPE,RAND],程序完成指定次数的分析循环,并在每次循环中使用随机搜索变量值。用户可以用OPRAND命令(Main Menu>Design Opt>Method/Tool)指定最大迭代次数和最大合理设计数。如果给出了最大合理设计数,在达到这个数值时循环将终止,而忽略最大迭代次数是否达到。
随机搜索法往往作为零阶方法的先期处理。它也可以用来完成一些小的设计任务。例如可以做一系列的随机搜索,然后通过查看结果来判断当前设计空间是否合理。
2.4 等步长搜索法
等步长搜索法[OPTYPE,SWEEP]用于在设计空间内完成扫描分析。将生成n*NSPS个设计序列,n是设计变量的个数,NSPS是每个扫描中评估点的数目(由OPSWEEP命令指定)。对于每个设计变量,变量范围将划分为NSPS-1个相等的步长,进行NSPS次循环。问题的设计变量在每次循环中以步长递增,其他的设计变量保持其参考值不变。设计序列中设计变量的参考值用OPSWEEP命令的Dset指定(Main Menu>Design Opt>Method/Tool)。
用下列方法图示设计变量数值和响应变量的数值关系:
Command: OPLSW
GUI: Main Menu>Design Opt>Tool Results>Sweeps
理解ANSYS优化模块的计算机程序的算法是很有必要的,也只有这样才能弄清楚ANSYS优化设计的来龙去脉,本篇主要讲述了ANSYS优化设计时最常用的优化技术,但因为ANSYS能够兼容使用者自己开发的优化算法,所以ANSYS优化技术有其广阔的提升和发展空间。
2.5 乘子计算法
乘子计算法[OPTYPE,FACT]用二阶技术生成设计空间上极值点上的设计序列数值。(这个二阶技术在每个设计变量的两个极值点上取值。)可以用OPFACT命令(Main Menu>Design Opt>Method/Tool)指定是完成整体的还是部分子的评估。对于整体评估,程序进行2n次循环,n是设计变量的个数。1/2部分的评估进行2n/2次循环,依此类推。
可以用棒式图和表格显示目标函数或状态变量的某些方面。例如,可以图示每个设计变量对目标函数的主要作用。用户同样可以查看两个和三个变量之间的互相作用。
用下列命令显示棒式图:
Command: OPLFA
GUI: Main Menu>Design Opt>Tool Results>Factorial
2.6 最优梯度法
最优梯度法[OPTYPE,GRAD]计算设计空间中某一点的梯度。梯度结果用于研究目标函数或状态变量的敏感性。用下列方式指定在哪个设计序列计算梯度:Command: OPGRAD
GUI: Main Menu>Design Opt>Method/Tool
用户可以用图显示设计变量和响应变量的数值。纵坐标表示目标函数或状态变量的实际数值。横坐标表示设计变量一个小的(1%)变化值。用下列方法列表表示结果:
Command: OPRGR
GUI: Main Menu>Design Opt>Tool Results>Print
3、本篇总结
本篇介绍了ANSYS优化设计模块集成的优化设计算法的基本思想,对想要进行学习和研究ANSYS优化设计的人来说,深刻的理解了这些算法才能更好的将优化设计应用于工程问题的分析,并且能够将自己的优化思想转换成优化算法集成到ANSYS平台下,为自己的分析服务。