matlab中的fmincon函数运行出错,老是显示最后一句话不对,求大神指导 5
functionf=myobj(x)f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));function[c,ceq]=mycon(x)c=...
function f=myobj(x)
f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));
function [c,ceq] = mycon(x)
c=[] ;
syms p
ceq(1)=2*(2*x(2)-2*x(2)^2+2*x(1)*x(2)-x(1)-x(1)^2)-p=0
syms k;
A=[1 -1;k+2 -2;k -2*k];
b=[0;k-1;1-k];
Aeq=[];
beq=[];
lb=[0;0];
ub=[1;1];
x0=[0.5;0.5];
[x,fval,exitflag]=fmincon(@myobj,x0,A,b,[],[],lb,ub,@mycon); 展开
f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));
function [c,ceq] = mycon(x)
c=[] ;
syms p
ceq(1)=2*(2*x(2)-2*x(2)^2+2*x(1)*x(2)-x(1)-x(1)^2)-p=0
syms k;
A=[1 -1;k+2 -2;k -2*k];
b=[0;k-1;1-k];
Aeq=[];
beq=[];
lb=[0;0];
ub=[1;1];
x0=[0.5;0.5];
[x,fval,exitflag]=fmincon(@myobj,x0,A,b,[],[],lb,ub,@mycon); 展开
1个回答
展开全部
matlab中的fmincon函数运行出错的最大问题是,k、p不能是变量,而是一个具体的数值。
建议这样来改代码
k=0.95717,p =0.48538
%syms k
A=[1 -1;k+2 -2;k -2*k];
b=[0;k-1;1-k];
Aeq=[];
beq=[];
lb=[0;0];
ub=[1;1];
x0=[0.5;0.5];
[x,fval,exitflag]=fmincon(@(x)myobj(k,x),x0,A,b,[],[],lb,ub,@(x)mycon(p,x))
function f=myobj(k,x)
f=(k-1+2*x(2)-2*x(1)-k*x(1))^2/(2*(k+1));
end
function [c,ceq] = mycon(p,x)
c=[] ;
%syms p
ceq(1)=2*(2*x(2)-2*x(2)^2+2*x(1)*x(2)-x(1)-x(1)^2)-p; %=0
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询