【发布时间】:2013-12-25 00:36:47
【问题描述】:
我做了这个
function f=objfun(w)
a=0.5
w0=[0.1;0.2;0.3];
f=(a^2)/2 + w(1)+ w(2)+ w(3);
[w,fval]=fmincon('objfun',w0,[],[],[],[],[],[],'constraint')
但我收到此错误消息。
Error using objfun (line 3)
Not enough input arguments.
它在说什么问题?
我从 fmincon 那里学到了
http://www.math.colostate.edu/~gerhard/classes/331/lab/fmincon.html
它告诉我这样的代码
function f=objfun(x)
f=x(1)^4-x(1)^2+x(2)^2-2*x(1)+x(2);
将是进行约束优化的第一行。
出了什么问题?
【问题讨论】:
-
您的代码混淆了,例如您在 objfun 中定义
w0。此外,fmincon至少需要四个输入参数:(fun,x0,A,b)。也许您应该先从文档中了解该功能:mathworks.com/help/optim/ug/fmincon.html -
作为 Matlab 用户,您首先要学习的一些知识:使用或学习新功能时,在 Matlab 命令窗口中键入
help nameoffunction并阅读。然后(或相反)您可以单击帮助底部的链接,也可以键入doc nameoffunction在漂亮的浏览器窗口中深入阅读。只有在您用尽了这些资源并且意识到您发现的内容可能不适用于您的 Matlab 版本之后,才应该在谷歌上搜索函数的名称。 -
@A.Donda 最初我为stackoverflow编写了一个简化版本的代码。但是在我的代码中 fmincon 就像 [x,fval]=fmincon('objfun',w0,[],[],[],[],[],[],'constraint') 所以输入参数的不足可能不是问题。
-
好的,我是否正确理解您在目标函数中调用
fmincon?说真的,请先阅读文档。
标签: matlab optimization minimization