# 13.5 Nonlinear Convex Optimization¶

## 13.5.1 The Interior-point Optimizer¶

For general convex optimization problems an interior-point type optimizer is available. The interior-point optimizer is an implementation of the homogeneous and self-dual algorithm. For a detailed description of the algorithm, please see [AY98], [AY99].

### 13.5.1.1 The Convexity Requirement¶

Continuous nonlinear problems are required to be convex. For quadratic problems **MOSEK** tests this requirement before optimizing. Specifying a non-convex problem results in an error message.

The following parameters are available to control the convexity check:

`iparam.check_convexity`

: Turn convexity check on/off.`dparam.check_convexity_rel_tol`

: Tolerance for convexity check.`iparam.log_check_convexity`

: Turn on more log information for debugging.

### 13.5.1.2 The Differentiability Requirement¶

The nonlinear optimizer in **MOSEK** requires both first order and second order derivatives. This of course implies care should be taken when solving problems involving non-differentiable functions.

For instance, the function

is differentiable everywhere whereas the function

is only differentiable for \(x > 0\) . In order to make sure that **MOSEK** evaluates the functions at points where they are differentiable, the function domains must be defined by setting appropriate variable bounds.

In general, if a variable is not ranged **MOSEK** will only evaluate that variable at points strictly within the bounds. Hence, imposing the bound

in the case of \(\sqrt{x}\) is sufficient to guarantee that the function will only be evaluated in points where it is differentiable.

However, if a function is defined on a closed range, specifying the variable bounds is not sufficient. Consider the function

In this case the bounds

will not guarantee that **MOSEK** only evaluates the function for \(x\) strictly between \(0\) and \(1\) . To force **MOSEK** to strictly satisfy both bounds on ranged variables set the parameter `iparam.intpnt_starting_point`

to `startpointtype.satisfy_bounds`

.

For efficiency reasons it may be better to reformulate the problem than to force **MOSEK** to observe ranged bounds strictly. For instance, (1) can be reformulated as follows

### 13.5.1.3 Interior-point Termination Criteria¶

The parameters controlling when the general convex interior-point optimizer terminates are shown in Table 15.

Parameter name | Purpose |
---|---|

`dparam.intpnt_nl_tol_pfeas` |
Controls primal feasibility |

`dparam.intpnt_nl_tol_dfeas` |
Controls dual feasibility |

`dparam.intpnt_nl_tol_rel_gap` |
Controls relative gap |

`dparam.intpnt_tol_infeas` |
Controls when the problem is declared infeasible |

`dparam.intpnt_nl_tol_mu_red` |
Controls when the complementarity is reduced enough |