1、ANSYS优化揭密ANSYS优化揭密引子 时下ANSYS高手颇多,但还有很多FEA战友对ANSYS的优化过程用之不熟,这里抛砖引玉,写下自己对ANSYS优化模块的使用心得,不当之处敬请指正。 Aug. 14,20021. 认识ANSYS优化模块1.1 什么时候我需要它的帮忙?什么是ANSYS优化?我想说明一个例子要比我在这里对你絮叨半天容易理解的多。注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你会发现比较老式的此类水杯有一个共同特点:底面直径水杯高度。图1 水杯的简化模型为什么是这样呢?偷偷的告诉你:因为只有满足这个条件,才能在原料耗费最少的情况下使杯子的容积最大。可不是,
2、在材料一定的情况下,如果水杯的底面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径r和杯子的高度h,在ANSYS的优化模块里面把这些需要优化的变量叫做设计变量(DV);优化的目标是要使整个水杯的容积最大,这个目标在ANSYS的优化过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如说整个杯子的材料不变,这些限制条件在ANSYS的优化模块中用状态变量(SV)来控制。闲话少说,下面我们就来看看ANSYS中怎么通过设定DV、SV、OBJ,利用优化
3、模块求解以上问题。首先参数化的建立一个分析文件(我假设叫volu.inp),水杯初始半径为R1,高度为H1(DV),由于水杯材料直接喝水杯的表面积有关系,这里我假设水杯表面积不能大于100,这样就有S2RH2R2 SOLUTION HAS CONVERGED TO POSSIBLE OPTIMUM SOLUTION HAS CONVERGED TO POSSIBLE OPTIMUM (BASED ON OBJ TOLERANCE BETWEEN BEST AND FINAL DESIGNS)可见是因为导致循环提前结束。(注:细观上图,Fj=157.20,Fb=151.62,默认公差似乎此处应该
4、是1.5720,似乎还没有满足这个收敛准则,为什么ANSYS却认为满足了,这里就不得而知,可能ANSYS内部对默认公差里面的当前值另有解释;如果你强行规定目标函数公差为1,可以看到循环多进行一步后也会提前结束,不过这时候当前解151.65和最优解151.62倒的确相差小于公差1了)。此时,大家一定可以理解例子中为什么要对公差的限制如此严谨了(0.01)。因为程序的取样,迭代都有随机性,只有这样,才能保证程序不会因为上述公差太大的缘故自动停止而得不到最优解。有兴趣的同学还可以改变一下其他参数的公差大小,甚至用opsubp命令改变默认循环的次数等,这些实验将会更加加深你对优化过程、收敛准则的理解,
5、便于提高你都负责优化问题的驾驭能力。1.2.4 可行解与不可行解 这两个概念比较好理解,所谓可行解就是满足要求的一组结果。既是说设计变量都在设计变量的上下限内,相应的状态变量也满足状态变量上下限要求。以上任何一条不满足都被示为不可行解。图4中SET 2、3、4都被示为不可行解,因为他们相应的状态变量都越界了。有的同学会提问,SET 6中状态变量为100.71,不是也越界了吗?这是因为ANSYS中判断越界也有一个公差,状态变量的默认公差在这个例子中是1,而100.71和100直接的差的绝对值小于这个公差,因此认为SET 6也为可行解。2. ANSYS优化设计的万能三步曲这里我描述一下拿到一个工程
6、问题,怎么用一种通用的模式进行最优化分析。我通常不不使用Batch模式的优化方法,因为最好还不免需要打开ANSYS的GUI界面去提取优化数据库,绘出变量关系曲线等。这一节介绍的万能方法是基于GUI的命令流方法。由于鄙人想象力有限,这里只要引以前写APDL教程时候的一个例子来说明优化设计的一般方法。(上次是用APDL做单循环求解最优角度,这里我们用强大的ANSYS优化模块来完成它)问题描述:图5 薄板受压的模型图如图5(a)一所示,一带孔薄板,长4000mm,宽2000mm,顶部中心部分1800mm处承受42MP的压力,左右两个长圆孔中心分别踞四周1000mm,长圆孔的具体形式如图5(b)所示,
7、上下分别为半圆,中部用直线衔接。这里假设长圆长轴与水平方向夹角为。为了使得孔边缘应力集中最小,这里拟调整的大小(0, /2),以在固定的H情况下达到长圆孔周围应力集中最小。2.1 构建优化分析文件这里用参数My_sita和My_H对整个模型进行参数化建模:(My_sita表征角,My_H表征高度H,两者的初始值分别为0和100mm,最后提取出孔边缘最大应力值mysmax)File:circle.inpPI=3.14159My_H=150My_sita=45sita=My_sita/180*PIr=0.2H=My_H/1000!Customize the Environmentkeyw,pr_s
8、truc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375!Modeling!Create platek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1,2,3,4,5!Create hole!Create my coordinatek,7,1+H*cos(sita),1+H*sin(sita)k,10,1+H*cos(sita),1+H*sin(sita),100k,8,1+r*cos(sit
9、a+PI/2),1+r*sin(sita+PI/2)cskp,11,0,6,7,8csys,11!Create Holek,9,H,rl,7,9l,7,6adrag,6,7arotat,6,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10csys,0arsym,x,2, , , ,0,0nummer,all, , , ,lowaadd,1,2/auto,1gplot!Meshing the planesmrt,6amesh,all!Add DOFDK,2,UX,0, ,UYDK,14,UX,0,UY!Add Pres
10、sureSFL,4,PRES,42SFL,11,PRES,42/solusolve/post1ar11=ndinqr(0,14)_s1=*dim,_s1,ar11*vget,_s1(1),node,1,s,1*vscfun,mysmax,max,_s1(1)2.2 构建优化控制文件这第二步工作非常简单,随便拿个优化控制文件来,稍微把设计变量、状态变量、目标函数一修改,就成完成了优化控制文件。File:optcircle.inp/optopclrfini/clear,nostart/input,circle,inp/optopanl,circle,inpopvar,My_sita,dv,0,90
11、opvar,H,dv,100,200opvar,mysmax,objopkeep,onoptype,subpopsave,optcircle,opt0opexec2.3 优化求解 现在万事具备,打开ANSYS的GUI界面,输入/input,optcircle,inp,就开始求解了。计算结束后看一下结果:图6 优化结果3由此得到最优解在48.422,H161.79附近。和我们上次用APDL循环优化得到的结果=40差不太多。这样,整个优化过程就完成了,非常容易,而且适用于所有的优化问题。当然好的优化结果并不是单单遵循上面的三步法就能得到的。其实,上面这不过这只是一个粗略的结果。从图6看到,才采样了
12、5个点,我们上次用APDL循环优化都是每5采样一个点,比这样的0阶优化还精确的多。没有关系,既然嫌结果不精确,我们可以在0阶优化的基础上再进行一下1阶梯度优化:(1) 在circle.inp文件中把My_H=150一句替换成My_H=161.79把My_sita=45一句替换成My_sita=48.422(2) 在optcircle.inp文件中optype,subp一句替换为optype,first给其中定义设计变量、状态变量、目标函数的语句都加上公差1e-2,防止其提前收敛。得到更加精确的结果如下:图7 优化结果4这里得到的最优解是当43.385,H108.50mm时,最优解mysmax=
13、569.25,比原来的最优解值639.03精确了很多。当然这一次1阶优化结束是因为达到了默认的循环次数10,如果你再加以一些处理,或者把默认循环次数加大,可能会得到更优的参数。3. ANSYS优化工具理解看完前面这些部分,也许你对ANSYS的优化过程理解的游刃有余了。你已经学会通过手动改变三大变量的公差,或者参数的初始值来获得更优解。不过想不想更加提高自己的?手动在全自动控制中总是一个很大的累赘,也许你会想先自动探测一下解空间,然后通过判断选择一下初始参数集,再进行二级甚至更多级的优化;也许你想自己规划优化的过程;也许你想考察各个设计变量之间的耦合关系和它们对目标函数的影响。如果你想更进一步提
14、高自己的ANSYS优化能力,可能需要进一步吃透ANSYS提供给大家使用的形形色色优化工具。本来想详细写点优化工具使用的例子,但一来ANSYS培训手册里面有详细的例子讲解,二来时间也不允许,整理几个很新颖的工程例子还是颇伤脑筋,这里就每个优化工具点评一下其特点功用,相信大家也不难掌握。(1) 单循环工具可用来在命令流中控制实现一次优化过程,得到所要目标值。主要可以用于自己规划的优化过程,不常用。(2) 随机工具可用来在一些优化方案实施前,获得一定数量的可行解。很多问题在优化过程中会出现大量不可行解,浪费求解效率,在求解前获得一组可行解能够减少在后续迭代中出现不可行解的几率,提高求解效率,复杂问题
15、中常用。(3) 扫描工具可用来研究某一设计变量的变化对目标函数的影响情况。多是在一定参照解得条件下(参照解默认取最优解),在保持参照解其他变量不变得情况下,考察某一设计变量对目标函数得影响情况,其结果可以看到该设计变量对目标函数的影响趋势和敏度。(有时候可以根据结果把惰性设计变量去除,减小优化过程规模)(4) 梯度工具可用来研究在优化结果处,哪一个设计变量的扰动对目标函数影响最大。也是在参照解(多是最优解)处,可以考察哪个设计变量对目标函数的变化影响最大。(有时候可以根据结果适当调整设计变量公差,来提高优化效率)(5) 乘子工具可用来研究在整个设计域内,设计变量或设计变量的耦合对目标函数的影响大小。该工具主要可以考察设计变量之间的耦合性,寻求最佳耦合点。该工具使用不多,感觉在很小的取样点情况下,使用乘子工具没有很大实际意义。4. ANSYS优化心得可能大家已经被上面如此之多的讲解讲的混混欲睡了,再坚持一下,我再谈一下我这半年来研究ANSYS优化的心得:首先,使用上面总结的工程优化三步法,你应该面对任何工程问题都面无难色。三步法中的主要工作都是第一步参数化建模,这个对用惯了命令流的朋友应该没有难度,不习惯命令流的同志慢慢对照log文件也能搞得差不多。与普通工程问题建模求解相比,优化过程的分析文件中多了一个提取目标函数的工作,这一部分内容其实大都差不多,在ANSYS培训手册中随
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1