本帖最后由 renwoxinfen 于 2016-11-8 09:01 编辑
程序如下:
a.m
% 设计变量(螺杆平均直径D和长度L)的初始值
x0=[30;5000];
% 设计变量(螺杆平均直径D长度L)的下界与上界
Lb=[30;5000];
Ub=[200;6000];
% 调用多维约束优化函数
% 线性不等式约束放入约束函数文件,参数A,b定义为空矩阵
% 没有线性等式约束,参数Aeq,beq定义为空矩阵
options=optimset('largescale','off','display','iter');
% 'largescale','off'关闭了大规模方式;
% 'display'用来控制计算过程的显示;
% 'iter'表示显示优化过程的每次计算结果。
[x,fn,exitflag,output]=fmincon(@lgyh_f,x0,[],[],[],[],Lb,Ub,@lgyh_g,options);
% 返回值exitflag:>0表示计算收敛,=0表示超过了最大的迭代次数,<0表示计算不收敛;
% 返回值output有3个分量,其中:
% iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法
disp ' ******** 螺杆的优化设计最优解 ********'
fprintf(' 螺杆的平均直径 D = %3.4f mm \n',x(1))
fprintf(' 螺杆的长度 H = %3.4f mm \n',x(2))
fprintf(' 螺杆的体积 V = %3.4f mm^3 \n',fn)
% 调用多维约束优化非线性约束函数(jsqyh_g)计算最优点x*的性能约束函数值
g=lgyh_g(x);
disp ' ======== 最优点的性能约束函数值 ========'
fprintf(' 螺杆的压缩强度 g1 = %3.4f MPa \n',g(1))
fprintf(' 螺杆的稳定性 g2 = %3.4f N \n',g(2))
% 2-目标函数(lgyh_f)
function f=lgyh_f(x)
% 螺杆的厚度T;
T=17;
f=pi*(x(1)+T)*T*x(2);
% 3-约束函数(lgyh_g)
function [g,ceq]=lgyh_g(x)
% 螺杆的作用力Q;螺杆厚度T;载荷P;弹性模量E;许用压应力Cy;
Q=50000;T=17;E=2.06e5;sigma_y=690;
% 螺杆压缩强度条件
sigma=Q/(pi*x(1)*T); % 钢管压应力
g(1)=sigma-sigma_y;
% 螺杆稳定性条件
sigma_c=pi^2*E*(x(1)^2+T^2)/(8*5*0.49*x(2)^2); % 稳定临界应力
g(2)=sigma-sigma_c;
% 螺杆平均直径边界条件
g(3)=30-x(1);
g(4)=x(1)-200;
% 螺杆长度边界条件
g(5)=5000-x(2);
g(6)=x(2)-6000;
% 没有非线性等式约束
ceq=[];
运算结果:
Your initial point x0 is not between bounds lb and ub; FMINCON
shifted x0 to strictly satisfy the bounds.
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 3 1.281757e+07 2.503e+01 1.727e+03
1 6 1.628459e+07 1.206e+01 8.307e+04 1.303e+01
2 9 1.760328e+07 8.008e+00 1.443e+04 4.938e+00
3 12 1.984732e+07 1.498e+00 6.160e+03 8.404e+00
4 15 2.037307e+07 2.541e-03 2.281e+03 1.969e+00
5 18 2.037397e+07 2.046e-10 5.602e+00 3.351e-03
6 21 2.037397e+07 0.000e+00 1.408e-03 6.474e-08
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.
******** 螺杆的优化设计最优解 ********
螺杆的平均直径 D = 59.2969 mm
螺杆的长度 H = 5000.0000 mm
螺杆的体积 V = 20373967.6274 mm^3
======== 最优点的性能约束函数值 ========
螺杆的压缩强度 g1 = -674.2116 MPa
螺杆的稳定性 g2 = -0.0000 N
为什么螺杆的压缩强度寄稳定性为负值?