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);