particleswarm
solver for particle swarm
optimizationThe particleswarm
function
solves unconstrained or bound-constrained optimization problems using
the particle swarm optimization algorithm. particleswarm
is
not available in the Optimization app. For details and examples, see Particle Swarm.
gamultiobj
multiobjective
genetic algorithm solvergamultiobj
now
accepts nonlinear constraints. For details, see the function reference
page.
ga
genetic
algorithm solver can speed solutionsYou can choose a new nonlinear constraint algorithm in ga
by
setting the NonlinConAlgorithm
option to 'penalty'
.
Frequently, the 'penalty'
algorithm is faster than
the default 'auglag'
algorithm. For details, see Nonlinear
Constraint Solver Algorithms.
Several default settings in the ga
function
changed for noninteger problems.
Option | Old Default | New Default |
---|---|---|
EliteCount | 2 | floor(0.05*PopulationSize) |
Generations | 100 | 100*numberOfVariables |
PopInitRange | [0;1] | [-10;10] , shifted and scaled to match any
finite bounds |
PopulationSize | 20 | 50 when numberOfVariables <=
5 , and 200 otherwise |
Other changes:
ga
now stops when the average
relative change in best fitness value over StallGenLimit
generations
is less than the TolFun
tolerance. Previously,
the stopping criterion was a weighted average
relative change, where the weighting factor was (1/2)^{n} for
the nth prior iteration. This change usually causes ga
to
take more iterations. The new StallTest
option,
with default value 'totalChange'
, controls the
stopping criterion. Set StallTest
to 'geometricWeighted'
to
recover the previous behavior.
When there are linear constraints, the default crossover
function is now 'crossoverintermediate'
. Previously,
the default crossover function was 'crossoverscattered'
for
all constraint types.
The gamultiobj
function
has the same new default values as ga
for the PopInitRange
and PopulationSize
options.
When using its default options, ga
generally
runs longer than before, and obtains different (and often better)
results.
If you want ga
to run as before, set its
options to their old defaults using gaoptimset
.
The UseParallel
option now accepts the values true
and false
.
The option also accepts the former values 'always'
and 'never'
,
and scalar values 1
and 0
.
The affected solvers are MultiStart
, patternsearch
, ga
,
and gamultiobj
. Also, the local or hybrid solver fmincon
has
the same change to its UseParallel
option.
fmincon
algorithm for GlobalSearch
and MultiStart
The default fmincon
algorithm is now 'interior-point'
.
Previously, the default fmincon
algorithm for GlobalSearch
was 'active-set'
.
Similarly, the default fmincon
algorithm for MultiStart
was 'active-set'
when
you set fmincon
as the local solver.
When you do not set an fmincon
algorithm, GlobalSearch
and MultiStart
can
obtain different results than before, and take different iteration
steps. To reproduce their previous behavior, set the fmincon
Algorithm
option
to 'active-set'
using optimoptions
,
and include the option using the createOptimProblem
function.
For example,
opts = optimoptions('fmincon','Algorithm','active-set'); problem = createOptimProblem('fmincon','options',opts,...);
patternsearch
assumes
row orientation When x0
is a scalar, patternsearch
now
expects your objective function to output a column vector of values.
In addition, any nonlinear constraint functions need to output column
vectors as well.
Previously, patternsearch
assumed that
scalar problems were in column form, so expected a vectorized objective
function to output a row vector.
The ga
function
now allows you to specify that certain variables are integer valued.
When you include integer constraints, you can have any objective function,
bounds, and inequality constraints, but you cannot directly include
equality constraints. To try to circumvent this limitation, see No Equality
Constraints.
For details on mixed-integer programming, see the ga
function
reference page or Mixed
Integer Optimization.
There is a new demo of ga
for
mixed integer programming. Run the demo at the MATLAB command
line by entering echodemo weldedBeamDemo
.
For R2011b, error and warning message identifiers have changed in Global Optimization Toolbox.
If you have scripts or functions that use message identifiers
that changed, you must update the code to use the new identifiers.
Typically, message identifiers are used to turn off specific warning
messages, or in code that uses a try
/catch
statement
and performs an action based on a specific error identifier.
For example, the 'globaloptim:EQNSOLV:sparseToFull'
identifier
has changed to 'globaloptim:eqnsolv:eqSparseToFull'
.
If your code checks for 'globaloptim:EQNSOLV:sparseToFull'
,
you must update it to check for 'globaloptim:eqnsolv:eqSparseToFull'
instead.
To determine the identifier for a warning, run the following command just after you see the warning:
[MSG,MSGID] = lastwarn;
This command saves the message identifier to the variable MSGID
.
To determine the identifier for an error, run the following command just after you see the error:
exception = MException.last; MSGID = exception.identifier;
Tip Warning messages indicate a potential issue with your code. While you can turn off a warning, a suggested alternative is to change your code so it runs warning free. |
The patternsearch
and ga
History
to new window output functions (@psoutputhistory
and @gaoutputgen
)
have been removed. Obtain the same functionality by setting one of
the following:
Display
option to 'iter'
with psoptimset
or gaoptimset
Level of display to iterative
in
the Display to command window part of the Optimization
Tool Options pane
Use output functions or plot functions with GlobalSearch
and MultiStart
to
report and plot information on algorithm progress during runs. You
can also stop the solvers according to criteria you set. For more
information, see Output Functions
for GlobalSearch and MultiStart and Plot Functions
for GlobalSearch and MultiStart.
In order to make exit flags have more uniform meaning across
solvers, two GlobalSearch
and MultiStart
exit
flags have different meanings than in R2010a:
Exit Flag | Meaning |
---|---|
-1 | GlobalSearch or MultiStart stopped
by an output function or plot function (regardless of local solver
exit flag) |
-8 | No solution found; all local solver runs had exit flag -1 or
smaller |
The demo titled "Using the Genetic Algorithm with the Parallel Computing Toolbox™" was removed from the toolbox. The demo used more complex parallelization techniques than those in the Optimization Toolbox™ demo titled "Minimizing an Expensive Optimization Problem Using Parallel Computing Toolbox™."
Former Genetic Algorithm and Direct Search Toolbox™ functions are now part of Global Optimization Toolbox software.
Error and warning IDs now use the globaloptim
name
instead of the gads
name. For example, to turn
off the sahybrid:unconstrainedHybridFcn
warning,
instead of
warning('off','gads:sahybrid:unconstrainedHybridFcn')
use the statement
warning('off','globaloptim:sahybrid:unconstrainedHybridFcn')
GlobalSearch
and MultiStart
run
a local solver (such as fmincon
)
from a variety of start points. The goal is to find a global minimum,
or multiple local minima. The chief differences between the solver
objects are:
GlobalSearch
uses a scatter-search
mechanism for generating start points. MultiStart
uses
uniformly distributed start points within bounds, or user-supplied
start points.
GlobalSearch
analyzes start points
and rejects those that are unlikely to improve the best local minimum
found so far. MultiStart
runs all start points.
MultiStart
gives a choice of local
solver: fmincon
, fminunc
, lsqcurvefit
,
or lsqnonlin
. GlobalSearch
uses fmincon
.
MultiStart
can be run in parallel,
distributing start points to multiple processors. GlobalSearch
does
not run in parallel.
These solver objects come with a variety of new objects, functions, and methods:
createOptimProblem
—
Function for creating optimization problem structure
CustomStartPointSet
and RandomStartPointSet
—
Objects for MultiStart
multiple start points
GlobalOptimSolution
—
Object for holding results of multiple runs of local solver
list
— Method for obtaining
start points from a CustomStartPointSet
or RandomStartPointSet
run
— Method for running GlobalSearch
or MultiStart
objects
with optimization problem structures
For more information, see Using GlobalSearch and MultiStart in the Global Optimization Toolbox User's Guide.
A new poll method generates search directions faster and more
reliably in patternsearch
for
linearly constrained problems. Use this poll method at the command
line by setting the PollMethod
option to 'GSSPositiveBasis2N'
or 'GSSPositiveBasisNp1'
with psoptimset
.
With the Optimization Tool, set Options > Poll > Poll
method to GSS Positive basis 2N
or GSS
Positive basis Np1
.
For more information, see Poll Options in the Global Optimization Toolbox User's Guide.
There is a new demo showing how to use GlobalSearch
and MultiStart
to
find a global optimum or several local optima. Run the demo at the MATLAB command
line by entering echodemo opticalInterferenceDemo
.
The threshacceptbnd
function has been removed.
Use simulannealbnd
for
similar functionality. To obtain results using a threshold acceptance
algorithm, write a custom acceptance function for simulannealbnd
—see AcceptanceFcn
in Algorithm
Settings.
The threshacceptbnd
function will be removed
in a future release.
The threshacceptbnd
function now warns
that it will be removed in a future release. Use simulannealbnd
for
similar functionality. To obtain results using a threshold acceptance
algorithm, write a custom acceptance function for simulannealbnd
—see AcceptanceFcn
in Algorithm
Settings.
There is a new demo showing graphically how patternsearch
works.
To see the demo, enter echodemo mtwashdemo
at the MATLAB command
line.
The functions ga
, gamultiobj
,
and patternsearch
can
take advantage of parallel computing. Furthermore, applicable hybrid
functions can use parallel computing. For more information, see the Parallel Processing chapter
in the User's Guide.
The Genetic Algorithm Tool and Pattern Search Tool GUIs have
been combined into the Optimization Toolbox Optimization Tool
GUI. To access these GUIs, enter optimtool
at
the command line and choose the appropriate solver.
The functions gatool
and psearchtool
continue
to work, calling optimtool
with the appropriate
solver selected (ga
or patternsearch
).
However, the functions gatool
and psearchtool
are
no longer listed in the documentation.
The Optimization Tool GUI now includes the functions gamultiobj
, simulannealbnd
,
and threshacceptbnd
. Therefore, all Genetic
Algorithm and Direct Search Toolbox™ solvers are supported
in Optimization Tool. To access these GUIs, enter optimtool
at
the command line and choose the appropriate solver.
ga
and gamultiobj
can
now create populations satisfying bounds and linear constraints, with
well-dispersed populations, using the function gacreationlinearfeasible
.
The previous creation function, gacreationuniform
,
is accessible by using gaoptimset
to
set CreationFcn
to @gacreationuniform
.
The new default behavior is to use gacreationlinearfeasible
when
there are linear constraints, and gacreationuniform
when
there are bounds or no constraints.
The default value of StallTimeLimit
in ga
used
to be 20
. It was changed to Inf
in
order to avoid time-outs when using computationally intensive fitness
functions.
Change StallTimeLimit
to 20
using gaoptimset
to
get the previous behavior.
Multiobjective optimization, with linear and bound constraints,
is now available through the new function gamultiobj
.
This function determines optimal Pareto fronts from specified criteria,
including Pareto fronts that are nonconvex, disconnected, or both.
Optimization Toolbox also contains multiobjective functionality, but cannot reliably generate optimal Pareto fronts if these are nonconvex or disconnected.
Two new demos illustrate this feature. See New Demos following.
The new function gamultiobj
also supports
multiobjective optimization with custom data types, including binary.
To determine multiobjective optimizations more accurately, you
can now combine the new function gamultiobj
with
the existing function fgoalattain
from Optimization Toolbox.
The functions ga
and patternsearch
now
accept vectorized function inputs with nonlinear constraints. The
new function gamultiobj
does
as well.
Two accompanying demos illustrate the use of the new multiobjective
genetic algorithm function gamultiobj
:
gamultiobjfitnessgamultiobjfitness
uses gamultiobj
to
solve a simple problem with one decision variable and two objectives.
gamultiobjoptionsdemogamultiobjoptionsdemo
shows
how to set options for multiobjective optimization with a simple genetic
algorithm problem.
The following functions have been added for simulated annealing and threshold acceptance:
simulannealbnd | Perform unconstrained or bound-constrained minimization of a function of several variables using simulated annealing. The default algorithm uses adaptive annealing, but options can be changed to use Boltzmann annealing, fast annealing, and other variants. |
threshacceptbnd | Perform unconstrained or bound-constrained minimization of a function of several variables using threshold acceptance. |
saoptimset | Create or modify optimization options for |
saoptimget | Access options for |
If you are viewing this documentation in the Help browser, the following demos are available:
Minimization Using Simulated Annealing And Threshold Acceptance AlgorithmsMinimization Using Simulated Annealing And Threshold Acceptance Algorithms
Simulated Annealing and Threshold Acceptance OptionsSimulated Annealing and Threshold Acceptance Options
Custom Data Type Optimization Using Simulated AnnealingCustom Data Type Optimization Using Simulated Annealing
The third output argument returned by the ga
function
is now a numeric value. This change is consistent with other optimization
solvers in MATLAB and makes
it easier to programmatically determine the reason the solver stopped.
As in previous versions, the fourth output argument is a structure
with the field message
containing a string that
indicates the reason the solver stopped.
The new syntax is as follows:
[x,fval,exitflag,output] = ga(fitnessfcn, ...)
exitflag
value,
see the ga
function
reference page in the Genetic Algorithm and Direct Search
Toolbox™ User's Guide for more information.In previous versions, the third output argument returned by ga
is
a string describing the reason the solver stopped.
[x,fval,reason] = ga(fitnessfcn, ...)
ga
function
programmatically in a previous release, for example, to compare the
value to a string, this code will now produce an error.
The new syntax is more efficient both with speed and memory. This is done by changing the way linear and bound constraints are stored and passed to a search function. The following describes the new calling syntax:
function [successSearch,xBest,fBest,funccount] = searchfcntemplate(fun,x,A,b,Aeq,beq,lb,ub, ... optimValues,options)
edit searchfcntemplate
In previous versions, a search function required the following calling syntax:
function [successSearch,nextIterate,optimState] = searchfcntemplate(fun,iterate,tol,A,L,U, ... funeval,maxfun,searchoptions,objfcnarg, ... iterlimit,factors)
The searchConversion
utility function is
provided to convert your search functions from previous releases to
the new syntax of Version 2.0.2. For more information on obtaining
and using the conversion function, see this technical
support solution.
Previously, the genetic algorithm solver only solved unconstrained
optimization problems, and the pattern search solver solved unconstrained
optimization problems as well as those with linear constraints and
bounds. Now, both solvers have to ability to solve general nonlinear
optimization problems with linear constraints, bounds, and nonlinear
constraints by accepting a nonlinear constraint function. The M-file
for the nonlinear constraint function is accepted as an input argument
at the command line for both the ga
and patternsearch
functions,
as well as in the Constraints panel of psearchtool
and gatool
.
The GPS algorithm is the pattern search algorithm implemented in previous versions of the toolbox. The MADS algorithm is a modification of the GPS algorithm. The algorithms differ in how the set of points forming the mesh is computed. The GPS algorithm uses fixed direction vectors, whereas the new MADS algorithm uses a random selection of vectors to define the mesh.
The following options are available in the gatool
and
when using the ga
function
at the command prompt:
The new Constraints panel has a Nonlinear constraint function field in addition to fields for linear constraints and bounds for solving constrained optimization problems
New Max constraint (@gaplotmaxconstr
)
option in the Plot pane to plot the maximum nonlinear
constraint violation at each generation
New crossover function, Arithmetic
(@crossoverarithmetic
),
available in the Crossover panel that creates
children that are the weighted arithmetic mean of two parents
New mutation function, Adaptive Feasible
(mutationadaptfeasible
),
available in the Crossover panel that randomly
generates directions that are adaptive with respect to the last successful
or unsuccessful generation. This function is the default for constrained
problems
New Algorithm settings panel for selecting algorithm specific parameters, such as the penalty parameters, Initial penalty and Penalty factor, for a nonlinear constraint algorithm
New Hybrid function, fmincon
,
for constrained problems
New Nonlinear constraint tolerance parameter in Stopping criteria
The following options are available in the psearchtool
and
when using the patternsearch
function
at the command prompt:
Constraints now has a Nonlinear constraint function option to solve for constrained optimization problems
New Max constraint (@psplotmaxconstr
)
option in the Plot pane to plot the maximum nonlinear
constraint violation at each generation
Updated Poll method and Search method options for selecting the GPS or MADS algorithms
New Algorithm settings panel for selecting algorithm specific parameters, such as the penalty parameters, Initial penalty and Penalty factor, for a nonlinear constraint algorithm
New Time limit and Nonlinear constraint tolerance parameters in Stopping criteria
The Genetic Algorithm and Direct Search Toolbox contains the following new demos for Version 2.0:
Optimization of Non-smooth Objective Function
Constrained Minimization Using the Genetic Algorithm
Constrained Minimization Using the Pattern Search
Optimization of Stochastic Objective Function
Using the Genetic Algorithm and Direct Search Toolbox™
Release | Features or Changes with Compatibility Considerations |
---|---|
R2015a | None |
R2014b | None |
R2014a | |
R2013b | None |
R2013a | Vectorized scalar patternsearch assumes
row orientation |
R2012b | None |
R2012a | None |
R2011b | Conversion of Error and Warning Message Identifiers |
R2011a | None |
R2010b | Output Functions and Plot Functions for GlobalSearch and MultiStart |
R2010a | |
R2009b | threshacceptbnd Function Deprecated |
R2009a | None |
R2008b | None |
R2008a | |
R2007b | None |
R2007a | ga Output Argument exitflag Returns Numeric Value |
R2006b | New Syntax for Search Method Option in Pattern Search Algorithm Improves Speed and Memory |
R2006a | None |
R14SP3 | None |