介绍
本教程的目的是介绍一种利用ANSYS解决设计优化问题的方法。这将涉及使用所有变量的参数创建几何图形,决定将哪些变量用作设计、状态和目标变量,并为问题设置正确的公差,以便在最短的时间内获得精确收敛的解。本教程还将介绍如何使用硬点在直线中间应用力/约束。
梁的作用力为1000N,如下所示。该优化问题的目的是在不超过容许应力的情况下使梁的重量最小化。为了使梁的重量最小化,有必要求出梁的横截面尺寸。但梁的宽度和高度不能小于10mm。梁中任何地方的最大应力不得超过200 MPa。横梁由弹性模量为200 GPa的钢制成。
预处理:定义问题
1、给例子一个标题
Utility Menu > File > Change Title ...
/title, Design Optimization
2、输入变量的初始估计值
为了解决ANSYS中的优化问题,需要为所有设计变量定义参数。
{ 选择:工具菜单>参数>标量参数Utility Menu > Parameters > Scalar Parameters
{ 在出现的窗口中(如下所示),在“选择”部分键入W=20
{ 单击“Accept”。“标量参数”窗口将保持打开状态。
{ 现在在“Selection”部分输入H=20
{ 单击“Accep”
{ 在“标量参数Scalar Parameters”窗口中单击“关闭”。
注:ANSYS中定义的变量不允许有负值。
3、定义关键点
Preprocessor > Modeling > Create > Keypoints > In Active CS
K、 #,x,y
我们将为该梁定义两个关键点,如下表所示:
4、创建线条
Preprocessor > Modeling > Create > Lines > Lines > In Active Coord
L、 1,2
创建连接关键点1和2的线
5、创建硬关键点
当需要在不存在关键点的位置应用约束或加载时,通常使用硬点。在这种情况下,我们要对梁施加3/4的力。因为这里没有任何关键点,而且我们不能确定其中一个节点会在这里,所以我们需要指定一个硬点
{ 选择“预处理器”>“建模”>“创建”>“关键点”>“在线硬点”>“按比率硬点”
Preprocessor > Modeling > Create > Keypoints > Hard PT on line > Hard PT by ratio。
这将允许我们通过定义点位置的比率在线路上创建一个硬点以线的大小
{ 提示时选择行
{ 在出现的“按比率创建硬盘Create HardPT by Ratio”窗口中输入0.75的比率。
现在,您已经在梁的下方创建了一个标记为“keypoint 3”3/4的关键点。
6、定义单元类型
Preprocessor > Element Type > Add/Edit/Delete
对于这个问题,我们将使用BEAM3(梁2D弹性)单元。此单元有3个自由度(沿X和Y轴平移,绕Z轴旋转)。
7、定义实常数
Preprocessor > Real Constants... > Add
在“BEAM3的实常数Real Constants for BEAM3”窗口中,输入以下几何属性:(注意
“**”代替“^”表示指数)
i、 横截面积:W*H
ii、面积惯性矩IZZ:(W*H**3)/12
iii、沿Y轴厚度:H
注:使用自变量来定义因变量(如转动惯量)是很重要的。在优化过程中,每次迭代的宽度和高度都会发生变化。因此,必须根据宽度和高度定义其他变量。
8、定义单元材质属性
预处理器>材质属性>材质模型>结构>线性>弹性>各向同性
Preprocessor > Material Props > Material Models > Structural > Linear > Elastic > Isotropic
在出现的窗口中,输入以下钢的几何特性:
i、 杨氏模量EX:200000
ii、泊松比PRXY:0.3
9、定义网格大小
Preprocessor > Meshing > Size Cntrls > ManualSize > Lines > All Lines
对于本例,我们将指定单元边缘长度为100 mm(沿直线10个单元划分)。
10将框架网格化
预处理程序>网格>网格>线>单击“全部拾取”
Preprocessor > Meshing > Mesh > Lines > click 'Pick All'
LMESH,All
解决方案阶段:分配荷载和求解
1、定义分析类型
解决方案>分析类型>新建分析>静态
Solution > Analysis Type > New Analysis > Static
ANTYPE,0
2、应用约束
解决方案>定义载荷>应用>结构>位移>关键点
Solution > Define Loads > Apply > Structural > Displacement > On Keypoints
锁定关键点1(即UX、UY约束)并在Y方向约束关键点2。
3、施加荷载
解决方案>定义载荷>应用>结构>力/力矩>在关键点上
Solution > Define Loads > Apply > Structural > Force/Moment > On Keypoints
在关键点3处应用-2000N的垂直(FY)点载荷
应用的载荷和约束现在应该如下图所示。
4、解决系统问题
Solution > Solve > Current LS SOLVE
后处理:查看结果
提取信息作为参数:
为了进行优化,我们必须提取所需的信息。
在这个问题中,我们希望找出梁和体积中的最大应力,作为宽度和高度变量的结果。
1、定义体积
{ 选择General Postproc > Element Table > Define Table... > Add
{ 将出现以下窗口。如图所示填充,以获得梁的体积。
请注意,这是每个单元的体积。如果你要列出单元表,你会得到每个单元的体积。因此,必须将图元值相加,才能获得梁的总体积。请按照以下说明进行操作。
{ 选择General Postproc > Element Table > Sum of Each Item.
{ 将出现一个小窗口,通知您将计算每个单元表的表格式和。单击“确定”
您将获得一个窗口,通知您EVolume现在是400000 mm2
2、将数据(卷)存储为参数
{ 选择Utility Menu > Parameters > Get Scalar Data
{ 在出现的窗口中,选择“Results Data”和“Elem table sums”
{ 将出现以下窗口。选择显示的项目以将体积存储为参数。
现在,如果您查看参数((Utility Menu > Parameters > Scalar Parameters.),您将看到卷已添加。
3 、定义梁中每个构件的i节点处的最大应力
{ 选择General Postproc > Element Table > Define Table... > Add
{ 将出现以下窗口。如图所示填充,以获得
每个单元并将其存储为“SMAX_I”。
注意nmisc,1是最大应力。有关详细信息,请在命令行中键入Help beam3
现在我们需要对应力进行降序排序,找出最大应力
{ 选择General Postproc>List Results>Sorted Listing>Sort Elems
{ 完成如下所示的窗口,按降序对“SMAX_I”中的数据进行排序
4、将数据(最大应力)存储为参数
{ 选择 Utility Menu > Parameters > Get Scalar Data
{ 在出现的窗口中,选择“Results Data”和“Other operations”
在出现的窗口中,按所示填充以获得最大值。
5、定义梁的每个构件j节点处的最大应力
{ 选择General Postproc > Element Table > Define Table... > Add
{ 如前所述填写此表,但进行以下更改:
„ 将数据保存为“SMAX_J”(代替“SMAX_I”)
„ 单元表数据输入NMISC,3(代替NMISC,1)。这将得到j节点处的最大应力。
{ 选择General Postproc>List Results>Sorted Listing>Sort Elems以降序对应力进行排序。
{ 但是,在项目、组件选择框中选择“SMAX_J”
6、将数据(最大应力)存储为参数
{ 选择Utility Menu > Parameters > Get Scalar Data
{ 在出现的窗口中,选择“结果数据”和“其他操作”
{ 在出现的中,按照前面所示填充它,但是,将参数命名为“SMaxJ”。
7、选择SMAXJ和SMAXI中最大的一个
{ 在命令行中键入SMAX=SMAXI>SMAXJ
这将把2个值中的最大值设置为SMAX。在这种情况下,每种方法的最大值都是相同的。然而,情况并非总是如此。
8、查看参数化数据
Utility Menu > Parameters > Scalar Parameters
注意最大应力为281.25,远大于允许应力200MPa
设计优化
现在我们已经根据我们的初始宽度和高度尺寸在ANSYS中参数化地设置了问题,现在我们可以解决优化问题了。
1、写入命令文件
有必要将我们的问题大纲写入ANSYS命令文件。这使得ANSYS可以基于我们将定义的变量的不同值迭代运行我们的问题的解决方案。
{ 选择实用程序菜单>文件>写入数据库日志文件Utility Menu > File > Write DB Log File
{ 在出现的窗口中,键入命令文件的名称,例如optimize.txt,单击“OK”。
如果你在一个类似于记事本的文件编辑器中打开它:
在开始优化之前,需要对此文件进行一些小的更改。如果您使用命令行代码创建了几何图形等,则大部分更改都已经完成。但是,如果你在这里用图形设备创建图形文件。因此,需要输入所选的实际项目。代码“P51X”表示图形选择。要修改文件,只需使用记事本打开文件并进行必要的更改。完成所有必需的更改后,保存并关闭文件。以下是需要对此文件(使用GUI方法创建的)进行的更改的列表
{ Line 32 - DK,P51X, ,0, ,0,UX,UY, , , , ,
将其更改为: DK,1, ,0, ,0,UX,UY,
这将指定关键点1处的约束
{ Line 37 - DK,P51X, ,0, ,0,UY, , , , , ,
改为:DK,2, ,0, ,0,UY,
这将指定关键点2处的约束
{ Line 42 - FK,P51X,FY,-2000
改为:FK,3,FY,-2000
这将指定施加在梁上的力
还有几行可以从这个文件中删除。如果熟悉命令行编码,应该删除确定不需要的行。
2、将命令文件分配给优化
{ 选择主菜单>设计选项>分析文件>分配Main Menu > Design Opt > Analysis File > Assign
{ 在出现的文件列表中,选择编写命令文件时创建的文件名。单击“OK”。
3、定义变量和公差
ANSYS需要知道哪些变量对优化至关重要。为了定义变量,我们需要知道哪些变量对要最小化的变量有影响。在这个例子中,我们的目标是最小化与梁的重量直接相关的梁的体积。
ANSYS将设计优化的三种变量分类:
设计变量(DVs)
直接影响设计目标的独立变量。在本例中,梁的宽度和高度为DVs。改变任何一个变量都会直接影响问题的解决。
状态变量(SVs)
因变量的改变而改变的因变量。这些变量是约束设计所必需的。在本例中,SV是梁中的最大应力。如果没有这个SV,我们的优化将继续,直到宽度和高度都为零。这将使权重最小化到零,这不是一个有用的结果。
目标变量(OV)
目标变量是优化中需要最小化的一个变量。在我们的问题中,我们将最小化光束的体积。
注:如前所述,ANSYS中定义的变量不允许有负值。
既然我们已经决定了我们的设计变量,我们需要为每个变量定义范围和公差。对于宽度和高度,我们将分别选择10到50 mm的范围。因为宽度或高度的微小变化会对梁的体积产生深远影响,因此我们将选择0.01mm的公差。公差是必要的,因为它们告诉ANSYS在问题收敛之前变量可以经历的最大变化量。
对于应力变量,我们将选择195至200MPa的范围,公差为0.01MPa。
因为体积变量是目标变量,我们不需要定义一个允许的范围。我们将公差设置为200m3。之所以选择该公差,是因为它明显小于400000m3(20mm×20mm×1000mm)的初始体积。
a、 梁的高度和宽度(定义设计变量)
„ 选择Main Menu > Design Opt > Design Variables... > Add
„ 完成如下所示的窗口,以指定梁的高度。
„ 重复上述步骤以指定梁宽度的可变限制(与高度规范相同)
b、 定义状态变量
·选择Main Menu > Design Opt > State Variables... > Add
·在窗口中填写以下部分
„ 在“参数名称”部分选择“SMAX”。
„ 输入:下限(MIN=195)
„ 上限(MAX=200)
„ 可行性公差Feasibility Tolerance(TOLER=0.001)
c、 定义目标变量
„ 选择Main Menu > Design Opt > Objective
„ 在“参数名称Parameter Name”部分选择“卷VOLUME”。
„ 在“收敛公差Convergence Tolerance”下,输入200。
4、定义优化方法
ANSYS可以使用几种不同的方法来解决优化问题。为了确保您不会在局部最小值处找到解决方案,建议使用不同的解决方法。如果你在使一个特定的问题收敛时遇到困难,最好尝试另一种解决方法,看看可能出了什么问题。
对于这个问题,我们将使用一阶解的方法。
{ 选择Main Menu > Design Opt > Method / Tool
{ 在“指定优化方法Specify Optimization Method”窗口中选择“第一顺序”
{ 单击“OK”
{ 输入:最大迭代次数(NITR=30),步长大小百分比=100,正向差异百分比DELTA=0.2{单击“OK”。
注:以上变量的意义解释如下:
NITR:最大迭代次数。默认为10。
SIZE:%应用于每个行搜索步骤的大小。默认为100%
DELTA:应用于用于计算梯度的设计变量范围的正向差(%)。默认为2%
5、运行优化
{ 选择Main Menu > Design Opt > Run
{ 在“开始执行运行Begin Execution of Run”窗口中,确认分析文件、方法/类型和最大迭代次数是否正确。{单击“OK”。
优化问题的求解在收敛之前可能需要一段时间。这个问题需要大约15分钟的时间,并且要经过19次迭代。
查看结果
1、查看最终参数
Utility Menu > Parameters > Scalar Parameters
看到宽度=13.24mm,高度=29.16mm,应力等于199.83MPa,体积为386100mm2
2、在求解过程中查看每个变量的图形结果
{ 选择Main Menu > Design Opt > Design Sets > Graphs / Tables
{ 完成如图所示的窗口,以获得梁的高度和宽度随每次迭代而变化的图形
A、 对于“X-variable parameter”,请选择“Set number”。
B、 对于“Y变量参数”,选择“H”和“W”。
C、 确保选择了“Graph”(与“List”相对)
现在为X和Y轴指定标题
{ 选择Utility Menu > Plot Ctrls > Style > Graphs > Modify Axes
{ 在窗口中,为“X轴标签”部分输入“迭代次数”。{为“Y轴标签”输入“宽度和高度(mm)”。
{ 单击“OK”
{ 选择Utility Menu > PlotCtrls
在图形窗口中,您将看到整个优化过程中的宽度和高度图形。可以通过选择Utility Menu > PlotCtrls > Hard Copy
您可以按照上述步骤绘制设计中其他变量的图形。不要对y轴标签和变量使用宽度和高度,而是使用任何需要的变量来绘制。
或者,您可以通过选择Main Menu > Design Opt > Design Sets > List,列出数据。此外,所有的结果数据(即应力、位移、弯矩)可从一般的后处理菜单中获得。
解决方案的命令文件模式
利用ANSYS的图形用户界面(GUI)对上述实例进行了求解。此问题也已使用您可能要浏览的解决。打开文件并将其保存到计算机。
***重要点***
运行此代码之前,请选择 Main Menu > Design Opt > Opt Database > Clear & Reset以清除优化数据库。然后选择Utility Menu > File > Clear & Start New。现在转到File > Read input from,然后选择该文件。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删