How can I pass extra parameters to an output function in the Optimization Toolbox?

2 次查看(过去 30 天)
I'm trying to specify an output function in my optimization options as an anonymous function so as to pass additional parameters to it. My options structure is defined as follows:
options = optimset('outputfcn',@(x)outfun(x,extraArg),'display','iter',...
'Algorithm','active-set');
...
function stop = outfun(x,optimValues,state,extraarg)
...
...
end % nested function
As a result, I get the following error:
??? Error using ==> runfminsearch>@(x)myfunObj(x,k1,k2,k3)
Too many input arguments.
I need to pass additional arguments to an output function using an anonymous function.

采纳的回答

MathWorks Support Team
An output function expects 3 input arguments:
stop = outfun(x, optimValues, state)
Thus, the anonymous function, which is the value of the 'OutputFcn' property in the call to OPTIMSET, should be defined as follows:
options = optimset('outputfcn',@(x,optimValues,state)outfun(x,optimValues,state,extraArg),'display','iter',...
'Algorithm','active-set');
That is, @(x,optimValues,state)outfun(x,optimValues,state,extraArg) instead of @(x)outfun(x,extraArg).

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Problem-Based Optimization Setup 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by