# run

Class: GlobalSearch

Find global minimum

## Syntax

```x = run(gs,problem)[x,fval] = run(gs,problem)[x,fval,exitflag] = run(gs,problem)[x,fval,exitflag,output] = run(gs,problem)[x,fval,exitflag,output,solutions] = run(gs,problem)```

## Description

`x = run(gs,problem)` finds a point `x` that solves the optimization problem described in the `problem` structure.

```[x,fval] = run(gs,problem)``` returns the value of the objective function in `problem` at the point `x`.

```[x,fval,exitflag] = run(gs,problem)``` returns an exit flag describing the results of the multiple local searches.

```[x,fval,exitflag,output] = run(gs,problem)``` returns an output structure describing the iterations of the run.

```[x,fval,exitflag,output,solutions] = run(gs,problem)``` returns a vector of solutions containing the distinct local minima found during the run.

## Input Arguments

 `gs` A `GlobalSearch` object. `problem` Problem structure. Create `problem` with `createOptimProblem` or by exporting a problem structure from the Optimization app. `problem` must contain at least the following fields: `solver``objective``x0``options` — Both `createOptimProblem` and the Optimization app always include an `options` field in the `problem` structure.

## Output Arguments

`x`

Minimizing point of the objective function.

`fval`

Objective function value at the minimizer `x`.

`exitflag`

Describes the results of the multiple local searches. Values are:

 `2` At least one local minimum found. Some runs of the local solver converged. `1` At least one local minimum found. All runs of the local solver converged. `0` No local minimum found. Local solver called at least once, and at least one local solver exceeded the `MaxIter` or `MaxFunEvals` tolerances. `-1` One or more local solver runs stopped by the local solver output or plot function. `-2` No feasible local minimum found. `-5` `MaxTime` limit exceeded. `-8` No solution found. All runs had local solver exit flag `-2` or smaller, not all equal `-2`. `-10` Failures encountered in user-provided functions.

`output`

A structure describing the iterations of the run. Fields in the structure:

 `funcCount` Number of function evaluations. `localSolverIncomplete` Number of local solver runs with `0` exit flag. `localSolverNoSolution` Number of local solver runs with negative exit flag. `localSolverSuccess` Number of local solver runs with positive exit flag. `localSolverTotal` Total number of local solver runs. `message` Exit message.

`solutions`

A vector of `GlobalOptimSolution` objects containing the distinct local solutions found during the run. The vector is sorted by objective function value; the first element is best (smallest value). The object contains:

 `X` Solution point returned by the local solver. `Fval` Objective function value at the solution. `Exitflag` Integer describing the result of the local solver run. `Output` Output structure returned by the local solver. `X0` Cell array of start points that led to the solution.

## Examples

Use a default `GlobalSearch` object to solve the six-hump camel back problem (see Run the Solver):

```gs = GlobalSearch; sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ... + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4); problem = createOptimProblem('fmincon','x0',[-1,2],... 'objective',sixmin,'lb',[-3,-3],'ub',[3,3]); [xmin,fmin,flag,outpt,allmins] = run(gs,problem);```

## Algorithms

A detailed description of the algorithm appears in GlobalSearch Algorithm. Ugray et al. [1] describes both the algorithm and the scatter-search method of generating trial points.

## References

[1] Ugray, Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly, and Rafael Martí. Scatter Search and Local NLP Solvers: A Multistart Framework for Global Optimization. INFORMS Journal on Computing, Vol. 19, No. 3, 2007, pp. 328–340.