帮助使用一个类方法作为目标函数fmincon不工作

4视图(30天)
我想用fmincon内部类对象时,使用一个类方法。当我试试我发现fmincon看不到函数,即使函数定义适当的时候叫fmincon。我写了一个测试类来说明问题。
测试= testfmincon
min(测试)

接受的答案

史蒂文的主
史蒂文的主 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输出的方法将工作,但称其与一个输出错误。

更多的答案(0)

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

标签

下载188bet金宝搏


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的