当目标函数超过一定值(最小值或最大值)时如何停止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);
答案 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