我要加入 登录
声振论坛 返回首页

dingdongyan的个人空间 http://home.vibunion.com/?136639 [收藏] [复制] [分享] [RSS]

日志

ansys 优化设计指南

已有 1114 次阅读2011-9-14 21:35 |个人分类:ansys|

ansys高级分析技术指南——优化设计

优化设计步骤的细节在下面列出。批处理方式和交互方式的区别也同时

指出。

第一步:生成分析文件

分析文件生成是ANSYS优化设计过程中的关键部分。ANSYS程序运用分析文件构造循环文件,进行循环分析。分析文件中可以包括ANSYS提供的任意分析类型(结构,热,电磁等,线性或非线性)。(注:ANSYS/LS-DYNA的显式分析不能进行优化。)

在分析文件中,模型的建立必须是参数化的(通常是优化变量为参数),结果也必须用参数来提取(用于状态变量和目标函数)。优化设计中只能使用数值参数。(参数和ANSYS参数化设计语言(APDL)在ANSYS Modeling and Meshing Guide中有所细述。)

用户的任务是建立分析文件并保证其正确性。分析文件应当覆盖整个分析过程并且是简练的,不是必须的语句(如完成图形显示功能和列表功能的语句等)应当从分析文件中省略掉。只有在交互过程中希望看到的显示[EPLODT等]可以包含在分析文件中,或者将其定位到一个显示文件中[/SHOW]。请注意分析文件是要多次执行的,与优化分析本身无关的命令都会不必要的耗费机时,降低循环效率。

建立分析文件有两种方法:1)用系统编辑器逐行输入;2)交互式地完成分析,将ANSYS的LOG文件作为基础建立分析文件。这两种方式各有优缺点。

用系统编辑器生成分析文件同生成其他分析时的批处理文件方法是一样的。这种方法使得用户可以通过命令输入来完全地控制参数化定义。同样,本方法可以省去了删除多余命令的麻烦。但是,如果对于ANSYS命令集不熟悉的话,这种方法是不方便的。

对于这类用户来说,第二种方法相对容易一些。但是,在最后生成分析文件的过程中,ANSYS的LOG文件要做较大的修改才能适合循环分析。

不论采用哪种方法,分析文件需要包括的内容都是一样的。以下说明建立分析文件的步骤:

 

A.         参数化建立模型

    用设计变量作为参数建立模型的工作是在PREP7中完成的。在给出的梁的例子中,设计变量是B(梁的宽度)和H(梁的高度),因此单元的实参是由B和H来表示的:

/PREP7

!初始化设计变量:

B=2.0

H=3.0

ET,1,BEAM3             !2-D梁单元

AREA=B*H              !梁的横截面面积

IZZ=(B*(H**3))/12    !绕Z轴的转动惯量

R,1,AREA,IZZ,H    !以设计变量表示的单元实参

!模型的其他部分

MP,EX,1,30E6       !杨氏模量

N,1                   !结点

N,11,120

FILL

E,1,2                !单元

EGEN,10,1,-1

FINISH                 !退出PREP7

前面提到,可以对设计的任何方面进行优化:尺寸,形状,材料性质,支撑位置,所加载荷等,唯一要求就是将其参数化。

设计变量(例如B和V)可以在程序的任何部分初始化,一般是在PREP7中定义。这些变量的初值只是在设计计算的开始用得到,在优化循环过程中会被改变。

注意:如果用GUI模式完成输入,可能会遇到直接用鼠标拾取(picking)的操作。有些拾取操作是不允许参数化输入的。因此,应当避免在定义设计变量,状态变量和目标函数时使用这些操作,应该用可以参数化的操作来代替。

 

B.         求解

求解器用于定义分析类型和分析选项,施加载荷,指定载荷步,完成有限元计算。分析中所用到的数据都要指出:凝聚法分析中的主自由度,非线性分析中的收敛准则,谐波分析中的频率范围等。载荷和边界条件也可以作为设计变量。

梁的例子中,SOLUTION部分的输入大致如下:

/SOLU

ANTYPE,STATIC                !静力分析(缺省)

D,1,UX,0,,11,10,UY     !UX=UY=0,梁两端结点固定

SFBEAM,ALL,1,PRES,100  !施加压力

SOLVE

FINISH                        !退出SOLUTION

这一步骤不仅仅限于一次分析过程。比如,可以先进行热分析再进行应力分析(在热应力计算中)。

 

C.         参数化提取结果

在本步中,提取结果并赋值给相应的参数。这些参数一般为状态变量和目标函数。提取数据的操作用*GET命令(Utility Menu>Parameters>Get Scalar Data)实现。通常用POST1来完成本步操作,特别是涉及到数据的存储,加减或其他操作。

在梁的例题中,梁的总重量是目标函数。因为重量与体积成比例(假定密度是均匀的),那么减小总体积就相当于减小总重量。因此可以选择总体积为目标函数。在本例中,状态变量选择为总应力和位移。这些参数可以用如下方法定义:

/POST1

SET,…

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,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=SMAXI>SMAXJ        !参数SMAX=最大应力值

FINISH

请查阅*GET和ETABLE命令以得到更详细的说明。

 

分析文件的准备

到此为止,我们已经对于分析文件的基本需求做了说明。如果是用系统编辑器来编辑的批处理文件,那么简单地存盘进入第二步即可。如果是用交互方式建模的话,用户必须在交互环境下生成分析文件。可以通过两种方式完成本步操作:数据库命令流文件或程序命令流文件。

数据库命令流文件——可以通过LGWRITE命令(Utility Menu>File>Write DB Log File)生成命令流文件。LGWRITE将数据库内部的命令流写到文件Jobname.LGW中。内部命令流包含了生成当前模型所用的所有命令。

程序命令流文件——Jobname.LOG包含了交互方式下用户输入的所有命令。如果用Jobneme.LOG作为分析文件时,用户必须用系统编辑器删除文件中所有不必要的命令。因为交互方式下所有的操作都记录在LOG文件中,编辑工作会比较烦琐。而且,如果分析是在几个过程中完成的,就必须将几个LOG文合在一起编辑生成一个完整的分析文件。(关于数据库命令流文件和程序命令流文件,请参看ANSYS Operations Guide。)

注——用户可以退出ANSYS或使用/SYS命令来编辑分析文件。细节请参看本章“生成分析文件”一节。

 

第二步:建立优化过程中的参数

在完成了分析文件的建立以后,就可以开始优化分析了。(如果是在系统中建立的分析文件的话,就要重新进入ANSYS。)如果在交互方式下进行优化的话,最好(但不是必须)从分析文件中建立参数到ANSYS数据库中来。(在批处理方式下除外。)

做这一步有两个好处。初始参数值可能作为一阶方法的起点,而且,对于各种优化过程来说,参数在数据库中可以在GUI下进行操作,便于定义优化变量。建立数据库参数可以选择下列任一种方法:

l   读入与分析文件相联的数据库文件(Jobname.DB)。这样可以在ANSYS中建立整个模型的数据库。读入数据库文件可以用如下方法:

Command: RESUME

GUI: Utility Menu>File>Resume Jobname.db

Utility Menu>File>Resume from

l   将分析文件直接读入ANSYS进行整个分析。这样将重新建立整个数据库,但对于大模型来说要耗费大量的机时。要读入分析文件,可以选择下列方法之一:

Command: /INPUT

GUI: Utility Menu>File>Read Input from

l   仅从存储的参数文件中读参数到ANSYS中,参数文件是用PARSAV命令或由Utility Menu>Parameters>Save Parameters 存储的。读入参数可以用下列方法之一:

Command: PARRES

GUI: Utility Menu>Parameters>Restore Parameters

l   重新定义分析文件中存在的参数。不过,这样做需要知道分析文件中定义了那些参数。用以下任一方式:

Command: *SET or “=” command

GUI: Utility Menu>Parameters>Scalar Parameters

可以选择使用以上任意一种方式,然后用OPVAR命令(菜单路径Main Menu>Design Opt>Design Variables)来指定优化变量。(参看第四步)

注——在优化过程中,ANSYS数据库不一定要同分析文件一致。模型的输入是在优化循环过程中由分析文件中自动读入的。

 

第三步:进入OPT,指定分析文件(OPT

以下的步骤是由OPT处理器来完成的。首次进入优化处理器时,ANSYS数据库中的所有参数自动作为设计序列1。这些参数值假定是一个设计序列。进入优化处理器可以用如下方式:

Command: /OPT

GUI: Main Menu>Design Opt

在交互方式下,用户必须指定分析文件名。这个文件用于生成优化循环文件Jobname.LOOP。分析文件名无缺省值,因此必须输入。指定分析文件名,可以用下列方式之一:

Command: OPANL

GUI: Main Menu>Design Opt>Assign

在批处理方式下,分析文件通常是批命令流的第一部分,从文件的第一行到命令/OPT第一次出现。在批处理方式中,缺省的分析文件名是Jobname.BAT(它是一个临时性的文件,是批处理输入文件的一个拷贝)。因此,在批处理方式下通常不用指定分析文件名。但是,如果出于某种考虑将批文件分成两个部分(一个用于分析,另一个用于整个优化分析),那么就必须在进入优化处理器后指定分析文件[OPANL]。

注——在分析文件中,/PREP7和/OPT命令必须出现在行的第一个非零字符处(即,不允许有诸如$等符号出现在有这些命令的行中)。这一点在生成优化循环文件时很关键。

 

第四步:声明优化变量

下一步是声明优化变量,即指定哪些参数是设计变量,哪些参数是状态变量,哪个参数是目标函数。以上提到,允许有不超过60个设计变量和不超过100个状态变量,但只能有一个目标函数。声明优化变量可以用如下的方法:

Command: OPVAR

GUI: Main Menu>Design Opt>Design Variables

    Main Menu>Design Opt>State Variables

    Main Menu>Design Opt>Objective

对于设计变量和状态变量可以定义最大和最小值。目标函数不需要给定范围。每一个变量都有一个公差值,这个公差值可以由用户输入,也可以选择由程序计算得出。

如果用OPVAR命令定义的参数名不存在,ANSYS数据库中将自动定义这个参数,并将初始值设为零。

用户可以在任意时间简单地通过重新定义参数的方法来改变已经定义过的参数,也可以删除一个优化变量[OPVAR,Name,DEL]。这种删除操作并不真正删除这个参数,而是不将它继续作为优化变量而已。(参看“执行后修正优化变量”部分。)

 

第五步:选择优化工具或优化方法

ANSYS程序提供了一些优化工具和方法。缺省方法是单次循环。指定后续优化的工具和方法用下列命令:

Command: OPTYPE

GUI: Main Menu>Design Opt>Method/Tool

优化方法是使单个函数(目标函数)在控制条件下达到最小值的传统化的方法。有两种方法是可用的:零阶方法和一阶方法。除此之外,用户可以提供外部的优化算法替代ANSYS本身的优化方法。使用其中任何一种方法之前,必须先定义目标函数。

l   零阶方法(直接法):这是一个完善的零阶方法,使用所有因变量(状态变量和目标函数)的逼近。该方法是通用的方法,可以有效的处理绝大多数的工程问题。

l   一阶方法(间接法):本方法使用偏导数,即,使用因变量的一阶偏导数。此方法精度很高,尤其是在因变量变化很大,设计空间也相对较大时。但是,消耗的机时较多。

l   用户提供的优化方法:外部的优化程序(USEROP)可以代替ANSYS优化过程。

优化工具是搜索和处理设计空间的技术。因为求最小值不一定是优化的最终目标,所以目标函数在使用这些优化工具时可以不指出。但是,必须要指定设计变量。下面是可用的优化工具:

l   单步运行:实现一次循环并求出一个FEA解。可以通过一系列的单次循环,每次求解前设定不同的设计变量来研究目标函数与设计变量的变化关系。

l   随机搜索法:进行多次循环,每次循环设计变量随机变化。用户可以指定最大循环次数和期望合理解的数目。本工具主要用来研究整个设计空间,并为以后的优化分析提供合理解。

l   等步长搜索法:以一个参考设计序列为起点,本工具生成几个设计序列。它按照单一步长在每次计算后将设计变量在变化范围内加以改变。对于目标函数和状态变量的整体变化评估可以用本工具实现。

l   乘子计算法:是一个统计工具,用来生成由各种设计变量极限值组合的设计序列。这种技术与称之为经验设计的技术相关,后者是用二阶的整体和部分因子分析。主要目标是计算目标函数和状态变量的关系和相互影响。

l   最优梯度法:对用户指定的参考设计序列,本工具计算目标函数和状态变量对设计变量的梯度。使用本工具可以确定局部的设计敏感性。

l   用户提供的优化工具:可以用外部过程(USEROP)替代ANSYS优化工具。

用户可以通过USEROP过程将自己的方法和工具补充进去。更详细的解释在ANSYS Programmer’s Manual中。

 

第六步:指定优化循环控制方式

每种优化方法和工具都有相应的循环控制参数,比如最大迭代次数等。所有这些控制参数的设定都在同一个路径下:

GUI:Main Menu>Design Opt>Method/Tool

以下列出设定控制参数的命令:

l   设定零阶方法的控制参数:

Command: OPSUBP

Command: OPEQN

l   设定一阶方法的控制参数:

Command: OPFRST

l   设定随机搜索法的控制参数:

Command: OPRAND

l   设定等步长搜索法的控制参数:

Command: OPSWEEP

l   设定乘子计算法的控制参数:

Command: OPFACT

l   设定最优梯度法的控制参数:

Command: OPGRAD

l   设定用户优化工具的控制参数:

Command: OPUSER

程序还提供了几个总体控制来设定优化过程中数据的存储方法:

l   指定优化数据的存储文件名(缺省为Jobname.OPT):

Command: OPDATA

GUI: Main Menu>Design Opt>Controls

l   用下列方法激活详细的结果输出:

Command: OPPRNT

GUI: Main Menu>Design Opt>Controls

l   确定最佳设计系列的数据是否存储,用下列方法(缺省是数据库和结果文件存储最后一个设计系列):

Command: OPKEEP

GUI: Main Menu>Design Opt>Controls

用户还可以控制几个循环特性,包括分析文件在循环中如何读取。可以从第一行读取(缺省),也可以从第一个/PREP7出现的位置开始读取;设定为优化变量的参数可以忽略(缺省),也可以在循环中处理。而且,用户可以指定循环中存储哪种变量:只存储数值变量还是存储数值变量和数组变量。这个功能可以在循环中控制参数的数值(包括设计变量和非设计变量)。用下列方法设定这些循环控制特性:

    Command: OPLOOP

    GUI: Main Menu>Design Opt>Controls

注——OPLOOP命令中的Parms变量控制在循环中存储哪个参数。在循环中存储数值变量和数组变量的选项在一般情况下不设置,除非是数组变量在分析文件外定义,而在循环中需要保存的情况。

 

第七步:进行优化分析

所有的控制选项设定好以后,就可以进行分析了。用下列方法开始分析:

    Command: OPEXE

    GUI: Main Menu>Design Opt>Run

在OPEXE执行时,优化循环文件(Jobname.LOOP)会根据分析文件生成。这个循环文件对用户是透明的,并在分析循环中使用。循环在满足下列情况时终止:收敛;中断(不收敛,但最大循环次数或是最大不合理解的数目达到了);分析完成。

如果循环是由于模型的问题(如网格划分有问题,非线性求解不收敛,与设计变量数值冲突等)中断时,优化处理器将进行下一次循环。如果是在交互方式下,程序将显示一个警告信息并询问是继续还是结束循环。如果是在批处理方式下,循环将自动继续。NCNV命令(Main Menu>Solution>Nonlinear>Criteria to Stop)是控制非线性分析的,在优化循环中将被忽略。中断循环的设计序列是存盘的,但参数的数据有可能非常大,不符合实际情况。

所有优化变量和其他参数在每次迭代后将存储在优化数据文件(Jobname.OPT)中。最多可以存储130组这样的序列。如果已经达到了130个序列,那么其中数据最“不好”的序列将被删除。

对于上述梁的例子,优化部分的输入大致如下:

/OPT                       !进入优化处理器

OPANL,…                  !分析文件名(批处理方式不需要)

!

! 声明优化变量

OPVAR,B,DV,.5,16.5         !B和H为设计变量

OPVAR,H,DV,.5,8

OPVAR,DMAX,SV,-0.1,0     !DMAX和SMAX为状态变量

OPVAR,SMAX,SV,0,20000

OPVAR,VOLUME,OBJ      !VOLUME为目标函数

!

!指定优化类型和控制

OPTYPE,SUBP            !零阶方法

OPSUBP,30               !最大迭代次数

OPEXE                   !开始优化循环

不同的优化过程可以系列地完成。比如,可以在零阶方法的分析结束后再做等步长搜索。下面的命令对最佳设计序列做等步长搜索:

OPTYPE,SWEEP         !扫描评估工具

OPSWEEP,BEST,5        !最佳设计序列每个设计变量5次评估

OPEXE                 !开始优化循环

请查阅/OPT,OPANL,OPTYPE,OPSUBP,OPSWEEP和OPEXE命令以得到更详细的说明。

 

第八步:查看设计序列结果

优化循环结束以后,可以用本部分介绍的命令或相应的GUI路径来查看设计序列。这些命令适用于任意优化方法和工具生成的结果。

列出指定序列号的参数值:

    Command: OPLIST

    GUI: Main Menu>Design Opt>List

可以选择列出所有参数的数值,也可以只列出优化变量。

用图显示指定的参数随序列号的变化,可以看出变量是如何随迭代过程变化的。用以下方法实现:

    Command: PLVAROPT

    GUI: Main Menu>Design Opt>Graphs/Tables

将图的X轴由序列号换成别的参数:

    Command: XVAROPT

    GUI: Main Menu>Design Opt>Graphs/Tables

对于PLVAROPT和PRVAROPT操作,设计序列将自动按照XVAROPT中参数以升序排列。

对于等步长,乘子和梯度工具有一些特别的查看结果的方法。对于等步长搜索,用OPRSW命令列出结果,用OPLSW命令图示结果。对于乘子工具,用OPRFA命令列出结果,用OPLFA命令图示结果。对于梯度工具,用OPRGR命令列出结果,用OPLGR命令图示结果。(相应的路径在后面对命令的详细叙述中提及。)

另一个得到优化数据的方法是用STATUS命令(Main Menu>Design Opt>Status)。在优化处理器中使用本命令,将得到另外一些关于当前优化任务的信息,如分析文件名,优化技术,设计序列数,优化变量等。用STATUS命令可以方便的查看优化环境,验证需要的设定是否全部输入优化处理器。

除了查看优化数据,用户可能希望用POST1或POST26对分析结果进行后处理。缺省情况下,最后一个设计序列的结果存储在文件 Jobname.RST(或.RTH等,视分析类型而定)中。如果在循环运行前将OPKEEP设为ON,最佳设计序列的数据也将存储在数据库和结果文件中。“最佳结果”在文件Jobname.BRST(.BRTH等)中,“最佳数据库”在文件Jobname.BDB中。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 我要加入

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-2 23:36 , Processed in 0.040974 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部