# Problem-Based Optimization Setup

`solve`

Global Optimization Toolbox has two approaches for optimization: problem-based and
solver-based. See Decide Between Problem-Based and Solver-Based Approach. In
problem-based optimization, you create symbolic-style optimization
variables. Then you create expressions in these variables that represent the
objective and constraints. Finally, solve the problem using `solve`

. For details, see Problem-Based Optimization Workflow.

**Note:** If you have a nonlinear function
that is not composed of polynomials, rational expressions, and elementary
functions such as `exp`

, then convert the function to an
optimization expression by using `fcn2optimexpr`

. See Convert Nonlinear Function to Optimization Expression and
Supported Operations for Optimization Variables and Expressions.

For a basic example, see Compare Several Global Solvers, Problem-Based.

## Functions

## Objects

`OptimizationConstraint` | Optimization constraints |

`OptimizationEquality` | Equalities and equality constraints |

`OptimizationExpression` | Arithmetic or functional expression in terms of optimization variables |

`OptimizationInequality` | Inequality constraints |

`OptimizationProblem` | Optimization problem |

`OptimizationVariable` | Variable for optimization |

## Topics

### Problem-Based Steps

**Problem-Based Optimization Workflow**

Learn the problem-based steps for solving optimization problems.

Define expressions for both the 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**

Create and work with named indices for variables.

**Review or Modify Optimization Problems**

Review or modify problem elements such as variables and constraints.

Evaluate the solution and its quality.

### Steps for Global Solvers

**Decide Between Problem-Based and Solver-Based Approach**

Explore considerations for problem-based and solver-based optimization with Global Optimization Toolbox solvers.

**Global Optimization Toolbox Default Solvers and Problem Types**

Identify the types of problems you can solve in the problem-based approach and their associated default solvers.

**Initial Points for Global Optimization Toolbox Solvers**

Specify initial points for Global Optimization Toolbox solvers in the problem-based approach.

**Integer Constraints in Nonlinear Problem-Based Optimization**

Learn how the problem-based optimization functions
`prob2struct`

and `solve`

handle integer
constraints.

### Set Options

Set optimization options

**Set Options in Problem-Based Approach Using varindex**

To set options in some contexts, map problem-based variables to solver-based using
`varindex`

.

Explore the options for pattern search.

Explore the options for the genetic algorithm.

Explore the options for particle swarm.

**Surrogate Optimization Options**

Explore the options for surrogate optimization, including algorithm control, stopping criteria, command-line display, and output and plot functions.

Explore the options for simulated annealing.

### Tips for Problem-Based Optimization

**Create Efficient Optimization Problems**

Obtain a faster or more accurate solution when the problem has integer constraints, and avoid loops when creating a problem.

**Separate Optimization Model from Data**

Create reusable, scalable problems by separating the model from the data.

**Variables with Duplicate Names Disallowed**

Learn how to solve a problem that has two optimization variables with the same name.

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

Create initial points for `solve`

when the problem has 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 the objective and nonlinear constraint functions share common computations in the problem-based approach.

**Obtain Generated Function Details**

Find the values of extra parameters in nonlinear functions created by
`prob2struct`

.

**Output Function for Problem-Based Optimization**

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

### Parallel Computing

**How Solvers Compute in Parallel**

Learn how solvers distribute work for parallel computing.

**How to Use Parallel Processing in Global Optimization Toolbox**

Direct a solver or hybrid function to use multiple processes.

**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**

Investigate factors for speeding optimizations.

### Problem-Based Algorithms

**Problem-Based Optimization Algorithms**

Learn how the optimization functions and objects solve optimization problems.

**Supported Operations for Optimization Variables and Expressions**

Explore the supported mathematical and indexing operations for optimization variables and expressions.