In a nonlinear constrained optimization problem fmincon is giving error as
Local minimum possible. Constraints satisfied.
fmincon stopped because the size of the current step is less than the selected value of the step size tolerance and constraints were satisfied to within the selected value of the constraint tolerance.
what should i do? should i increase the step size or decrease in Tolx?

 Accepted Answer

Walter Roberson
Walter Roberson on 12 Apr 2017

0 votes

fmincon can never promise that it found the global minima, so it never reports that it has definitely solved the problem: instead it says that it found a minima that satisfied constraints. That is the expected message with fmincon if things go well.
If you have reason to know that the minima found could be improved then you should probably not have chosen fmincon as it is strictly a local minimizer.

2 Comments

thanku for the explanation
for the further iteration and to get the local minimum what should i do? because it says "fmincon stopped because the size of the current step is less than the selected value of the step size tolerance and constraints were satisfied to within the selected value of the constraint tolerance".
You could use an options structure in which you changed the minimum step size or changed the constraint violation tolerance. However, doing these will not necessarily be useful. See https://www.mathworks.com/help/optim/ug/tolerances-and-stopping-criteria.html
The message you are seeing is the normal way to end fmincon successfully. It indicates that it found a minima to within the tolerances you gave.
Keep in mind that your objective function is calculating with floating point numbers that have limited precision, so there will always be numeric error. If you use a tolerance that is too tight, the search is not longer finding the position that best fits the problem mathematically, and is instead looking for the position where the round-off errors balance out closest to 0. This can take a long time and can end up oscillating between states, "dancing around" a minima but being unable to get to within your imposed tolerance due to the round-off error (or plain due to there not being enough precision in double precision floating point.)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!