当目标函数超过某个值(最小值或最大值(时如何停止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);
您可以通过在
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
文档