Main Content

To create a `GlobalSearch`

or `MultiStart`

object
with nondefault properties, use name-value pairs. For example, to
create a `GlobalSearch`

object that has iterative display
and runs only from feasible points with respect to bounds and inequalities,
enter

gs = GlobalSearch('Display','iter', ... 'StartPointsToRun','bounds-ineqs');

To set a property of an existing `GlobalSearch`

or `MultiStart`

object,
use dot notation. For example, if `ms`

is a `MultiStart`

object,
and you want to set the `Display`

property to `'iter'`

,
enter

ms.Display = 'iter';

To set multiple properties of an existing object simultaneously,
use the constructor (`GlobalSearch`

or `MultiStart`

)
with name-value pairs. For example, to set the `Display`

property
to `'iter'`

and the `MaxTime`

property
to `100`

, enter

ms = MultiStart(ms,'Display','iter','MaxTime',100);

For more information on setting properties, see Changing Global Options.

You can create a `MultiStart`

object from a `GlobalSearch`

object
and vice-versa.

The syntax for creating a new object from an existing object is:

ms = MultiStart(gs); or gs = GlobalSearch(ms);

The new object contains the properties that apply of the old object. This section describes those shared properties:

Values for the `Display`

property are:

`'final'`

(default) — Summary results to command line after last solver run.`'off'`

— No output to command line.`'iter'`

— Summary results to command line after each local solver run.

The `FunctionTolerance`

property describes
how close two objective function values must be for solvers to consider
them identical for creating the vector of local solutions. Set `FunctionTolerance`

to `0`

to
obtain the results of every local solver run. Set `FunctionTolerance`

to
a larger value to have fewer results.

Solvers consider two solutions identical if they are within `XTolerance`

distance
of each other and have objective function values within `FunctionTolerance`

of
each other. If both conditions are not met, solvers report the solutions
as distinct. The tolerances are relative, not absolute. For details,
see When fmincon Runs for `GlobalSearch`

,
and Create GlobalOptimSolution Object for `MultiStart`

.

The `MaxTime`

property describes a tolerance
on the number of seconds since the solver began its run. Solvers halt
when they see `MaxTime`

seconds have passed since
the beginning of the run. Time means *wall clock* as
opposed to processor cycles. The default is `Inf`

.

The `OutputFcn`

property directs the global
solver to run one or more output functions after each local solver
run completes. The output functions also run when the global solver
starts and ends. Include a handle to an output function written in
the appropriate syntax, or include a cell array of such handles. The
default is an empty entry (`[]`

).

The syntax of an output function is:

stop = outFcn(optimValues,state)

`stop`

is a Boolean. When`true`

, the algorithm stops. When`false`

, the algorithm continues.**Note**A local solver can have an output function. The global solver does not necessarily stop when a local solver output function causes a local solver run to stop. If you want the global solver to stop in this case, have the global solver output function stop when

`optimValues.localsolution.exitflag=-1`

.`optimValues`

is a structure, described in optimValues Structure.`state`

is the current state of the global algorithm:`'init'`

— The global solver has not called the local solver. The fields in the`optimValues`

structure are empty, except for`localrunindex`

, which is`0`

, and`funccount`

, which contains the number of objective and constraint function evaluations.`'iter'`

— The global solver calls output functions after each local solver run.`'done'`

— The global solver finished calling local solvers. The fields in`optimValues`

generally have the same values as the ones from the final output function call with`state`

=`'iter'`

. However, the value of`optimValues.funccount`

for`GlobalSearch`

can be larger than the value in the last function call with`'iter'`

, because the`GlobalSearch`

algorithm might have performed some function evaluations that were not part of a local solver. For more information, see GlobalSearch Algorithm.

For an example using an output function, see GlobalSearch Output Function.

**Note**

Output and plot functions do not run when `MultiStart`

has
the `UseParallel`

option set to `true`

and
there is an open `parpool`

.

**optimValues Structure. **The `optimValues`

structure contains the following
fields:

`bestx`

— The current best point`bestfval`

— Objective function value at`bestx`

`funccount`

— Total number of function evaluations`localrunindex`

— Index of the local solver run`localsolution`

— A structure containing part of the output of the local solver call:`X`

,`Fval`

and`Exitflag`

The `PlotFcn`

property directs the global solver
to run one or more plot functions after each local solver run completes.
Include a handle to a plot function written in the appropriate syntax,
or include a cell array of such handles. The default is an empty entry
(`[]`

).

The syntax of a plot function is the same as that of an output function. For details, see OutputFcn.

There are two predefined plot functions for the global solvers:

`@gsplotbestf`

plots the best objective function value.`@gsplotfunccount`

plots the number of function evaluations.

For an example using a plot function, see MultiStart Plot Function.

If you specify more than one plot function, all plots appear as subplots in the same window. Right-click any subplot to obtain a larger version in a separate figure window.

**Note**

Output and plot functions do not run when `MultiStart`

has
the `UseParallel`

option set to `true`

and
there is an open `parpool`

.

The `StartPointsToRun`

property directs the
solver to exclude certain start points from being run:

`all`

— Accept all start points.`bounds`

— Reject start points that do not satisfy bounds.`bounds-ineqs`

— Reject start points that do not satisfy bounds or inequality constraints.

The `XTolerance`

property describes how close two points must be for solvers
to consider them identical for creating the vector of local solutions. Set
`XTolerance`

to `0`

to obtain the results
of every local solver run. Set `XTolerance`

to a larger value
to have fewer results. Solvers compute the distance between a pair of points
with `norm`

, the Euclidean distance.

Solvers consider two solutions identical if they are within `XTolerance`

distance
of each other and have objective function values within `FunctionTolerance`

of
each other. If both conditions are not met, solvers report the solutions
as distinct. The tolerances are relative, not absolute. For details,
see When fmincon Runs for `GlobalSearch`

,
and Create GlobalOptimSolution Object for `MultiStart`

.

Number of potential start points to examine in addition to `x0`

from
the `problem`

structure. `GlobalSearch`

runs
only those potential start points that pass several tests. For more
information, see GlobalSearch Algorithm.

Default: `1000`

Number of start points in Stage 1. For details, see Obtain Stage 1 Start Point, Run.

Default: `200`

A positive integer tolerance appearing in several points in the algorithm.

If the observed penalty function of

`MaxWaitCycle`

consecutive trial points is at least the penalty threshold, then raise the penalty threshold (see PenaltyThresholdFactor).If

`MaxWaitCycle`

consecutive trial points are in a basin, then update that basin's radius (see BasinRadiusFactor).

Default: `20`

A basin radius decreases after `MaxWaitCycle`

consecutive
start points are within the basin. The basin radius decreases by a
factor of 1–`BasinRadiusFactor`

.

Default: `0.2`

A multiplier for determining whether a trial point is in an
existing basin of attraction. For details, see Examine Stage 2 Trial Point to See if fmincon Runs. Default: `0.75`

Determines increase in penalty threshold. For details, see React to Large Counter Values.

Default: `0.2`

The `UseParallel`

property determines whether
the solver distributes start points to multiple processors:

`false`

(default) — Do not run in parallel.`true`

— Run in parallel.

For the solver to run in parallel you must set up a parallel environment with
`parpool`

. For details, see How to Use Parallel Processing in Global Optimization Toolbox.