MATLAB: Set function tolerance patternsearch

global optimizationMATLABpatternsearchtolerance

Hello,
I'm trying to do a minimization using patternsearch, here's a portion of my code.
lb=[Pmin Tmin];
ub=[Pmax Tmax];
objective=@(PT)objective_meemum(PT,bulk,pos,an);
options=optimoptions('patternsearch','Display','iter',...
'MeshTolerance',1e-10, 'ScaleMesh', false,'PlotFcn',@psplotbestf,...
'UseCompletePoll',true);
[PTopt(i,:), distance(i)]=patternsearch(objective,PT0,[],[],[],[],lb,ub,[], options);
In fact, I would want my the optimization to stop when the objective function gives a value <7e-3 (in this case the value is the distance variable).
Is there a way to do this? It seems like the FcnTolerance option does not work with patternsearch.
Thank you for the help,
Guillaume

Best Answer

Ok, after multiple tests, I actually found the answer to my question, here it is:
function [stop,options,optchanged] = stopfn(optimvalues,options,flag)
stop=false;
optchanged=false;
if optimvalues.fval <= 7e-3
stop=true;
end
end
and then:
options=optimoptions('patternsearch','Display','iter',...
'MeshTolerance',1e-10, 'ScaleMesh', false,...
'PlotFcn',@psplotbestf,...
'UseCompletePoll',true,'ConstraintTolerance',0.1,'OutputFcn',@stopfn);