请教高手MATLAB约束非线性规划/一M文件的调试
M文件如下,怎么调试呀,老有错误,请高手帮忙,急呀!%两级斜齿轮传动中心距优化设计%1---减速器中心距优化设计主程序%设计变量的初始值x0=[2;4;18;20;6.4...
M文件如下,怎么调试呀,老有错误,请高手帮忙,急呀!
% 两级斜齿轮传动中心距优化设计
% 1---减速器中心距优化设计主程序
% 设计变量的初始值
x0=[2;4;18;20;6.4;10];
% 设计变量的下界与上界
lb=[2;3.5;14;16;5.8;8];
ub=[5;6;22;22;7;15];
% 使用多维约束优化命令fmincon(调用目标函数jsqyh_g和非线性约束函数jsqyh_g)
% 不定义线性不等式约束中设计变量的系数矩阵a=[]和常数项向量b=[]
% 没有等式约束,侧参数:系数矩阵Aeq=[]和常数项向量beq=[]
[x,fn]=fmincon(@jsqyh_f,x0,[],[],[],[],lb,ub,@jsqyh_g);
disp ' ******** 两级斜齿轮传动中心距优化设计最优解 ********'
fprintf(1,' 高速级齿轮副模数 Mn1=%3.4f mm\n',x(1))
fprintf(1,' 低速级齿轮副模数 Mn2=%3.4f mm\n',x(2))
fprintf(1,' 高速级小齿轮齿数 z1=%3.4f \n',x(3))
fprintf(1,' 低速级小齿轮齿数 z3=%3.4f \n',x(4))
fprintf(1,' 高速级齿轮副传动比 i1=%3.4f \n',x(5))
fprintf(1,' 齿轮副螺旋角 beta=%3.4f 度\n',x(6))
fprintf(1,' 减速器中心距 a12=%3.4f mm\n',fn)
% 调用多维约束优化非线性约束函数(jsqyh_g)计算最优点x*的性能约束函数值g=jsqyh_g(x);
disp ' ======== 最优点的性能约束函数值 ======== '
fprintf(1,' 高速级齿轮副解除疲劳强度约束函数值 g1=%3.4f \n',g(1))
fprintf(1,' 低速级齿轮副解除疲劳强度约束函数值 g2=%3.4f \n',g(2))
fprintf(1,' 高速级大齿轮齿根弯曲强度约束函数值 g3=%3.4f \n',g(3))
fprintf(1,' 低速级大齿轮齿根弯曲强度约束函数值 g4=%3.4f \n',g(4))
fprintf(1,' 大齿轮齿顶与轴不干涉几何约束函数值 g5=%3.4f \n',g(5))
>> % 2----两级斜齿轮减速器总中心距的目标函数(jsqyh_f)
function f=jsqyh_f(x);
hd=pi/180;
a1=x(1)*x(3)*(1+x(5));
a2=x(2)*x(4)*(1+31.5/x(5));
cb=2*cos(x(6)*hd);
f=(a1+a2)/cb;
% 3----两级斜齿轮减速器优化设计的非线性不等式约束函数(jsqyh_g)
function [g,ceq]=jsqyh_g(x);
hd=pi/180;
g(1)=cos(x(6)*hd)^3-3.079e-6*x(1)^3*x(3)^3*x(5);
g(2)=x(5)^2cos(x(6)*hd)^3-1.701e-4*x(2)^3*x(4)^3;
g(3)=cos(x(6)*hd)^2-9.939e-5*(1+x(5))*x(1)^3*x(3)^2;
g(4)=x(5)^2*cos(x(6)*hd)^2-1.076e-4*(31.5+x(5))*x(2)^3*x(4)^2;
g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3))-x(2)*x(4)*(31.5+x(5)); 展开
% 两级斜齿轮传动中心距优化设计
% 1---减速器中心距优化设计主程序
% 设计变量的初始值
x0=[2;4;18;20;6.4;10];
% 设计变量的下界与上界
lb=[2;3.5;14;16;5.8;8];
ub=[5;6;22;22;7;15];
% 使用多维约束优化命令fmincon(调用目标函数jsqyh_g和非线性约束函数jsqyh_g)
% 不定义线性不等式约束中设计变量的系数矩阵a=[]和常数项向量b=[]
% 没有等式约束,侧参数:系数矩阵Aeq=[]和常数项向量beq=[]
[x,fn]=fmincon(@jsqyh_f,x0,[],[],[],[],lb,ub,@jsqyh_g);
disp ' ******** 两级斜齿轮传动中心距优化设计最优解 ********'
fprintf(1,' 高速级齿轮副模数 Mn1=%3.4f mm\n',x(1))
fprintf(1,' 低速级齿轮副模数 Mn2=%3.4f mm\n',x(2))
fprintf(1,' 高速级小齿轮齿数 z1=%3.4f \n',x(3))
fprintf(1,' 低速级小齿轮齿数 z3=%3.4f \n',x(4))
fprintf(1,' 高速级齿轮副传动比 i1=%3.4f \n',x(5))
fprintf(1,' 齿轮副螺旋角 beta=%3.4f 度\n',x(6))
fprintf(1,' 减速器中心距 a12=%3.4f mm\n',fn)
% 调用多维约束优化非线性约束函数(jsqyh_g)计算最优点x*的性能约束函数值g=jsqyh_g(x);
disp ' ======== 最优点的性能约束函数值 ======== '
fprintf(1,' 高速级齿轮副解除疲劳强度约束函数值 g1=%3.4f \n',g(1))
fprintf(1,' 低速级齿轮副解除疲劳强度约束函数值 g2=%3.4f \n',g(2))
fprintf(1,' 高速级大齿轮齿根弯曲强度约束函数值 g3=%3.4f \n',g(3))
fprintf(1,' 低速级大齿轮齿根弯曲强度约束函数值 g4=%3.4f \n',g(4))
fprintf(1,' 大齿轮齿顶与轴不干涉几何约束函数值 g5=%3.4f \n',g(5))
>> % 2----两级斜齿轮减速器总中心距的目标函数(jsqyh_f)
function f=jsqyh_f(x);
hd=pi/180;
a1=x(1)*x(3)*(1+x(5));
a2=x(2)*x(4)*(1+31.5/x(5));
cb=2*cos(x(6)*hd);
f=(a1+a2)/cb;
% 3----两级斜齿轮减速器优化设计的非线性不等式约束函数(jsqyh_g)
function [g,ceq]=jsqyh_g(x);
hd=pi/180;
g(1)=cos(x(6)*hd)^3-3.079e-6*x(1)^3*x(3)^3*x(5);
g(2)=x(5)^2cos(x(6)*hd)^3-1.701e-4*x(2)^3*x(4)^3;
g(3)=cos(x(6)*hd)^2-9.939e-5*(1+x(5))*x(1)^3*x(3)^2;
g(4)=x(5)^2*cos(x(6)*hd)^2-1.076e-4*(31.5+x(5))*x(2)^3*x(4)^2;
g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3))-x(2)*x(4)*(31.5+x(5)); 展开
1个回答
展开全部
改了几处,通了。
function hahah
% 两级斜齿轮传动中心距优化设计
% 1---减速器中心距优化设计主程序
% 设计变量的初始值
x0=[2;4;18;20;6.4;10];
% 设计变量的下界与上界
lb=[2;3.5;14;16;5.8;8];
ub=[5;6;22;22;7;15];
% 使用多维约束优化命令fmincon(调用目标函数jsqyh_g和非线性约束函数jsqyh_g)
% 不定义线性不等式约束中设计变量的系数矩阵a=[]和常数项向量b=[]
% 没有等式约束,侧参数:系数矩阵Aeq=[]和常数项向量beq=[]
[x,fn,exitflag]=fmincon(@jsqyh_f,x0,[],[],[],[],lb,ub,@jsqyh_g)
disp ' ******** 两级斜齿轮传动中心距优化设计最优解 ********'
fprintf(1,' 高速级齿轮副模数 Mn1=%3.4f mm\n',x(1))
fprintf(1,' 低速级齿轮副模数 Mn2=%3.4f mm\n',x(2))
fprintf(1,' 高速级小齿轮齿数 z1=%3.4f \n',x(3))
fprintf(1,' 低速级小齿轮齿数 z3=%3.4f \n',x(4))
fprintf(1,' 高速级齿轮副传动比 i1=%3.4f \n',x(5))
fprintf(1,' 齿轮副螺旋角 beta=%3.4f 度\n',x(6))
fprintf(1,' 减速器中心距 a12=%3.4f mm\n',fn)
% 调用多维约束优化非线性约束函数(jsqyh_g)计算最优点x*的性能约束函数值g=jsqyh_g(x);
g=jsqyh_g(x)
disp ' ======== 最优点的性能约束函数值 ======== '
fprintf(1,' 高速级齿轮副解除疲劳强度约束函数值 g1=%3.4f \n',g(1))
fprintf(1,' 低速级齿轮副解除疲劳强度约束函数值 g2=%3.4f \n',g(2))
fprintf(1,' 高速级大齿轮齿根弯曲强度约束函数值 g3=%3.4f \n',g(3))
fprintf(1,' 低速级大齿轮齿根弯曲强度约束函数值 g4=%3.4f \n',g(4))
fprintf(1,' 大齿轮齿顶与轴不干涉几何约束函数值 g5=%3.4f \n',g(5))
% 2----两级斜齿轮减速器总中心距的目标函数(jsqyh_f)
function f=jsqyh_f(x);
hd=pi/180;
a1=x(1)*x(3)*(1+x(5));
a2=x(2)*x(4)*(1+31.5/x(5));
cb=2*cos(x(6)*hd);
f=(a1+a2)./cb;
% 3----两级斜齿轮减速器优化设计的非线性不等式约束函数(jsqyh_g)
function [g,ceq]=jsqyh_g(x);
hd=pi/180;
g(1)=cos(x(6)*hd)^3-3.079e-6*x(1)^3*x(3)^3*x(5);
g(2)=x(5)^2*cos(x(6)*hd)^3-1.701e-4*x(2)^3*x(4)^3;
g(3)=cos(x(6)*hd)^2-9.939e-5*(1+x(5))*x(1)^3*x(3)^2;
g(4)=x(5)^2*cos(x(6)*hd)^2-1.076e-4*(31.5+x(5))*x(2)^3*x(4)^2;
g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3))-x(2)*x(4)*(31.5+x(5));
ceq=[];
结果:
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 ineqnonlin
5 1
6 2
x =
2.0461
3.6059
18.5158
16.0000
5.8000
8.0000
fn =
317.4186
exitflag =
1
******** 两级斜齿轮传动中心距优化设计最优解 ********
高速级齿轮副模数 Mn1=2.0461 mm
低速级齿轮副模数 Mn2=3.6059 mm
高速级小齿轮齿数 z1=18.5158
低速级小齿轮齿数 z3=16.0000
高速级齿轮副传动比 i1=5.8000
齿轮副螺旋角 beta=8.0000 度
减速器中心距 a12=317.4186 mm
g =
0.0000 -0.0000 -1.0042 -15.1854 -761.8045
======== 最优点的性能约束函数值 ========
高速级齿轮副解除疲劳强度约束函数值 g1=0.0000
低速级齿轮副解除疲劳强度约束函数值 g2=-0.0000
高速级大齿轮齿根弯曲强度约束函数值 g3=-1.0042
低速级大齿轮齿根弯曲强度约束函数值 g4=-15.1854
大齿轮齿顶与轴不干涉几何约束函数值 g5=-761.8045
function hahah
% 两级斜齿轮传动中心距优化设计
% 1---减速器中心距优化设计主程序
% 设计变量的初始值
x0=[2;4;18;20;6.4;10];
% 设计变量的下界与上界
lb=[2;3.5;14;16;5.8;8];
ub=[5;6;22;22;7;15];
% 使用多维约束优化命令fmincon(调用目标函数jsqyh_g和非线性约束函数jsqyh_g)
% 不定义线性不等式约束中设计变量的系数矩阵a=[]和常数项向量b=[]
% 没有等式约束,侧参数:系数矩阵Aeq=[]和常数项向量beq=[]
[x,fn,exitflag]=fmincon(@jsqyh_f,x0,[],[],[],[],lb,ub,@jsqyh_g)
disp ' ******** 两级斜齿轮传动中心距优化设计最优解 ********'
fprintf(1,' 高速级齿轮副模数 Mn1=%3.4f mm\n',x(1))
fprintf(1,' 低速级齿轮副模数 Mn2=%3.4f mm\n',x(2))
fprintf(1,' 高速级小齿轮齿数 z1=%3.4f \n',x(3))
fprintf(1,' 低速级小齿轮齿数 z3=%3.4f \n',x(4))
fprintf(1,' 高速级齿轮副传动比 i1=%3.4f \n',x(5))
fprintf(1,' 齿轮副螺旋角 beta=%3.4f 度\n',x(6))
fprintf(1,' 减速器中心距 a12=%3.4f mm\n',fn)
% 调用多维约束优化非线性约束函数(jsqyh_g)计算最优点x*的性能约束函数值g=jsqyh_g(x);
g=jsqyh_g(x)
disp ' ======== 最优点的性能约束函数值 ======== '
fprintf(1,' 高速级齿轮副解除疲劳强度约束函数值 g1=%3.4f \n',g(1))
fprintf(1,' 低速级齿轮副解除疲劳强度约束函数值 g2=%3.4f \n',g(2))
fprintf(1,' 高速级大齿轮齿根弯曲强度约束函数值 g3=%3.4f \n',g(3))
fprintf(1,' 低速级大齿轮齿根弯曲强度约束函数值 g4=%3.4f \n',g(4))
fprintf(1,' 大齿轮齿顶与轴不干涉几何约束函数值 g5=%3.4f \n',g(5))
% 2----两级斜齿轮减速器总中心距的目标函数(jsqyh_f)
function f=jsqyh_f(x);
hd=pi/180;
a1=x(1)*x(3)*(1+x(5));
a2=x(2)*x(4)*(1+31.5/x(5));
cb=2*cos(x(6)*hd);
f=(a1+a2)./cb;
% 3----两级斜齿轮减速器优化设计的非线性不等式约束函数(jsqyh_g)
function [g,ceq]=jsqyh_g(x);
hd=pi/180;
g(1)=cos(x(6)*hd)^3-3.079e-6*x(1)^3*x(3)^3*x(5);
g(2)=x(5)^2*cos(x(6)*hd)^3-1.701e-4*x(2)^3*x(4)^3;
g(3)=cos(x(6)*hd)^2-9.939e-5*(1+x(5))*x(1)^3*x(3)^2;
g(4)=x(5)^2*cos(x(6)*hd)^2-1.076e-4*(31.5+x(5))*x(2)^3*x(4)^2;
g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3))-x(2)*x(4)*(31.5+x(5));
ceq=[];
结果:
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 ineqnonlin
5 1
6 2
x =
2.0461
3.6059
18.5158
16.0000
5.8000
8.0000
fn =
317.4186
exitflag =
1
******** 两级斜齿轮传动中心距优化设计最优解 ********
高速级齿轮副模数 Mn1=2.0461 mm
低速级齿轮副模数 Mn2=3.6059 mm
高速级小齿轮齿数 z1=18.5158
低速级小齿轮齿数 z3=16.0000
高速级齿轮副传动比 i1=5.8000
齿轮副螺旋角 beta=8.0000 度
减速器中心距 a12=317.4186 mm
g =
0.0000 -0.0000 -1.0042 -15.1854 -761.8045
======== 最优点的性能约束函数值 ========
高速级齿轮副解除疲劳强度约束函数值 g1=0.0000
低速级齿轮副解除疲劳强度约束函数值 g2=-0.0000
高速级大齿轮齿根弯曲强度约束函数值 g3=-1.0042
低速级大齿轮齿根弯曲强度约束函数值 g4=-15.1854
大齿轮齿顶与轴不干涉几何约束函数值 g5=-761.8045
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询