matlab 非线性约束最优化问题,希望给出代码

2024-12-13 20:30:11
推荐回答(2个)
回答1:

先建立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]

回答2:

Excel 本身就能解,何必用Matlab呢,哈哈