麻烦解答一下matlab问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 21:58:44
function Qmin
X0=[12 2 2 83 72 166];
A=[-500 -437.5 -1000 0 0 0];b=-17250;
Aeq=[];beq=[];
LB=[0 0 0 35.42 52.8 62.5];UB=[12 10 5 83.33 72.92 166.67];
[X,FVAL,EXITFLAG]=fmincon(@fun,X0,A,b,Aeq,beq,LB,UB,@fun2)
function yhat=fun(x)
yhat=2000*x(1)+x(1)*x(4)*(100/85+(x(4)-850/24)*6)
+1000.*x(2)+x(2).*x(5).*(260/125+(x(5)-1250/24)*1.3)
+500*x(3)+x(3)*x(6)*(2+(x(6)-1500/24)*6);
function [c,ceq]=fun2(x)
c=-(x(1)*x(4)+x(2)*x(5)+x(3)*x(6)-2500);
ceq=[];
为什么输出结果是这样的啊?
X =

12.5975 10.5975 5.5975 83.0000 72.0000 166.0000

FVAL =

3.2494e+005
麻烦给解析一下的 x1,x2,x3不是超出上限了么?

运行结果:

X = 12.5975 10.5975 5.5975 83.0000 72.0000 166.0000
FVAL = 3.2494e+005
EXITFLAG = -2

-2 No feasible point found.
EXITFLAG不等于1,初值给的不好,重新给初值。

我试了N次了,没有最优解。

function Qmin
clc;clear;
A=[-500 -437.5 -1000 0 0 0];b=-17250;
Aeq=[];beq=[];
LB=[0 0 0 35.42 52.8 62.5];UB=[12 10 5 83.33 72.92 166.67];
X0=(LB+UB)/2 %这样的初值一般是可以的
[X,FVAL,EXITFLAG]=fmincon(@fun,X0,A,b,Aeq,beq,LB,UB,@fun2)
function yhat=fun(x)
yhat=2000*x(1)+x(1)*x(4)*(100/85+(x(4)-850/24)*6)+1000*x(2)+x(2)*x(5)*(260/125+(x(5)-1250/24)*1.3)+500*x(3)+x(3)*x(6)*(2+(x(6)-1500/24)*6);
function [c,ceq]=fun2(x)
c=-(x(1)*x(4)+x(2)*x(5)+x(3)*x(6)-2500);
ceq=[];