How to choose DiffMinChange value?
5 views (last 30 days)
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.
Answers (1)
Alan Weiss
on 20 May 2020
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
0 Comments
See Also
Categories
Find more on Problem-Based Optimization Setup 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!