机械优化设计MATLAB程序

合集下载

完整版优化设计Matlab编程作业

完整版优化设计Matlab编程作业

化设计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实例:螺栓连接的优化设计图示为一压气机气缸与缸盖连接的示意图。

机械优化设计

机械优化设计

机械优化设计matlab优化设计程序学校:班级:学号:姓名:指导老师:一.进退法求最优点所在区间1.算例:函数:f=x(1)^3+x(2)^2-10*x(1)*x(2)+1;初始参数:x0=0,step=0.01,st=[0,0],sd=[1,1];2.编程代码:function [lb,ub]=jintuifa(x0,step0,st,sd)% lb为区间下限,up为区间上限% x0初始探测点,step0是初始探测步长,st初始搜索点,sd是初始搜索方向step=step0;f0=jintui(x0,st,sd);x1=x0+step0;f1=jintui(x1,st,sd);if f1<=f0while truestep=2*step;x2=x1+step;f2=jintui(x2,st,sd);if f1<=f2lb=x0;ub=x2;break;elsex0=x1;x1=x2;f0=f1;f1=f2;endendelsewhile truestep=2*step;x2=x0-step;f2=jintui(x2,st,sd);if f0<=f2lb=x2;ub=x1;break;elsex1=x0;x0=x2;f1=f0;f0=f2;endendendend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=jintui(a,st,sd)f=objfun(st+a.*sd);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=objfun(x)f=x(1)^3+x(2)^2-10*x(1)*x(2)+1;end3.运行结果二.黄金分割法求最求最优值1.eg:函数:f=x^2+2*x;初始参数:a=-3,b=5,e=0.0001;2.编程代码:function [ans,sp]=golden(a,b,e)%[a,b]初始区间,e为最小区间长度要求%ans为最优解,sp为所需迭代次数a(1)=a;b(1)=b;L=e;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;m(1)=feval('f1',t(1));n(1)=feval('f1',u(1));while(b(k)-a(k)>L)if(m(k)>n(k))a(k+1)=t(k);b(k+1)=b(k);t(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));elsea(k+1)=a(k);b(k+1)=u(k);u(k+1)=t(k);t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));endm(k+1)=feval('f1',t(k+1));n(k+1)=feval('f1',u(k+1));ans=feval('f1',t(k+1));k=k+1;endans=(a(k)+b(k))/2;sp=k-1;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function y=f1(x)y=x^2+2*x;end3.运行结果三.无约束优化方法——坐标轮换法1.eg:函数:min f(x)=4*(x(1)-5)^2+(x(2)-6)^2;初始参数:初始点x为[8,9];2.编程代码:function [x,f]=lunhuan(x0)%输入初始点x0[8,9]%输出最优解点x,与最优解值fp=1;h=0.000001;x=x0;while(p>h)%做精度比较w=x(1);q=x(2);d1=[1,0];a1=golden('objfun',x,d1);%黄金分割法求最佳步长 x=x+a1*d1;d2=[0,1];a2=golden('objfun',x,d2);x=x+a2*d2;p=sqrt((x(1)-w)^2+(x(2)-q)^2);endf=objfun(x);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=objfun(x)%函数名f=4*(x(1)-5)^2+(x(2)-6)^2;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [lb,ub]=jintuifa(st,sd)%进退法函数x0=0;step0=0.000001;step=step0;f0=jintui(x0,st,sd);x1=x0+step0;f1=jintui(x1,st,sd);if f1<=f0while truestep=2*step;x2=x1+step;f2=jintui(x2,st,sd);if f1<=f2lb=x0;ub=x2;break;elsex0=x1;x1=x2;f0=f1;f1=f2;endendelsewhile truestep=2*step;x2=x0-step;f2=jintui(x2,st,sd);if f0<=f2lb=x2;ub=x1;break;elsex1=x0;x0=x2;f1=f0;f0=f2;endendendend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=jintui(a,st,sd)f=objfun(st+a.*sd);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ans=golden(f_name,st,sd)[a,b]=jintuifa(st,sd); %进退法求最佳步长区间a(1)=a;b(1)=b;L=0.1;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;p=st+t(1)*sd;q=st+u(1)*sd;m(1)=feval(f_name,p);n(1)=feval(f_name,q);while(b(k)-a(k)>L)if(m(k)>n(k))a(k+1)=t(k);b(k+1)=b(k);t(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));elsea(k+1)=a(k);b(k+1)=u(k);u(k+1)=t(k);t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));endw=st+t(k+1)*sd;z=st+u(k+1)*sd;m(k+1)=feval(f_name,w);n(k+1)=feval(f_name,z);ans=feval(f_name,w);k=k+1;endt(k)=0;u(k)=0;m(k)=0;n(k)=0;p=[a',b',t',u',m',n'];ans=(a(k)+b(k))/2;end3.运行结果四.无约束优化方法——鲍威尔法1.eg:函数:min f(x)=4*(x(1)-5)^2+(x(2)-6)^2;初始参数:初始点x为[8,9],初始搜索方向[0,1],[1,0];2.编程代码:function [x,f]=powill(x0,d1,d2)%输入x0为初始点,d1,d2为两个线性无关向量for k=1:2w=x0(1);q=x0(2);a1=golden('objfun',x0,d1);x1=x0+a1*d1;a2=golden('objfun',x1,d2);x2=x1+a2*d2;d1=d2;d2=x2-x0;a3=golden('objfun',x2,d2);x3=x2+a3*d2;x0=x3;endx=x0;f=objfun(x);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=objfun(x)f=4*(x(1)-5)^2+(x(2)-6)^2;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [lb,ub]=jintuifa(st,sd)x0=0;step0=0.0001;step=step0;f0=jintui(x0,st,sd);x1=x0+step0;f1=jintui(x1,st,sd);if f1<=f0while truestep=2*step;x2=x1+step;f2=jintui(x2,st,sd);if f1<=f2lb=x0;ub=x2;break;elsex0=x1;x1=x2;f0=f1;f1=f2;endendelsewhile truestep=2*step;x2=x0-step;f2=jintui(x2,st,sd);if f0<=f2lb=x2;ub=x1;break;elsex1=x0;x0=x2;f1=f0;f0=f2;endendend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=jintui(a,st,sd)f=objfun(st+a.*sd);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ans=golden(f_name,st,sd)[a,b]=jintuifa(st,sd);a(1)=a;b(1)=b;L=0.1;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;p=st+t(1)*sd;q=st+u(1)*sd;m(1)=feval(f_name,p);n(1)=feval(f_name,q);while(b(k)-a(k)>L)if(m(k)>n(k))a(k+1)=t(k);b(k+1)=b(k);t(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));elsea(k+1)=a(k);b(k+1)=u(k);u(k+1)=t(k);t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));endw=st+t(k+1)*sd;z=st+u(k+1)*sd;m(k+1)=feval(f_name,w);n(k+1)=feval(f_name,z);ans=feval(f_name,w);k=k+1;endend3.运行结果五.有约束优化方法——复合形法1.eg:函数:min f(x)=x1^2+x2^2-x1*x2-10*x1-4*x2+60 St:g1(x)=-x1≤0g2(x)=-x2≤0g3(x)=x1-6≤0g4(x)=x2-8≤0g5(x)=x1+x2-11≤02.编程代码:function fuhexing(n,b,h,xb1,xb2)%元素数n,初始可行点b,精度h,xb1横坐标上下界,xb2为纵坐标上下界if (rem(n,2)==0)k=n+n/2;elsek=n+(n+1)/2;end%取k值A=kexingdian(k,xb1,xb2,b');%确定可行点A=mubiao(A,n,k,h);%求出目标函数并排序比较,得出最优解End %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function A=mubiao(A,n,k,h)for i=1:kA(3,i)=objfun(A(:,i));endB=A';%根据目标函数值排序A=sortrows(B,3)';p=0;for j=1:kx=(objfun(A(:,j))-objfun(A(:,1)))^2;p=p+x;endo=sqrt(p/(k-1));%收敛条件if(o<h)%判断所求点是否为最优点disp('最优点为')xz(1)=A(1,1);xz(2)=A(2,1);disp(xz);disp('其函数值为')f=A(3,1);disp(f);elsexr=Xcpanduan(A,k,n,h,1.3);endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function A=kexingdian(k,xb1,xb2,b)A=zeros(3,k);A(1,1)=b(1);A(2,1)=b(2);for i=2:kA(1,i)=xb1(1)+rand(1)*(xb1(2)-xb1(1));A(2,i)=xb2(1)+rand(1)*(xb2(2)-xb2(1));%产生j个顶点endt=0;for j=1:kif(A(1,j)+A(2,j)<=11&&A(1,j)<=6&&A(2,j)<=8)%判断是否有不可行点t=t+1;T(:,t)=A(:,j);endendif(t<k)%计算出可行点的中心位置xcxc=zhongxindian(T,t);endt=0;for j=1:k%利用中心点将原不可行点逼近为可行点while(A(1,j)+A(2,j)>11||A(1,j)>6||A(2,j)>8)A(:,j)=xc+0.5*(A(:,j)-xc);endendendx=x0;f=objfun(x);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function f=objfun(x)f= x1^2+x2^2-x1*x2-10*x1-4*x2+60;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function xc=Xcpanduan(A,k,n,h,a)for i=1:k-1T(:,i)=A(:,i);endxc=zhongxindian(T,k-1);%计算除最坏点以外的可行点中心坐标if(xc(1)+xc(2)<=11&&xc(1)<=6&&xc(2)<=8)%判断xc是否可行xr=Xrpanduan(xc,A,a,n,k,h);A(:,k)=xr;else%不可行时,即重新确定初始可行点fuhexing(n,h,A(:,1),xr);endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function xc=zhongxindian(T,t)xc=[0;0;0];for i=1:txc=xc+T(:,i);endxc=xc/t;%求解中心点end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function xr=Xrpanduan(xc,A,a,n,k,h)xr=xc+a*(xc-A(:,k));while(xr(1)+xr(2)>11||xr(1)>6||xr(2)>8)%判断xr 是否可行若不可行,则持续迭代a=0.5*a;xr=xc+a*(xc-A(:,k));endxr=ercipanduan(a,xr,A(:,k),A,n,k,xc,h,xr);%可行时进入下一判断end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function xr=ercipanduan(a,p,b,A,n,k,xc,h,t)if(objfun(p)>=objfun(b))%判断反射点和最坏点函数值的大小if(a<=1e-10)A(:,k)=A(:,k-1);xr=Xcpanduan(A,k,n,h,a);disp(xr);elsea=0.5*a;xr=Xrpanduan(xc,A,a,n,k,h);%返回中心点判断,持续迭代endelseA(:,k)=p;%以反射点取代最坏点进行循环mubiao(A,n,k,h);xr=t;endend3.运行结果五.有约束优化方法——混合惩罚法1.eg:函数:min f(x)=(x(4)-x(1))^2+(x(5)-x(2))^2+(x(6)-x(3))^2;St:g1=x(1)^2+x(2)^2+x(3)^2-5;g2=(x(4)-3)^2+x(5)^2-1;g3=x(6)-8;g4=4-x(6);2.编程代码function [x,f]=hunhechengfa(x0,r0,c,h1,h2)k=1;z=0;A(:,1)=x0;r(1)=r0;while (z==0)k=k+1;x=lunhuan(x0,r(k-1));A(:,k)=x;r(k)=c*r(k-1);z=shoulian(A,r,h1,h2,k);if(z==1)break;endx0=x;enddisp('最优解点x=');disp(x);disp('最优值=');f=fhanshu(x);disp(f);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function z=shoulian(A,r,h1,h2,k)%判断收敛条件U=abs(objfun(A(:,k),r(k))-objfun(A(:,k-1),r(k-1))/obj fun(A(:,k-1),r(k-1)));V=0;for i=2:kV=V+(A(1,k)-A(1,k-1))^2;endV=sqrt(V);if(U<=h1&&V<=h2)z=1;elsez=0;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function p=objfun(x,r)%φ函数g1=x(1)^2+x(2)^2+x(3)^2-5;g2=(x(4)-3)^2+x(5)^2-1;g3=x(6)-8;g4=4-x(6);j=sqrt(r);u=r*(1/g1+1/g2+1/g3+1/g4);v=(g1^2+g2^2+g3^2+g4^2)/j;p=fhanshu(x)-u+v;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function f=fhanshu(x)%目标函数f=(x(4)-x(1))^2+(x(5)-x(2))^2+(x(6)-x(3))^2;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function x=lunhuan(x0,r)%轮换法p=1;h=0.01;d=zeros(6,6);a=zeros(6,1);x=x0;for i=1:6for j=1:6if(i==j)d(i,j)=1;endendendwhile(p>h)t=x;v=0;for k=1:6a(k)=golden(x,d(:,k),r);c=d(:,k);x=x-a(k)*c';v=v+(x(k)-t(k))^2;endp=sqrt(v);endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ans=golden(st,sd,r)%黄金分割法求最佳步长 [g,h]=jintuifa(st,sd,r);a(1)=g;b(1)=h;L=0.01;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;p=st+t(1)*sd';q=st+u(1)*sd';m(1)=objfun(p,r);n(1)=objfun(q,r);while(b(k)-a(k)>L)if(m(k)>n(k))a(k+1)=t(k);b(k+1)=b(k);t(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));elsea(k+1)=a(k);b(k+1)=u(k);u(k+1)=t(k);t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));endw=st+t(k+1)*sd';z=st+u(k+1)*sd';m(k+1)=objfun(w,r);n(k+1)=objfun(z,r);k=k+1;endans=(a(k)+b(k))/2;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=jintui(a,st,sd,r)%代入步长f=objfun(st+a.*sd',r);end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [lb,ub]=jintuifa(st,sd,r)%进退法求最佳步长区间x0=0;step0=0.001;step=step0;f0=jintui(x0,st,sd,r);x1=x0+step0;f1=jintui(x1,st,sd,r);if f1<=f0while truestep=2*step;x2=x1+step;f2=jintui(x2,st,sd,r);if f1<=f2lb=x0;ub=x2;break;elsex0=x1;x1=x2;f0=f1;f1=f2;endendelsewhile truestep=2*step;x2=x0-step;f2=jintui(x2,st,sd,r);if f0<=f2lb=x2;ub=x1;break;elsex1=x0;x0=x2; f1=f0; f0=f2;endendend3.运行结果。

利用Matlab求解机械设计方案优化问题的分析

利用Matlab求解机械设计方案优化问题的分析

利用MATLAB求解机械设计优化问题的分析周婷婷(能源与动力学院,油气0701>摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具,它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。

本文浅谈MATLAB在机械设计优化问题的几点应用。

关键词:MATLAB 约束条件机械设计优化引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。

1无约束条件的极值问题的解算方法设有Rosenbrock函数如下:f(X1,X2>=100(X2-X1*X1>2+(1-X1>2求向量X取何值时,F(x>的值最小及最小值是多少?先用MATLAB语言的编辑器编写求解该问题的程序如下:%把函数写成MATLAB语言表达式fun=’100*(X(2>-X(1>*X(1>2+(1-X(1>>2%猜自变量的初值X0=[-1 2]。

%所有选项取默认值options=[ ];%调用最优化函数进行计算。

%函数最小值存放在数组元素options(8>中%与极值点对应的自变量值存放在向量X里%计算步数存放在数组元素options(10>中[X,options]=fmins(fun,X0,options>;%显示与极值点对应的自变向量X的值。

%显示函数最小值options(8>%显示函数计算步数options(10>把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果:X=9.999908938395383e-0019.99982742178110e-001ans=1.706171071794760e-001ans=195显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(>,它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。

机械优化设计实验报告

机械优化设计实验报告

《机械优化设计》课程实验报告M a t l a b优化工具箱一、实验目的和要求熟悉Matlab7.0软件的界面和基本功能,了解Matlab优化工具箱的常用算法;使用Matlab优化工具箱的f m i n u n c/f m i n s e a r c h函数求解多变量非线性无约束优化问题;使用Matlab优化工具箱的f m i n c o n函数求解多变量非线性约束优化问题。

二、实验设备和软件台式计算机,Matlab7.0软件。

三、实验内容求解下列优化问题的最优解。

要求:(1)编写求解优化问题的M文件,(2)在命令窗口输入求解优化问题的命令,并得出计算结果。

1、标量优化问题1) f=x2-10x+362) f=x4-5x3+4x2-6x+603) f=(x+1)(x-2)22、多变量非线性无约束优化问题1) f=4(x1-5) 2+( x2-6) 2初始点:x0=[8,9]T;2) f=(x12+x2-11)2+( x1+ x22-7)2初始点:x0=[1,1]T;3) f=[1.5- x1(1- x2)]2+[2.25- x1(1- x22)]2+[2.625- x1(1- x23)]2初始点:x0=[2,0.2]T;4) f=( x12+12 x2-1)2+(49 x1+49 x2+84 x1+2324 x2-681)2初始点:x0=[1,1]T;5) f=( x1+10 x2)2+5(x3- x4)2+( x2-2 x3)4+10(x1- x4)4初始点:x0=[3,-1,0,1]T;3、多变量非线性约束优化问题1) f=( x1-2)2+( x2-1)2g1= x12-x2≤0g2= x1+x2-2≤0初始点:x0=[3,3]T;2) f= x23[( x1-3)2-9]/273≤0g1=x2-x1/3≤0g2=-x1+x2/3≤0g3=x1+x2/3-6≤0g4=-x1≤0g5=-x2≤0初始点:x0=[1,5]T;3) f=1000- x12-2x2 2-x32-x1x2-x1x3g1=-x1≤0g2=-x2≤0g3=-x3≤0g4=x12+x22+x3 2-25=0g5=8x1+14x2+7x3-56=0初始点:x0=[2,2,2]T4)f=100(x2-x12)2+(1-x1)2+90(x4-x32)2+(1-x3)2+10[(x2-1)2+(x4-1)2]+19.8(x2-1)(x4-1)-10≤x1≤10-10≤x2≤10-10≤x3≤10-10≤0x4≤10初始点:x0=[-3,-1,-3,-1]T;四、M文件、在命令窗口输入的求解命令清单及计算结果记录>>1、(1)目标函数的M文件function f=fun1(x)f=x^2-10*x+36调用求解命令x0=0;options=optimset('LargeScale','off');lb=-10;ub=10;[x,fval]=fminbnd(@fun1,lb,ub,options)或{ x0=0; [x,fval]=fminbnd(@fun1,-10,10)} x =5.0000fval =11.00002、(2)目标函数的M文件function f=fun2(x)f=x^4-5*x^3+4*x^2-6*x+60调用求解命令x0=0;options=optimset('LargeScale','off');lb=0;ub=10;[x,fval]=fminbnd(@fun2,lb,ub,options)x =3.2796fval =22.65902、(3)目标函数的M文件function f=fun3(x)f=(x+1)*(x-2)^2调用求解命令> x0=0;options=optimset('LargeScale','off');lb=0;ub=10;[x,fval]=fminbnd(@fun3,lb,ub,options)x =2.0000fval =1.9953e-0113(1)目标函数的M文件function f=fun4(x)f=4*(x(1)-5)^2+(x(2)-6)^2调用求解命令x0=[8,9];options=optimset('LargeScale','off');[x,fval]=fminunc(@fun4,x0,options)Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x =5.00006.0000fval =1.7876e-0123(2)目标函数的M文件function f=fun5(x)f=(x(1)^2+x(2)-11)^2+(x(1)+x(2)^2-7)^2调用求解命令>> x0=[1,1];options=optimset('LargeScale','off');[x,fval]=fminunc(@fun5,x0,options)Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x =3.0000 2.0000fval =5.2125e-0123(3)目标函数的M文件function f=fun6(x)f=[1.5-x(1)*(1-x(2))]^2+[2.25-x(1)*(1-x(2)^2)]^2+[2.625-x(1)*(1-x(2)^3)]^2调用求解命令x0=[2,0.2];options=optimset('LargeScale','off');[x,fval]=fminunc(@fun6,x0,options)Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x =3.0000 0.5000fval =3.9195e-0143(4)目标函数的M文件function f=fun7(x)f=(x(1)^2+12*x(2)-1)^2+(49*x(1)+49*x(2)+84*x(1)+2324*x(2)-681)^2调用求解命令x0=[1,1];options=optimset('LargeScale','off');[x,fval]=fminunc(@fun7,x0,options)Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x =0.9570 0.2333fval =7.37643(5)目标函数的M文件function f=fun8(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调用求解命令>> x0=[3,-1,0,1];options=optimset('LargeScale','off');[x,fval]=fminunc(@fun8,x0,options)Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x =0.0015 -0.0002 -0.0031 -0.0031fval =6.3890e-009三、3、(1)目标函数的M文件function f=fun9(x)f=(x(1)-2)^2+(x(2)-1)^2约束函数的M文件function [c,cep]=con1(x)c=[x(1)^2-x(2);x(1)+x(2)-2];cep=[]当前窗口条用求解命令x0=[3,3];options=optimset('LargeScale','off');[x,fval]=fmincon(@fun9,x0,[],[],[],[],[],[],@con1,options)Optimization terminated: first-order optimality measure less than options.TolFun and maximum constraint violation is less than options.TolCon.Active inequalities (to within options.TolCon = 1e-006):lower upper ineqlin ineqnonlin12x =1.0000 1.0000fval =1.00003、(2)目标函数的M文件function f=fun10(x)f=x(2)^3*[(x(1)-3)^2-9]/27*3^(1/2)约束函数的M文件function [c,cep]=con2(x)c=[x(2)-x(1)/3^(1/2);-x(1)+x(2)/3^(1/2);x(1)+x(2)/3^(1/2)-6];cep=[]当前窗口条用求解命令x0=[1,5];lb=[0,0];options=optimset('LargeScale','off');[x,fval]=fmincon(@fun10,x0,[],[],[],[],lb,ub,@con2,options)Optimization terminated: first-order optimality measure lessthan options.TolFun and maximum constraint violation is lessthan options.TolCon.Active inequalities (to within options.TolCon = 1e-006):lower upper ineqlin ineqnonlin13x =4.5000 2.5981fval =-7.59383、(3)目标函数的M文件function f=fun11(x)f=1000-x(1)^2-2*x(2)^2-x(3)^2-x(1)*x(2)-x(1)*x(3)约束函数的M文件function [c,cep]=con3(x)c=[];cep=[x(1)^2+x(2)^2+x(3)^2-25;8*x(1)+14*x(2)+7*x(3)-56];当前窗口条用求解命令x0=[2,2,2];lb=[0,0,0];ub=[];options=optimset('LargeScale','off');[x,fval]=fmincon(@fun11,x0,[],[],[],[],lb,ub,@con3,options)Optimization terminated: first-order optimality measure lessthan options.TolFun and maximum constraint violation is lessthan options.TolCon.No active inequalitiesx =3.5121 0.2170 3.5522fval =961.71523、(4)目标函数的M文件function f=fun12(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)约束函数的M文件function [c,cep]=con4(x)cep=[];当前窗口条用求解命令x0=[-3,-1,-3,-1,];lb=[-10,-10,-10,-10];ub=[10,10,10,10];options=optimset('LargeScale','off');[x,fval]=fmincon(@fun12,x0,[],[],[],[],lb,ub,@con4,options)Optimization terminated: Magnitude of directional derivative in searchdirection less than 2*options.TolFun and maximum constraint violationis less than options.TolCon.No active inequalitiesx =1.0001 1.0002 0.9999 0.9997fval =2.3989e-007五、质疑和建议对于一维标量优化问题搜索,在当前窗口中调用求解命令时,[x,fval]=fminbnd(@fun1,lb,ub,options)可以改成[x,fval]=fminbnd(@fun1,-10,10)如下:function f=fun1(x)f=x^2-10*x+36调用求解命令x0=0;options=optimset('LargeScale','off');lb=-10;ub=10;[x,fval]=fminbnd(@fun1,lb,ub,options)或{ x0=0; [x,fval]=fminbnd(@fun1,-10,10)}x =5.0000fval =11.0000。

机械优化实例及matlab工具箱

机械优化实例及matlab工具箱

s
f (x)
( xMi xmi )2 ( yMi ymi )2
i 1
设计实例2:
3)确定约束条件
(1)由曲柄存在条件,可得:
g1(x) l1 l2 l3 l4 0 g2 (x) l1 l3 l2 l4 0 g3(x) l1 l4 l2 l3 0

l1 ) 2
]

0
优化设计工具
优化设计工具
第1部分 MATLAB基础 第2部分 优化计算工具
第1部分 MATLAB基础
1.1 MATLAB环境简介 1.2 数据表示 1.3 数组 1.4 源文件(M-文件)
1.1 MATLAB窗口
启动MATLAB 其窗口如右
1、Command Window (命令窗口)
g3 ( x)
1
7 45
x13 x2

0
g4 ( x)
1
1 321
x1 x22

0
g5 (x) x1 0
g6 (x) x2 0
盖板优化实例
盖板优化实例
运行结果:
x = 0.6332 25.3264 fval = 101.3056
function f=myfun(x) f=3*x(1)^2+2*x(1)*x(2)+x(2)^2
%然后调用函数 fminunc x0=[1,1];
[x,fval]=fminunc(myfun,x0)
2.2 无约束非线性优化函数
[结果] x=
1.0e-008 * -0.7512 0.2479 fval = 1.3818e-016
[代码] f = [-5; -4; -6]; A = [1 -1 1;3 2 4;3 2 0]; b = [20; 42; 30]; lb = zeros(3,1); [x,fval] = linprog(f,A,b,[],[],lb)

机械优化设计Matlab-优化工具箱基本用法

机械优化设计Matlab-优化工具箱基本用法

Matlab 优化工具箱x = bintprog (f , A, b, Aeq, Beq , x0, options ) 0—1规划 用MATLAB 优化工具箱解线性规划命令:x=linprog(c ,A ,b ) 2、模型:命令:x=linprog(c ,A ,b ,Aeq ,beq ) 注意:若没有不等式:存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ].min z=cX1、模型:3、模型:命令:[1]x=linprog(c,A,b,Aeq,beq,VLB,VUB)[2]x=linprog(c,A,b,Aeq,beq,VLB,VUB, X0)注意:[1] 若没有等式约束,则令Aeq=[ ],beq=[]. [2]其中X0表示初始点4、命令:[x,fval]=linprog(…)返回最优解x及x处的目标函数值fval.例1 max解编写M文件小xxgh1。

m如下:c=[-0.4 —0。

28 —0.32 —0.72 -0.64 -0。

6];A=[0。

01 0.01 0.01 0.03 0。

03 0.03;0。

02 0 0 0。

05 0 0;0 0。

02 0 0 0。

05 0;0 0 0.03 0 0 0。

08];b=[850;700;100;900];Aeq=[]; beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)例2解: 编写M文件xxgh2.m如下:c=[6 3 4];A=[0 1 0];b=[50];Aeq=[1 1 1];beq=[120];vlb=[30,0,20];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub例3 (任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。

假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。

机械优化设计MATLAB程序

机械优化设计MATLAB程序

机械优化设计MATLAB程序
1.建立目标函数和约束条件
在机械优化设计中,目标函数是需要最小化或最大化的量,可以是机械结构的重量、成本、应力等。

约束条件是指机械结构必须满足的条件,例如最大应力、最小挠度等。

在MATLAB中通过函数来定义目标函数和约束函数。

2.选择优化算法
MATLAB提供了多种优化算法,例如遗传算法、粒子群算法、模拟退火算法等。

根据实际情况选择合适的优化算法。

3.设计参数和变量范围
机械结构的优化设计通常涉及到多个参数和变量,如尺寸、材料等。

在MATLAB中通过定义参数和变量范围来限制优化过程中的空间。

4.编写优化程序
在MATLAB中,可以使用优化工具箱的相关函数来编写机械优化设计程序。

程序的基本结构包括定义目标函数、约束函数、参数和变量范围,并选择合适的优化算法进行求解。

5.运行优化程序
在编写完成程序后,可以通过运行程序来开始优化过程。

MATLAB会根据设定的目标函数和约束条件进行,并最终得到最优解。

6.分析优化结果
优化程序运行完成后,可以通过MATLAB提供的分析工具对优化结果进行评估。

可以通过绘制图表、计算相关指标等方式对结果进行分析和比较。

7.进一步优化和改进
根据优化结果,可以对机械结构进行进一步优化和改进。

可以调整参数和变量范围,重新运行优化程序,直到得到满意的结果。

总之,以上是一种用MATLAB编写机械优化设计程序的基本流程。

通过合理地利用MATLAB提供的工具和函数,可以帮助工程师进行机械结构的优化设计,提高设计效率和准确性。

机械优化设计MATLAB程序

机械优化设计MATLAB程序

机械优化设计MATLAB程序机械优化设计MATLAB程序引言机械优化设计是现代工程领域中的重要课题,通过采用数值方法和优化算法,可以实现对机械产品设计的自动化和优化。

MATLAB 作为一种功能强大的科学计算软件,为机械优化设计提供了丰富的工具和函数。

本文将介绍如何使用MATLAB编写机械优化设计程序,并讨论如何应用MATLAB进行机械优化设计。

MATLAB的优势与其他科学计算软件相比,MATLAB具有许多优势:1. 丰富的工具箱:MATLAB包含了各种各样的工具箱,涵盖了数值计算、优化、曲线拟合、数据可视化等领域,这些工具箱为机械优化设计提供了强大的支持。

2. 简单易用的编程语言:MATLAB使用的编程语言是一种高级语言,语法简单易懂,对于初学者而言非常友好。

即使没有编程经验,用户也能够快速上手。

3. 丰富的函数库:MATLAB拥有丰富的函数库,用户可以直接调用这些函数来完成各种任务,无需从零开始编写代码。

4. 广泛的应用领域:MATLAB在工程、科学、金融等领域得到了广泛的应用,拥有一个庞大的用户社区。

用户可以通过查看官方文档、参与用户社区等途径获取帮助和支持。

机械优化设计的步骤机械优化设计一般包括以下几个步骤:1. 建立数学模型:首先需要建立机械系统的数学模型,该模型可以基于物理原理或实验数据。

通过建立数学模型,可以将机械系统的性能指标与设计变量进行数学描述。

2. 确定优化目标:根据机械系统的需求和限制条件,确定优化目标。

优化目标可以是多个,如最小化能量损失、最小化材料使用量等。

3. 选择优化算法:基于问题的性质选择合适的优化算法。

常用的优化算法包括遗传算法、粒子群算法、梯度下降算法等。

4. 编写MATLAB代码:根据以上步骤,编写MATLAB代码实现机械优化设计。

MATLAB提供了丰富的工具箱和函数来辅助编写优化算法的代码。

编写机械优化设计MATLAB程序的步骤以下是编写机械优化设计MATLAB程序的一般步骤:1. 导入必要的工具箱和函数库:% 导入优化工具箱import optim.% 导入其他必要的函数库import matlab.2. 建立数学模型:根据机械系统的特点和要求,建立相应的数学模型。

matlab机械优化设计应用实例

matlab机械优化设计应用实例
案例如图有一块边长为6m的正方形铝板四角截去相等的边长为x的方块并折转造一个无盖的箱子问如何截法x取何值才能获得最大容器的箱子只写出这一优化问题的数学模型
一维优化问题
一维优化问题的数学模型为:
min
具体的调用格式如下: 调用格式1:
f ( x)
x1 x x2
在matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd 来实现的。
调用方式二: 在命令窗口中输入: [x,fval]=fminsearch(@demfun1,[0,0]) 得到的结果 X= 1.0016 0.8335 Fval= -3.3241
约束优化问题
1.线性规划
f=[-7;-5]; A=[3,2;4,6;0,7]; b=[90;200;210]; lb=zeros(2,1); 调用linprog函数 [x,fval]=linprog(f,A,b,[],[],lb)
方法二:在MATLAB的M编辑器中建立函数文件用来保存所要 求解最小值的函数:
function f=demfun1(x) f= 2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2; 保存为demfun1.m。
然后,在命令窗口中调用该函数,这里有两种调用方式:
调用方式一: 在命令窗口中输入: [x,fval]=fminsearch('demfun1',[0,0])
调用格式2:[X,FVAL]=fminunc(FUN,X0) 这种格式的功能是:同时返回解x和在点x处的目标函数值。
1. 求函数F=sin(x)+3的最小值点。
function f=demfun(x) f=sin(x)+3 然后,在命令窗口中输入: X=fminunc(@demfun,2)

[精品]机械优化设计及其MATLAB实现

[精品]机械优化设计及其MATLAB实现

[精品]机械优化设计及其MATLAB实现
机械设计优化是一种在构建机械系统时,通过设计方法和技术,使机械系统具有最佳性能特征的一类工程问题。

它不仅要求机械系统要具备结构合理、可行性强和功能合理等可行性特征,而且要求满足系统的性能优化约束,以达到最佳的功能和性能。

为了解决机械设计优化类问题,许多算法已经得到广泛的应用,例如遗传算法、粒子群算法、陡峭穿越法以及模拟退火算法。

这些算法具有计算简单、收敛速度快以及优化效果好等特点,因此已经广泛应用于机械设计优化中。

同时,结合MATLAB等强大的数值计算软件,可以加速优化问题的计算,快速有效地解决问题。

根据机械设计优化的研究进程,MATLAB对于此类问题的解决有着重要的作用。

MATLAB 支持多种优化算法,具有函数极小化技术、计算机辅助优化设计(CAD)和遗传算法、模拟退火算法和粒子群等多种算法技术,可用于求解大多数机械设计优化问题。

此外,MATLAB还提供了丰富的可视化工具,使我们可以对平面或空间机械结构进行可视化监控,从而更好地理解机械系统的效果以及优化结果的合理性。

总之,MATLAB是一款功能强大的数值计算软件,它的强大功能可以帮助机械工程师解决机械设计优化类问题,提升设计效率和工作效果,因此成为机械设计优化领域中经久不衰的重要工具之一。

(汇总)Matlab机械优化设计实例教程

(汇总)Matlab机械优化设计实例教程
[x,fval] = fminbnd(…) [x,fval,exitflag] = fminbnd(…) [x,fval,exitflag,output] = fminbnd(…) [应用背景]给定区间x1<x<x2,求函数f(x)的最小值。X可以 是多元向量
现代设计理论与方法
4
1.2有边界非线性最小化
表2 机床加工情况表
设在甲机床上加工工件1、2和3的数量分别为x1、x2和x3,在乙机床上加工 工件1、2和3的数量分别为x4、x5和x6。根据三种工种的数量限制,有
现代设计理论与方法
19
x1+x4=300 (对工件1) x2+x5=500 (对工件2) x3+x6=400 (对工件3) 再根据机床甲和乙的可用总台时限制,可以得到其它约束条件。 以总加工费用最少为目标函数,组合约束条件,可以得到下面的数 学模型: 首先输入以下系数: f = [13;9;10;11;12;8]; A = [0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3]; b = [700; 800]; Aeq=[1 0 0 1 0 0 010010 0 0 1 0 0 1]; beq=[300 500 400]; lb = zeros(6,1);
现代设计理论与方法
16
1.3线性规划及其优化函数
[例四] 生产方案的最优化问题 某工厂生产A和B两种产品,它们需要经过三种设备的加工,其工时
如表9-16所示。设备一、二和三每天可使用的时间分别不超过12、10和8 小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期 内A和B的利润分别为4和3千元/吨,问在那个时期内,每天应安排产品A、 B各多少吨,才能使工厂获利最大?

matlab在机械优化设计中的应用

matlab在机械优化设计中的应用

matlab在机械优化设计中的应用一、引言随着科技的不断发展,机械优化设计在工程领域中得到了广泛的应用。

而在机械优化设计中,matlab作为一款强大的数学软件,在优化算法的实现和结果分析等方面具有很大的优势。

本文将探讨matlab在机械优化设计中的应用。

二、matlab在机械优化设计中的基础知识1. matlab基础知识Matlab是一种交互式数值计算环境和编程语言,可用于科学计算、数据分析和可视化等多个领域。

Matlab有着丰富的函数库和工具箱,可进行各种数学运算、统计分析、图像处理、信号处理等操作。

2. 机械优化设计基础知识机械优化设计是指通过运用数学模型和计算方法对机械结构进行全面分析和综合考虑,以达到最佳性能指标或最小成本等目标。

其中包括了多目标规划、遗传算法、神经网络等多种方法。

三、matlab在机械优化设计中的应用1. 优化算法实现Matlab提供了各种常见的数值计算方法和最优化方法,如线性规划、非线性规划、遗传算法等。

通过Matlab的函数库和工具箱,可以轻松地实现各种优化算法,并且可以根据具体需求进行自定义编程。

2. 结果分析Matlab在结果分析方面也有很大的优势。

通过Matlab的图形界面,可以绘制各种图表,如散点图、折线图、柱状图等。

同时,Matlab还提供了多种统计分析方法,如方差分析、回归分析等,可以对优化结果进行全面的统计分析。

3. 机械结构设计Matlab还可以用于机械结构设计。

通过建立机械结构模型,并运用Matlab中的有限元分析工具箱进行模拟计算,可以得到机械结构在不同载荷下的应力和变形情况。

这些数据可以进一步用于优化设计和结构改进。

4. 案例应用以一台压缩机为例,利用Matlab进行机械优化设计。

首先建立压缩机的数学模型,并根据实际需求设置相关参数和目标函数。

然后采用遗传算法对压缩机进行优化设计,并得到最佳设计方案。

最后利用Matlab中的有限元分析工具箱对最佳设计方案进行模拟计算,并得到应力和变形等数据。

机械优化设计MATLAB程序

机械优化设计MATLAB程序

机械优化设计MATLAB程序正文:⒈前言⑴研究背景机械优化设计是一种在机械工程领域中被广泛应用的方法,旨在通过使用数学模型和优化算法来改进机械系统的性能。

MATLAB是一种强大的数值计算和编程工具,可以用于开发机械优化设计程序。

⑵目的和范围⒉问题描述⑴设计需求在开始编写机械优化设计程序之前,需要明确设计需求,即需要实现的机械系统的性能指标或目标。

这些需求可以包括系统的功率、效率、噪声、振动等方面。

⑵优化目标根据设计需求,确定最终优化目标。

例如,通过调整机械系统的参数来最大化系统的效率、最小化系统的振动等。

⒊数学模型⑴设计变量设计变量是机械系统中可以调整的参数。

需要对设计变量进行定义和范围设定,以确保优化算法能够在合理的范围内搜索最优解。

⑵约束条件约束条件是在进行优化时必须满足的条件。

这些条件可以包括设计变量的边界条件、约束函数等。

在编写MATLAB程序时,需要将这些约束条件作为输入参数。

⒋算法选择与实现⑴优化算法选择根据优化目标和系统的特点,选择合适的优化算法。

常见的优化算法包括遗传算法、粒子群优化算法、模拟退火算法等。

⑵优化算法实现根据选择的优化算法,编写MATLAB程序实现优化过程。

程序应包括目标函数的定义、算法的参数设置、迭代过程和终止条件等。

⒌算法验证与结果分析⑴数据采集与处理在进行机械优化设计实验时,需要采集相应的实验数据,并对数据进行处理。

这些数据可以包括设计变量的调整情况、系统性能指标的变化等。

⑵结果分析基于采集到的数据,分析和比较不同优化算法的性能。

可以绘制图表展示优化过程和结果的变化,以便于进一步分析和优化。

⒍结论与展望总结机械优化设计MATLAB程序的设计过程和结果,对实验结果进行分析,并提出未来改进和研究的方向。

1、本文档涉及附件:附件1:MATLAB程序代码示例附件2:数据采集记录表2、本文所涉及的法律名词及注释:机械优化设计:指利用数学模型和优化算法改善机械系统性能的方法。

轴承 优化算法 matlab 程序

轴承 优化算法 matlab 程序

轴承优化算法 matlab 程序轴承优化算法的Matlab程序在机械领域中,轴承是一种用于减少摩擦和支撑转动运动的重要元件。

轴承的性能直接影响到机械设备的运行效率和寿命。

为了提高轴承的性能,并解决实际工程问题,优化算法是一种常用的工具。

本文将介绍一种使用Matlab编写的轴承优化算法程序。

轴承优化算法的设计目标是通过调整设计参数以达到最佳性能。

优化算法基于数学模型和计算机算法,通过迭代寻找最佳的解。

对于轴承而言,常见的设计参数包括几何尺寸、材料、润滑方式等。

首先,我们需要创建一个Matlab函数来定义轴承的数学模型。

例如,我们可以使用Reynolds方程来描述轴承的润滑情况。

根据Reynolds方程,轴承的载荷和润滑剂的粘度将影响到摩擦和热平衡。

函数的输入参数可以包括轴承的几何参数、载荷、转速和润滑剂的粘度等。

接下来,我们可以选择一个适当的优化算法来解决轴承的优化问题。

常见的优化算法包括遗传算法、粒子群算法、模拟退火算法等。

对于大规模优化问题,遗传算法通常是较好的选择。

在Matlab中,可以使用Global Optimization Toolbox来实现这些算法。

以遗传算法为例,需要定义目标函数、约束条件和遗传算法的参数。

然后,我们可以使用Matlab编写主程序来调用上述的函数和算法。

主程序负责设置优化问题的目标函数和约束条件,以及调用遗传算法进行求解。

在每次迭代之后,程序将输出当前的最佳解以及对应的目标函数值。

在轴承优化算法程序中,还可以加入一些其他的功能和模块,以提高其实用性和可扩展性。

例如,可以添加一个用户界面模块,使用户可以方便地输入轴承的参数和运行优化算法。

还可以添加一个结果分析模块,用于评估不同参数组合的性能,并提供可视化的结果展示。

最后,需要对程序进行验证和优化。

可以通过比较优化算法的结果和现有的经验数据来验证程序的正确性。

如果发现程序存在性能问题,可以通过调整参数或改进算法来进行优化。

MATLAB优化工具箱在机械优化设计中的应用

MATLAB优化工具箱在机械优化设计中的应用

58 •电子技术与软件工程 Electronic Technology & Software Engineering软件应用• Software Application【关键词】MATLAB 优化工具箱 数值计算 实现算法 优化函数 机械优化设计MATLAB 是matrix 和laboratory 的组合,翻译为矩阵工厂或矩阵实验室,是由美国MathWorks 公司开发的面对科学计算、数据可视化、交互式程序设计的计算环境。

MATLAB 融合数值分析、数据可视化、矩阵计算、非线性动态系统建模、非线性动态系统仿真于一体,将上述功能集成在一个便于使用的视窗环境下。

在现代科学研究、现代工程设计、图像处理、信号处理、通信、金融等需要进行较多复杂有效数值计算的项目中应用广泛,提供了一种更加全面的计算方案。

MATLAB 的主要功能在于进行矩阵运算、实现算法、绘制数据、绘制函数、创建界面、连接程序等,其中MATLAB 的优化工具箱能够为技术人员提供优化函数。

MATLAB 优化工具箱时语法简单、初始参数不复杂、编程量小,在机械优化设计中有着十分重要的作用。

1 MATLAB语言与优化工具箱MATLAB 摒弃了以往程序语言编辑模式,适用于解决复杂工程问题。

MATLAB 基本数据单位为矩阵,指令表达式与工程、数学等常用形式相似,应用MATLAB 解决数学问题、工程问题也较为简捷。

MATLAB 结合了Maple 等软件的优点,支持C 语言、JA V A 语言、C++语言、FORTRAN 等,表现出更加强大的功能。

高效的数值计算与高效的符号计算功能,使MATLAB 更适用于繁杂的数学运算;完善的图形处理功能,使MATLAB 能够实现对计算结果的编程与数据可视化;接近数学表达式的自然化语言使MATLAB 的使用者更容易学习和掌握各类软件功能;功能丰富的信号处理工具箱、优化工具箱、通信工具箱等为使用者提供了方便、实用的处理工具。

利用Matlab求解机械设计优化问题的讲解

利用Matlab求解机械设计优化问题的讲解

利用MATLAB求解机械设计优化问题的分析周婷婷(能源与动力学院,油气0701)摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。

本文浅谈MATLAB在机械设计优化问题的几点应用。

关键词:MATLAB 约束条件机械设计优化引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。

1无约束条件的极值问题的解算方法设有Rosenbrock函数如下:f(X1,X2)=100(X2-X1*X1)2+(1-X1)2求向量X取何值时,F(x)的值最小及最小值是多少?先用MATLAB语言的编辑器编写求解该问题的程序如下:%把函数写成MATLAB语言表达式fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2%猜自变量的初值X0=[-1 2]; %所有选项取默认值options=[ ];%调用最优化函数进行计算。

%函数最小值存放在数组元素options(8)中%与极值点对应的自变量值存放在向量X里%计算步数存放在数组元素options(10)中[X,options]=fmins(fun,X0,options);%显示与极值点对应的自变向量X的值。

%显示函数最小值options(8)%显示函数计算步数options(10)把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果:X=9.999908938395383e-0019.99982742178110e-001ans=1.706171071794760e-001ans=195显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

t t t 机械优化设计作业1.用二次插值法求函数ϕ( )= ( +1)( - 2)2 极小值,精度 e=0.01。

在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下:f=inline('(t+1)*(t -2)^2','t')a=0;b=3;epsilon=0.01;t1=a;f1=f(t1);t3=b;f3=f(t3);t2=0.5*(t1+t3);f2=f(t2);c1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=0;while(abs(t4-t2)>=epsilon)if t2<t4if f2>f4f1=f2;t1=t2;t2=t4;f2=f4;elsef3=f4;t3=t4;endelseif f2>f4f3=f2;t3=t2;t2=t4;f2=f4;elsef1=f4;t2=t4;endendc1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=k+1;end%输出最优解if f2>f4t=t4;f=f(t4);elset=t2;f=f(t2);endfprintf(1,'迭代计算 k=%3.0f\n',k)fprintf(1,'极小点坐标 t=%3.0f\n',t)fprintf(1,'函数值 f=%3.4f\n',f)3.用牛顿法、阻尼牛顿法及变尺度法求函数 的极小点。

( ) ( ) ( )2112122, xxxxxf -+-= 4 2 (1)在用牛顿法在 MATLAB 的 M 文件编辑器中编写的 M 文件,如下: function [x,fx,k]=niudunfa(x0)syms x1 x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e -12;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;p=-G1\g1;x0=x0+p;while(norm(g1)>epson)p=-G1\g1;x0=x0+p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;endx=x0;fx=subs(f,{x1,x2},{x(1,1),x(2,1)});运行结果如下:>> [x,fx,k]=niudunfa([1;1])x =1.99995544760595233814899913778970.99997772380297616907449956889483fx =0.0000000000000000039398907941382470301534502947647 k =23(2)用阻尼牛顿法在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下: function [x,fx,k]=zuniniudunfa(x0)%阻尼牛顿法syms x1 x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e -12;%停机原则k=0;while norm(r1)>epsbeta=(r1'*r1)/(r0'*r0);p1=-r1+beta*p0;alpha=-(r1'*p1)/(p1'*A*p1);x1=x1+alpha*p1;r2=A*x1+b;p0=p1;r0=r1;r1=r2;k=k+1;endx=x1;y=0.5*x'*A*x+b'*x+c;运行结果如下:[y,x,k]=CG([3-1;-11],[-2;0],0,[2;1])y=-1x= 1.00001.0000k=1(2)用变尺度法在MATLAB的M文件编辑器中编写的M文件,如下:function[x,fx,k]=bianchidufa(A,b,c,x0)%用变尺度法求fx=0.5*x'*A*x+b'*x+c;epson=1e-12;g0=A*x0+b;G0=A;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;%x(k+1)-x(k);y0=A*a0*d0;%g(k+1)-g(k);x1=x0+a0*d0;while(norm(s0)>=epson)switch kcase{10}x0=x1;g0=A*x0+b;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;x1=x0+a0*d0;2 breakotherwiseg1=A*x1+b;y0=A*a0*d0;s0=a0*d0;% H1=H0+s0*s0'/(s0'*y0)-H0*y0*y0'*H0/(y0'*H0*y0); H1=H0+((1+y0'*H0*y0/(s0'*y0))*s0*s0'-H0*y0*s0'- s0*y0'*H0)/(s0'*y0);k=k+1;d1=-H1*g1;a1=-d1'*g1/(d1'*G0*d1);a0=a1;d0=d1;H0=H1;s0=a0*d0;x1=x1+a0*d0;breakendendx=x1;fx=0.5*x1'*A*x1+b'*x1+c;运行结果如下:》 [x,fx,k]=bianchidufa([3 -1;-1 1],[-2;0],0,[2;1]) H1 =0.4031 0.25780.2578 0.8945fx = -1x =1.00001.0000fx = -1k = 1故函数极小点是点(1,1)5.用鲍威尔法求函数 f (x 1, x 2 )= x 1+ 2x 2 - 4x 1 - 2x 1x 2 的极小点。

用鲍威尔法在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下: function [x,fx,k]=bowell(A,b,c,x0)%鲍威尔法d01=[1;0];d02=[0;1];x02=[0;0];esp=1e-12;%停机原则k=0;%迭代次数while norm(x0-x02)>=espk=k+1;⎨ =+++ 535.22.. ⎪ =≥ )4,3,2,1(0 jx g01=A*x0+b;a01=-d01'*g01/(d01'*A*d01);x01=x0+a01*d01;g02=A*x01+b;a02=-d02'*g02/(d02'*A*d02);x02=x01+a02*d02;d10=x02-x0;g10=A*x02+b;a10=-d10'*g10/(d10'*A*d10);x10=x0+a01*d01;d01=d02;d02=d10;x0=x10;endx=x0;fx=0.5*x'*A*x+b'*x+c;运行结果如下:[x,fx,k]=bowell([2 -2;-2 4],[-4;0],0,[2;1])fx =-8x =42fx =-8k =36.用单纯形法求线性规划问题min f (x ) = -1.1x 1 - 2.2x 2 + 3.3x 3 - 4.4x 4⎧x 1 + x 2 + x 3 = 4 ⎪ ⎩ j 用单纯形法在 MA TLAB 的 M 文件编辑器中编写的 M 文件,如下: %单纯形法 matlab 程序-danchunxingfa% 求解标准型线性规划:max c*x; s.t. A*x=b; x>=0% 本函数中的 A 是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量 b % N 是初始的基变量的下标% 输出变量 sol 是最优解, 其中松弛变量(或剩余变量)可能不为 0 % 输出变量 val 是最优目标值,kk 是迭代次数function [sol,val,kk]=danchunxingfa(A,N)[mA,nA]=size(A);kk=0; % 迭代次数flag=1;while flagkk=kk+1;if A(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);for i=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefor i=1:nA-1if A(mA,i)>0&A(1:mA-1,i)<=0%问题有无界解disp('have infinite solution!');flag=0;break;endendif flag%还不是最优表,进行转轴运算temp=0;for i=1:nA-1if A(mA,i)>temptemp=A(mA,i);inb=i;%进基变量的下标endendsita=zeros(1,mA-1);for i=1:mA-1if A(i,inb)>0sita(i)=A(i,nA)/A(i,inb);endendtemp=inf;for i=1:mA-1if sita(i)>0&sita(i)<temptemp=sita(i);outb=i;%出基变量下标endend%以下更新Nfor i=1:mA-1if i==outbN(i)=inb;end⎪ =++ 300103xxx ⎩ end% 以下进行转轴运算A(outb,:)=A(outb,:)/A(outb,inb);for i=1:mAif i~=outbA(i,:)=A(i,:)-A(outb,:)*A(i,inb);endendendendend ;令g (x ) = 1.1x 1 + 2.2x 2 - 3.3x 3 + 4.4x 4 ,则求 min f (x ) = -1.1x 1 - 2.2x 2 + 3.3x 3 - 4.4x 4 就变成求 - max g (x ),即min f (x ) = - max g (x ).运行结果如下:>> A=[1 1 1 0 4;1 2 2.5 3 5;1.12.2 -3.34.4 0];N=[3;4];[sol,val,kk]=danchunxingfa (A,N) sol =0 4.0000 1.6667 val =7.3333kk =2所以, 经两次转轴运算,得到的最优解为x 1 = x 2 = 0, x 3 = 4.0000, x 4 = 1.667, min f (x ) = -7.33337. 求解线性规划问题min z = -7x 1 -12x 2⎧9x 1 + 4x 2 + x 3 = 360 ⎪4x 1 + 5x 2 + x 4 = 200 s .t .⎨ ⎪x j ≥ 0( j = 1,2,3,4,5)用单纯形法在 MATLAB 的 M 文件编辑器中编写的 M 文件,如下: %单纯形法 matlab 程序-danchunxingfa% 求解标准型线性规划:max c*x; s.t. A*x=b; x>=0% 本函数中的 A 是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量 b % N 是初始的基变量的下标% 输出变量 sol 是最优解, 其中松弛变量(或剩余变量)可能不为 0 % 输出变量 val 是最优目标值,kk 是迭代次数function[sol,val,kk]=danchunxingfa(A,N)[mA,nA]=size(A);kk=0;%迭代次数flag=1;while flagkk=kk+1;if A(mA,:)<=0%已找到最优解flag=0;sol=zeros(1,nA-1);for i=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefor i=1:nA-1if A(mA,i)>0&A(1:mA-1,i)<=0%问题有无界解disp('have infinite solution!');flag=0;break;endendif flag%还不是最优表,进行转轴运算temp=0;for i=1:nA-1if A(mA,i)>temptemp=A(mA,i);inb=i;%进基变量的下标endendsita=zeros(1,mA-1);for i=1:mA-1if A(i,inb)>0sita(i)=A(i,nA)/A(i,inb);endendtemp=inf;for i=1:mA-1if sita(i)>0&sita(i)<temptemp=sita(i);outb=i;%出基变量下标endend%以下更新Nfor i=1:mA-1if i==outbN(i)=inb;endend%以下进行转轴运算A(outb,:)=A(outb,:)/A(outb,inb);for i=1:mAif i~=outbA(i,:)=A(i,:)-A(outb,:)*A(i,inb);endendendendend;运行结果如下:令Y=7x1+12x2,则求minz=7x1-12x2可转变为求-maxY,即minz=-maxY.>>A=[94100360;45010200;310001300;7120000];N=[3;4;5];[sol,val,kk]=danchunxingfa(A,N)sol=20248400val=420kk=3所以,经3次转轴运算,得到的最优解为x1=20,x2=24,x3=84,x4=x5=0,min z=-420.。

相关文档
最新文档