matlab的多约束非线性规划问题

2025-02-24 15:35:43
推荐回答(1个)
回答1:

你好

你的程序中有几处错误,修改如下:

非线性约束这里:

function[c,ceq]=mycon(x)%是ceq,不是p
c(1)=350-163*x(1)^(-2.86)*x(3).^0.86;
c(2)=10-0.4*0.01*x(1).^(-4)*x(2)*x(3).^3;
c(3)=(x(2)+1.5)*x(1)+0.44*0.01*x(1).^(-4)*x(2)*x(3).^3-3.7*x(3);
c(4)=375-0.356*1e6*x(1)*x(2).^(-1)*x(3).^(-2);
c(5)=4-x(3)/x(1);
ceq=[];%

主函数:

clear,clc
f=@(x)0.192457*1e-4*(x(2)+2)*x(1).^2*x(3);
A=[-1 0 0; 1 0 0; 0 -1 0; 0 1 0; 0 0 -1; 0 0 1];
b=[-1;4;-4.5;50;-10;30];
x0=[2.0;5.0;25.0];%是小x
lb=zeros(3,1);%改为lb不是1b
options=optimset('Algorithm','active-set');
[x,fval,exitflag,output,lambda]=fmincon(f,x0,A,b,[],[],lb,[],@mycon,options);

这样就能计算出来结果了。

希望对你有帮助