ANSYS优化设计实例

上传人:壹****1 文档编号:506846416 上传时间:2022-12-14 格式:DOC 页数:26 大小:538.50KB
返回 下载 相关 举报
ANSYS优化设计实例_第1页
第1页 / 共26页
ANSYS优化设计实例_第2页
第2页 / 共26页
ANSYS优化设计实例_第3页
第3页 / 共26页
ANSYS优化设计实例_第4页
第4页 / 共26页
ANSYS优化设计实例_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《ANSYS优化设计实例》由会员分享,可在线阅读,更多相关《ANSYS优化设计实例(26页珍藏版)》请在金锄头文库上搜索。

1、优化设计认识优化模块1.1什么时候我需要它的帮忙?什么是ANSYS优化?我想说明一个例子要比我在这里对你絮叨半天容易理解的多。注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你会发现比较老式的此类水杯有一个共同特点:底面直径=水杯高度。图1水杯的简化模型为什么是这样呢?因为只有满足这个条件,才能在原料耗费最少的情况下使杯子的容积最大。在材料一定的情况下,如果水杯的底面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径r和杯子的高度h,在ANSYS

2、的优化模块里面把这些需要优化的变量叫做设计变量(DV);优化的目标是要使整个水杯的容积最大,这个目标在ANSYS的优化过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如说整个杯子的材料不变,这些限制条件在ANSYS的优化模块中用状态变量(SV)来控制。下面我们就来看看ANSYS中怎么通过设定DV、SV、OBJ,利用优化模块求解以上问题。首先参数化的建立一个分析文件(假设叫volu.inp),水杯初始半径为R=l,高度为H=1(DV),由于水杯材料直接喝水杯的表面积有关系,这里假设水杯表面积不能大于100,这样就有S=2nRH+2n(),水杯的容积为=n()。File:vo

3、lu.inp(用参数直接定义也可或者在命令栏内直接写)R=1H=1S=2*3.14*R*H+2*3.14*R*RV=10000/(3.14*R*R*H)然后再建一个优化分析文件(假设叫optvolu.inp),设定优化变量,并求解。最后,在命令输入框中键入“”,整个优化过程就开始了。图2ANSYS优化过程图ANSYS优化设计#几秒钟的优化过程结束后,让我们来看一下优化的结果:图3优化结果上图中左右带*的SET22是最优解,由此可以看出,要想在表面积一定的情况下使水杯容积最大,的确有这样一个规律H=D=2*R。有兴趣的同志可以用求极值的方法演算一下,一定会得到相同的答案。的优化模块是用来求解工程

4、分析中的优化例子的,但上面一个例子说明即使这样于工程毫无关系纯数学极值问题,也能够轻松求解。不过在细节处会有一些技巧,后面再仔细分析。(其实用的优化模块完全能解决数学上比较负责的极值问题,不过现在有了lm大概也没有人愿意来用献丑了)。1.2ANSYS优化设计基础前面写了一个例子,来说明ANSYS的基本优化过程。在这一节中,我们结合这个例子来说明一下优化模块中的一些概念。1.2.优1化模块中的三大变量:设计变量(DV):即自变量。例子中的opvar,R,dv,l,10,le-2就是用来定义一个设计变量R,其上限为10,下限为1,公差为10-2(公差和优化过程的收敛有关)。ANSYS优化模块中允许

5、定义不超过60个设计变量。状态变量(SV):用来体现优化的边界条件,是设计变量的函数。例子里面opvar,S,sv,100,1e-2就是定义了一个状态变量S,它的上限为100,无下限,公差为10-2。从文件volu.inp中可以看到,S=2*3.14*R*H+2*3.14*R*R。可见,定义这样一个状态变量,即是限制水杯的表面积(可以认为表示材料的多少)不大于100。在ANSYS优化模块中用户可以定义不超过100个状态变量。目标函数(OBJ):最终的优化目的。它必须是设计变量的函数,而且只能求其最小值。看到volu.inp里面目标函数的定义了吧V=10000/(3.14*R*R*H),为了把求

6、最大体积转化为求最小值,只好对它求倒数了;如果知道目标函数的上限,还可以用一个大数减目标函数的方法来转换。例子中opvar,V,obj,1e-2就是定义了一个目标函数V,它的公差是10-2。优化模块中的两种求解模式优化模块的求解有两种运行模式,一种是在方式下运行,即已经打开的分析界面后进行分析;另一种是模式,无需打开分析界面,后台运行求解。前面例子的运行过程其实就是一个典型的方式体现,它涉及到两个重要的文件:一个就是类似的分析文件,如果是一个工程问题,该文件中应该有参数定义、参数建模、求解、结果提取、目标函数赋值的一个全过程(由于优化求解是一个不断跌代的过程,ANSYS分析文件其实是包涵了一个

7、完整的循环)。另一个文件是类似optvolu.inp的优化控制文件,基本语句就那么几条,无非是定义三大变量、优化方式、优化控制等几条,用户拿过去稍稍替换下就可以用在不同的问题上。(注:细心的读者可能会提问,既然ANSYS分析文件包涵了一个完整的循环,但是整个优化过程中是要求设计变量不断改变的,每次循环都有一个参数重定义的过程,不会使设计变量恢复初始值吗?这一点勿用担心,正是由于有了另一个优化控制文件,优化过程只在第一次进行完全的参数定义工作,在后续循环中,优化控制文件中声明的设计变量定义将被忽略)。有了这样两个文件,简单的在命令窗口把优化控制文件输入进去(其中的opanl命令会自动调用指定的A

8、NSYS分析文件),就可以完成整个优化过程。以上说明的是完全使用命令流的GUI方式,至于如何在菜单中进行优化过程的定制,窃以为没有命令流方式快捷,这里就不再赘述了。另一种方式是后台运行的Batch方式,它只需要一个输入命令流文件(batch文件)。该文件可以简单的把GUI方式下ANSYS分析文件和优化控制文件合并得到。不过有几个注意点:1、需要把optanl语句去掉,因为在batch文件中,不需要提供ANSYS分析文件名字,系统默认batch文件中/opt语句以前的所有部分为ANSYS分析文件内容。2、以前为防止在GUI方式下的重新定义错误而引入的一些语句,如/cle,nostart需要去除。

9、上述例子经过合并、处理,就可以得到Batch方式下需要的batch文件batch.inpFile:batch.inpR=1H=1S=2*3.14*R*H+2*3.14*R*R/optopvar,R,DV,1,10,1e-2opvar,H,DV,1,10,1e-2opvar,S,SV,100,1e-2opvar,V,obj,1e-2opkeep,onoptype,subpopsave,optvolu,opt0V=10000/(3.14*R*R*H)!指定设计变量R!指定设计变量H!指定状态变量S!指定优化目标V!指定优化方法子问题逼近法(零阶法)opexe假定batch.inp在目录bvolu下

10、,在cmd命令行方式下,进入bvolu目录,执行命令:ansys-b-jbvolu-pane3flds-ibatch.inp-ooutput.txt命令中-b参数指定用batch模式求解;-jbvolu参数指定该求解默认工作名字为bvolu(不指定就默认为file)-pane3flds参数指定使用ANSYS/Multiphysics/LS-DYNA求解器-ibatch.inp参数指定输入batch文件为batch.inp-ooutput.txt参数指定把输出导向到output.txt中,便于查看过程纠错运行结束后,可以从output.txt文件中看到最有解是多少:文件output.txt中的一

11、部分数据:SOLUTIONHASCONVERGEDTOPOSSIBLEOPTIMUM(BASEDONDVTOLERANCESBETWEENFINALTWODESIGNS)FINALVARIABLESARESET22(FEASIBLE)S(SV)99.997R(DV)2.2851H(DV)4.6830V(OBJ)130.23其结果与用GUI方式求解完全一样,生成的bvolu.opt文件中也有最优解的信息,同时还能看到求解整个参数迭代求解过程。1.的优化方法和收敛准则例子中优化控制文件里面的优化命令,还有opkeep,on(用来要求保留最优解的DB),opexec(执行优化),剩下重要的命令就只有

12、optype了,这个命令指定ANSYS优化中使用的优化方法。优化方法发展到今天可说是形形色色,比较完善了。ANSYS的优化模块中只支持两种优化方法,不能不说是一大遗憾。但ANSYS的这两种优化方法对绝大多数的工程问题已经足够,更何况ANSYS还留下了用户话优化接口,方便用户写出适合于自己问题的优化方法来使用。看看例子中的命令”optype,subp”,这里指定的是第一种通用的函数逼进优化方法。改种方法的本质是采用最小二乘逼进,求取一个函数面来拟和解空间,然后再对该函数面求极值。无疑这是一种普适的优化方法,不容易陷入局部极值点,但优化精度一般不是很高,因此多用来做粗优化的手段。另外一种是针对第一

13、种优化方法缺点的改进方法,叫做梯度寻优。如果说第一种方法是C0阶、大范围普适的粗优化方法;第二种方法就是C1阶、局部寻优的精优化方法。一般来说,一个比较负责的问题都需要同时采用两种优化方法,先用函数逼进的第一类方法初步求得最优解基本位置,然后再采用梯度寻优的对最优解的位置进行更精确的确定。(注:但用第二类梯度寻优进行优化,不仅时间消耗长,还可能陷入局部最小点,因此通常的问题都建议使用0阶函数逼进优化subp)前面讨论了ANSYS的两种优化方法,但光了解优化进行的方式是不够的。ANSYS进行优化计算,都是一个不断迭代的过程。有时候,了解优化过程什么时候结束比了解优化过程本身更加重要。下面我们就来

14、谈谈决定优化过程什么时候结束的条件:优化准则。假设X.和j、X.1分别为目标函数、设计变量第j次迭代和第j-1次迭代的结果(X,为矢量),F:和Xb分别是当前的最优目标函数和其相应的设计变量值。如果满足或者,为bb目标函数的公差,那么认为迭代收敛,于是迭代停止。假设或者,那么也认为设计变量的搜索已经趋于收敛,于是迭代停止。当然,为了防止优化过程在某些问题中不收敛,ANSYS还提供了循环数量控制。比如说,如果你使用的是0阶函数逼进优化,你可以用opsubp命令设定最多循环多少次退出,已经当不可行解连续出现多少次就认为优化过程发散,强行退出等。(注:在0阶函数逼进优化中,默认的最大循环次数为30;

15、默认当连续出现7次不可行解,就认为优化过程发散)在上面的描述中,可能只有公差和不可行解这两个概念在ANSYS中的意义我们不甚了解了。可行解与不可行解的定义将在下一小节中详细定义,这里说明一下公差。从例子里面可以看出,我对设计变量、状态变量、目标函数都给出了公差限制。从上面一段的的分析可以得知,设计变量、目标函数的公差可以控制优化过程的收敛性。其实设计变量也一样,如果前后两次设计变量之间的误差小于设计变量的公差时,优化过程也会自动停止,不过对它的限制主要是来控制可行性(下一节介绍可行性),三大变量的公差都有一个默认值:对于设计变量,默认公差就是0.01X(上限下限),如果只有上限,默认公差为0.

16、01X上限绝对值。(设计变量定义时必须指定上限)。对于目标函数,由于定义时不指定上下限,默认公差为0.01X当前目标函数值。对于状态变量,如果指定了上下限,默认公差为0.01X(上限下限),如果只有上限或者下限,默认公差为0.01X上限或者下限的绝对值。ANSYS优化设计#上述默认公差的定义都能在ANSYS的随机帮助中查到,这里为什么如此冗余的详细介绍它呢?因为大多数情况下你不能得到最优解都是这个东西在作怪。为什么例子中要每个变量都详细定义公差呢?我们可以把这些公差都去掉,看看是什么结果:图4优化结果2由此可见,不带任何公差的最优化分析得不到我们所要求的最有解(151.62显然比带公差后得到的结果130.23要大许多),而且优

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号