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 结点处应力的