使用fmincon()调用目标函数时出现输入参数不足错误的求助
fmincon调用报错“Not enough input arguments.”的原因及解决办法
错误根源在于你调用fmincon时,直接传入了objFun这个函数名,Matlab会将其视为立即执行函数调用,而非供fmincon后续调用的函数句柄。此时没有给objFun传入任何参数,自然触发“输入参数不足”的错误——这和你手动调用objFun(x0)时传入了x0能正常运行的逻辑一致。
解决方法很简单,把函数名改成函数句柄形式,用@前缀标记:
[x, fval] = fmincon(@objFun, x0, [1;2],1,[],[],[0; -inf],[inf, 0]);
修改后,fmincon会在优化过程中自动将当前迭代的x值传入objFun,就能正常执行优化计算了。
内容的提问来源于stack exchange,提问作者jerH
相关产品推荐
相关产品推荐

