Main Content

Optimization Toolbox Solvers

Optimization Toolbox™ solvers are grouped into four general categories:

  • Minimizers

    Solvers in this group attempt to find a local minimum of the objective function near a starting point x0. They address problems of unconstrained optimization, linear programming, quadratic programming, cone programming, and general nonlinear programming.

  • Multiobjective minimizers

    Solvers in this group attempt to either minimize the maximum value of a set of functions (fminimax), or to find a location where a collection of functions is below some specified values (fgoalattain).

  • Equation solvers

    Solvers in this group attempt to find a solution to a scalar- or vector-valued nonlinear equation f(x) = 0 near a starting point x0. Equation-solving can be considered a form of optimization because it is equivalent to finding the minimum norm of f(x) near x0.

  • Least-Squares (curve-fitting) solvers

    Solvers in this group attempt to minimize a sum of squares. This type of problem frequently arises in fitting a model to data. The solvers address problems of finding nonnegative solutions, finding bounded or linearly constrained solutions, and fitting parameterized nonlinear models to data subject to smooth constraints.

For more information see Problems Handled by Optimization Toolbox Functions. See Optimization Decision Table for help choosing a solver for minimization.

Minimizers formulate optimization problems in the form

minxf(x),

possibly subject to constraints. f(x) is called an objective function. In general, f(x) is a scalar function of type double, and x is a vector or scalar of type double. However, multiobjective optimization, equation solving, and some sum-of-squares minimizers can have vector or matrix objective functions F(x) of type double. To use Optimization Toolbox solvers for maximization instead of minimization, see Maximizing an Objective.

Write the objective function for a solver in the form of a function file or anonymous function handle. You can supply a gradient ∇f(x) for many solvers, and you can supply a Hessian for several solvers. See Write Objective Function. Constraints have a special form, as described in Write Constraints.