
matlab的多约束非线性规划问题
这个程序少什么吗?或是哪里有问题,为什么显示Error:Functiondefinitionsarenotpermittedinthiscontext.请大神们看一下fu...
这个程序少什么吗?或是哪里有问题,为什么显示Error: Function definitions are not permitted in this context.请大神们看一下
function f=myfun(x)
f=0.192457*1e-4*(x(2)+2)*x(1).^2*x(3);
function[c,cep]=mycon(x)
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=0;
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];
1b=zeros(3,1);
[x,fval,exitflag,output,lambda]=fmincon(@sam9_5,x0,A,b,[],[],1b,[],@sam9_6); 展开
function f=myfun(x)
f=0.192457*1e-4*(x(2)+2)*x(1).^2*x(3);
function[c,cep]=mycon(x)
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=0;
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];
1b=zeros(3,1);
[x,fval,exitflag,output,lambda]=fmincon(@sam9_5,x0,A,b,[],[],1b,[],@sam9_6); 展开
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);
这样就能计算出来结果了。
希望对你有帮助

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询