[x,fval] = run(___)
returns the objective function value at x, the best point found,
using any of the arguments in the previous syntaxes. For the
lsqcurvefit and lsqnonlin local
solvers, fval contains the squared norm of the residual.
[x,fval,exitflag,output] = run(___)
also returns an exit flag describing the return condition, and an output structure
describing the iterations of the run.
[x,fval,exitflag,output,solutions] = run(___)
also returns a vector of solutions containing the distinct local minima found during
the run. solutions correspond to positive local solver exit
flags.
Create an optimization problem that has several local minima, and try to find the global minimum using GlobalSearch. The objective is the six-hump camel back problem (see Run the Solver).
rng default% For reproducibility
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]);
x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.
All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2
-0.0898 0.7127
You can request the objective function value at x when you call run by using the following syntax:
[x,fval] = run(gs,problem)
However, if you neglected to request fval, you can still compute the objective function value at x.
Create an optimization problem that has several local minima, and try to find the global minimum using GlobalSearch. The objective is the six-hump camel back problem (see Run the Solver).
GlobalSearch stopped because it analyzed all the trial points.
All 8 local solver runs converged with a positive local solver exit flag.
To understand what GlobalSearch did to solve this problem, examine the output structure and solutions object.
disp(output)
funcCount: 2245
localSolverTotal: 8
localSolverSuccess: 8
localSolverIncomplete: 0
localSolverNoSolution: 0
message: 'GlobalSearch stopped because it analyzed all the trial points....'
GlobalSearch evaluated the objective function 2261 times.
GlobalSearch ran fmincon starting from eight different points.
All of the fmincon runs converged successfully to a local solution.
disp(solutions)
1x4 GlobalOptimSolution array with properties:
X
Fval
Exitflag
Output
X0
arrayfun(@(x)x.Output.funcCount,solutions)
ans = 1×4
31 34 40 3
The eight local solver runs found four solutions. The funcCount output shows that fmincon took no more than 40 function evaluations to reach each of the four solutions. The output does not show how many function evaluations four of the fmincon runs took. Most of the 2261 function evaluations seem to be for GlobalSearch to evaluate trial points, not for fmincon to run starting from those points.
Example: problem =
createOptimProblem('fmincon','objective',fun,'x0',x0,'lb',lb)
Data Types: struct
k — Number of start points positive integer
Number of start points, specified as a positive integer. MultiStart generates k - 1
start points using the same algorithm as for a RandomStartPointSet object. MultiStart also uses the x0 point from the
problem structure.
Example: 50
Data Types: double
startpts — Start points for MultiStart CustomStartPointSet object | RandomStartPointSet object | cell array of such objects
Best point found, returned as a real array. The best point is the one with
lowest objective function value.
fval — Lowest objective function value encountered real scalar
Lowest objective function value encountered, returned as a real scalar.
For lsqcurvefit and lsqnonlin, the
objective function is the sum of squares, also known as the squared norm of
the residual.
exitflag — Exit condition summary integer
Exit condition summary, returned as an integer.
Global Solver Exit Flags
2
At least one feasible local minimum found. Some runs of the local solver did not converge.
1
At least one feasible local minimum found. All runs of the local solver converged (had positive exit flag).
0
No local minimum found. Local solver called at least once, and at least one local solver exceeded the MaxIterations or MaxFunctionEvaluations 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 lower, not all equal -2.
-10
Failures encountered in user-provided functions.
output — Solution process details structure
Solution process details, returned as a structure with the following
fields.
Field
Meaning
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 — Distinct local solutions vector of GlobalOptimSolution objects
Distinct local solutions, returned as a vector of GlobalOptimSolution objects. These
solutions correspond to positive local solver exit flags. In other words, if
a local solver exit flag is nonpositive, the corresponding solution is not
recorded in solutions. To obtain all local solutions, use
the @savelocalsolutionsOutput Functions for GlobalSearch and MultiStart.
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window.
Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: United States.
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.