ANSYS高级技术分析指南 优化设计 第一章优化设计 什么是优化设计? 优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”,指的是 种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应 力,费用等)最小。也就是说,最优设计方案就是一个最有效率的方案 设计方案的任何方面都是可以优化的,比如说:尺寸(如厚度),形状(如 过渡圆角的大小),支撑位置,制造费用,自然频率,材料特性等。实际上,所 有可以参数化的 ANSYS选项都可以作优化设计。(关于 ANSYS参数,请参看 ANSYS Modeling and Meshing Guide第十四章。) NSYS程序提供了两种优化的方法,这两种方法可以处理绝大多数的优化 问题。零阶方法是一个很完善的处理方法,可以很有效地处理大多数的工程问题。 一阶方法基于目标函数对设计变量的敏感程度,因此更加适合于精确的优化分 析 对于这两种方法, ANSYS程序提供了一系列的分析一一评估一一修正的循 环过程。就是对于初始设计进行分析,对分析结果就设计要求进行评估,然后修 正设计。这一循环过程重复进行直到所有的设计要求都满足为止 除了这两种优化方法, ANSYS程序还提供了一系列的优化工具以提高优化 过程的效率。例如,随机优化分析的迭代次数是可以指定的。随机计算结果的初 始值可以作为优化过程的起点数值 基本概念 在介绍优化设计过程之前,我们先给出一些基本的定义:设计变量,状态 变量,目标函数,合理和不合理的设计,分析文件,迭代,循环,设计序列等。 我们看以下一个典型的优化设计问题 在以下的约束条件下找出如下矩形截面梁的最小重量 ·总应力不超过σmax|≤Gmax] 梁的变形δ不超过δmax[6≤6ma] 梁的高度h不超过hmah≤hma 图1-1梁的优化设计示例 囗 设计变量(DVs)为自变量,优化结果的取得就是通过改变设计变量的数值 来实现的。每个设计变量都有上下限,它定义了设计变量的变化范围。在以上的 问题里,设计变量很显然为梁的宽度b和高度h。b和h都不可能为负值,因此 其下限应为b,h>0,而且,h有上限hmax。 ANSYS优化程序允许定义不超过60 个设计变量。 状态变量(SVs)是约束设计的数值。它们是“因变量”,是设计变量的函 数。状态变量可能会有上下限,也可能只有单方面的限制,即只有上限或只有下 限。在上述梁问题中,有两个状态变量:σ(总应力)和δ(梁的位移)。在 ANSYS
ANSYS 高级技术分析指南 优化设计 1-1 第一章 优化设计 什么是优化设计? 优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”,指的是 一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应 力,费用等)最小。也就是说,最优设计方案就是一个最有效率的方案。 设计方案的任何方面都是可以优化的,比如说:尺寸(如厚度),形状(如 过渡圆角的大小),支撑位置,制造费用,自然频率,材料特性等。实际上,所 有可以参数化的 ANSYS 选项都可以作优化设计。(关于 ANSYS 参数,请参看 ANSYS Modeling and Meshing Guide 第十四章。) ANSYS 程序提供了两种优化的方法,这两种方法可以处理绝大多数的优化 问题。零阶方法是一个很完善的处理方法,可以很有效地处理大多数的工程问题。 一阶方法基于目标函数对设计变量的敏感程度,因此更加适合于精确的优化分 析。 对于这两种方法,ANSYS 程序提供了一系列的分析——评估——修正的循 环过程。就是对于初始设计进行分析,对分析结果就设计要求进行评估,然后修 正设计。这一循环过程重复进行直到所有的设计要求都满足为止。 除了这两种优化方法,ANSYS 程序还提供了一系列的优化工具以提高优化 过程的效率。例如,随机优化分析的迭代次数是可以指定的。随机计算结果的初 始值可以作为优化过程的起点数值。 基本概念 在介绍优化设计过程之前,我们先给出一些基本的定义:设计变量,状态 变量,目标函数,合理和不合理的设计,分析文件,迭代,循环,设计序列等。 我们看以下一个典型的优化设计问题: 在以下的约束条件下找出如下矩形截面梁的最小重量: ⚫ 总应力不超过max [max] ⚫ 梁的变形不超过 max[max] ⚫ 梁的高度 h 不超过 h max[hhmax] 图 1-1 梁的优化设计示例 设计变量(DVs)为自变量,优化结果的取得就是通过改变设计变量的数值 来实现的。每个设计变量都有上下限,它定义了设计变量的变化范围。在以上的 问题里,设计变量很显然为梁的宽度 b 和高度 h。b 和 h 都不可能为负值,因此 其下限应为 b,h>0,而且,h 有上限 h max。ANSYS 优化程序允许定义不超过 60 个设计变量。 状态变量(SVs)是约束设计的数值。它们是“因变量”,是设计变量的函 数。状态变量可能会有上下限,也可能只有单方面的限制,即只有上限或只有下 限。在上述梁问题中,有两个状态变量:(总应力)和(梁的位移)。在 ANSYS
ANSYS高级技术分析指南 优化设计 优化程序中用户可以定义不超过100个状态变量 目标函数是要尽量减小的数值。它必须是设计变量的函数,也就是说,改 变设计变量的数值将改变目标函数的数值。在以上的问题中,梁的总重量应该是 目标函数。在 ANSYS优化程序中,只能设定一个目标函数 设计变量,状态变量和目标函数总称为优化变量。在 ANSYS优化中,这 些变量是由用户定义的参数来指定的。用户必须指出在参数集中哪些是设计变 量,哪些是状态变量,哪是目标函数 设计序列是指确定一个特定模型的参数的集合。一般来说,设计序列是由 优化变量的数值来确定的,但所有的模型参数(包括不是优化变量的参数)组成 了一个设计序列 个合理的设计是指满足所有给定的约束条件(设计变量的约束和状态变 量的约束)的设计。如果其中任一约束条件不被满足,设计就被认为是不合理的。 而最优设计是既满足所有的约束条件又能得到最小目标函数值的设计。(如果所 有的设计序列都是不合理的,那么最优设计是最接近于合理的设计,而不考虑目 标函数的数值。) 分析文件是一个 ANSYS的命令流输入文件,包括一个完整的分析过程(前 处理,求解,后处理)。它必须包含一个参数化的模型,用参数定义模型并指出 设计变量,状态变量和目标函数。由这个文件可以自动生成优化循环文件 ( Jobname LOOP),并在优化计算中循环处理。 次循环指一个分析周期。(可以理解为执行一次分析文件。)最后一次循 环的输出存储在文件 Jobname oPo中。优化迭代(或仅仅是迭代过程)是产生 新的设计序列的一次或多次分析循环。一般来说,一次迭代等同于一次循环。但 对于一阶方法,一次迭代代表多次循环 优化数据库记录当前的优化环境,包括优化变量定义,参数,所有优化设 定,和设计序列集合。该数据库可以存储(在文件 Jobname oPt),也可以随时 读入优化处理器中。 上述的许多概念可以用图解帮助理解。图1-2示出了优化分析中的数据流 向。分析文件必须作为一个单独的实体存在,优化数据库不是 ANSYS模型数据 库的一部分。 优化设计的步骤 共有两种方法实现 ANSYS优化设计:批处理方法和通过GU交互式地完 成。这两种方法的选择取决于用户对于 ANSYS程序的熟悉程度和是否习惯于图 形交互方式。 如果对于 ANSYS程序的命令相当熟悉,就可以选择用命令输入整个优化 文件并通过批处理方式来进行优化。对于复杂的需用大量机时的分析任务来说 (如非线性),这种方法更有效率 而另一方面,交互方式具有更大的灵活性,而且可以实时看到循环过程的 结果。在用GUⅠ方式进行优化时,首要的是要建立模型的分析文件,然后优化 处理器所提供的功能都可以交互式的使用,以确定设计空间,便于后续优化处理 的进行。这些初期交互式的操作可以帮助用户缩小设计空间的大小,使优化过程 得到更高的效率。 优化设计通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不 同(批处理GUI方式)而有细微的差别。 1-2
ANSYS 高级技术分析指南 优化设计 1-2 优化程序中用户可以定义不超过 100 个状态变量。 目标函数是要尽量减小的数值。它必须是设计变量的函数,也就是说,改 变设计变量的数值将改变目标函数的数值。在以上的问题中,梁的总重量应该是 目标函数。在 ANSYS 优化程序中,只能设定一个目标函数。 设计变量,状态变量和目标函数总称为优化变量。在 ANSYS 优化中,这 些变量是由用户定义的参数来指定的。用户必须指出在参数集中哪些是设计变 量,哪些是状态变量,哪是目标函数。 设计序列是指确定一个特定模型的参数的集合。一般来说,设计序列是由 优化变量的数值来确定的,但所有的模型参数(包括不是优化变量的参数)组成 了一个设计序列。 一个合理的设计是指满足所有给定的约束条件(设计变量的约束和状态变 量的约束)的设计。如果其中任一约束条件不被满足,设计就被认为是不合理的。 而最优设计是既满足所有的约束条件又能得到最小目标函数值的设计。(如果所 有的设计序列都是不合理的,那么最优设计是最接近于合理的设计,而不考虑目 标函数的数值。) 分析文件是一个 ANSYS 的命令流输入文件,包括一个完整的分析过程(前 处理,求解,后处理)。它必须包含一个参数化的模型,用参数定义模型并指出 设计变量,状态变量和目标函数。由这个文件可以自动生成优化循环文件 (Jobname.LOOP),并在优化计算中循环处理。 一次循环指一个分析周期。(可以理解为执行一次分析文件。)最后一次循 环的输出存储在文件 Jobname.OPO 中。优化迭代(或仅仅是迭代过程)是产生 新的设计序列的一次或多次分析循环。一般来说,一次迭代等同于一次循环。但 对于一阶方法,一次迭代代表多次循环。 优化数据库记录当前的优化环境,包括优化变量定义,参数,所有优化设 定,和设计序列集合。该数据库可以存储(在文件 Jobname.OPT),也可以随时 读入优化处理器中。 上述的许多概念可以用图解帮助理解。图 1-2 示出了优化分析中的数据流 向。分析文件必须作为一个单独的实体存在,优化数据库不是 ANSYS 模型数据 库的一部分。 优化设计的步骤 共有两种方法实现 ANSYS 优化设计:批处理方法和通过 GUI 交互式地完 成。这两种方法的选择取决于用户对于 ANSYS 程序的熟悉程度和是否习惯于图 形交互方式。 如果对于 ANSYS 程序的命令相当熟悉,就可以选择用命令输入整个优化 文件并通过批处理方式来进行优化。对于复杂的需用大量机时的分析任务来说 (如非线性),这种方法更有效率。 而另一方面,交互方式具有更大的灵活性,而且可以实时看到循环过程的 结果。在用 GUI 方式进行优化时,首要的是要建立模型的分析文件,然后优化 处理器所提供的功能都可以交互式的使用,以确定设计空间,便于后续优化处理 的进行。这些初期交互式的操作可以帮助用户缩小设计空间的大小,使优化过程 得到更高的效率。 优化设计通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不 同(批处理 GUI 方式)而有细微的差别
ANSYS高级技术分析指南 优化设计 图1-2优化数据流向 ANSYS ↓ OPEXE{ Loop File Analysis File\ OPEXE cally defined mode E Output File OPT 生成循环所用的分析文件。该文件必须包括整个分析的过程,而且 必须满足以下条件 a.参数化建立模型(PREP7)。 b.求解( SOLUTION)。 提取并指定状态变量和目标函数( POSTI/POST26) 2.在 ANSYS数据库里建立与分析文件中变量相对应的参数。这一步 是标准的做法,但不是必须的( BEGIN或OPT) 3.进入OPT,指定分析文件(OPT) 4.声明优化变量。 选择优化工具或优化方法。 6.指定优化循环控制方式。 7.进行优化分析 8.查看设计序列结果(OPT)和后处理(POST/POST26)。 优化设计步骤的细节在下面列出。批处理方式和交互方式的区别也同时 指出。 第一步:生成分析文件 分析文件生成是 ANSYS优化设计过程中的关键部分。 ANSYS程序运用分 析文件构造循环文件,进行循环分析。分析文件中可以包括 ANSYS提供的任意 分析类型(结构,热,电磁等,线性或非线性)。(注: ANSYS/LS-DYNA的显
ANSYS 高级技术分析指南 优化设计 1-3 图 1-2 优化数据流向 1. 生成循环所用的分析文件。该文件必须包括整个分析的过程,而且 必须满足以下条件: a. 参数化建立模型(PREP7)。 b. 求解(SOLUTION)。 c. 提取并指定状态变量和目标函数(POST1/POST26)。 2. 在 ANSYS 数据库里建立与分析文件中变量相对应的参数。这一步 是标准的做法, 但不是必须的(BEGIN 或 OPT)。 3. 进入 OPT,指定分析文件(OPT)。 4. 声明优化变量。 5. 选择优化工具或优化方法。 6. 指定优化循环控制方式。 7. 进行优化分析。 8. 查看设计序列结果(OPT)和后处理(POST1/POST26)。 优化设计步骤的细节在下面列出。批处理方式和交互方式的区别也同时 指出。 第一步:生成分析文件 分析文件生成是 ANSYS 优化设计过程中的关键部分。ANSYS 程序运用分 析文件构造循环文件,进行循环分析。分析文件中可以包括 ANSYS 提供的任意 分析类型(结构,热,电磁等,线性或非线性)。(注:ANSYS/LS-DYNA 的显
ANSYS高级技术分析指南 优化设计 式分析不能进行优化。) 在分析文件中,模型的建立必须是参数化的(通常是优化变量为参数),结 果也必须用参数来提取(用于状态变量和目标函数)。优化设计中只能使用数值 参数。(参数和 ANSYS参数化设计语言(APDL)在 ANSYS Modeling and Meshing guide中有所细述。) 用户的任务是建立分析文件并保证其正确性。分析文件应当覆盖整个分析 过程并且是简练的,不是必须的语句(如完成图形显示功能和列表功能的语句等) 应当从分析文件中省略掉。只有在交互过程中希望看到的显示[ EPLODT等]可以 包含在分析文件中,或者将其定位到一个显示文件中[SHOW。请注意分析文件 是要多次执行的,与优化分析本身无关的命令都会不必要的耗费机时,降低循环 效率。 建立分析文件有两种方法:1)用系统编辑器逐行输入;2)交互式地完成 分析,将 ANSYS的LOG文件作为基础建立分析文件。这两种方式各有优缺点。 用系统编辑器生成分析文件同生成其他分析时的批处理文件方法是一样 的。这种方法使得用户可以通过命令输入来完全地控制参数化定义。同样,本方 法可以省去了删除多余命令的麻烦。但是,如果对于 ANSYS命令集不熟悉的话, 这种方法是不方便的 对于这类用户来说,第二种方法相对容易一些。但是,在最后生成分析文 件的过程中, ANSYS的LOG文件要做较大的修改才能适合循环分析 不论采用哪种方法,分析文件需要包括的内容都是一样的。以下说明建立 分析文件的步骤: 参数化建立模型 用设计变量作为参数建立模型的工作是在PREP7中完成的。在给出的梁的 例子中,设计变量是B(梁的宽度)和H(梁的高度),因此单元的实参是由B 和H来表示的 PREPT !初始化设计变量 H=3.0 ETLBEAM3 !2-D梁单元 AREAB*H !梁的横截面面积 IZZ=(B*(H**3))12!绕Z轴的转动惯量 R,1, AREA, IZZ, H 以设计变量表示的单元实参 !模型的其他部分 MP, EX, 1, 30E6 !杨氏模量 !结点 N,11,120 FILL E,1,2 单 EGEN,10,1,-1
ANSYS 高级技术分析指南 优化设计 1-4 式分析不能进行优化。) 在分析文件中,模型的建立必须是参数化的(通常是优化变量为参数),结 果也必须用参数来提取(用于状态变量和目标函数)。优化设计中只能使用数值 参数。(参数和 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
ANSYS高级技术分析指南 优化设计 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来完成本步操作,特别是涉及到数据的存储,加减或其他 操作。 在梁的例题中,梁的总重量是目标函数。因为重量与体积成比例(假定密 度是均匀的),那么减小总体积就相当于减小总重量。因此可以选择总体积为目 标函数。在本例中,状态变量选择为总应力和位移。这些参数可以用如下方法定 义 /POSTI SET NSORT !以UY为基准对结点排序 *GET,DMAX,SORT,,MAX!参数DMAX=最大位移 !线单元的推导数值由 ETABLE得出 ETABLE, VOLU, VOLU !VOLU=每个单元的体积 ETABLE, SMAX I, NMISO,1! SMAX I=每个单元I结点处应力的
ANSYS 高级技术分析指南 优化设计 1-5 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 结点处应力的
ANSYS高级技术分析指南 优化设计 最大值 ETABLE, SMAX J,NMSC,3! SMAX J=每个单元J结点处应力的最 大值 SSUM !将单元表中每列的数据相加 *GET,Ⅴ OLUME,SSUM,,ITEM,ⅤOLU !参数Ⅴ OLUME=总体积 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的最大值 SMAXESMAXI>SMAXJ !参数SMAX=最大应力值 FINISH 请查阅*GET和 ETABLE命令以得到更详细的说明。 分析文件的准备 到此为止,我们已经对于分析文件的基本需求做了说明。如果是用系统编 辑器来编辑的批处理文件,那么简单地存盘进入第二步即可。如果是用交互方式 建模的话,用户必须在交互环境下生成分析文件。可以通过两种方式完成本步操 作:数据库命令流文件或程序命令流文件。 数据库命令流文件一—可以通过 LGWRITE命令( Utility Menu>Fle> Write DB Log File)生成命令流文件。 LGWRITE将数据库内部的命令流写到文件 Jobname.LGW中。内部命令流包含了生成当前模型所用的所有命令, 程序命令流文件一— Jobname.LOG包含了交互方式下用户输入的所有命 令。如果用 Jobneme LOG作为分析文件时,用户必须用系统编辑器删除文件中 所有不必要的命令。因为交互方式下所有的操作都记录在LOG文件中,编辑工 作会比较烦琐。而且,如果分析是在几个过程中完成的,就必须将几个LOG文 合在一起编辑生成一个完整的分析文件。(关于数据库命令流文件和程序命令流 文件,请参看 ANSYS Operations Guide。) 注—一用户可以退出 ANSYS或使用/SYS命令来编辑分析文件。细节请参 看本章“生成分析文件”一节。 第二步:建立优化过程中的参数 在完成了分析文件的建立以后,就可以开始优化分析了。(如果是在系统中 建立的分析文件的话,就要重新进入 ANSYS。)如果在交互方式下进行优化的话, 最好(但不是必须)从分析文件中建立参数到 ANSYS数据库中来。(在批处理 方式下除外。) 做这一步有两个好处。初始参数值可能作为一阶方法的起点,而且,对于 各种优化过程来说,参数在数据库中可以在GUI下进行操作,便于定义优化变 量。建立数据库参数可以选择下列任一种方法 读入与分析文件相联的数据库文件( Jobname DB)。这样可以在 ANSYS 中建立整个模型的数据库。读入数据库文件可以用如下方法 Command: RESUME
ANSYS 高级技术分析指南 优化设计 1-6 最大值 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 下进行操作,便于定义优化变 量。建立数据库参数可以选择下列任一种方法: ⚫ 读入与分析文件相联的数据库文件(Jobname.DB)。这样可以在 ANSYS 中建立整个模型的数据库。读入数据库文件可以用如下方法: Command: RESUME
ANSYS高级技术分析指南 优化设计 GUI: Utility Menu>File>Resume Jobname db Utility menu> File>Resume from ●将分析文件直接读入 ANSYS进行整个分析。这样将重新建立整个数据 库,但对于大模型来说要耗费大量的机时。要读入分析文件,可以选择下列方法 Command: /INPUT GUI: Utility Menu>File>Read Input from 仅从存储的参数文件中读参数到 ANSYS中,参数文件是用 PARSAV命 令或由 Utility Menu> Parameters'> Save parameters存储的。读入参数可以用下列 方法之 Command PaRES GUI: Utility Menu>Parameters>Restore Parameters ●重新定义分析文件中存在的参数。不过,这样做需要知道分析文件中定 义了那些参数。用以下任一方式 Command:* SEt or“=” command GUI: Utility Menu>Parameters>Scalar Parameters 可以选择使用以上任意一种方式,然后用 OPVAR命令(菜单路径Main Menu>Design Opt> Design variables)来指定优化变量。(参看第四步) 注——在优化过程中, ANSYS数据库不一定要同分析文件一致。模型的输 入是在优化循环过程中由分析文件中自动读入的。 第三步:进入OPT,指定分析文件(OP 以下的步骤是由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命令必须出现在行的第一个非零字 符处(即,不允许有诸如$等符号出现在有这些命令的行中)。这一点在生成优化 循环文件时很关键 第四步:声明优化变量 下一步是声明优化变量,即指定哪些参数是设计变量,哪些参数是状态变
ANSYS 高级技术分析指南 优化设计 1-7 GUI: Utility Menu>File>Resume Jobname.db Utility Menu>File>Resume from ⚫ 将分析文件直接读入 ANSYS 进行整个分析。这样将重新建立整个数据 库,但对于大模型来说要耗费大量的机时。要读入分析文件,可以选择下列方法 之一: Command: /INPUT GUI: Utility Menu>File>Read Input from ⚫ 仅从存储的参数文件中读参数到 ANSYS 中,参数文件是用 PARSAV 命 令或由 Utility Menu>Parameters>Save Parameters 存储的。读入参数可以用下列 方法之一: Command: PARRES GUI: Utility Menu>Parameters>Restore Parameters ⚫ 重新定义分析文件中存在的参数。不过,这样做需要知道分析文件中定 义了那些参数。用以下任一方式: 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 命令必须出现在行的第一个非零字 符处(即,不允许有诸如$等符号出现在有这些命令的行中)。这一点在生成优化 循环文件时很关键。 第四步:声明优化变量 下一步是声明优化变量,即指定哪些参数是设计变量,哪些参数是状态变
ANSYS高级技术分析指南 优化设计 量,哪个参数是目标函数。以上提到,允许有不超过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本身的优化方法。使用其中任何一种方法之前,必须 先定义目标函数 ●零阶方法(直接法):这是一个完善的零阶方法,使用所有因变量(状态 变量和目标函数)的逼近。该方法是通用的方法,可以有效的处理绝大多数的工 程问题。 ●一阶方法(间接法):本方法使用偏导数,即,使用因变量的一阶偏导数。 此方法精度很髙,尤其是在因变量变化很大,设计空间也相对较大时。但是,消 耗的机时较多。 ●用户提供的优化方法:外部的优化程序( USEROP)可以代替 ANSYS 优化过程。 优化工具是搜索和处理设计空间的技术。因为求最小值不一定是优化的最 终目标,所以目标函数在使用这些优化工具时可以不指出。但是,必须要指定设 计变量。下面是可用的优化工具 单步运行:实现一次循环并求出一个FEA解。可以通过一系列的单次循 环,每次求解前设定不同的设计变量来研究目标函数与设计变量的变化关系。 ●随机搜索法:进行多次循环,每次循环设计变量随机变化。用户可以指 定最大循环次数和期望合理解的数目。本工具主要用来研究整个设计空间,并为 以后的优化分析提供合理解。 等步长搜索法:以一个参考设计序列为起点,本工具生成几个设计序列。 它按照单一步长在每次计算后将设计变量在变化范围内加以改变。对于目标函数 和状态变量的整体变化评估可以用本工具实现
ANSYS 高级技术分析指南 优化设计 1-8 量,哪个参数是目标函数。以上提到,允许有不超过 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 本身的优化方法。使用其中任何一种方法之前,必须 先定义目标函数。 ⚫ 零阶方法(直接法):这是一个完善的零阶方法,使用所有因变量(状态 变量和目标函数)的逼近。该方法是通用的方法,可以有效的处理绝大多数的工 程问题。 ⚫ 一阶方法(间接法):本方法使用偏导数,即,使用因变量的一阶偏导数。 此方法精度很高,尤其是在因变量变化很大,设计空间也相对较大时。但是,消 耗的机时较多。 ⚫ 用户提供的优化方法:外部的优化程序(USEROP)可以代替 ANSYS 优化过程。 优化工具是搜索和处理设计空间的技术。因为求最小值不一定是优化的最 终目标,所以目标函数在使用这些优化工具时可以不指出。但是,必须要指定设 计变量。下面是可用的优化工具: ⚫ 单步运行:实现一次循环并求出一个 FEA 解。可以通过一系列的单次循 环,每次求解前设定不同的设计变量来研究目标函数与设计变量的变化关系。 ⚫ 随机搜索法:进行多次循环,每次循环设计变量随机变化。用户可以指 定最大循环次数和期望合理解的数目。本工具主要用来研究整个设计空间,并为 以后的优化分析提供合理解。 ⚫ 等步长搜索法:以一个参考设计序列为起点,本工具生成几个设计序列。 它按照单一步长在每次计算后将设计变量在变化范围内加以改变。对于目标函数 和状态变量的整体变化评估可以用本工具实现
ANSYS高级技术分析指南 优化设计 ●乘子计算法:是一个统计工具,用来生成由各种设计变量极限值组合的 设计序列。这种技术与称之为经验设计的技术相关,后者是用二阶的整体和部分 因子分析。主要目标是计算目标函数和状态变量的关系和相互影响。 ●最优梯度法:对用户指定的参考设计序列,本工具计算目标函数和状态 变量对设计变量的梯度。使用本工具可以确定局部的设计敏感性。 用户提供的优化工具:可以用外部过程( USEROP)替代 ANSYS优化 工具。 用户可以通过 USEROP过程将自己的方法和工具补充进去。更详细的解释 在 ANSYS Programmer' s Manual中。 第六步:指定优化循环控制方式 每种优化方法和工具都有相应的循环控制参数,比如最大迭代次数等。所 有这些控制参数的设定都在同一个路径下 GUI: Main Menu>Design Opt>Method/Tool 以下列出设定控制参数的命令: 设定零阶方法的控制参数 Command OPSUBP Command OPEQN 设定一阶方法的控制参数: Command: OPFRST 设定随机搜索法的控制参数 Command OPRAND ●设定等步长搜索法的控制参数 Command OPSWEEP ●设定乘子计算法的控制参数: Command OPFACT ●设定最优梯度法的控制参数: Command OPGRAD 设定用户优化工具的控制参数 Command: OPUSER 程序还提供了几个总体控制来设定优化过程中数据的存储方法: ●指定优化数据的存储文件名(缺省为 Jobname OPt): Command OPDATA GUI: Main Menu> Design Opt>Controls 用下列方法激活详细的结果输出: Command OPPRNT GUI: Main Menu>Design Opt>Controls ●确定最佳设计系列的数据是否存储,用下列方法(缺省是数据库和结果 文件存储最后一个设计系列): Command: OPKEEP GUI: Main Menu Design Opt>Controls 用户还可以控制几个循环特性,包括分析文件在循环中如何读取。可以从 第一行读取(缺省),也可以从第一个PREP7出现的位置开始读取:;设定为优化
ANSYS 高级技术分析指南 优化设计 1-9 ⚫ 乘子计算法:是一个统计工具,用来生成由各种设计变量极限值组合的 设计序列。这种技术与称之为经验设计的技术相关,后者是用二阶的整体和部分 因子分析。主要目标是计算目标函数和状态变量的关系和相互影响。 ⚫ 最优梯度法:对用户指定的参考设计序列,本工具计算目标函数和状态 变量对设计变量的梯度。使用本工具可以确定局部的设计敏感性。 ⚫ 用户提供的优化工具:可以用外部过程(USEROP)替代 ANSYS 优化 工具。 用户可以通过 USEROP 过程将自己的方法和工具补充进去。更详细的解释 在 ANSYS Programmer’s Manual 中。 第六步:指定优化循环控制方式 每种优化方法和工具都有相应的循环控制参数,比如最大迭代次数等。所 有这些控制参数的设定都在同一个路径下: GUI:Main Menu>Design Opt>Method/Tool 以下列出设定控制参数的命令: ⚫ 设定零阶方法的控制参数: Command: OPSUBP 和 Command: OPEQN ⚫ 设定一阶方法的控制参数: Command: OPFRST ⚫ 设定随机搜索法的控制参数: Command: OPRAND ⚫ 设定等步长搜索法的控制参数: Command: OPSWEEP ⚫ 设定乘子计算法的控制参数: Command: OPFACT ⚫ 设定最优梯度法的控制参数: Command: OPGRAD ⚫ 设定用户优化工具的控制参数: Command: OPUSER 程序还提供了几个总体控制来设定优化过程中数据的存储方法: ⚫ 指定优化数据的存储文件名(缺省为 Jobname.OPT): Command: OPDATA GUI: Main Menu>Design Opt>Controls ⚫ 用下列方法激活详细的结果输出: Command: OPPRNT GUI: Main Menu>Design Opt>Controls ⚫ 确定最佳设计系列的数据是否存储,用下列方法(缺省是数据库和结果 文件存储最后一个设计系列): Command: OPKEEP GUI: Main Menu>Design Opt>Controls 用户还可以控制几个循环特性,包括分析文件在循环中如何读取。可以从 第一行读取(缺省),也可以从第一个/PREP7 出现的位置开始读取;设定为优化
ANSYS高级技术分析指南 优化设计 变量的参数可以忽略(缺省),也可以在循环中处理。而且,用户可以指定循环 中存储哪种变量:只存储数值变量还是存储数值变量和数组变量。这个功能可以 在循环中控制参数的数值(包括设计变量和非设计变量)。用下列方法设定这些 循环控制特性: Command: OPLOOP GUI: Main Menu> Design Opt>Controls 注—— OPLOOP命令中的Pams变量控制在循环中存储哪个参数。在循环 中存储数值变量和数组变量的选项在一般情况下不设置,除非是数组变量在分析 文件外定义,而在循环中需要保存的情况。 第七步:进行优化分析 所有的控制选项设定好以后,就可以进行分析了。用下列方法开始分析: 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..8 OPⅤ ARDMAX,SV-0.1,0DMAX和SMAX为状态变量 OPVAR, SMAX, SV,0, 20000 OPVAR VOLUME OBJ ! VOLUME为目标函数 指定优化类型和控制 OPTYPE SUBP !零阶方法 OPSUBP 30 !最大迭代次数 OPEXE !开始优化循环 不同的优化过程可以系列地完成。比如,可以在零阶方法的分析结束后再 做等步长搜索。下面的命令对最佳设计序列做等步长搜索 1-10
ANSYS 高级技术分析指南 优化设计 1-10 变量的参数可以忽略(缺省),也可以在循环中处理。而且,用户可以指定循环 中存储哪种变量:只存储数值变量还是存储数值变量和数组变量。这个功能可以 在循环中控制参数的数值(包括设计变量和非设计变量)。用下列方法设定这些 循环控制特性: 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 !开始优化循环 不同的优化过程可以系列地完成。比如,可以在零阶方法的分析结束后再 做等步长搜索。下面的命令对最佳设计序列做等步长搜索: