How to choose DiffMinChange value?

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 件のコメント

Walter Roberson
Walter Roberson 2020 年 5 月 16 日
Remember that fmincon() is not a global optimizer. You probably need better initial conditions.
Selvaprakash Vijayaraman
Selvaprakash Vijayaraman 2020 年 5 月 19 日
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?

サインインしてコメントする。

回答 (1 件)

Alan Weiss
Alan Weiss 2020 年 5 月 20 日

1 投票

Alan Weiss
MATLAB mathematical toolbox documentation

カテゴリ

質問済み:

2020 年 5 月 16 日

回答済み:

2020 年 5 月 20 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by