# Solver-Based Nonlinear Optimization

Before you begin to solve an optimization problem, you must choose the appropriate approach: problem-based or solver-based. For details, see First Choose Problem-Based or Solver-Based Approach.

For problem setup, see Solver-Based Optimization Problem Setup.

## Functions

`fminbnd` | Find minimum of single-variable function on fixed interval |

`fmincon` | Find minimum of constrained nonlinear multivariable function |

`fminsearch` | Find minimum of unconstrained multivariable function using derivative-free method |

`fminunc` | Find minimum of unconstrained multivariable function |

`fseminf` | Find minimum of semi-infinitely constrained multivariable nonlinear function |

## Live Editor Tasks

Optimize | Optimize or solve equations in the Live Editor |

## Topics

### Unconstrained Solver-Based Applications

Shows how to solve for the minimum of Rosenbrock's function using different solvers, with or without gradients.

**Unconstrained Minimization Using fminunc**

Example of unconstrained nonlinear programming.

**Minimization with Gradient and Hessian**

Example of unconstrained nonlinear programming including derivatives.

**Minimization with Gradient and Hessian Sparsity Pattern**

Example of nonlinear programming using some derivative information.

### Constrained Solver-Based Applications

**Tutorial for Optimization Toolbox™**

Tutorial example showing how to solve nonlinear problems and pass extra parameters.

**Optimize Live Editor Task with fmincon Solver**

Example of nonlinear programming with constraints using the Optimize Live Editor Task.

**Nonlinear Inequality Constraints**

Example of nonlinear programming with nonlinear inequality constraints.

**Nonlinear Constraints with Gradients**

Example of nonlinear programming with derivative information.

**fmincon Interior-Point Algorithm with Analytic Hessian**

Example of nonlinear programming with all derivative information.

**Linear or Quadratic Objective with Quadratic Constraints**

This example shows how to solve an optimization problem that has a linear or quadratic objective and quadratic inequality constraints.

**Nonlinear Equality and Inequality Constraints**

Nonlinear programming with both types of nonlinear constraints.

**How to Use All Types of Constraints**

Example showing all constraints.

Find the best feasible point in the `output`

structure.

**Minimization with Bound Constraints and Banded Preconditioner**

Example showing efficiency gains possible with structured nonlinear problems.

**Minimization with Linear Equality Constraints, Trust-Region Reflective Algorithm**

Example showing nonlinear programming with only linear equality constraints.

**Minimization with Dense Structured Hessian, Linear Equalities**

Example showing how to save memory in nonlinear programming with a structured Hessian and only linear equality constraints or only bounds.

**Calculate Gradients and Hessians Using Symbolic Math Toolbox™**

Example showing how to calculate derivatives symbolically for optimization solvers.

**Using Symbolic Mathematics with Optimization Toolbox™ Solvers**

Use Symbolic Math Toolbox™ to generate gradients and Hessians.

### Code Generation

**Code Generation in fmincon Background**

Prerequisites to generate C code for nonlinear optimization.

**Code Generation for Optimization Basics**

Learn the basics of code generation for the `fmincon`

optimization solver.

**Static Memory Allocation for fmincon Code Generation**

Use static memory allocation in code generation when the problem changes.

**Optimization Code Generation for Real-Time Applications**

Explore techniques for handling real-time requirements in generated code.

### Semi-Infinite Constraints

**One-Dimensional Semi-Infinite Constraints**

Example showing how to use one-dimensional semi-infinite constraints in nonlinear programming.

**Two-Dimensional Semi-Infinite Constraint**

Example showing how to use two-dimensional semi-infinite constraints in nonlinear programming.

**Analyzing the Effect of Uncertainty Using Semi-Infinite Programming**

This example shows how to use semi-infinite programming to investigate the effect of uncertainty in the model parameters of an optimization problem.

### Parallel Computing

**What Is Parallel Computing in Optimization Toolbox?**

Use multiple processors for optimization.

**Using Parallel Computing in Optimization Toolbox**

Perform gradient estimation in parallel.

**Improving Performance with Parallel Computing**

Investigate factors for speeding optimizations.

**Minimizing an Expensive Optimization Problem Using Parallel Computing Toolbox™**

Example showing how to use parallel computing in both Global Optimization Toolbox and Optimization Toolbox™ solvers.

### Simulation or ODE

**Optimizing a Simulation or Ordinary Differential Equation**

Special considerations in optimizing simulations, black-box objective functions, or ODEs.

### Algorithms and Other Theory

**Unconstrained Nonlinear Optimization Algorithms**

Minimizing a single objective function in *n* dimensions
without constraints.

**Constrained Nonlinear Optimization Algorithms**

Minimizing a single objective function in *n* dimensions
with various types of constraints.

Steps that `fminsearch`

takes to
minimize a function.

**Optimization Options Reference**

Explore optimization options.

Explains why solvers might not find the smallest minimum.

**Smooth Formulations of Nonsmooth Functions**

Reformulate some nonsmooth functions as smooth functions by using auxiliary variables.

Lists published materials that support concepts implemented in the solver algorithms.