一、惩罚函数法(SUMT)
- 格式:ppt
- 大小:376.00 KB
- 文档页数:23
9.图6-39所示为一对称的两杆支架,在支架的顶点承受一个载荷为2F=300000N , 支架之间的水平距离2B=1520mm ,若已选定壁厚T=2.5mm 钢管,密度/1083-6mm Kg ⨯=.7ρ,屈服极限700=s σMpa ,要求在满足强度与稳定性条件下设计最轻的支架尺寸。
[解] 1.建立数学模型 设计变量:⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=H D x x x 21目标函数:221422577600101.2252)(x x HB D T x f +⨯=+=πρ 约束条件: 1)圆管杆件中的压应力σ应小于或等于y ο,即y TDHHB F σπσ≤+=22于是得2122157760019098.59)(x x x x g +=2)圆管杆件中的压应力α应小于或等于压杆稳定的临界应力c σ,由欧拉公式得钢管的压杆温度应力c σ222152222225776006.25102.6)8()(x x H B T D E AL EIC ++⨯=++==ππσ2式中 A ――圆管的截面积;L ――圆管的长度。
于是得0)6006.25)/(577(102.657760019098.59)(2221521222≤++⨯-+=-=x x x x x x g c σσ3) 设计变量的值不得小于或等于0于是得)(0)(2213≤-=≤-=x x g x x g2.从以上分析可知,该优化设计问题具有2个设计变量,4个约束条件,按优化方法程序的规定编写数学模型的程序如下:subroutine ffx(n,x,fx) dimension x(n) fx=1.225e-4*x(1)*sqrt(577600.0+x(2)*x(2)) endsubroutine ggx(n,kg,x,gx) dimension x(n),gx(kg)gx(1)=19098.59*sqrt(577600.0+x(2)*x(2))/(x(1)*x(2))-700.0 gx(2)=19098.59*sqrt(577600.0+x(2)*x(2))/(x(1)*x(2))- 1 2.6e5*(x(1)*x(1)+6.25)/(577600.0+x(2)*x(2)) gx(3)=-x(1) gx(4)=-x(2) end3.利用惩罚函数法(SUMT 法)计算,得到的最优解为:============== PRIMARY DATA ============== N= 2 KG= 4 KH= 0 X : .7200000E+02 .7000000E+03 FX: .9113241E+01GX: -.3084610E+03 -.8724784E+03 -.7200000E+02 -.7000000E+03 PEN = .9132947E+01R = .1000000E+01 C = .4000000E+00 T0= .1000000E-01 EPS1= .1000000E-05 EPS2= .1000000E-05=============== OPTIMUM SOLUTION ============== IRC= 18 ITE= 39 ILI= 39 NPE= 229 NFX= 0 NGR= 57 R= .1717988E-06 PEN= .6157225E+01 X : .4868305E+02 .6988214E+03 FX: .6157187E+01GX: -.1204029E+03 -.1266042E-01 -.4868305E+02 -.6988207E+0310.图6-40所示为一箱形盖板,已知长度L=6000mm ,宽度b=600mm ,厚度mm t s 5承受最大单位载荷q=0.01Mpa ,设箱形盖板的材料为铝合金,其弹性模量MPa E 4107⨯=,泊松比3.0=μ,许用弯曲应力[]MPa 70=σ,许用剪应力[]MPa 45=τ,要求在满足强度、刚度和稳定性条件下,设计重量最轻的结构方案。
8. 有一汽门用弹簧,已知安装高度H1=50.8mm,安装(初始)载荷F1=272N ,最大工作载荷F2=680N ,工作行程h=10.16mm 弹簧丝用油淬火的50CrV A 钢丝,进行喷丸处理; 工作温度126°C ;要求弹簧中径为20mm ≤D2≤50mm ,弹簧总圈数4≤n1≤50,支 承圈数n2=1.75,旋绕比C ≥6;安全系数为1.2;设计一个具有重量最轻的结构方案。
[解] 1.设计变量:影响弹簧的重量的参数有弹簧钢丝直径:d ,弹簧中径D1和弹簧总圈数n1,可取这三个参数作为设计变量:即:⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=H D x x x 212.目标函数:弹簧的重量为式中 ρ――钢丝材料的容重,目标函数的表达式为3221611262101925.0108.725.0)(x x x n D d x F --⨯=⨯⨯=π3.约束条件:1)弹簧的疲劳强度应满足min S S ≥式中 2.1m i n m i n =--S S ,可取最小安全系数,按题意S ――弹簧的疲劳安全系数,由下式计算:m s s s S ττττττττα⎪⎪⎭⎫⎝⎛+⎪⎪⎭⎫ ⎝⎛-=002式中 :劳极限,计算方法如下弹簧实际的脉动循环疲--0τ初选弹簧钢丝直径:4mm ≤d ≤8mm ,其抗拉强度MPa b 1480=σ,取弹簧的循环工作次数大于710,则材料的脉动循环疲劳极限为MPa b 44414803.03.0'0=⨯==στ设可靠度为90%,可靠性系数 868.0=r k ; 工作温度为126°C ,温度修正系数 862.0126273344273344=+=+=T k t再考虑到材料经喷丸处理,可提高疲劳强度10%,则弹簧实际的脉动循环疲劳极限为MPa k k t r 4.365444862.0868.01.1)1.01('00=⨯⨯⨯=+=ττ36/107.8mm kg -⨯=ρρπ12220.25n D d W =--s τ弹簧材料的剪切屈服极限,计算公式为MPa b s 74014805.05.0=⨯==στ--ατ弹簧的剪应力幅,计算公式为328dD F ka πτα=式中 k ――曲度系数,弹簧承受变应力时,计算公式为14.02)(6.1615.04414d D C C C k ≈+--=a F ――载荷幅,其值为N F F F a 2042/)272680(2/)(12=-=-=m τ――弹簧的平均剪应力,计算公式为328dD F k m sm πτ=式中s k ――应力修正系数,计算公式为dD C k s /615.01615.012+=+= m F ――平均载荷,其值为N F F F m 4762/)272680(2/)(12=+=+=由此,得到弹簧疲劳强度的约束条件为 计算剪应力幅ατ:86.2186.023214.023.8308)/(6.1x x d D F d D dD F ka a =⋅==ππτα328 计算平均应力幅m τ:21312246.74512.1212615.01x x x d D F Dd dD F k m m sm +=⎪⎪⎭⎫ ⎝⎛+==33288ππτ 计算弹簧的实际疲劳安全系数S :mms s s S τττττττττταα494.0506.14.365+=⎪⎪⎭⎫ ⎝⎛+⎪⎪⎭⎫ ⎝⎛-=0002从而得到弹簧的疲劳强度约束条件为012.1)(min 1≤-=-=SS S S x g 2)根据旋绕比的要求,得到约束条件016)(21min 2≤-=-=x x C C C x g3)根据对弹簧中径的要求,得到约束条件50222≤-=-=≤-=-=1)4(0120)3(max max 242min 3x D D D g x D D D g4)根据压缩弹簧的稳定性条件,要求:c F F ≤2式中 c F ――压缩弹簧稳定性的临界载荷,可按下式计算:K H D H F C ⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫⎝⎛--=2022085.611813.0μ 式中 K ――要求弹簧具有的刚度,按下式计算:mm N h F F K /2.4016.1027268012=-=-=0H ――弹簧的自由高度,按下式计算: 当mm K F 16.9240.26802===λ 时, 304.20)5.0(2.1)5.0(310+-=+-=x n H λμ――长度折算系数,当弹簧一端固定,一端铰支时,取 7.0=μ;则:[][]⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡+---+-=221398.1311304.20)5.0(268.320.3040.5)(13x x x x x F C于是得 01680)(25≤-=-=CC C F F F F x g5)为了保证弹簧在最大载荷作用下不发生并圈现象,要求弹簧在最大载荷2F 时的高度2H 应大于压并高度b H ,由于13112)5.0()5.0(64.4016.108.50x x d n H h H H b -=-==-=-=于是得到010123.00246.0)(131226≤--=-=x x x H H H x g b6)为了保证弹簧具有足够的刚度,要求弹簧的刚度αK 与设计要求的刚度K 的误差小于1/100,其误差值用下式计算:401.02.40)75.1(8100/)(33241---=--=x x Gx K K K αθ式中 G ――弹簧材料的剪切弹性模量,取G=80000Mpa 。
分享:惩罚函数法(内点法、外点法)求解约束优化问题最优值1 用外点法求下列问题的最优解方法一:外点牛顿法:clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);% a b为最优点坐标,f0为最优点函数值,f1 f2最优点梯度。
syms x1 x2 e; %e为罚因子。
m(1)=1;c=10;a(1)=0;b(1)=0; %c为递增系数。
赋初值。
f=x1^2+x2^2+e*(1-x1)^2;f0(1)=1;fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');%求偏导、海森元素。
for k=1:100 %外点法e迭代循环.x1=a(k);x2=b(k);e=m(k);for n=1:100 %梯度法求最优值。
f1=subs(fx1); %求解梯度值和海森矩阵f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f1^2+f2^2))<=0.001) %最优值收敛条件a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseX=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';x1=X(1,1);x2=X(2,1);endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) %罚因子迭代收敛条件a(k+1) %输出最优点坐标,罚因子迭代次数,最优值b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend方法二:外点梯度法:clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);syms d x1 x2 e;m(1)=1;c=10;a(1)=0;b(1)=0;f=x1^2+x2^2+e*(1-x1)^2; f0(1)=1;fx1=diff(f,'x1');fx2=diff(f,'x2');for k=1:100x1=a(k);x2=b(k);e=m(k);for n=1:100f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.002)a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseD=(x1-d*f1)^2+(x2-d*f2)^2+e*(1-(x1-d*f1))^2;Dd=diff(D,'d'); dd=solve(Dd); x1=x1-dd*f1; x2=x2-dd*f2;endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) a(k+1)b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend2,点法求下列问题的最优解内点牛顿法clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);syms x1 x2 e;m(1)=1;c=0.2;a(1)=2;b(1)=-3;f=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1)); f0(1)=15;fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(f x1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');for k=1:100x1=a(k);x2=b(k);e=m(k);for n=1:100f1=subs(fx1);f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f1^2+f2^2))<=0.002)a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseX=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';x1=X(1,1);x2=X(2,1);endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) a(k+1)b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend。