The Nonlinear Programming Solver

Solver Termination Criterion

Because badly scaled problems can lead to slow convergence, the NLP solver dynamically rescales both the objective and constraint functions adaptively as needed. The optimality conditions are always stated with respect to the rescaled NLP. However, because typically you are most interested in the constraint violation of the original NLP, and not the internal scaled variant, you always work with respect to the true constraint violation. Thus, the solver terminates when both of the following conditions are true:

  • The norm of the optimality conditions of the scaled NLP is less than the user-defined or default tolerance (OPTTOL= option).

  • The norm of the constraint violation of the original NLP is less than the user-defined feasibility tolerance (FEASTOL= option).

More specifically, if

\[  F(x,s,z) = ( \nabla _{x} f(x) - J(x)^\mr {T} z , \quad S z , \quad g(x) - s )^\mr {T}  \]

is the vector of the optimality conditions of the rescaled NLP problem, then the solver terminates when

\[  \parallel F(x,s,z) \parallel \le \mbox{OPTTOL}(1+ \| (x,s)\| )  \]

and the maximum constraint violation is less than $\mbox{FEASTOL}$.