Formulate optimization problems using variables and expressions, solve in
serial or parallel.

In problem-based optimization you create optimization variables,
expressions in these variables that represent the objective and constraints,
and solve the problem using `solve`

. For the problem-based steps to take, see Problem-Based Workflow.

See First Choose Problem-Based or Solver-Based Approach for choosing between problem-based optimization and solver-based optimization.

**Note:** If you have a nonlinear function
that is not a polynomial or rational expression, convert it to an
optimization expression by using `fcn2optimexpr`

. See Convert Nonlinear Function to Optimization Expression.

For a basic nonlinear optimization example, see Solve a Constrained Nonlinear Problem, Problem-Based. For a basic mixed-integer linear programming example, see Mixed-Integer Linear Programming Basics: Problem-Based.

`OptimizationConstraint` | Optimization constraints |

`OptimizationExpression` | Objective function or constraints |

`OptimizationProblem` | Optimization problem |

`OptimizationVariable` | Variable for optimization |

Problem-based steps for solving optimization problems.

Expressions define both objective and constraints.

**Pass Extra Parameters in Problem-Based Approach**

Pass extra parameters, data, or fixed variables in the problem-based approach.

**Named Index for Optimization Variables**

How to create and work with named indices for variables.

**Review or Modify Optimization Problems**

Shows how to review or modify problem elements such as variables and constraints.

How to evaluate the solution and its quality.

Set optimization options

**Output Function for Problem-Based Optimization**

Shows how to use an output function in the problem-based approach to record iteration history and to make a custom plot.

**Create Efficient Optimization Problems**

Tips for obtaining a faster or more accurate solution when there are integer constraints, and for avoiding loops in problem creation.

**Separate Optimization Model from Data**

To create reusable, scalable problems, separate the model from the data.

**Variables with Duplicate Names Disallowed**

Solution to the problem of two optimization variables with the same name.

**Create Initial Point for Optimization with Named Index Variables**

This example shows how to create initial points for `solve`

when you have named index variables by using the `findindex`

function.

**Expression Contains Inf or NaN**

Optimization expressions containing `Inf`

or
`NaN`

cannot be displayed, and can cause unexpected
results.

**Objective and Constraints Having a Common Function in Serial or Parallel, Problem-Based**

Save time when your objective and nonlinear constraint functions share common computations in the problem-based approach.

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

Using multiple processors for optimization.

**Using Parallel Computing in Optimization Toolbox**

Automatic gradient estimation in parallel.

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

Example showing the effectiveness of parallel computing
in two solvers: `fmincon`

and `ga`

.

**Improving Performance with Parallel Computing**

Considerations for speeding optimizations.

**Problem-Based Optimization Algorithms**

How the optimization functions and objects solve optimization problems.

**Supported Operations on Optimization Variables and Expressions**

Lists all available mathematical and indexing operations on optimization variables and expressions.