优化设计实验何胜.docx
《优化设计实验何胜.docx》由会员分享,可在线阅读,更多相关《优化设计实验何胜.docx(15页珍藏版)》请在冰豆网上搜索。
优化设计实验何胜
湖北工业大学
机械工程学院
工程优化设计与MATLAB实验报告
学院:
机械工程学院
专业:
机自
班级:
09创新班
姓名:
何胜
学号:
0910100121
指导老师:
李克勤
MATLAB优化设计实验报告
实验题目一:
进退法确定初始区间
用进退法计算函数
f(x)=2+x^2
的单峰区间,初始点X0=2。
MATLAB程序
该程序是按照寻找最优步长编写的,其数学模型为式(4-2)。
其中,xk0为初始点;dir0为给定的搜索方向;th为步长增量。
程序清单如下:
%opt_range_serach1.m
function[opt_step,f0,xx]=opt_range_serach1(f,xk0,dir0,th)
%用进退法搜索3个点,使中点函数值最小;输出步长、函数值、设计变量值
%xk0:
初始点
%th:
步长
t1=0;t2=th;
xk1=xk0;xk2=xk1+t2*dir0;
x0=xk1;
f1=feval(f,x0);
x0=xk2;
f2=feval(f,x0);
iff2t3=t2+th;
xk3=xk1+t3*dir0;
x0=xk3;
f3=feval(f,x0);
else
th=-2*th;
t3=t1;
f3=f1;
t1=t2;
f1=f2;
t2=t3;
f2=f3;
t3=th;
xk3=xk1+t3*dir0;
x0=xk3;
f3=feval(f,x0);
end
ii=0;
whilef2>f3
t1=t2;
f1=f2;
t2=t3;
f2=f3;
t3=t2+th;
xk3=xk1+t3*dir0;
x0=xk3;
f3=feval(f,x0);
end
xx1=xk1+t1*dir0;
xx2=xk1+t2*dir0;
xx3=xk1+t3*dir0;
ifth<0
opt_step=[t3t2t1];
xx=[xx3xx2xx1];
fo=[f3f2f1];
else
opt_step=[t1t2t3];
xx=[xx1xx2xx3];
fo=[f1f2f3]
end
end
用户程序为:
%rang_search_testl
clc;
f=inline('2+x^2','x');
xk0=2;th=0.5;dir0=1;
[opt_step,fo,xx]=opt_rang_serach1(f,xk0,dir0,th)
opt_step
计算结果为
opt_step=
-3-2-1
fo=
323
xx=
-101
实验题目二:
黄金分割法
计算目标函数
f(x)=2+x^2
在区间[-2,2]内的极小点。
MATLAB程序
其中,ε1,ε2为给定的任意小的精度,k为区间缩短的次数。
%golden_search
function[x0,f0]=golden_search(f,a,b,r,Tolx,TolFun,k)
kk=1;
whilekk>0
h=b-a;
rh=r*h;
c=b-rh;
d=a+rh;
fc=feval(f,c);
fd=feval(f,d);
ifk<=0||abs(h)iffc<=fd
x0=c,f0=fc;
kk=0;
else
x0=d;
f0=fd;
kk=0;
end
ifk==0;
fprintf('达到计算次数');
kk=0;
end
else
iffcb=d;
k=k-1;
else
a=c;
k=k-1;
end
end
end
用户程序为:
%golden_s_test1.m
functiongolden_s_test1
clc;
clearall;
gs_fun=inline('2+x^2','x');
a=-2;b=2;r=(sqrt(5)-1)/2;TolX=1e-7;TolFun=1e-7;MaxIter=50;
[xo,fo]=fminbnd(gs_fun,a,b)
[xo,fo]=golden_search(gs_fun,a,b,r,TolX,TolFun,MaxIter)
计算结果为
x0=
-5.5511e-017
f0=
2
实验题目三:
二次插值法
用二次插值法计算目标函数
f(x)=2+x^2
在区间[-2,2]内的极小点及最优步长
MATLAB程序
Function[opt_step,fo,xo]=opt_step_quad2(f,xk0,dir0,th,TolX,TolFun,MaxIter)
%opt_step_quad.m
[t012,fo,xx]=opt_range_serach1(f,xk0,dir0,th);
%searchfortheoptimumstepcorrespondingtominimumf(x)byquadraticapproximationmethod
k=MaxIter;
whilek>0
k=k-1;
t0=t012
(1);t1=t012
(2);t2=t012(3);
x0=xk0+t012
(1)*dir0;x1=xk0+t012
(2)*dir0;x2=xk0+t012(3)*dir0;
f0=feval(f,x0);f1=feval(f,x1);f2=feval(f,x2);
nd=[f0-f2f1-f0f2-f1]*[t1*t1t2*t2t0*t0;t1t2t0]';
t3=nd
(1)/2/nd
(2);x3=xk0+t3*dir0;f3=feval(f,x3);
ifk<=0|abs(t3-t1)opt_step=t3;
xo=xk0+opt_step*dir0;
fo=f3;
return
else
ift3iff3elset012=[t3t1t2];f012=[f3f1f2];
end
else
iff3<=f1,t012=[t1t3t2];f012=[f1f3f2];
elset012=[t0t1t3];f012=[f0f1f3];
end
end
end
end
opt_step=t3;
xo=xk0+opt_step*dir0;
fo=f3;
end
用户程序为:
%opt_step_quad_test1
clc;
f=inline('2+x^2','x');
xk0=2;th=0.5;dir0=1;TolX=1e-4;TolFun=1e-4;MaxIter=50;
[opt_step,fo,xx]=opt_step_quad2(f,xk0,dir0,th,TolX,TolFun,MaxIter)
计算结果为:
“
opt_step=
-2
fo=
2
xx=
0
实验题目四:
平面连杆机构优化
曲柄连杆机构设计的数学模型属于非线性规划问题,应用MATlAB优化工具箱中的函数fmincon来进行优化计算。
程序如下:
%连杆优化设计link_main
functionlink_main
clc;
clearall;
globalL1;
L1=1;
x0=[4;4;3];%优化变量赋初值
ub=[8,8,7];
options=optimset('LargeScale','off','TolFun',1e-12);
[x,feval,exitflag,output]=fmincon(@link_objfun,x0,[],[],[],[],[],ub,@link_confun,options)
functionf=link_objfun(x)
globalL1;
f=0;%给f赋初值
fai0=acos(((L1+x
(1))^2+x(3)^2-x
(2)^2)/(2*x(3)*(L1+x
(1))));
psai0=pi-acos((x(3)^2+x
(2)^2-(L1+x
(1))^2)/(2*x(3)*x
(2)));
fori=0:
50%将phi划分50等分
fai=fai0+pi/2*i/50;%曲柄转角各等分点的值
psai=psai0+(fai-fai0)^2/6;%摇杆转角各等分点的值
r=sqrt(L1^2+x(3)^2-2*x(3)*L1*cos(fai));
alpha=acos((r^2+x
(2)^2-x
(1)^2)/(2*x
(2)*r));
bta=acos((r^2+x(3)^2-L1^2)/(2*x(3)*r));
iffai<=pi
psais=pi-alpha-bta;
elseiffai<=2*pi
psais=pi-alpha-bta;
end
end
f=f+(psai-psais)^2;%计算目标函数
end%for循环体结束
fi0=fai0*180/pi,ppsai=psai0*180/pi;
function[cceq]=link_confun(x)
globalL1;
c=[x
(1)^2+x
(2)^2-(x(3)-L1)^2-1.414*x
(1)*x
(2)
(L1+x(3))^2-x
(1)^2-x
(2)^2-1.414*x
(1)*x
(2)
L1-x
(1)
L1-x
(2)
L1-x(3)
L1+x(3)-x
(1)-x
(2)
L1+x
(1)-x
(2)-x(3)
L1+x
(2)-x
(1)-x(3)];
ceq=[];
计算结果为
x=
5.6695
2.9143
7.0000
feval=
0.0051
exitflag=
4
实验题目五:
圆柱齿轮传动的优化设计
齿轮优化设计目标函数一般有两种:
一种是使齿轮传动中心距为最小;另一种是使齿轮体积为最小。
这里选取的目标函数为使两齿轮在分度圆柱体积之和为最小。
则目标函数为
从目标函数可以看出,当传动比u一定时,模数、小齿轮齿数、齿宽系数可以作为设计变量。
则
设计变量约束
模数的限制:
根据实际情况
小齿轮齿数限制:
取
齿宽系数限制:
取
性能约束
齿面接触疲劳的限制:
应使接触应力不大于许用接触应力,即
式中,
为弹性系数;
为节点区域系数;
为传动比系数。
根据题目条件,各参数取值如下:
载荷系数K=1.3;
弹性系数
;
节点区域系数
传动比系数
因为小齿轮扭矩为:
所以齿根弯曲疲劳强度约束为:
其中,齿形系数
和应力修正系数
MATLAB程序
%直齿圆柱齿轮普通优化设计程序
functiongear_opt1
clc;
clearall;
closeall;
P=400;
n1=550;
u=3.43;
x0=[623.8];
[x,fval]=fmincon(@gearoptfun2,x0,[],[],[],[],[],[],@gearoptcons2,[],P,n1,u)
functionf=gearoptfun2(x,P,n1,u)
f=1/4*pi*(1+u^2)*(x
(1)*x
(2))^3*x(3);
function[c,ceq]=gearoptcons2(x,P,n1,u)
c
(1)=8-x
(1);
c
(2)=x
(1)-15;
c(3)=20-x
(2);
c(4)=x
(2)-32;
c(5)=0.5-x(3);
c(6)=x(3)-1.2;
K=1.35;
Z=189.8^(1/2)*2.5*sqrt((1+u)/u);
T1=9550*1000*P/n1;
c(7)=Z*sqrt(2*K*T1/(x
(1)*x
(2))^3*x(3))-1400;
[YFa1,Ysa1]=yfasa(x
(2));
[YFa2,Ysa2]=yfasa(u*x
(2));
c(8)=2*K*T1/(x
(1)^3*x
(2)^2*x(3))*YFa1*Ysa1-410;
c(9)=2*K*T1/(x
(1)^3*x
(2)^2*x(3))*YFa2*Ysa2-410;
ceq=[];
function[yfa,ysa]=yfasa(z)
x=[17181920212223242526272829303540455060708090100150];
y1=[2.972.912.852.82.762.722.692.652.622.602.572.552.532.522.452.42.352.322.282.242.222.22.182.14];
y2=[1.521.531.541.551.561.571.5751.581.591.5951.601.611.621.6251.651.671.681.71.731.751.771.781.791.83];
yfa=interp1(x,y1,z);
ysa=interp1(x,y2,z);
%直齿圆柱齿轮模糊优化设计程序
functiongear_opt3
clc;
clearall;
closeall;
P=400;
n1=550;
u=3.43;
x0=[6230.8];
lamda=0.5632;
[x,fval]=fmincon(@gearoptfun2,x0,[],[],[],[],[],[],@gearoptcons2,[],P,n1,u,lamda)
functionf=gearoptfun2(x,P,n1,u,lamda)
f=1/4*pi*(1+u^2)*(x
(1)*x
(2)^3*x(3));
function[c,ceq]=gearoptfun2(x,P,n1,u,lamda);
c
(1)=5+lamda*3-x
(1);
c
(2)=x
(1)-(16-lamda*4);
c(3)=18+lamda*4-x
(2);
c(4)=x
(2)-(35-lamda*7);
c(5)=0.45+lamda*0.1-x(3);
c(6)=x(3)-(1.32-lamda*0.22);
K=1.35;
Z=189.8^(1/2)*2.5*sqrt((1+u)/u);
T1=9550*1000*P/n1;
c(7)=Z*sqrt(2*K*T1/(x
(1)*x
(2)^3*x(3))-(1400-lamda*(1400-1260)));
[YFal,Ysa1]=yfasa(x
(2));
[YFa2,Ysa2]=yfasa(u*x
(2));
c(8)=2*K*T1/(x
(1)^3*x
(2)^2*x(3))*YFa1*Ysa1-(410-lamda*(410-369));
c(9)=2*K*T1/(x
(1)^3*x
(2)^2*x(3))*YFa2*Ysa2-(350-lamda*(350-315));
ceq=[];
优化结果
按两种优化方法所得结果如下表所示。
优化方法
m/mm
Z1
目标函数值/mm^3
计算
圆整
计算
圆整
普通优化
9.4
10
20
20
0.63
4.2151*10^7
模糊优化
7.54
8
20.25
21
1.196
4.2626*10^7