Nonlinear programming (NP) involves minimizing or maximizing a nonlinear objective function subject to bound constraints, linear constraints, or nonlinear constraints, where the constraints can be inequalities or equalities. Example problems in engineering include analyzing design tradeoffs, selecting optimal designs, and computing optimal trajectories.
Unconstrained nonlinear programming is the mathematical problem of finding a vector \(x\) that is a local minimum to the nonlinear scalar function \(f(x)\). Unconstrained means that there are no restrictions placed on the range of \(x\)
The following algorithms are commonly used for unconstrained nonlinear programming:
- Quasi-Newton: uses a mixed quadratic and cubic line search procedure and the Broyden-Fletcher-Goldfarb-Shanno (BFGS) formula for updating the approximation of the Hessian matrix
- Nelder-Mead: uses a direct-search algorithm that uses only function values (does not require derivatives) and handles nonsmooth objective functions
- Trust-region: used for unconstrained nonlinear optimization problems and is especially useful for large-scale problems where sparsity or structure can be exploited
Constrained nonlinear programming is the mathematical problem of finding a vector \(x\) that minimizes a nonlinear function \(f(x)\) subject to one or more constraints.
Algorithms for solving constrained nonlinear programming problems include:
- Interior-point: especially useful for large-scale nonlinear optimization problems that have sparsity or structure
- Sequential quadratic programming (SQP): solves general nonlinear problems and honors bounds at all iterations
- Active-set: solves problems with any combination of constraints
- Trust-region reflective: solves bound constrained nonlinear optimization problems or linear equalities only
For more information on nonlinear programming, see Optimization Toolbox™.