ANSYS优化揭密 引子 时下 ANSYS高手颇多,但还有很多FEA战友对 ANSYS的优化过程用之不 熟,这里抛砖引玉,写下自己对 ANSYS优化模块的使用心得,不当之处敬请指 正 1.认识 ANSYS优化模块 1.1什么时候我需要它的帮忙? 什么是 ANSYS优化?我想说明一个例子要比我在这里对你絮叨半天容易理 解的多 注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你 会发现比较老式的此类水杯有一个共同特点:底面直径=水杯高度 图1水杯的简化模型 为什么是这样呢?偷偷的告诉你:因为只有满足这个条件,才能在原料耗费 最少的情况下使杯子的容积最大。可不是,在材料一定的情况下,如果水杯的底 面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两 者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。 在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径r 和杯子的高度h,在 ANSYS的优化模块里面把这些需要优化的变量叫做设计变 量(DV):优化的目标是要使整个水杯的容积最大,这个目标在 ANSYS的优化 过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如 说整个杯子的材料不变,这些限制条件在 ANSYS的优化模块中用状态变量(SV 来控制。闲话少说,下面我们就来看看 ANSYS中怎么通过设定DV、SV、OBJ, 利用优化模块求解以上问题 首先参数化的建立一个分析文件(我假设叫 volu. inp),水杯初始半径为 1,高度为H=1(DV),由于水杯材料直接喝水杯的表面积有关系,这里我假设 水杯表面积不能大于100,这样就有S=2RH+2R2<100(SV),水杯的容积
ANSYS 优化揭密 引子 时下 ANSYS 高手颇多,但还有很多 FEA 战友对 ANSYS 的优化过程用之不 熟,这里抛砖引玉,写下自己对 ANSYS 优化模块的使用心得,不当之处敬请指 正。 deform@smth Aug. 14,2002 1. 认识 ANSYS 优化模块 1.1 什么时候我需要它的帮忙? 什么是 ANSYS 优化?我想说明一个例子要比我在这里对你絮叨半天容易理 解的多。 注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你 会发现比较老式的此类水杯有一个共同特点:底面直径=水杯高度。 图 1 水杯的简化模型 为什么是这样呢?偷偷的告诉你:因为只有满足这个条件,才能在原料耗费 最少的情况下使杯子的容积最大。可不是,在材料一定的情况下,如果水杯的底 面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两 者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。 在这里,一个水杯的材料是一定的,所要优化的变量就是杯子底面的半径 r 和杯子的高度 h,在 ANSYS 的优化模块里面把这些需要优化的变量叫做设计变 量(DV);优化的目标是要使整个水杯的容积最大,这个目标在 ANSYS 的优化 过程里叫目标函数(OBJ);再者,对设计变量的优化有一定的限制条件,比如 说整个杯子的材料不变,这些限制条件在 ANSYS 的优化模块中用状态变量(SV) 来控制。闲话少说,下面我们就来看看 ANSYS 中怎么通过设定 DV、SV、OBJ, 利用优化模块求解以上问题。 首先参数化的建立一个分析文件(我假设叫 volu.inp),水杯初始半径为 R= 1,高度为 H=1(DV),由于水杯材料直接喝水杯的表面积有关系,这里我假设 水杯表面积不能大于 100,这样就有 S=2πRH+2πR 2 <100(SV),水杯的容积
为V=πRH(OBJ)。 File: volu. inp R=1 S=2*3.14*R*H+2*3.14*R*R V=100003.14R*R*H) 然后再建一个优化分析文件(我假设叫 optol inp),设定优化变量,并求解 File optvolu inp /input, volu, inp pt opal, volu, inp opvar, R, dv, 1, 10,1e-2 opvar, H, dv, 1, 10,1e-2 opvar, S, Sv,, 100,1e-2 V,obi,le-2 optype, subp opsave, optvolu, opto opexec 最后,哈,打开 Ansys6.1,在命令输入框中键入/ input, optvolu, inp”,整个优 化过程就开始了 SavE De I REsu ce our L PoMRGRPHLECE 图2 ANSYS优化过程图 几秒钟的优化过程结束后,让我们来看一下优化的结果: lopt optlist. all
为 V=πR 2 H (OBJ)。 File:volu.inp R=1 H=1 S=2*3.14*R*H+2*3.14*R*R V=10000/(3.14*R*R*H) 然后再建一个优化分析文件(我假设叫 optvolu.inp),设定优化变量,并求解。 File:optvolu.inp /clear,nostart /input,volu,inp /opt opanl,volu,inp opvar,R,dv,1,10,1e-2 opvar,H,dv,1,10,1e-2 opvar,S,sv,,100,1e-2 opvar,V,obj,,,1e-2 opkeep,on optype,subp opsave,optvolu,opt0 opexec 最后,哈,打开 Ansys6.1,在命令输入框中键入”/input,optvolu,inp”,整个优 化过程就开始了。 图 2 ANSYS 优化过程图 几秒钟的优化过程结束后,让我们来看一下优化的结果: /opt optlist,all
AOPLIST Command FEASIBLE》 FEASI SET 18 1的.日5 2.2978 2.2971 23 E) (FEASIBLE) 138.23 图3优化结果1 上图中左右带*的SET22是最优解,由此可以看出,要想在表面积一定的情 况下使水杯容积最大,的确有这样一个规律H=D=2*R。有兴趣的同志可以用求 极值的方法演算一下,一定会得到相同的答案。(话外语:原来那些无盖的糖瓷 盆有一个规律是H=R,也是为了满足瓷盆容积最大。) ANSYS的优化模块是用来求解工程分析中的优化例子的,但上面一个例子 说明即使这样于工程毫无关系纯数学极值问题,也能够轻松求解。不过在细节处 会有一些技巧,后面再仔细分析。(其实用 ANSYS的优化模块完全能解决数学 上比较负责的极值问题,不过现在有了 Matlab、 Mathematica,大概也没有人愿 意来用 ANSYS献丑了) 12 ANSYS优化设计基础 前面写了一个例子,来说明 ANSYS的基本优化过程。在这一节中,我们结 合这个例子来说明一下优化模块中的一些概念。 121优化模块中的三大变量: 设计变量(DV):即自变量。例子中的 opvar,R,dv,1,10,le-2就是用来定义一个设 计变量R,其上限为10,下限为1,公差为102(公差和优化过程的收敛有关)。 ANSYS优化模块中允许定义不超过60个设计变量 状态变量(sV):用来体现优化的边界条件,是设计变量的函数。例子里面 oprah,S,sv,100le-2就是定义了一个状态变量S,它的上限为100,无下限,公差 为102。从文件 volu inp中可以看到,S=2*3.14+R*H+2*3.14+R*R。可见,定义 这样一个状态变量,即是限制水杯的表面积(可以认为表示材料的多少)不大于 100。在 ANSYS优化模块中用户可以定义不超过100个状态变量
图 3 优化结果 1 上图中左右带*的 SET 22 是最优解,由此可以看出,要想在表面积一定的情 况下使水杯容积最大,的确有这样一个规律 H=D=2*R。有兴趣的同志可以用求 极值的方法演算一下,一定会得到相同的答案。(话外语:原来那些无盖的糖瓷 盆有一个规律是 H=R,也是为了满足瓷盆容积最大。) ANSYS 的优化模块是用来求解工程分析中的优化例子的,但上面一个例子 说明即使这样于工程毫无关系纯数学极值问题,也能够轻松求解。不过在细节处 会有一些技巧,后面再仔细分析。(其实用 ANSYS 的优化模块完全能解决数学 上比较负责的极值问题,不过现在有了 Matlab、Mathematica,大概也没有人愿 意来用 ANSYS 献丑了) 1.2 ANSYS 优化设计基础 前面写了一个例子,来说明 ANSYS 的基本优化过程。在这一节中,我们结 合这个例子来说明一下优化模块中的一些概念。 1.2.1 优化模块中的三大变量: 设计变量(DV):即自变量。例子中的 opvar,R,dv,1,10,1e-2 就是用来定义一个设 计变量 R,其上限为 10,下限为 1,公差为 10-2(公差和优化过程的收敛有关)。 ANSYS 优化模块中允许定义不超过 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=100004*R*R+H,为了把 求最大体积转化为求最小值,只好对它求倒数了;如果知道目标函数的上限,还 可以用一个大数减目标函数的方法来转换。例子中 opvar,V,obj,le-2就是定义了 个目标函数V,它的公差是102。 122 ANSYS优化模块中的两种求解模式 ANSYS优化模块的求解有两种运行模式,一种是在GUI方式下运行,即已 经打开 ANSYS的分析界面后进行分析;另一种是 Batch模式,无需打开 ANSYS 分析界面,后台运行求解。 前面例子的运行过程其实就是一个典型的GUI方式体现,它涉及到两个重要 的文件:一个就是类似 volu inp的 ANSYS分析文件,如果是一个工程问题,该 文件中应该有参数定义、参数建模、求解、结果提取、目标函数赋值的一个全过 程(由于优化求解是一个不断跌代的过程, ANSYS分析文件其实是包涵了一个 完整的循环)。另一个文件是类似 optvolu inp的优化控制文件,基本语句就那么 几条,无非是定义三大变量、优化方式、优化控制等几条,用户拿过去稍稍替换 下就可以用在不同的问题上。(注:细心的读者可能会提问,既然 ANsYS分析 文件包涵了一个完整的循环,但是整个优化过程中是要求设计变量不断改变的 每次循环都有一个参数重定义的过程,不会使设计变量恢复初始值吗?这一点勿 用担心,正是由于有了另一个优化控制文件,优化过程只在第一次进行完全的参 数定义工作,在后续循环中,优化控制文件中声明的设计变量定义将被忽略)。 有了这样两个文件,简单的在命令窗口把优化控制文件输入进去(其中的 opal 命令会自动调用指定的 ANSYS分析文件),就可以完成整个优化过程。以上说 明的是完全使用命令流的GUI方式,至于如何在菜单中进行优化过程的定制, 窃以为没有命令流方式快捷,这里就不再赘述了。 另一种方式是后台运行的 Batch方式,它只需要一个输入命令流文件( batch 文件)。该文件可以简单的把GUI方式下 ANSYS分析文件和优化控制文件合并 得到。不过有几个注意点:1、需要把 otani语句去掉,因为在 batch文件中, 不需要提供 ANSYS分析文件名字,系统默认 batch文件中opt语句以前的所有 部分为 ANSYS分析文件内容。2、以前为防止在GUI方式下的重新定义错误而 引入的一些语句,如/cle, nostart需要去除。上述例子经过合并、处理,就可以得 到Bach方式下需要的 batch文件 batch. inp File: batch. inp R=1 S=2*3.14*R*H+2*3.14*R*R V=100003.14*R*R*H pt opvar, R, dv, 1, 10,1e-2
目标函数(OBJ):最终的优化目的。它必须是设计变量的函数,而且只能求其 最小值。看到 volu.inp 里面目标函数的定义了吧 V=10000/(3.14*R*R*H),为了把 求最大体积转化为求最小值,只好对它求倒数了;如果知道目标函数的上限,还 可以用一个大数减目标函数的方法来转换。例子中 opvar,V,obj,,,1e-2 就是定义了 一个目标函数 V,它的公差是 10-2。 1.2.2 ANSYS 优化模块中的两种求解模式 ANSYS 优化模块的求解有两种运行模式,一种是在 GUI 方式下运行,即已 经打开 ANSYS 的分析界面后进行分析;另一种是 Batch 模式,无需打开 ANSYS 分析界面,后台运行求解。 前面例子的运行过程其实就是一个典型的 GUI 方式体现,它涉及到两个重要 的文件:一个就是类似 volu.inp 的 ANSYS 分析文件,如果是一个工程问题,该 文件中应该有参数定义、参数建模、求解、结果提取、目标函数赋值的一个全过 程(由于优化求解是一个不断跌代的过程,ANSYS 分析文件其实是包涵了一个 完整的循环)。另一个文件是类似 optvolu.inp 的优化控制文件,基本语句就那么 几条,无非是定义三大变量、优化方式、优化控制等几条,用户拿过去稍稍替换 下就可以用在不同的问题上。(注:细心的读者可能会提问,既然 ANSYS 分析 文件包涵了一个完整的循环,但是整个优化过程中是要求设计变量不断改变的, 每次循环都有一个参数重定义的过程,不会使设计变量恢复初始值吗?这一点勿 用担心,正是由于有了另一个优化控制文件,优化过程只在第一次进行完全的参 数定义工作,在后续循环中,优化控制文件中声明的设计变量定义将被忽略)。 有了这样两个文件,简单的在命令窗口把优化控制文件输入进去(其中的 opanl 命令会自动调用指定的 ANSYS 分析文件),就可以完成整个优化过程。以上说 明的是完全使用命令流的 GUI 方式,至于如何在菜单中进行优化过程的定制, 窃以为没有命令流方式快捷,这里就不再赘述了。 另一种方式是后台运行的 Batch 方式,它只需要一个输入命令流文件(batch 文件)。该文件可以简单的把 GUI 方式下 ANSYS 分析文件和优化控制文件合并 得到。不过有几个注意点:1、需要把 optanl 语句去掉,因为在 batch 文件中, 不需要提供 ANSYS 分析文件名字,系统默认 batch 文件中/opt 语句以前的所有 部分为 ANSYS 分析文件内容。2、以前为防止在 GUI 方式下的重新定义错误而 引入的一些语句,如/cle,nostart 需要去除。上述例子经过合并、处理,就可以得 到 Batch 方式下需要的 batch 文件 batch.inp File:batch.inp R=1 H=1 S=2*3.14*R*H+2*3.14*R*R V=10000/(3.14*R*R*H) /opt opvar,R,dv,1,10,1e-2
opvar, H, dv, 1, 10,1e-2 S.sv.100.le-2 opvar,V,obJ upkeep, on optype, sub re,optvolu, opto 假定 batch. inp在目录 bvolu下,在cmd命令行方式下,进入 bvolu目录,执行命 ansys61-b-j bvolu-p ane3flds-i batch inp-o output txt 命令中-b参数指定用 batch模式求解 i bvolu参数指定该求解默认工作名字为 bvolu(不指定就默认为file) p ane3flds参数指定使用 ANS Y S/MultiphySICS/LS-DYNA求解器 i batch. inp参数指定输入bach文件为 batch. inp - o output. txt参数指定把输出导向到 output. txt中,便于查看过程纠错 运行结束后,可以从 output. txt文件中看到最有解是多少: 文件 output. txt中的一部分数据 >>>> SOLUTION HAS CONVERGED TO POSSIBLE OPTIMUM <<<<< BASED ON DV TOLERANCES BETWEEN FINAL TWO DESIGNS FINAL VARIABLES ARE SET 22 (FEASIBLE (sV)99997 RHV (V) 2.2851 (DV)46830 (OBJ)130.23 其结果与用GUI方式求解完全一样,生成的 bvoluopt文件中也有最优解的 信息,同时还能看到求解整个参数迭代求解过程 123 ANSYS的优化方法和收敛准则 例子中优化控制文件里面的优化命令,还有 upkeep, on(用来要求保留最优 解的DB), opexec(执行优化),剩下重要的命令就只有 optype了,这个命令指 定 ANSYS优化中使用的优化方法。 优化方法发展到今天可说是形形色色,比较完善了。 ANSYS的优化模块中 只支持两种优化方法,不能不说是一大遗憾。但 ANSYS的这两种优化方法对绝 大多数的工程问题已经足够,更何况 ANSYS还留下了用户话优化接口,方便用 户写出适合于自己问题的优化方法来使用。 看看例子中的命令” optype, subp”,这里指定的是第一种通用的函数逼进优化 方法。改种方法的本质是采用最小二乘逼进,求取一个函数面来拟和解空间,然
opvar,H,dv,1,10,1e-2 opvar,S,sv,,100,1e-2 opvar,V,obj,,,1e-2 opkeep,on optype,subp opsave,optvolu,opt0 opexec 假定 batch.inp 在目录 bvolu 下,在 cmd 命令行方式下,进入 bvolu 目录,执行命 令: ansys61 -b -j bvolu -p ane3flds -i batch.inp –o output.txt 命令中 -b 参数指定用 batch 模式求解; -j bvolu 参数指定该求解默认工作名字为 bvolu (不指定就默认为 file) -p ane3flds 参数指定使用 ANSYS/Multiphysics/LS-DYNA 求解器 -i batch.inp 参数指定输入 batch 文件为 batch.inp -o output.txt 参数指定把输出导向到 output.txt 中,便于查看过程纠错 运行结束后,可以从 output.txt 文件中看到最有解是多少: 文件 output.txt 中的一部分数据: >>>>>> SOLUTION HAS CONVERGED TO POSSIBLE OPTIMUM <<<<<< (BASED ON DV TOLERANCES BETWEEN FINAL TWO DESIGNS) FINAL VARIABLES ARE SET 22 (FEASIBLE) S (SV) 99.997 R (DV) 2.2851 H (DV) 4.6830 V (OBJ) 130.23 其结果与用 GUI 方式求解完全一样,生成的 bvolu.opt 文件中也有最优解的 信息,同时还能看到求解整个参数迭代求解过程。 1.2.3 ANSYS 的优化方法和收敛准则 例子中优化控制文件里面的优化命令,还有 opkeep,on(用来要求保留最优 解的 DB),opexec(执行优化),剩下重要的命令就只有 optype 了,这个命令指 定 ANSYS 优化中使用的优化方法。 优化方法发展到今天可说是形形色色,比较完善了。ANSYS 的优化模块中 只支持两种优化方法,不能不说是一大遗憾。但 ANSYS 的这两种优化方法对绝 大多数的工程问题已经足够,更何况 ANSYS 还留下了用户话优化接口,方便用 户写出适合于自己问题的优化方法来使用。 看看例子中的命令”optype,subp”,这里指定的是第一种通用的函数逼进优化 方法。改种方法的本质是采用最小二乘逼进,求取一个函数面来拟和解空间,然