机械优化设计(MATLAB的编程教程+习题)
- 格式:ppt
- 大小:476.00 KB
- 文档页数:5
化设计hl4HU©0⑥ 3 hlu 凹内r d X1州fci-rU-fFF卢F ♦ 忡下¥为+1 —*— S-ll-« F41:Si —MATLABoftiHMirjirCfiffliiiiJ PHI■1**■ 温不平?」11,・—喜M - 〜FT 文词一时y 片 34ml 3F*L9TR0i. Jill!-LkftLgWf 1S1CSI掰f 1 ■ >A A A »W I % :k Dnfl w I ■ J k^lXMprfaMk tjn nn Alflhw初选 x0=[1,1] 程序:Step 1: Write an Mfle objfunl.m.function f1=objfun1(x)f1=x(1)人2+2*x(2)入2-2*x(1)*x(2)-4*x(1);Step 2: Invoke one of the unconstrained optimization routinesx0=[1,1];>> options = 0Ptimset('LargeScale','off);>> [x,fval,exitflag,output] = fminunc(@objfun1,x0,options)运行结果: x =4.0000 2.0000 fval = -8.0000exitflag =1 output = iterations: 3 funcCount: 12 stepsize: 1 firstorderopt: 2.3842e-007algorithm: 'medium-scale: Quasi-Newton line search message: [1x85 char]非线性有约束优化1. Min f(x)=3 x : + x 2+2 x 1-3 x 2+5 Subject to:g 2(x)=5 X 1-3 X 2 -25 < 0 g (x)=13 X -41 X 2 < 0 3 12g 4(x)=14 < X 1 < 130无约束优化 min f(x)=X 2 + x 2-2 x 1 x 2-4 x 1g5 (x)=2 < X 2 < 57初选x0=[10,10]Step 1: Write an M-file objfun2.mfunction f2=objfun2(x)f2=3*x(1)人2+x(2)人2+2*x(1)-3*x(2)+5;Step 2: Write an M-file confunl.m for the constraints. function [c,ceq]=confun1(x) % Nonlinear inequality constraints c=[x(1)+x(2)+18;5*x(1)-3*x(2)-25;13*x(1)-41*x(2)人2;14-x(1);x(1)-130;2-x(2);x(2)-57];% Nonlinear inequality constraints ceq=[];Step 3: Invoke constrained optimization routinex0=[10,10]; % Make a starting guess at the solution>> options = optimset('LargeScale','off);>> [x, fval]=...fmincon(@objfun2,x0,[],[],[],[],[],[],@confun1,options)运行结果:x =3.6755 -7.0744 fval =124.14952.min f (x) =4x2 + 5x2s.t. g 1(x) = 2X] + 3x2- 6 < 0g (x) = x x +1 > 0初选x0=[1,1]Step 1: Write an M-file objfun3.m function f=objfun3(x) f=4*x(1)人2 + 5*x(2)人2Step 2: Write an M-file confun3.m for the constraints. function [c,ceq]=confun3(x) %Nonlinear inequality constraints c=[2*x(1)+3*x(2)-6;-x(1)*x(2)-1];% Nonlinear equality constraints ceq口;Step 3: Invoke constrained optimization routinex0=[1,1];% Make a starting guess at the solution>> options = optimset('LargeScale','off);>> [x, fval]=...fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)运行结果:Optimization terminated: no feasible solution found. Magnitude of search direction less than2*options.TolX but constraints are not satisfied.x =11fval =-13实例:螺栓连接的优化设计图示为一压气机气缸与缸盖连接的示意图。
长江大学机械工程学院机械优化设计大作业班级2012年5月31-361、⎩⎨⎧=+-=++⋅+-++=22422min 321321321232221x x x x x x t s x x x x x x f解: function f=fun1(x)f=x(1)^2+2*x(2)^2+x(3)^2-2*x(1)*x(2)+x(3)clearclcx0=[1;1;1];A=[];b=[];Aeq=[1 1 1;2 -1 1];beq=[4;2];lb=[];ub=[];[x,fval,exitflag]=fmincon('fun1',x0,A,b,Aeq,beq,lb,ub)x =1.90911.95450.1364fval =3.9773exitflag =12、221212min ()2130f x x x x s t x =+-+⋅-≤解: function f=fun2(x)f=x(1)^2+x(2)^2-2*x(1)+1clearclcx0=[1;1];A=[0 -1];b=-3;Aeq=[];beq=[];lb=[];ub=[];[x,fval,exitflag]=fmincon('fun2',x0,A,b,Aeq,beq,lb,ub)x =13fval =9exitflag =13、 2212min ()(2)f X x x =-+112222312..()0()0()10s t g X x g X x g X x x =-≤=-≤=-+-≤解:function f=fun3(x)f=(x(1)-2)^2+x(2)^2function [g,ceq]=mycon3(x)g=[-x(1);-x(2);-x(1)^2+x(2)^2-1];ceq=[];clearclcx0=[0;0];A=[];b=[];Aeq=[];beq=[];lb=[];ub=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,lb,ub,'mycon3')x =2.0000fval =2.2204e-0164、⎩⎨⎧≤--≤+--⋅++++=01005.1)12424(min 21212122122211x x x x x x t s x x x x x e f x解: function f=fun4(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);function [g,ceq]=mycon4(x)g(1)=1.5+x(1)*x(2)-x(1)-x(2);g(2)=-x(1)*x(2)-10;ceq=[];clearclcx0=[0;0];A=[];b=[];Aeq=[];beq=[];lb=[];ub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,lb,ub,'mycon4')x =1.1825-1.7398fval =3.06085 喜糖问题:需要购买甲乙两种喜糖,喜糖甲10元/斤,喜糖乙20元/斤。
机械优化设计实验(常用优化方法程序考核题)姓名吕超班级机工1005班学号 104057010111.一位搜索方法程序考核题1)调用函数fminbnd[x0,fval]=fminbnd(@(t)t^2-10*t+36,-5,5)实验结果:x0 =5fval =112)调用函数fminbnd[x0,fval]=fminbnd(@(t)t^4-5*t^3+4*t^2-6*t+60,-5,5)实验结果:x0 =3.2796fval =22.65903)调用函数fminbnd[x0,fval]=fminbnd(@(t)(t+1)*(t-2)^2,0,5)实验结果:x0 =2.0000fval =1.0656e-0102.无约束优化方法程序考核题1)编写M文件function f=y(x)f=4*(x(1)-5)^2+(x(2)-6)^2;调用函数fminunc[x0 fval]=fminunc('y',[8;9])实验结果:x0 =5.0000fval =1.7876e-0122)编写M文件function f=y(x)f=(x(1)^2+x(2)-11)^2+(x(1)+x(2)^2-7)^2;调用函数fminunc[x0 fval]=fminunc('y',[1;1])实验结果:x0 =3.00002.0000fval =5.2125e-0123)编写M文件function f=y(x)u(1)=1.5-x(1)*(1-x(2));u(2)=2.25-x(1)*(1-x(2)^2);u(3)=2.625-x(1)*(1-x(2)^3);f=u(1)^2+u(2)^2+u(3)^2;调用函数fminunc[x0 fval]=fminunc('y',[2;0.2])实验结果:x0 =3.00000.5000fval =3.9195e-0144)编写M文件function f=y(x)f=(x(1)^2+12*x(2)-1)^2+(49*x(1)+49*x(2)+84*x(1)+2324*x(2)-681)^2; 调用函数fminsearch[x0 fval]=fminsearch('y',[1;1])x0 =0.33630.2681fval =5.43185)编写M文件function f=y(x)f=(x(1)+10*x(2))^2+5*(x(3)-x(4))^2+(x(2)-2*x(3))^4+10*(x(1)-x(4))^4; 调用函数fminunc[x0 fval]=fminunc('y',[3 -1 0 1]')实验结果:x0 =0.0015-0.0002-0.0031-0.0031fval =6.3890e-0093.约束优化方法程序考核题1)编写M文件(1) function f=y(x)f=(x(1)-2)^2+(x(2)-1)^2;(2) function [c,ceq]=z(x)c=x(1)^2-x(2);ceq=[];调用fmincon函数:[x0,fval]=fmincon('y',[3 3],[1 1],[2],[],[],'z')实验结果x0 =1.0000 1.0000fval =1.00002)编写M文件调用fmincon函数:A=[-1/sqrt(3) 1;-1 1/sqrt(3);1 1/sqrt(3)];,b=[0 0 6]';[x0,fval]=fmincon('y',[1 5],A,b,[],[],[0;0])实验结果x0 =4.5000 2.5981fval =-2.53133)编写M文件(1)function f=y(x)f=1000-x(1)^2-2*x(2)^2-x(3)^2-x(1)*x(2)-x(1)*x(3);(2)function [c ceq]=z(x)c=[];ceq(1)=x(1)^2+x(2)^2+x(3)^2-25;ceq(2)=8*x(1)+14*x(2)+7*x(3)-56;调用fmincon函数[x0,fval]=fmincon('y',[2;2;2],[],[],[],[],[0 0 0]',[],'z')实验结果:x0 =3.51210.21703.5522fval =961.71524)编写M文件function f=y(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^2+90*(x(4)-x(3)^2)^2+(1-x(3))^2+10*((x(2)-1)^2+( x(4)-1)^2)+19.8*(x(2)-1)*(x(4)-1);调用fmincon函数:[x0,fval]=fmincon('y',[-3 -1 -3 -1]',[],[],[],[],-10*ones(4,1),10*ones(4,1))实验结果x0 =1.00011.00020.99990.9997 fval =2.3989e-007。
机械优化设计与Matlab应用上机实验指导书V2.0班级:学号:姓名:机械学院说明1.由于机械优化设计与Matlab应用是一门实践性很强的课,本实验指导书中上机练习内容是为巩固课堂所学知识安排的。
2.要求每次上机必须完成规定的练习内容,课堂上即时完成有难度的在课前要按照相关实验说明做好相应的准备工作。
3.明确每一次上机练习的目标,并在每次实验小结表中填入本次练习完成情况及相关实验小结。
4.所有实验结束后,要求写出一篇关于这门课的课程小结。
5.严格遵守机房的有关管理规定。
目录上机练习一MATLAB软件使用初步上机练习二矩阵、向量的创建,字符串及其处理上机练习三程序流程控制及符号工具箱的使用上机练习四MATLAB基本绘图函数的使用上机练习五无约束优化方法编程上机练习六约束优化方法编程。
上机练习七优化工具箱典型函数的使用上机练习八机械优化设计工程问题的求解上机练习九总复习上机实验一MATLAB软件使用初步一、实验目标1.熟悉Matlab界面,并掌握相关基本操作。
2.掌握变量创建、变量管理,访问程序及函数文件、命令窗口管理的基本方法。
3.在命令窗口中熟练使用各种运算符以及各种常用数学表达式的matlab表示方式。
4.熟悉matlab特殊字符的使用说明。
二、实验环境1.计算机2.MATLAB7.0集成环境三、实验说明1.首先应熟悉MATLAB7.0运行环境,正确操作2.实验学时:2学时四、实验内容及步骤1.命令窗口的使用;2.变量名的创建,注意大小写是否敏感;3.clear 、clear session、who、whos命令的含义;4.File下拉菜单的Set Path实现路径信息的输入;5.Format函数的使用;6.赋值操作,表达式加分号与不加分号的区别,一行输入多个表达式,特殊字符的使用,各种运算符的使用及优先级的高低;7.帮助系统的使用;8.用Matlab表达式完成如下表达式计算五、实验报告要求1.将求螺栓刚度的Matlab表达式填入下表;2. 小结其余实验内容的心得体会。
(一)matlab基本用法介绍5. 循环、结束命令¾break是直接跳出该层循环¾continue是直接进入该层循环的下一次迭代¾return是直接退出程序或函数返回大概的等级关系如下¾return>break>continue(二)matlab语法应用实例1. 循环的用法(用于优化迭代)%%%%%%%%%%%%%%%%%% while 循环i=0;while(i<10)i=i+1;end%%%%%%%%%%%%%%%%%% for 循环i=0;for j=1:10i=i+1;end%%%%%%%%%%%%%%%%%% break终止本层循环for i=1:2ik=0;for j=1:10k=k+1if k==5;break;endendend%%%%%%%%%%%%%%%%%% continue直接进入下一次循环变量的迭代k=0;for j=1:10k=k+1;if k==5;continue;endkend %注意,k=5时,后面的循环体未被执行,即k=5不显示在输出窗口中2 函数调用(利用外部m文件定义函数)(用于定义目标函数、约束函数、优化子程序等)建立wad2.m文件:function F1=wad2(x)F1=x(1)^2+x(2)^2;在主程序m文件中或者matlab的commond window中输入x0=[3 5]';fx0= wad2(x0)运行结果如下:fx0 = 34 ,得到了函数的值※另外函数中的F1也可以定义成向量。
3 全局变量(可用于优化过程中的重要参数定义,在程序任意部位都可以访问)建立wad3.m文件:function F1=wad3(x)global ac bcF1=ac*x(1)^2+bc*x(2)^2;在主程序m文件中定义x0=[3 5]';ac=0.2; bc=0.8;fx0= wad3(x0)结果:fx0 = 14.60004 判断语句(例如可以用于优化计算收敛的终止条件判断)k=2if k>3'yes k>3'else'no ,k<3'endif k==2'yes k=2'end5 数组(例如可以用于优化计算收敛的终止条件判断)% 1. 数组:matlab 程序以矩阵为运算单位,任何变量都是矩阵(数组)% 数组不需要声明,直接定义、使用即可a=[1 2 3]b=[ 1 2 34 5 6]c=b'; %求矩阵的转置矩阵b23=b(2,3) %取出矩阵b中第2行第3列元素x=[123]Hk=eye(4);% 生成4维的单位阵6 清屏clcclear7 二维绘图x=1:0.1:10;y1=sin(x);y2=cos(x);figure;plot(x,y1,'r');hold on;plot(x,y2,'b');grid on;xlabel('x axis'),ylabel('y axis');8 三维绘图x=1:0.1:10;y1=sin(x);y2=cos(x);z=x+cos(y1);figure;plot3(x,y1,z,'b');hold on;grid on;xlabel('x axis'),ylabel('y axis'),zlabel('z axis');9 二维等值线图%%对函数: F=(xk(1)-2)^4+(xk(1)-2*xk(2))^2; [x3,y3]=meshgrid(-5:0.2:10,-10:0.2:10);z3=(x3-2).^4+(x3-2*y3).^2;contour(x3,y3,z3,40);%目标函数的等值线hold on;axis equal;xlabel('自变量x1','FontSize',12);ylabel('自变量x2','FontSize',12);title('×××××××方法', 'FontSize',15);。
基于Matlab的机械优化设计课后题1.一维搜索法说明:采用0.618法进行编程代码如下:syms tf=(需要计算的函数)x1=0;h=2;f1=subs(f,x1);x2=x1+h;f2=subs(f,x2);f3=f2-1;t=1;if (f1-f2)>0while f3<f2f3=subs(f,x2+t*h);t=t+1;endx3=x2+t*h;elsef3=f2;f2=f1;t=1;f1=f2-1;x3=x2;x2=x1;while f1<f2f1=subs(f,x2-t*h);t=t+1;endx1=x2-t*h;enda=x1;b=x3;e=1e-05;k=0.618;a1=b-k*(b-a);a2=a+k*(b-a);f1=subs(f,a1);f2=subs(f,a2);c=(b-a)/2;while c>eif f1>f2a=a1;a1=a2;a2=a+k*(b-a);f1=f2;f2=subs(f,a2);elseb=a2;a2=a1;a1=b-k*(b-a);f2=f1;f1=subs(f,a1);endc=(b-a)/2;end实际运行结果如下:1. t=a1=5;f=11;2. t=a1=3.2796;f=22.6590;3. t=a1=2;f=1.1122e-011;2.无约束的优化设计说明:一共采用了三种算法的编程首先要建立步长函数,步长函数代码如下:function az=buchang(x,d,f)b=symvar(f);syms aaxn=x-d*aa;pa=subs(f,b,xn);pd=diff(pa,aa);aa=solve(pd);aa=real(aa);aa=subs(aa);n=size(aa,1);z=zeros(1,n);for i=1:nxn(:,i)=x-aa(i)*d;endfor i=1:nz(i)=subs(f,b,xn(:,i));ends=z(1);c=1;for i=1:n-1if s>z(i+1)s=z(i+1);c=i+1;endendaz=aa(c);end1.DFP:·¨syms (函数中的变量)f=(所需要优化的函数)x0=;b=symvar(f);n=size(b,2);g=cell(n,1);G=cell(n,n);H0=eye(n,n);for i=1:ng{i,1}=diff(f,b(i));endfor i=1:n %²úÉúº£Èû¾ØÕófor j=1:nG{j,i}=diff(g{i},b(j));endendg0=subs(g,b,x0);d0=H0*g0;a=buchang(x0,d0,f);x1=x0-a*d0;xcha=x1-x0;dis=mo(xcha);k=1while dis>1e-5g1=subs(g,b,x1);if g1==0Gy=subs(G,b,x1)breakendy0=g1-g0;s0=x1-x0;H1=H0+(s0*s0')/(s0'*y0)-(H0*y0*y0'*H0)/(y0'*H0*y0); d1=H1*g1;a=buchang(x1,d1,f);x2=x1-a*d1;g0=g1;x0=x1;x1=x2;H0=H1;xcha=x1-x0;dis=mo(xcha);x1subs(f,b,x1)k=k+1end2.坐标轮换法:syms t1t2f=(t1^2+t2-11)^2+(t1+t2^2-7)^2;b=symvar(f);n=size(b,2);A=eye(n,n);x0=[1;1];dis=1;k=0;while dis>1e-5if k==30breakende=A(:,1);a=buchang(x0,e,f);x1=x0-e*a;i=2;while i<n+1e=A(:,i);a=buchang(x1,e,f);x2=x1-e*a;x1=x2;i=i+1;endxcha=x1-x0;dis=mo(xcha);x0=x1;k=k+1x0end3.鲍威尔法:syms t1t2t3t4f=(t1+10*t2)^2+5*(t3-t4)^2+(t2-2*t3)^4+10*(t1-t4)^4;x0=[3;-1;0;1];b=symvar(f);n=size(b,2);A=eye(n,n);dis=1;while dis>1e-6F0=subs(f,b,x0);e=A(:,1);a=buchang(x0,e,f);x1=x0-e*a;i=2;fz=zeros(1,n);while i<n+1e=A(:,i);fd=subs(f,b,x1);fz(1,i-1)=fd;a=buchang(x1,e,f);x2=x1-a*e;x1=x2;i=i+1;endxcha=x1-x0;dis=mo(xcha);d=x1-x0;x=x1+d;F2=subs(f,b,x1);F3=subs(f,b,x);fz=[F0,fz];cz=zeros(1,n);for i=1:ncz(i)=fz(i)-fz(i+1);endczm=max(cz);m=find(czm);P1=F3-F0;P2=(F0-2*F2+F3)*(F0-F2-czm)^2-0.5*czm*(F0-F3)^2;if P1<0&&P2<0a=buchang(x1,d,f);x0=x1-a*d;A(:,m)=[];A=[A,d];elseif F2<F3x0=x1;elsex0=x;endendx0end实际运行结果如下:1.x=[5;6];f=02.x=[3;2];f=03.x=[3;0.5];f=0.52978;4.x=[0.1239;0.2844];f=5.8969;5.x=[0;0;0;0];f=0;3.约束优化方法程序说明:本题采用matlab自带的fmincon函数来解决非线性优化问题具体代码如下:1. function y=fun1(x)y=(x(1)-2).^2+(x(2)-1).^2;endfunction [c,ceq]=gt1(x)c=x(1).^2-x(2);ceq=[];endA=[1,1];b=2;x0=[1;2];lb=[];ub=[];[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun1,x0,A,b,[], [],lb,ub,@gt1);运行结果如下:x=[1;1];fval=12. function y=fun2(x)y=x(2).^3*((x(1)-3).^2-9)/(27*sqrt(3));endA=[-1/sqrt(3),1;-1,1/sqrt(3);1,1/sqrt(3)];b=[0;0;6];x0=[2;3];lb=[0;0];ub=[];[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun2,x0,A,b,[], [],lb,ub)运行结果如下:X=[4.5000;2.5981];f=-2.5313;备注:引用函数并未能够达到最优点,原因不明;3. function y=fun3(x)y=1000-x(1).^2-2*x(2).^2-x(3)^2-x(1).*x(2)-x(1).*x(3);endfunction [c,cev]=gt2(x)c=[];cev(1)=x(1).^2+x(2).^2+x(3).^2-25;cev(2)=8*x(1)+14*x(2)+7*x(3)-56;endA=[];b=[];Aq=[];bq=[];lb=[0;0;0];ub=[];x0=[2;2;2];[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun3,x0,A,b,Aq, bq,lb,ub,'gt2')运行结果如下:x= [3.5121;0.2170;3.5522];f= 961.7152;exitflag =4备注:引用函数由于算法在迭代过程中产生了NaN,迭代被迫终止4. function y=fun4(x)y=100*(x(2)-x(1).^2).^2+(1-x(1)).^2+90*(x(4)-x(3).^2).^2+(1-x(3))^2+1 0*((x(2)-1).^2+(x(4)-...1).^2)+19.8*(x(2)-1)*(x(4)-1);endA=[];b=[];Aq=[];bq=[];lb=[-10;-10;-10;-10];ub=[10;10;10;10];x0=[-3;-1 ;-3;-1];[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun4,x0,A,b,Aq, bq,lb,ub)运行结果如下:X=[1.0001;1.0002;0.9999;0.9997];f=0;exitflag=5 备注:原始对偶问题没有可行解。