当目标函数达到一定值时停止fminsearch

时间:2019-04-06 15:06:44

标签: matlab optimization fminsearch

当目标函数超过一定值(最小值或最大值)时如何停止fminsearch

options = optimset('MaxFunEvals',9999);
[x,fval,exitflag,output]  =  fminsearch(@(var)objectiveFunction(variables), changingParameters,options);

如果达到某个目标函数值(例如1000)(在9999次迭代中),如何停止该函数

我尝试过'TolFun',但不确定是否正确

options = optimset('MaxFunEvals',999,'TolFun',1000);
[x,fval,exitflag,output]  =  fminsearch(@(var)objectiveFunction(variables), changingParameters,options);

1 个答案:

答案 0 :(得分:1)

您可以通过在options.OutputFcn输入结构中放置适当的函数来手动停止搜索过程。在每次搜索迭代中都会调用此函数,并允许发信号通知搜索将终止。例如,您可以定义

function stop = custom_stop_fun(~, optimValues, ~)
if optimValues.fval >= 1000
    stop = true;
else
    stop = false;
end
end

然后通过

进行设置
options.OutputFcn = @custom_stop_fun;

查看完整的OutputFcn documentation