Main Content

**Note**

The Optimization app warns that it will be removed in a future release. Use
**Optimize** or the
problem-based approach instead.

To open the Optimization app, type

optimtool

in the Command Window. This opens the Optimization app, as shown in the following figure.

You can also start the Optimization app from the MATLAB^{®}
**Apps** tab.

The reference page for the Optimization app provides variations for starting
the `optimtool`

function.

The following documentation examples use the optimization app:

This is a summary of the steps to set up your optimization problem and view results with the Optimization app.

While a solver is running, you can

Click

**Pause**to temporarily suspend the algorithm. To resume the algorithm using the current iteration at the time you paused, click**Resume**.Click

**Stop**to stop the algorithm. The**Run solver and view results**window displays information for the current iteration at the moment you clicked**Stop**.

You can export your results after stopping the algorithm. For details, see Exporting Your Work.

When a solver terminates, the **Run solver and view
results** window displays the reason the algorithm terminated.
To clear the **Run solver and view results** window
between runs, click **Clear Results**.

**Sorting the Displayed Results. **Depending on the solver and problem, results can be in the form
of a table. If the table has multiple rows, sort the table by clicking
a column heading. Click the heading again to sort the results in reverse.

For example, suppose you use the Optimization app to solve the `lsqlin`

problem
described in Optimize Live Editor Task with lsqlin Solver. The result appears
as follows.

To sort the results by value, from lowest to highest, click **Value**. The
results were already in that order, so don’t change.

To sort the results in reverse order, highest to lowest, click **Value**
again.

To return to the original order, click **Index**.

For an example of sorting a table returned by the Global Optimization Toolbox `gamultiobj`

function,
see Pareto Front for Two Objectives (Global Optimization Toolbox).

If you export results using **File > Export to
Workspace**, the exported results do not depend on the
sorted display.

The **Final point** updates to show the coordinates of the final point when
the algorithm terminated. If you don't see the final point, click the
upward-pointing triangle on the icon on the lower-left.

**Resetting Options and Clearing the Problem. **Selecting **File** > **Reset
Optimization Tool** resets the problem definition
and options to the original default values. This action is equivalent
to closing and restarting the app.

To clear only the problem definition, select **File** > **Clear Problem Fields**. With this action, fields in the **Problem Setup
and Results** pane are reset to the defaults, with the exception
of the selected solver and algorithm choice. Any options that you
have modified from the default values in the **Options** pane
are not reset with this action.

**Setting Preferences for Changing Solvers. **To modify how your options are handled in the Optimization app
when you change solvers, select **File** > **Preferences**, which opens the
Preferences dialog box shown below.

The default value, **Reset options to defaults**,
discards any options you specified previously in the `optimtool`

.
Under this choice, you can select the option **Prompt before
resetting options to defaults**.

Alternatively, you can select **Keep current options
if possible** to preserve the values you have modified.
Changed options that are not valid with the newly selected solver
are kept but not used, while active options relevant to the new solver
selected are used. This choice allows you to try different solvers
with your problem without losing your options.

You can select a plot function to easily plot various measures of progress
while the algorithm executes. Each plot selected draws a separate axis in the
figure window. To interrupt a running solver, use the
**Stop** button in the figure. You can select a
predefined plot function from the Optimization app, or you can select
**Custom function** to write your own. Plot functions not
relevant to the solver selected are grayed out. The following lists the
predefined plot functions:

**Current point**— Select to show a bar plot of the point at the current iteration.**Function count**— Select to plot the number of function evaluations at each iteration.**Function value**— Select to plot the function value at each iteration.**Norm of residuals**— Select to show a bar plot of the current norm of residuals at the current iteration.**Max constraint**— Select to plot the maximum constraint violation value at each iteration.**Current step**— Select to plot the algorithm step size at each iteration.**First order optimality**— Select to plot the violation of the optimality conditions for the solver at each iteration.**Custom function**— Enter your own plot function as a function handle. To provide more than one plot function use a cell array, for example, by typing:Write custom plot functions with the same syntax as output functions. For information, see Output Function and Plot Function Syntax.{@plotfcn,@plotfcn2}

The graphic above shows the plot functions available for the default
`fmincon`

solver.

**Output function** is a function or collection of
functions the algorithm calls at each iteration. Through an output function you
can observe optimization quantities such as function values, gradient values,
and current iteration. Specify no output function, a single output function
using a function handle, or multiple output functions. To provide more than one
output function use a cell array of function handles in the **Custom
function** field, for example by
typing:

{@outputfcn,@outputfcn2}

For more information on writing an output function, see Output Function and Plot Function Syntax.

Select **Level of display** to specify the amount of
information displayed when you run the algorithm. Choose from the following;
depending on the solver, only some may be available:

`off`

(default) — Display no output.`final`

— Display the reason for stopping at the end of the run.`final with detailed message`

— Display the detailed reason for stopping at the end of the run.`notify`

— Display output only if the function does not converge.`notify with detailed message`

— Display a detailed output only if the function does not converge.`iterative`

— Display information at each iteration of the algorithm and the reason for stopping at the end of the run.`iterative with detailed message`

— Display information at each iteration of the algorithm and the detailed reason for stopping at the end of the run.

See Enhanced Exit Messages for information on detailed messages.

Selecting **Show diagnostics** lists problem information and
options that have changed from the defaults.

The graphic below shows the display options for the
`fmincon`

solver. Some other solvers have fewer
options.

The **Export to Workspace** dialog box enables you to send
your problem information to the MATLAB workspace as a structure or object that you may then manipulate in
the Command Window.

To access the **Export to Workspace** dialog box shown
below, select **File** > **Export to Workspace**.

You can specify results that contain:

The problem and options information

The problem and options information, and the state of the solver when stopped (this means the latest point for most solvers, the current population for Genetic Algorithms solvers, and the best point found for the Simulated Annealing solver)

The states of random number generators

`rand`

and`randn`

at the start of the previous run, by checking the**Use random states from previous run**box for applicable solversThe options information only

The results of running your problem in the Optimization app

Exported results contain all optional information. For example,
an exported results structure for `lsqcurvefit`

contains the
data `x`

, `resnorm`

,
`residual`

, `exitflag`

,
`output`

, `lambda`

, and
`jacobian`

.

After you have exported information from the Optimization app to the
MATLAB workspace, you can see your data in the MATLAB Workspace browser or by typing the name of the structure at the
Command Window. To see the value of a field in a structure or object,
double-click the name in the Workspace window. Alternatively, see the values by
entering `exportname.fieldname`

at the command line. For
example, so see the message in an output structure, enter
`output.message`

. If a structure contains structures or
objects, you can double-click again in the workspace browser, or enter
`exportname.name2.fieldname`

at the command line. For
example, to see the level of iterative display contained in the options of an
exported problem structure, enter
`optimproblem.options.Display`

.

You can run a solver on an exported problem at the command line by typing

solver(problem)

`fmincon`

problem named
`optimproblem`

, you can
typefmincon(optimproblem)

`fmincon`

on the problem with the saved options in
`optimproblem`

. You can exercise more control over outputs
by typing, for
example,[x,fval,exitflag] = fmincon(optimproblem)

**Caution**

For Optimization Toolbox™ solvers, the Optimization app imports and exports only one
option related to the former `TolFun`

tolerance. It
displays this option as **Function tolerance**, and
uses it as the `OptimalityTolerance`

option. You cannot
import, export, or change the `FunctionTolerance`

option in
the Optimization app.

However, Global Optimization Toolbox solvers do not have an `OptimalityTolerance`

option. Those solvers can import, export, and set the
`FunctionTolerance`

option in the Optimization
app.

Whether you save options from Optimization Toolbox functions at the Command Window, or whether you export options, or the problem and options, from the Optimization app, you can resume work on your problem using the Optimization app.

There are three ways to import your options, or problem and options, to the Optimization app:

Call the

`optimtool`

function from the Command Window specifying your options, or problem and options, as the input, for example,optimtool(options)

Select

**File**>**Import Options**in the Optimization app.Select

**File**>**Import Problem**in the Optimization app.

The methods described above require that the options, or problem and options, be present in the MATLAB workspace.

If you import a problem that was generated with the **Include
information needed to resume this run** box checked, the initial
point is the latest point generated in the previous run. (For Genetic Algorithm
solvers, the initial population is the latest population generated in the
previous run. For the Simulated Annealing solver, the initial point is the best
point generated in the previous run.) If you import a problem that was generated
with this box unchecked, the initial point (or population) is the initial point
(or population) of the previous run.

You may want to generate a file to continue with your optimization problem in the Command Window at another time. You can run the file without modification to recreate the results that you created with the Optimization app. You can also edit and modify the file and run it from the Command Window.

To export data from the Optimization app to a file, select **File** > **Generate Code**.

The generated file captures the following:

The problem definition, including the solver, information on the function to be minimized, algorithm specification, constraints, and start point

The options with the currently selected option value

Running the file at the Command Window reproduces your problem results.

Although you cannot export your problem results to a generated file, you can save them in a MAT-file that you can use with your generated file, by exporting the results using the Export to Workspace dialog box, then saving the data to a MAT-file from the Command Window.