先建立M文件fun.m定义目标函数:
function f=fun(x)
f=((x(1)+1)^2+4*(x(2)-1.5)^2)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2);
再建立M文件mycon.m定义非线性约束:
function [g,ceq]=mycon(x)
g=[2*x(1)-x(1)*x(2)+5*x(2)-6;x(1)-x(2)+0.5;x(1)^2-4*x(2)^2+x(2)];
ceq=0;
主程序为:
x0=[0;0];
VLB=[0 0];VUB=[];
[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')
结果为:x =
0.5925
1.0925
fval =
1.6306
exitflag =
1
output =
iterations: 5
funcCount: 18
lssteplength: 1
stepsize: 8.6939e-007
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: 3.2838e-008
constrviolation: 1.6077e-011
message: [1x144 char]
Excel 本身就能解,何必用Matlab呢,哈哈