帮助使用一个类方法作为目标函数fmincon不工作
4视图(30天)
显示旧的评论
接受的答案
史蒂文的主
2021年8月16日
func = @ (x) objectiveFunction (obj, x)
x0 = (1 1 1);
[x, fval exitflag、输出]= fmincon (Aeq @func x0, A, b,说真的,[],[],nonlcon,选项);
函数变量是一个匿名函数。既然你传递对象objectiveFunction(类的一个方法)这将调用该方法。你不需要额外的@
fmincon
调用,传递函数不像第一个输入@func。
你在代码中不包括高斯函数但我取而代之的是调用
randn
我怀疑是相似的。
你使用的数据(这是对象的属性)在objectiveFunction但我认为第二个引用第一行应该叫makedata代替。我建议不使用名称相同的本地变量内部对象的方法和属性,因为它会导致人类混淆你指的是哪些。
最后,你的最小值方法(我所说的最小化来避免混淆
最小值
在MATLAB函数)表示,它返回一个变量outputArg但从未定义该变量。所以如果你叫0输出的方法将工作,但称其与一个输出错误。