MATLAB Answers

How to choose DiffMinChange value?

6 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.


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


Sign in to comment.

Translated by