matlab多目标优化求解的例子
%1、对f1(x)的最优解求解matlab程序如下:f=[3;-2];A=[2,3;2,1];b=[18;10];lb=[0;0];[x1,fval1]=linprog(...
% 1、对f1(x)的最优解求解matlab程序如下:
f=[3;-2];
A=[2,3;2,1];
b=[18;10];
lb=[0;0];
[x1,fval1]=linprog(f,A,b,[],[],lb);
% 2、对f2(x)最优解的matlab程序为:
f2=[-4;3];
[x2,fval2]=linprog(f2,A,b,[],[],lb);
% 求模型的最优解
x0=[1;1];
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
运行结果如下
multi_objective
Optimization terminated.
Optimization terminated.
错误使用 inlineeval (line 14)
内联表达式出错 ==>
((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)
未定义函数或变量 'fval1'。
出错 inline/feval (line 33)
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
出错 fmincon (line 535)
initVals.f = feval(funfcn{3},X,varargin{:});
出错 multi_objective (line 21)
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
原因:
Failure in initial objective function evaluation. FMINCON
cannot continue.
求问这个是什么问题以及如何进行修改呢? 展开
f=[3;-2];
A=[2,3;2,1];
b=[18;10];
lb=[0;0];
[x1,fval1]=linprog(f,A,b,[],[],lb);
% 2、对f2(x)最优解的matlab程序为:
f2=[-4;3];
[x2,fval2]=linprog(f2,A,b,[],[],lb);
% 求模型的最优解
x0=[1;1];
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
运行结果如下
multi_objective
Optimization terminated.
Optimization terminated.
错误使用 inlineeval (line 14)
内联表达式出错 ==>
((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)
未定义函数或变量 'fval1'。
出错 inline/feval (line 33)
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
出错 fmincon (line 535)
initVals.f = feval(funfcn{3},X,varargin{:});
出错 multi_objective (line 21)
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
原因:
Failure in initial objective function evaluation. FMINCON
cannot continue.
求问这个是什么问题以及如何进行修改呢? 展开
1个回答
展开全部
出错原因:下列的函数表达式定义错误,
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
纠正方法,用句柄函数来定义函数表达式,即
@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)
完整写法如下,
x=fmincon(@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2),x0,A,b,[],[],lb,[])
更改后运行,可得到
x1 = 0.1756;x2= 5.8829
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询