How to choose DiffMinChange value?

5 views (last 30 days)
Selvaprakash Vijayaraman
Selvaprakash Vijayaraman on 16 May 2020
Answered: Alan Weiss on 20 May 2020
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
Walter Roberson on 16 May 2020
Remember that fmincon() is not a global optimizer. You probably need better initial conditions.
Selvaprakash Vijayaraman
Selvaprakash Vijayaraman on 19 May 2020
I have chosen a better initial condition but even now I am getting the first order optimality around 0.01 (its a major improvement) which is not close to zero.
I rechecked all my formulations and I reached this point, Choose an even better Initial condition and choose different DiffMinChange value.
Should I go for any global optimiser?

Sign in to comment.

Answers (1)

Alan Weiss
Alan Weiss on 20 May 2020
Alan Weiss
MATLAB mathematical toolbox documentation

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!