1、ANSYS 高级技术分析指南 优化设计1-1第一章 优化设计什么是优化设计?优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计” ,指的是一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应力,费用等)最小。也就是说,最优设计方案就是一个最有效率的方案。设计方案的任何方面都是可以优化的,比如说:尺寸(如厚度) ,形状(如过渡圆角的大小) ,支撑位置,制造费用,自然频率,材料特性等。实际上,所有可以参数化的 ANSYS 选项都可以作优化设计。 (关于 ANSYS 参数,请参看 ANSYS Modeling and Meshing Guide 第十四章。 )ANSYS 程序
2、提供了两种优化的方法,这两种方法可以处理绝大多数的优化问题。零阶方法是一个很完善的处理方法,可以很有效地处理大多数的工程问题。一阶方法基于目标函数对设计变量的敏感程度,因此更加适合于精确的优化分析。对于这两种方法,ANSYS 程序提供了一系列的分析评估修正的循环过程。就是对于初始设计进行分析,对分析结果就设计要求进行评估,然后修正设计。这一循环过程重复进行直到所有的设计要求都满足为止。除了这两种优化方法,ANSYS 程序还提供了一系列的优化工具以提高优化过程的效率。例如,随机优化分析的迭代次数是可以指定的。随机计算结果的初始值可以作为优化过程的起点数值。基本概念在介绍优化设计过程之前,我们先给
3、出一些基本的定义:设计变量,状态变量,目标函数,合理和不合理的设计,分析文件,迭代,循环,设计序列等。我们看以下一个典型的优化设计问题:在以下的约束条件下找出如下矩形截面梁的最小重量: 总应力不超过 max max 梁的变形不超过 maxmax 梁的高度 h 不超过 h maxhhmax图 1-1 梁的优化设计示例ANSYS 高级技术分析指南 优化设计1-2设计变量(DVs)为自变量,优化结果的取得就是通过改变设计变量的数值来实现的。每个设计变量都有上下限,它定义了设计变量的变化范围。在以上的问题里,设计变量很显然为梁的宽度 b 和高度 h。b 和 h 都不可能为负值,因此其下限应为 b,h0
4、,而且,h 有上限 h max。 ANSYS 优化程序允许定义不超过 60 个设计变量。状态变量(SVs)是约束设计的数值。它们是 “因变量” ,是设计变量的函数。状态变量可能会有上下限,也可能只有单方面的限制,即只有上限或只有下限。在上述梁问题中,有两个状态变量:(总应力)和(梁的位移) 。在ANSYS 优化程序中用户可以定义不超过 100 个状态变量。目标函数是要尽量减小的数值。它必须是设计变量的函数,也就是说,改变设计变量的数值将改变目标函数的数值。在以上的问题中,梁的总重量应该是目标函数。在 ANSYS 优化程序中,只能设定一个目标函数。设计变量,状态变量和目标函数总称为优化变量。在
5、ANSYS 优化中,这些变量是由用户定义的参数来指定的。用户必须指出在参数集中哪些是设计变量,哪些是状态变量,哪是目标函数。设计序列是指确定一个特定模型的参数的集合。一般来说,设计序列是由优化变量的数值来确定的,但所有的模型参数(包括不是优化变量的参数)组成了一个设计序列。一个合理的设计是指满足所有给定的约束条件(设计变量的约束和状态变量的约束)的设计。如果其中任一约束条件不被满足,设计就被认为是不合理的。而最优设计是既满足所有的约束条件又能得到最小目标函数值的设计。 (如果所有的设计序列都是不合理的,那么最优设计是最接近于合理的设计,而不考虑目标函数的数值。 )分析文件是一个 ANSYS 的
6、命令流输入文件,包括一个完整的分析过程(前处理,求解,后处理) 。它必须包含一个参数化的模型,用参数定义模型并指出设计变量,状态变量和目标函数。由这个文件可以自动生成优化循环文件(Jobname.LOOP) ,并在优化计算中循环处理。一次循环指一个分析周期。 (可以理解为执行一次分析文件。 )最后一次循环的输出存储在文件 Jobname.OPO 中。优化迭代(或仅仅是迭代过程)是产生新的设计序列的一次或多次分析循环。一般来说,一次迭代等同于一次循环。但对于一阶方法,一次迭代代表多次循环。优化数据库记录当前的优化环境,包括优化变量定义,参数,所有优化设定,和设计序列集合。该数据库可以存储(在文件
7、 Jobname.OPT) ,也可以随时读入优化处理器中。上述的许多概念可以用图解帮助理解。图 1-2 示出了优化分析中的数据流向。分析文件必须作为一个单独的实体存在,优化数据库不是 ANSYS 模型数据库的一部分。优化设计的步骤共有两种方法实现 ANSYS 优化设计:批处理方法和通过 GUI 交互式地完成。这两种方法的选择取决于用户对于 ANSYS 程序的熟悉程度和是否习惯于图形交互方式。如果对于 ANSYS 程序的命令相当熟悉,就可以选择用命令输入整个优化文件并通过批处理方式来进行优化。对于复杂的需用大量机时的分析任务来说ANSYS 高级技术分析指南 优化设计1-3(如非线性) ,这种方法
8、更有效率。而另一方面,交互方式具有更大的灵活性,而且可以实时看到循环过程的结果。在用 GUI 方式进行优化时,首要的是要建立模型的分析文件,然后优化处理器所提供的功能都可以交互式的使用,以确定设计空间,便于后续优化处理的进行。这些初期交互式的操作可以帮助用户缩小设计空间的大小,使优化过程得到更高的效率。优化设计通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不同(批处理 GUI 方式)而有细微的差别。图 1-2 优化数据流向1 生成循环所用的分析文件。该文件必须包括整个分析的过程,而且必须满足以下条件:a 参数化建立模型(PREP7) 。b 求解(SOLUTION) 。c 提取并指定状态
9、变量和目标函数(POST1/POST26) 。2 在 ANSYS 数据库里建立与分析文件中变量相对应的参数。这一步是标准的做法, 但不是必须的(BEGIN 或 OPT) 。3 进入 OPT,指定分析文件(OPT) 。4 声明优化变量。5 选择优化工具或优化方法。6 指定优化循环控制方式。7 进行优化分析。ANSYS 高级技术分析指南 优化设计1-48 查看设计序列结果(OPT )和后处理(POST1/POST26) 。优化设计步骤的细节在下面列出。批处理方式和交互方式的区别也同时指出。第一步:生成分析文件分析文件生成是 ANSYS 优化设计过程中的关键部分。ANSYS 程序运用分析文件构造循环
10、文件,进行循环分析。分析文件中可以包括 ANSYS 提供的任意分析类型(结构,热,电磁等,线性或非线性) 。 (注:ANSYS/LS-DYNA的显式分析不能进行优化。 )在分析文件中,模型的建立必须是参数化的(通常是优化变量为参数) ,结果也必须用参数来提取(用于状态变量和目标函数) 。优化设计中只能使用数值参数。 (参数和 ANSYS 参数化设计语言( APDL)在 ANSYS Modeling and Meshing Guide 中有所细述。 )用户的任务是建立分析文件并保证其正确性。分析文件应当覆盖整个分析过程并且是简练的,不是必须的语句(如完成图形显示功能和列表功能的语句等)应当从分析
11、文件中省略掉。只有在交互过程中希望看到的显示EPLODT 等可以包含在分析文件中,或者将其定位到一个显示文件中/SHOW。请注意分析文件是要多次执行的,与优化分析本身无关的命令都会不必要的耗费机时,降低循环效率。建立分析文件有两种方法:1)用系统编辑器逐行输入;2)交互式地完成分析,将 ANSYS 的 LOG 文件作为基础建立分析文件。这两种方式各有优缺点。用系统编辑器生成分析文件同生成其他分析时的批处理文件方法是一样的。这种方法使得用户可以通过命令输入来完全地控制参数化定义。同样,本方法可以省去了删除多余命令的麻烦。但是,如果对于 ANSYS 命令集不熟悉的话,这种方法是不方便的。对于这类用
12、户来说,第二种方法相对容易一些。但是,在最后生成分析文件的过程中,ANSYS 的 LOG 文件要做较大的修改才能适合循环分析。不论采用哪种方法,分析文件需要包括的内容都是一样的。以下说明建立分析文件的步骤:A 参数化建立模型用设计变量作为参数建立模型的工作是在 PREP7 中完成的。在给出的梁的例子中,设计变量是 B(梁的宽度)和 H(梁的高度) ,因此单元的实参是由 B和 H 来表示的:/PREP7!初始化设计变量:B=2.0H=3.0!ET,1,BEAM3 !2-D 梁单元AREA=B*H !梁的横截面面积IZZ=(B*(H*3) )/12 !绕 Z 轴的转动惯量R,1, AREA,IZZ
13、,H !以设计变量表示的单元实参ANSYS 高级技术分析指南 优化设计1-5!模型的其他部分MP,EX,1,30E6 !杨氏模量N,1 !结点N,11,120FILLE,1,2 !单元EGEN,10, 1,-1FINISH !退出 PREP7前面提到,可以对设计的任何方面进行优化:尺寸,形状,材料性质,支撑位置,所加载荷等,唯一要求就是将其参数化。设计变量(例如 B 和 V)可以在程序的任何部分初始化,一般是在PREP7 中定义。这些变量的初值只是在设计计算的开始用得到,在优化循环过程中会被改变。注意:如果用 GUI 模式完成输入,可能会遇到直接用鼠标拾取(picking)的操作。有些拾取操作
14、是不允许参数化输入的。因此,应当避免在定义设计变量,状态变量和目标函数时使用这些操作,应该用可以参数化的操作来代替。B 求解求解器用于定义分析类型和分析选项,施加载荷,指定载荷步,完成有限元计算。分析中所用到的数据都要指出:凝聚法分析中的主自由度,非线性分析中的收敛准则,谐波分析中的频率范围等。载荷和边界条件也可以作为设计变量。梁的例子中,SOLUTION 部分的输入大致如下:/SOLUANTYPE,STATIC !静力分析(缺省)D,1,UX,0, ,11,10,UY !UX=UY=0,梁两端结点固定SFBEAM,ALL,1,PRES,100 !施加压力SOLVEFINISH !退出 SOL
15、UTION这一步骤不仅仅限于一次分析过程。比如,可以先进行热分析再进行应力分析(在热应力计算中) 。C 参数化提取结果在本步中,提取结果并赋值给相应的参数。这些参数一般为状态变量和目标函数。提取数据的操作用*GET 命令(Utility MenuParametersGet Scalar Data)实现。通常用 POST1 来完成本步操作,特别是涉及到数据的存储,加减或其他操作。在梁的例题中,梁的总重量是目标函数。因为重量与体积成比例(假定密度是均匀的) ,那么减小总体积就相当于减小总重量。因此可以选择总体积为目标函数。在本例中,状态变量选择为总应力和位移。这些参数可以用如下方法定义:ANSYS
16、 高级技术分析指南 优化设计1-6/POST1SET,NSORT,U,Y !以 UY 为基准对结点排序*GET,DMAX,SORT, ,MAX !参数 DMAX=最大位移!线单元的推导数值由 ETABLE 得出ETABLE,VOLU,VOLU !VOLU=每个单元的体积ETABLE,SMAX_I,NMISC,1 !SMAX_I=每个单元 I 结点处应力的最大值ETABLE,SMAX_J,NMISC,3 !SMAX_J= 每个单元 J 结点处应力的最大值!SSUM !将单元表中每列的数据相加*GET,VOLUME,SSUM, ,ITEM,VOLU!参数 VOLUME=总体积ESORT,ETAB,
17、SMAX_I, ,1 !按照单元 SMAX_I 的绝对值大小排序*GET,SMAXI,SORT, ,MAX !参数 SMAXI=SMAX_I 的最大值ESORT,ETAB,SMAX_J, ,1 !按照单元 SMAX_J 的绝对值大小排序*GET,SMAXJ,SORT , ,MAX !参数 SMAXJ=SMAX_J 的最大值SMAX=SMAXISMAXJ !参数 SMAX=最大应力值FINISH请查阅*GET 和 ETABLE 命令以得到更详细的说明。分析文件的准备到此为止,我们已经对于分析文件的基本需求做了说明。如果是用系统编辑器来编辑的批处理文件,那么简单地存盘进入第二步即可。如果是用交互方
18、式建模的话,用户必须在交互环境下生成分析文件。可以通过两种方式完成本步操作:数据库命令流文件或程序命令流文件。数据库命令流文件可以通过 LGWRITE 命令(Utility MenuFileWrite DB Log File)生成命令流文件。 LGWRITE 将数据库内部的命令流写到文件Jobname.LGW 中。内部命令流包含了生成当前模型所用的所有命令。程序命令流文件Jobname.LOG 包含了交互方式下用户输入的所有命令。如果用 Jobneme.LOG 作为分析文件时,用户必须用系统编辑器删除文件中所有不必要的命令。因为交互方式下所有的操作都记录在 LOG 文件中,编辑工作会比较烦琐。
19、而且,如果分析是在几个过程中完成的,就必须将几个 LOG 文合在一起编辑生成一个完整的分析文件。 (关于数据库命令流文件和程序命令流文件,请参看 ANSYS Operations Guide。 )注用户可以退出 ANSYS 或使用/SYS 命令来编辑分析文件。细节请参看本章“生成分析文件”一节。第二步:建立优化过程中的参数在完成了分析文件的建立以后,就可以开始优化分析了。 (如果是在系统中建立的分析文件的话,就要重新进入 ANSYS。 )如果在交互方式下进行优化ANSYS 高级技术分析指南 优化设计1-7的话,最好(但不是必须)从分析文件中建立参数到 ANSYS 数据库中来。 (在批处理方式下
20、除外。 )做这一步有两个好处。初始参数值可能作为一阶方法的起点,而且,对于各种优化过程来说,参数在数据库中可以在 GUI 下进行操作,便于定义优化变量。建立数据库参数可以选择下列任一种方法: 读入与分析文件相联的数据库文件(Jobname.DB ) 。这样可以在ANSYS 中建立整个模型的数据库。读入数据库文件可以用如下方法:Command: RESUMEGUI: Utility MenuFileResume Jobname.dbUtility MenuFileResume from 将分析文件直接读入 ANSYS 进行整个分析。这样将重新建立整个数据库,但对于大模型来说要耗费大量的机时。要读
21、入分析文件,可以选择下列方法之一:Command: /INPUTGUI: Utility MenuFileRead Input from 仅从存储的参数文件中读参数到 ANSYS 中,参数文件是用 PARSAV命令或由 Utility MenuParametersSave Parameters 存储的。读入参数可以用下列方法之一:Command: PARRESGUI: Utility MenuParametersRestore Parameters 重新定义分析文件中存在的参数。不过,这样做需要知道分析文件中定义了那些参数。用以下任一方式:Command: *SET or “=” comman
22、dGUI: Utility MenuParametersScalar Parameters可以选择使用以上任意一种方式,然后用 OPVAR 命令(菜单路径 Main MenuDesign OptDesign Variables)来指定优化变量。 (参看第四步)注在优化过程中,ANSYS 数据库不一定要同分析文件一致。模型的输入是在优化循环过程中由分析文件中自动读入的。第三步:进入 OPT,指定分析文件(OPT)以下的步骤是由 OPT 处理器来完成的。首次进入优化处理器时, ANSYS数据库中的所有参数自动作为设计序列 1。这些参数值假定是一个设计序列。进入优化处理器可以用如下方式:Comman
23、d: /OPTGUI: Main MenuDesign Opt在交互方式下,用户必须指定分析文件名。这个文件用于生成优化循环文件 Jobname.LOOP。分析文件名无缺省值,因此必须输入。指定分析文件名,可以用下列方式之一:Command: OPANLGUI: Main MenuDesign OptAssign在批处理方式下,分析文件通常是批命令流的第一部分,从文件的第一行到命令/OPT 第一次出现。在批处理方式中,缺省的分析文件名是Jobname.BAT(它是一个临时性的文件,是批处理输入文件的一个拷贝) 。因此,在批处理方式下通常不用指定分析文件名。但是,如果出于某种考虑将批文件分成两个
24、部分(一个用于分析,另一个用于整个优化分析) ,那么就必须在进入优化处理器后指定分析文件OPANL。ANSYS 高级技术分析指南 优化设计1-8注在分析文件中,/PREP7 和/OPT 命令必须出现在行的第一个非零字符处(即,不允许有诸如$等符号出现在有这些命令的行中) 。这一点在生成优化循环文件时很关键。第四步:声明优化变量下一步是声明优化变量,即指定哪些参数是设计变量,哪些参数是状态变量,哪个参数是目标函数。以上提到,允许有不超过 60 个设计变量和不超过100 个状态变量,但只能有一个目标函数。声明优化变量可以用如下的方法:Command: OPVARGUI: Main MenuDesi
25、gn OptDesign VariablesMain MenuDesign OptState VariablesMain MenuDesign OptObjective对于设计变量和状态变量可以定义最大和最小值。目标函数不需要给定范围。每一个变量都有一个公差值,这个公差值可以由用户输入,也可以选择由程序计算得出。如果用 OPVAR 命令定义的参数名不存在,ANSYS 数据库中将自动定义这个参数,并将初始值设为零。用户可以在任意时间简单地通过重新定义参数的方法来改变已经定义过的参数,也可以删除一个优化变量OPVAR,Name,DEL。这种删除操作并不真正删除这个参数,而是不将它继续作为优化变量而
26、已。 (参看“执行后修正优化变量”部分。 )第五步:选择优化工具或优化方法ANSYS 程序提供了一些优化工具和方法。缺省方法是单次循环。指定后续优化的工具和方法用下列命令:Command: OPTYPEGUI: Main MenuDesign OptMethod/Tool优化方法是使单个函数(目标函数)在控制条件下达到最小值的传统化的方法。有两种方法是可用的:零阶方法和一阶方法。除此之外,用户可以提供外部的优化算法替代 ANSYS 本身的优化方法。使用其中任何一种方法之前,必须先定义目标函数。 零阶方法(直接法):这是一个完善的零阶方法,使用所有因变量(状态变量和目标函数)的逼近。该方法是通用
27、的方法,可以有效的处理绝大多数的工程问题。 一阶方法(间接法):本方法使用偏导数,即,使用因变量的一阶偏导数。此方法精度很高,尤其是在因变量变化很大,设计空间也相对较大时。但是,消耗的机时较多。 用户提供的优化方法:外部的优化程序(USEROP)可以代替 ANSYS优化过程。优化工具是搜索和处理设计空间的技术。因为求最小值不一定是优化的最终目标,所以目标函数在使用这些优化工具时可以不指出。但是,必须要指定设计变量。下面是可用的优化工具: 单步运行:实现一次循环并求出一个 FEA 解。可以通过一系列的单次循环,每次求解前设定不同的设计变量来研究目标函数与设计变量的变化关系。ANSYS 高级技术分
28、析指南 优化设计1-9 随机搜索法:进行多次循环,每次循环设计变量随机变化。用户可以指定最大循环次数和期望合理解的数目。本工具主要用来研究整个设计空间,并为以后的优化分析提供合理解。 等步长搜索法:以一个参考设计序列为起点,本工具生成几个设计序列。它按照单一步长在每次计算后将设计变量在变化范围内加以改变。对于目标函数和状态变量的整体变化评估可以用本工具实现。 乘子计算法:是一个统计工具,用来生成由各种设计变量极限值组合的设计序列。这种技术与称之为经验设计的技术相关,后者是用二阶的整体和部分因子分析。主要目标是计算目标函数和状态变量的关系和相互影响。 最优梯度法:对用户指定的参考设计序列,本工具
29、计算目标函数和状态变量对设计变量的梯度。使用本工具可以确定局部的设计敏感性。 用户提供的优化工具:可以用外部过程(USEROP)替代 ANSYS 优化工具。用户可以通过 USEROP 过程将自己的方法和工具补充进去。更详细的解释在 ANSYS Programmers Manual 中。第六步:指定优化循环控制方式每种优化方法和工具都有相应的循环控制参数,比如最大迭代次数等。所有这些控制参数的设定都在同一个路径下:GUI:Main MenuDesign OptMethod/Tool以下列出设定控制参数的命令: 设定零阶方法的控制参数:Command: OPSUBP和Command: OPEQN
30、设定一阶方法的控制参数:Command: OPFRST 设定随机搜索法的控制参数:Command: OPRAND 设定等步长搜索法的控制参数:Command: OPSWEEP 设定乘子计算法的控制参数:Command: OPFACT 设定最优梯度法的控制参数:Command: OPGRAD 设定用户优化工具的控制参数:Command: OPUSER程序还提供了几个总体控制来设定优化过程中数据的存储方法: 指定优化数据的存储文件名(缺省为 Jobname.OPT):Command: OPDATAGUI: Main MenuDesign OptControls 用下列方法激活详细的结果输出:Com
31、mand: OPPRNTGUI: Main MenuDesign OptControls 确定最佳设计系列的数据是否存储,用下列方法(缺省是数据库和结果文件存储最后一个设计系列):ANSYS 高级技术分析指南 优化设计1-10Command: OPKEEPGUI: Main MenuDesign OptControls用户还可以控制几个循环特性,包括分析文件在循环中如何读取。可以从第一行读取(缺省) ,也可以从第一个/PREP7 出现的位置开始读取;设定为优化变量的参数可以忽略(缺省) ,也可以在循环中处理。而且,用户可以指定循环中存储哪种变量:只存储数值变量还是存储数值变量和数组变量。这个功
32、能可以在循环中控制参数的数值(包括设计变量和非设计变量) 。用下列方法设定这些循环控制特性:Command: OPLOOPGUI: Main MenuDesign OptControls注OPLOOP 命令中的 Parms 变量控制在循环中存储哪个参数。在循环中存储数值变量和数组变量的选项在一般情况下不设置,除非是数组变量在分析文件外定义,而在循环中需要保存的情况。第七步:进行优化分析所有的控制选项设定好以后,就可以进行分析了。用下列方法开始分析:Command: OPEXEGUI: Main MenuDesign OptRun在 OPEXE 执行时,优化循环文件(Jobname.LOOP)会
33、根据分析文件生成。这个循环文件对用户是透明的,并在分析循环中使用。循环在满足下列情况时终止:收敛;中断(不收敛,但最大循环次数或是最大不合理解的数目达到了) ;分析完成。如果循环是由于模型的问题(如网格划分有问题,非线性求解不收敛,与设计变量数值冲突等)中断时,优化处理器将进行下一次循环。如果是在交互方式下,程序将显示一个警告信息并询问是继续还是结束循环。如果是在批处理方式下,循环将自动继续。NCNV 命令(Main MenuSolutionNonlinearCriteria to Stop)是控制非线性分析的,在优化循环中将被忽略。中断循环的设计序列是存盘的,但参数的数据有可能非常大,不符合
34、实际情况。所有优化变量和其他参数在每次迭代后将存储在优化数据文件(Jobname.OPT)中。最多可以存储 130 组这样的序列。如果已经达到了 130 个序列,那么其中数据最“不好”的序列将被删除。对于上述梁的例子,优化部分的输入大致如下:/OPT !进入优化处理器OPANL, !分析文件名(批处理方式不需要)! 声明优化变量OPVAR,B,DV,.5,16.5 !B 和 H 为设计变量OPVAR,H,DV,.5,8OPVAR,DMAX,SV,-0.1,0 !DMAX 和 SMAX 为状态变量OPVAR,SMAX,SV,0,20000OPVAR,VOLUME,OBJ !VOLUME 为目标函
35、数!指定优化类型和控制OPTYPE,SUBP !零阶方法OPSUBP,30 !最大迭代次数ANSYS 高级技术分析指南 优化设计1-11OPEXE !开始优化循环不同的优化过程可以系列地完成。比如,可以在零阶方法的分析结束后再做等步长搜索。下面的命令对最佳设计序列做等步长搜索:OPTYPE,SWEEP !扫描评估工具OPSWEEP,BEST,5 !最佳设计序列每个设计变量 5 次评估OPEXE !开始优化循环请查阅/OPT ,OPANL,OPTYPE,OPSUBP ,OPSWEEP 和 OPEXE 命令以得到更详细的说明。第八步:查看设计序列结果优化循环结束以后,可以用本部分介绍的命令或相应的
36、 GUI 路径来查看设计序列。这些命令适用于任意优化方法和工具生成的结果。列出指定序列号的参数值:Command: OPLISTGUI: Main MenuDesign OptList可以选择列出所有参数的数值,也可以只列出优化变量。用图显示指定的参数随序列号的变化,可以看出变量是如何随迭代过程变化的。用以下方法实现:Command: PLVAROPTGUI: Main MenuDesign OptGraphs/Tables将图的 X 轴由序列号换成别的参数:Command: XVAROPTGUI: Main MenuDesign OptGraphs/Tables对于 PLVAROPT 和 P
37、RVAROPT 操作,设计序列将自动按照 XVAROPT中参数以升序排列。对于等步长,乘子和梯度工具有一些特别的查看结果的方法。对于等步长搜索,用 OPRSW 命令列出结果,用 OPLSW 命令图示结果。对于乘子工具,用 OPRFA 命令列出结果,用 OPLFA 命令图示结果。对于梯度工具,用OPRGR 命令列出结果,用 OPLGR 命令图示结果。 (相应的路径在后面对命令的详细叙述中提及。 )另一个得到优化数据的方法是用 STATUS 命令(Main MenuDesign OptStatus) 。在优化处理器中使用本命令,将得到另外一些关于当前优化任务的信息,如分析文件名,优化技术,设计序列
38、数,优化变量等。用 STATUS 命令可以方便的查看优化环境,验证需要的设定是否全部输入优化处理器。除了查看优化数据,用户可能希望用 POST1 或 POST26 对分析结果进行后处理。缺省情况下,最后一个设计序列的结果存储在文件 Jobname.RST(或.RTH 等,视分析类型而定)中。如果在循环运行前将 OPKEEP 设为 ON,最佳设计序列的数据也将存储在数据库和结果文件中。 “最佳结果”在文件Jobname.BRST(.BRTH 等)中, “最佳数据库”在文件 Jobname.BDB 中。操作设计序列查看数据以后,可能需要对其做一些操作。比如说,在随机搜索后,用户可能希望将所有的不合
39、理设计序列删除,以合理的设计序列为数据点来进行后面的优化。这里提供了几种改变设计序列的方法。下面两个命令可以删除不需要的序列:ANSYS 高级技术分析指南 优化设计1-12 用下列命令选择最佳设计序列或所有合理的序列:Command: OPSELGUI: Main MenuDesign OptSelect/Delete(所有没有用 OPSEL 命令选择的设计序列将永久地从优化数据库中删除。 ) 删除指定范围内的设计序列:Command: OPDELGUI: Main MenuDesign OptSelect/Delete对于这两个命令,剩余设计序列的原始序列号将不变。 (优化数据库可以存储 1
40、30 个设计序列。 )下列命令也可以对设计序列进行操作: 将两个现存的序列相加形成一个新的设计序列(可以有比例系数):Command: OPADDGUI: Main MenuDesign OptCombine 用当前的数值参数值(没有在分析循环中运行)生成一个新的设计序列:Command: OPMAKEGUI: Main MenuDesign OptCreate多层优化计算在很多情况下要做多于一次优化计算的分析。比如,在一次优化后没有找到需要的优化结果,或是用一种优化工具开始计算然后做随后的优化分析(例如,先进行随机搜索,然后用零阶方法) 。从第一次较少次数的循环中得到的结果可以作为修改设计空
41、间并进行以后优化分析的依据。如果用户在同一次 ANSYS 运行中执行所有的优化时,这个过程是很顺利的。在一次执行以后,简单的重新定义所有的优化输入,然后开始下一步分析。用下列命令开始下一步分析:Command: OPEXEGUI: Main MenuDesign OptRun如果在执行完一次优化以后退出了 ANSYS,可以用以后叙述的方法开始后续的分析。重新开始执行优化分析要重新开始优化分析,通过如下命令读入优化数据库文件(Jobname.OPT):Command: OPRESUGUI: Main MenuDesign OptResume数据读入后,指定优化类型,控制等,然后开始循环。 (对应
42、于数据库的分析文件必须可用以完成优化。 )用下列方法开始循环:Command: OPEXEGUI: Main MenuDesign OptRun标准的重启动大致如下:./OPTOPRESU, . !读入文件(缺省为 Jobname.OPT)OPSEL,10 !选择 10 个最佳设计OPTYPE, !指定优化工具或方法ANSYS 高级技术分析指南 优化设计1-13!指定其他优化输入OPEXE !开始优化循环请查阅/OPT ,OPRESU,OPSEL,OPTYPE 和 OPEXE 命令以得到更详细的说明。注除了优化数据,ANSYS 工作文件名将存储在优化数据库文件中(Jobname.OPT) 。因
43、此,如果优化数据文件被读入,该文件名将覆盖当前的文件名/FILNAME。在交互方式下可以用 OPRESU 命令(Main MenuDesign OptResume)读入批处理方式下生成的优化数据,这样便于交互的查看批处理优化的数据。如果在读入数据前优化数据库中有数据的话,应当首先清除优化数据库。在这个过程中,所有的设置将恢复其缺省值,所有的设计序列将被删除。用下列方式清除数据库:Command: OPCLRGUI: Main MenuDesign OptClear&Reset因为 ANSYS 数据库是不受 OPCLR 命令影响的,所以在读入一个新的优化数据库前应该清除 ANSYS 数据库。用下
44、列方法清除 ANSYS 数据库:Command: /CLEARGUI: Utility MenuFileClear&Start New与 OPRESU 命令相对应的是 OPSAVE 命令(Main MenuDesign OptSave) ,其功能是将优化数据写入指定的文件中(缺省为 Jobname.OPT) 。优化数据在每次优化循环结束的时候自动存储(见 OPDATA 命令) ,但用户也可以随时用 OPSAVE 命令存储优化数据。优化技术理解计算机程序的算法总是很有用的,尤其是在优化设计中。在这一部分中,将提供对下列方法的说明:零阶方法,一阶方法,随机搜索法,等步长搜索法,乘子计算法和最优梯度
45、法。 (更多的细节参见 ANSYS Theory Reference 第 20 章。 )零阶方法零阶方法之所以称为零阶方法是由于它只用到因变量而不用到它的偏导数。在零阶方法中有两个重要的概念:目标函数和状态变量的逼近方法,由约束的优化问题转换为非约束的优化问题。逼近方法:本方法中,程序用曲线拟合来建立目标函数和设计变量之间的关系。这是通过用几个设计变量序列计算目标函数然后求得各数据点间最小平方实现的。该结果曲线(或平面)叫做逼近。每次优化循环生成一个新的数据点,目标函数就完成一次更新。实际上是逼近被求解最小值而并非目标函数。状态变量也是同样处理的。每个状态变量都生成一个逼近并在每次循环后更新。
46、用户可以控制优化近似的逼近曲线。可以指定线性拟合,平方拟合或平方差拟合。缺省情况下,用平方差拟合目标函数,用平方拟合状态变量。用下列方法实现该控制功能:ANSYS 高级技术分析指南 优化设计1-14Command: OPEQNGUI: Main MenuDesign OptMethod/ToolOPEQN 同样可以控制设计数据点在形成逼近时如何加权;见 ANSYS Theory Reference。转换为非约束问题状态变量和设计变量的数值范围约束了设计,优化问题就成为约束的优化问题。ANSYS 程序将其转化为非约束问题,因为后者的最小化方法比前者更有效率。转换是通过对目标函数逼近加罚函数的方法
47、计入所加约束的。搜索非约束目标函数的逼近是在每次迭代中用 Sequential Unconstrained Minimization Technique(SUMT) 实现的。收敛检查在每次循环结束时都要进行收敛检查。当当前的,前面的或最佳设计是合理的而且满足下列条件之一时,问题就是收敛的: 目标函数值由最佳合理设计到当前设计的变化应小于目标函数允差。 最后两个设计之间的差值应小于目标函数允差。 从当前设计到最佳合理设计所有设计变量的变化值应小于各自的允差。 最后两个设计所有设计变量的变化值应小于各自的允差。用下列方法指定目标函数和设计变量允差:Command: OPVARGUI: Main M
48、enuDesign OptDesign VariablesMain MenuDesign OptObjective收敛并不代表实际的最小值已经得到了,只说明以上四个准则之一满足了。因此,用户必须确定当前设计优化的结果是否足够。如果不足的话,就要另外做附加的优化分析。有时候求解过程会在收敛前终止,这是因为发生下列情况之一: 指定的循环次数达到了。 连续的不合理设计达到了指定的值(OPSUBP 命令的 NINFS 域) 。缺省值为 7。零阶方法的特殊问题由于目标函数和状态变量都是使用逼近的,因此优化设计和逼近数值具有同样的精确度。下面给出了一些得到较好的逼近的建议。 对于零阶方法,优化处理器开始通过随机搜索建立状态变量和目标函数的逼近。由于是随机