How to choose DiffMinChange value?
Show older comments
Dear all,
I am running an optimisation program with the Optimisation settings shown below :
%% Optimisation settings
lb = [];
ub = [];
options = optimoptions(@fmincon,'Algorithm','interior-point','DiffMinChange',0.00089205,'StepTolerance',1.0000e-12,'MaxFunctionEvaluations',100000,'plotFcns',{@optimplotx,@optimplotconstrviolation,@optimplotfval,@optimplotfirstorderopt});
[pos_opt,fval,exitflag,output,lambda,grad,hessian] = fmincon(@(pos_init) objective(pos_init,XX,YY),pos_init,[],[],[],[],lb,ub,@(pos_init) nonlinconst(pos_init),options);
I am ending up getting the first order optimality around 0.138524. In principal the first order optimality should me closer to zero. Is there any optimal value for DiffMinChange I have to take depending on the problem, so that the optimality will reach zero.
The optimisation is going in the proper direction but not reaching zero.
2 Comments
Walter Roberson
on 16 May 2020
Remember that fmincon() is not a global optimizer. You probably need better initial conditions.
Selvaprakash Vijayaraman
on 19 May 2020
Answers (1)
Alan Weiss
on 20 May 2020
1 vote
I suggest that you look at When the Solver Might Have Succeeded. In particular, https://www.mathworks.com/help/optim/ug/when-the-solver-might-have-succeeded.html#br58rj7 and https://www.mathworks.com/help/optim/ug/when-the-solver-might-have-succeeded.html#br544oi-1 seem relevant, but other suggestions might help, too.
Alan Weiss
MATLAB mathematical toolbox documentation
Categories
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!