# Documentation

## Tolerances and Stopping Criteria

The number of iterations in an optimization depends on a solver's stopping criteria. These criteria include several tolerances you can set. Generally, a tolerance is a threshold which, if crossed, stops the iterations of a solver.

Set tolerances and other criteria using `optimoptions` as explained in Set and Change Options.

 Tip   Generally set tolerances such as `TolFun` and `TolX` to be well above `eps`, and usually above `1e-14`. Setting small tolerances does not always result in accurate results. Instead, a solver can fail to recognize when it has converged, and can continue futile iterations. A tolerance value smaller than `eps` effectively disables that stopping condition.

You can find the default tolerances in the Optimization App. Some default tolerances differ for different algorithms, so set both the solver and the algorithm.

`optimoptions` displays default tolerances. For example,

`options = optimoptions('fmincon')`

You can also find the default tolerances in the options section of the solver function reference page.

• `TolX` is a lower bound on the size of a step, meaning the norm of (xi – xi+1). If the solver attempts to take a step that is smaller than `TolX`, the iterations end. `TolX` is sometimes used as a relative bound, meaning iterations end when |(xi – xi+1)| < `TolX`*(1 + |xi|), or a similar relative measure.

• For some algorithms, `TolFun` is a lower bound on the change in the value of the objective function during a step. For those algorithms, if |f(xi) – f(xi+1)| < `TolFun`, the iterations end. `TolFun` is sometimes used as a relative bound, meaning iterations end when |f(xi) – f(xi+1)| < `TolFun`*(1 + |f(xi)|), or a similar relative measure.

 Note:   `TolFun` is most often a bound on the first-order optimality measure. If the optimality measure is less than `TolFun`, the iterations end. `TolFun` can also be a relative bound on the first-order optimality measure. First-order optimality measure is defined in First-Order Optimality Measure.
• `TolCon` is an upper bound on the magnitude of any constraint functions. If a solver returns a point x with c(x) > `TolCon` or |ceq(x)| > `TolCon`, the solver reports that the constraints are violated at x. `TolCon` can also be a relative bound.

 Note:   `TolCon` operates differently from other tolerances. If `TolCon` is not satisfied (i.e., if the magnitude of the constraint function exceeds `TolCon`), the solver attempts to continue, unless it is halted for another reason. A solver does not halt simply because `TolCon` is satisfied.
• `MaxIter` is a bound on the number of solver iterations. `MaxFunEvals` is a bound on the number of function evaluations. Iterations and function evaluations are discussed in Iterations and Function Counts.

There are two other tolerances that apply to particular solvers: `TolPCG` and `MaxPCGIter`. These relate to preconditioned conjugate gradient steps. For more information, see Preconditioned Conjugate Gradient Method.

There are several tolerances that apply only to the `fmincon` interior-point algorithm. For more information, see Interior-Point Algorithm.

There are several tolerances that apply only to `intlinprog`. See Some "Integer" Solutions Are Not Integers and Branch and Bound.