使用matlab的fmincon优化,一直提示变量“x”未定义,请教问题所在?

使用matlab的fmincon函数进行优化,遇到以下问题:%以下是建立的目标函数M文件functionf=CostObj(x)%目标函数a=[135];b=[246];... 使用matlab的fmincon函数进行优化,遇到以下问题:
%以下是建立的目标函数M文件
function f = CostObj( x ) % 目标函数
a=[1 3 5];
b=[2 4 6];
c=0*ones(1,3);
for i=1:3
c(i)=b(i)-a(i).*x(i);
end
f=sum(c);
end
%以下是在matlab主窗口中输入
x0=[2 2 2];
A=[1 2 3;2 5 9;2 7 1];
B=[11 28 19];
Aeq=[];
Beq=[];
[x fval]= fmincon(CostObj,x0,A,B,Aeq,Beq);
运行后就提示以下错误:
[x fval]= fmincon(CostObj,x0,A,B,Aeq,Beq);
??? Input argument "x" is undefined.

Error in ==> CostObj at 6
c(i)=b(i)-a(i).*log(x(i));

到底是什么原因没有搞清楚,折腾了一个下午了,郁闷,请高手指点一下,谢谢!
按照白杨龙11的方法,还是错误,如下:
[x fval]= fmincon(@(x) CostObj,x0,A,B,Aeq,Beq);
Warning: Trust-region-reflective algorithm does not solve this type of problem, using
active-set algorithm. You could also try the interior-point or sqp algorithms: set the
Algorithm option to 'interior-point' or 'sqp' and rerun. For more help, see Choosing the
Algorithm in the documentation.
> In fmincon at 472
??? Input argument "x" is undefined.
Error in ==> CostObj at 34
c(i)=b(i)-a(i).*(x(i));
展开
 我来答
百川一归大海
2014-01-02 · TA获得超过1547个赞
知道小有建树答主
回答量:4318
采纳率:55%
帮助的人:1023万
展开全部
[x fval]= fmincon(@(x) CostObj(x),x0,A,B,Aeq,Beq)
追问
还是有错误呀,如下:
??? Input argument "x" is undefined.
Error in ==> CostObj at 34
c(i)=b(i)-a(i).*(x(i));
Error in ==> @(x)CostObj
追答
是[x fval]= fmincon(@(x) CostObj(x),x0,A,B,Aeq,Beq)
不是
[x fval]= fmincon(@(x) CostObj,x0,A,B,Aeq,Beq)
仔细看啊。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianxiawulang
2014-01-02 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2667万
展开全部

[x fval]= fmincon(CostObj,x0,A,B,Aeq,Beq);

改成

[x fval]= fmincon(@CostObj,x0,A,B,Aeq,Beq);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式