Matlab求解二次规划问题

求解等式约束下最优解,目标函数最小值f(x,y)=(1-x)y,约束条件x+y=7,x>0,y>0;转化成拉格朗日方程为:L(x,y,lambda)=(1-x)y+lambda(7-x-y),对x,y,lambda求偏导,用matlab二次规划求解,程序如下图。可是结果总是求lambda负无穷大,x,y近于零。我想要的是x+y=7条件下的解,为什么?非常感谢!

k1=1 %x
k2=1 %y
k3=1 %lambda
p=0.001
e=1
while e>=0.00001
c1=p*(1-k2-k3)-k1;
c2=p*(-k1-k3)-k2;
c3=p*(7-k1-k2)-k3;

H=eye(3);
c=[c1;c2;c3];A=[];b=[];
Aeq=[];beq=[];
VLB=[0;0];VUB=[];
[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)
e=sqrt((x(1)-k1)^2+(x(2)-k2)^2+(x(3)-k3)^2)
k1=x(1);
k2=x(2);
k3=x(3);
end

题主给出的用Matlab求解二次规划问题,运行结果总是求lambda负无穷大,x,y近于零。分析和运行题主的代码,其根本的错误是缺少lambda变量的下限值,应该为VLB=[0;0;0];再一个问题没有利用x+y=7的等式条件,应该可以这样来补充,Aeq=[1,1,0];beq=[7];

纠正上述错误,后运行可以得到如下的解。

k1 = 3.0071 %x

k2 = 3.9929 %y

k3 = 0.995 %λ

fval = -13.016

温馨提示:答案为网友推荐,仅供参考