本文节选自我参与编写的《工程结构优化设计方法与应用》(中国铁道出版社,2015年)
例题8-2:桁架结构截面优化
问题描述:
例题7-1中的桁架结构。如果各杆件的容许拉应力为[σ]+ =70MPa,容许压应力为[σ]- =-35MPa,各杆件截面不小于0.8cm2,且不超过5 cm2,其他条件不变。试设计各杆件的截面,使其满足三种工况的强度要求,且用钢量最低。
问题分析:
此问题实际上为满足抗拉、抗压强度条件下的桁架结构最轻的优化设计问题。此优化问题可以表述如下:
= 1 \* GB3 ① 设计变量:
Ai(各杆件的截面积,i=1,2,3,4,5),满足0.8 cm2≤Ai≤5 cm2;
= 2 \* GB3 ② 约束条件:
受拉杆件应力 0≤σ≤70MPa
受压杆件应力 -35Mpa≤σ<0
= 3 \* GB3 ③ 目标函数:
结构的总体积→min
对于任意一根杆件来说,由于在各工况下其内力可能受拉,也可能受压,为了简化约束条件,在实际进行优化分析时,首先对各杆件的应力进行规格化处理。具体方法为:对于杆件受拉的情况,其应力除以抗拉强度70Mpa后的值保存为一个应力比变量,对于杆件受压的情况,其应力除以抗压强度-35Mpa后的值保存为应力比变量,受拉及受压强度条件转化为在三种工况下各杆件的应力强度比最大值不超过1的约束限制条件。
此优化问题的理论解答实质上为满应力设计解,我们知道其理论解为:A1=2.86 cm2 ,A2=2.86 cm2 ,A3=1.43 cm2 ,A4=2.86 cm2 ,A,5=4.04 cm2,此理论解可用来验证优化的结果是否正确。
分析过程:
下面通过零阶优化方法对此问题进行分析,设计变量和目标函数的容差在初次分析时可采用缺省值。首先通过执行下列APDL命令流写优化分析命令文件optimize.txt。
/prep7 |
!Unit m N Kg Pa |
*set,a,1 $ *set,P,10e3 |
!设置其他参数 |
*set,A1,1e-4 $ *set,A2,1e-4 |
!定义设计参数 |
*set,A3,1e-4 $ *set,A4,1e-4 |
! |
*set,A5,1e-4 |
! |
ET,1,LINK180 |
!单元类型 |
R,1,a1, $ R,2,a2, $ R,3,a3, |
!实参数赋值 |
R,4,a4, $ R,5,a5, |
!实参数赋值 |
MP,EX,1,2e11 |
!弹性模量 |
n,1, $ n,2,,a, $ n,3,a,a, $ n,4,a,, |
!定义节点 |
REAL,1 $ e,1,2 |
!创建单元1 |
REAL,2 $ e,2,3 |
!创建单元2 |
REAL,3 $ e,3,4 |
!创建单元3 |
REAL,4 $ e,1,4 |
!创建单元4 |
REAL,5 $ e,1,3 |
!创建单元5 |
d,1,,,,,,ux, $ d,2,,,,,,ux,uy, |
!施加位移约束 |
fini |
!退出前处理器 |
/sol |
!进入求解器 |
!load step 1 |
! |
f,3,fx,P $ f,3,fy,-P $ solve |
!第1载荷步加载求解 |
!load step 2 |
! |
fdele,all,all $ f,4,fy,-P, $ solve |
!第2载荷步加载求解 |
!load step 3 |
! |
fdele,all,all $ f,4,fx,P, $ f,4,fy,P, |
!第3载荷步加载 |
solve $ FINI |
!求解并退出求解器 |
/post1 |
!进入后处理器 |
SET,1 |
!读取工况1的结果 |
ETABLE, ,LS, 1 |
!定义单元表:应力 |
*DIM,sts,ARRAY,5,1,1, , , |
!定义数组 |
*VGET,sts,ELEM, ,ETAB,LS1 |
!单元表赋值给数组 |
sa1=sts(1) |
!工况1杆件1的应力 |
*if,sa1,ge,0.0,then |
!工况1杆件1的应力标准化 |
sa1=sa1/(70e6) |
! |
*else |
! |
sa1=sa1/(-35e6) |
! |
*endif |
! |
sa2=sts(2) |
!工况1杆件2的应力 |
*if,sa2,ge,0.0,then |
!工况1杆件2的应力标准化 |
sa2=sa2/(70e6) |
! |
*else |
! |
sa2=sa2/(-35e6) |
! |
*endif |
! |
sa3=sts(3) |
!工况1杆件3的应力 |
*if,sa3,ge,0.0,then |
!工况1杆件3的应力标准化 |
sa3=sa3/(70e6) |
! |
*else |
! |
sa3=sa3/(-35e6) |
! |
*endif |
! |
sa4=sts(4) |
!工况1杆件4的应力 |
*if,sa4,ge,0.0,then |
!工况1杆件4的应力标准化 |
sa4=sa4/(70e6) |
! |
*else |
! |
sa4=sa4/(-35e6) |
! |
*endif |
! |
sa5=sts(5) |
!工况1杆件5的应力 |
*if,sa5,ge,0.0,then |
!工况1杆件5的应力标准化 |
sa5=sa5/(70e6) |
! |
*else |
! |
sa5=sa5/(-35e6) |
! |
*endif |
! |
SET,2 |
!读取工况2的结果 |
ETABLE, ,LS, 1 |
!定义单元表:应力 |
*DIM,sts,ARRAY,5,1,1, , , |
!定义数组 |
*VGET,sts,ELEM, ,ETAB,LS1 |
!单元表赋值给数组 |
sb1=sts(1) |
!工况2杆件1的应力 |
*if,sb1,ge,0.0,then |
!工况2杆件1的应力标准化 |
sb1=sb1/(70e6) |
! |
*else |
! |
sb1=sb1/(-35e6) |
! |
*endif |
! |
sb2=sts(2) |
!工况2杆件2的应力 |
*if,sb2,ge,0.0,then |
!工况2杆件2的应力标准化 |
sb2=sb2/(70e6) |
! |
*else |
! |
sb2=sb2/(-35e6) |
! |
*endif |
! |
sb3=sts(3) |
!工况2杆件3的应力 |
*if,sb3,ge,0.0,then |
!工况3杆件3的应力标准化 |
sb3=sb3/(70e6) |
! |
*else |
! |
sb3=sb3/(-35e6) |
! |
*endif |
! |
sb4=sts(4) |
!工况2杆件4的应力 |
*if,sb4,ge,0.0,then |
!工况2杆件4的应力标准化 |
sb4=sb4/(70e6) |
! |
*else |
! |
sb4=sb4/(-35e6) |
! |
*endif |
! |
sb5=sts(5) |
!工况2杆件5的应力 |
*if,sb5,ge,0.0,then |
!工况2杆件5的应力标准化 |
sb5=sb5/(70e6) |
|
*else |
|
sb5=sb5/(-35e6) |
|
*endif |
|
SET,3 |
!读取工况3的结果 |
ETABLE, ,LS, 1 |
!定义单元表:应力 |
*DIM,sts,ARRAY,5,1,1, , , |
!定义数组 |
*VGET,sts,ELEM, ,ETAB,LS1 |
!单元表赋值给数组 |
sc1=sts(1) |
!工况3杆件1的应力 |
*if,sc1,ge,0.0,then |
!工况3杆件1的应力标准化 |
sc1=sc1/(70e6) |
! |
*else |
! |
sc1=sc1/(-35e6) |
! |
*endif |
! |
sc2=sts(2) |
!工况3杆件2的应力 |
*if,sc2,ge,0.0,then |
!工况3杆件2的应力标准化 |
sc2=sc2/(70e6) |
! |
*else |
! |
sc2=sc2/(-35e6) |
! |
*endif |
! |
sc3=sts(3) |
!工况3杆件3的应力 |
*if,sc3,ge,0.0,then |
!工况3杆件3的应力标准化 |
sc3=sc3/(70e6) |
! |
*else |
! |
sc3=sc3/(-35e6) |
! |
*endif |
! |
sc4=sts(4) |
!工况3杆件4的应力 |
*if,sc4,ge,0.0,then |
!工况3杆件4的应力标准化 |
sc4=sc4/(70e6) |
! |
*else |
! |
sc4=sc4/(-35e6) |
! |
*endif |
! |
sc5=sts(5) |
!工况3杆件5的应力 |
*if,sc5,ge,0.0,then |
!工况3杆件5的应力标准化 |
sc5=sc5/(70e6) |
|
*else |
|
sc5=sc5/(-35e6) |
|
*endif |
|
S1=max(sa1,sb1,sc1) |
!提取杆件1各工况的最大应力强度比 |
S2=max(sa2,sb2,sc2) |
!提取杆件2各工况的最大应力强度比 |
S3=max(sa3,sb3,sc3) |
!提取杆件3各工况的最大应力强度比 |
S4=max(sa4,sb4,sc4) |
!提取杆件4各工况的最大应力强度比 |
S5=max(sa5,sb5,sc5) |
!提取杆件5各工况的最大应力强度比 |
ETABLE,evolume,VOLU, |
!建立单元体积单元表 |
SSUM |
!求和 |
*GET,volume,SSUM, ,ITEM,EVOLUME |
!提取结构总体积 |
以上部分保存为truss.inp,用于下一章Workbench优化分析例题的输入文件。用下面的LGWRITE命令写后续优化分析的命令文件:
LGWRITE,'optimize','txt',,COMMENT |
!写命令文件optimize.txt |