Find minimum of function using genetic algorithm
ConstraintTolerance
Determines the feasibility with respect to nonlinear constraints. Also,max(sqrt(eps),ConstraintTolerance)
determines
feasibility with respect to linear constraints.
For an options
structure, use TolCon
.
Positive scalar | {1e-3}
CreationFcn
Function that creates the initial population. Specify as a name of a built-in creation
function or a function handle. See Population Options.
{'gacreationuniform'}
|{'gacreationlinearfeasible'}*
|'gacreationnonlinearfeasible'
|{'gacreationuniformint'}
I* for ga
|{'gacreationsobol'}
I* for gamultiobj
| Custom creation
function
CrossoverFcn
Function that the algorithm uses to create crossover children. Specify as a name of a
built-in crossover function or a function handle. See Crossover Options.
{'crossoverscattered'}
for ga
,{'crossoverintermediate'}*
forgamultiobj
|{'crossoverlaplace'}
I* | 'crossoverheuristic'
|'crossoversinglepoint'
|'crossovertwopoint'
|'crossoverarithmetic'
| Custom crossover
function
CrossoverFraction
The fraction of the population at the next generation, not including elite children, that the
crossover function creates.
Positive scalar | {0.8}
Display
Level of display.
'off'
| 'iter'
| 'diagnose'
| {'final'}
DistanceMeasureFcn
Function that computes the distance measure of individuals. Specify as a name of a
built-in distance measure function or a function handle. The value applies
to the decision variable or design space (genotype) or to function space
(phenotype). The default 'distancecrowding'
is in
function space (phenotype). For gamultiobj
only. See
Multiobjective Options.
For
an options structure, use a function handle, not a name.
{'distancecrowding'}
means the same as{@distancecrowding,'phenotype'}
|{@distancecrowding,'genotype'}
| Custom distance
function
EliteCount
NM Positive integer
specifying how many individuals in the current generation are guaranteed
to survive to the next generation. Not used in gamultiobj
.
Positive integer | {ceil(0.05*PopulationSize)}
| {0.05*(default
for mixed-integer problems
PopulationSize)}
FitnessLimit
NM If the fitness function
attains the value of FitnessLimit
, the algorithm
halts.
Scalar | {-Inf}
FitnessScalingFcn
Function that scales the values of the fitness function. Specify as a name of a
built-in scaling function or a function handle. Option unavailable forgamultiobj
.
{'fitscalingrank'}
| 'fitscalingshiftlinear'
|'fitscalingprop'
| 'fitscalingtop'
| Custom fitness scaling
function
FunctionTolerance
The algorithm stops if the average relative change in the best fitness function value
over MaxStallGenerations
generations is less than or
equal to FunctionTolerance
. IfStallTest
is 'geometricWeighted'
,
then the algorithm stops if the weighted average relative change is less
than or equal to FunctionTolerance
.
Forgamultiobj
, the algorithm stops when the geometric
average of the relative change in value of the spread overoptions.MaxStallGenerations
generations is less thanoptions.FunctionTolerance
, and the final spread is
less than the mean spread over the pastoptions.MaxStallGenerations
generations. See gamultiobj Algorithm.
For an options structure, useTolFun
.
Positive scalar | {1e-6}
for ga
, {1e-4}
for gamultiobj
HybridFcn
I* Function that continues the optimization afterga
terminates. Specify as a name or a function
handle.
Alternatively, a cell array specifying the hybrid
function and its options. See ga Hybrid Function.
For gamultiobj
, the only hybrid
function is @fgoalattain
. See gamultiobj Hybrid Function.
When the problem has integer constraints, you cannot use a
hybrid function.
See When to Use a Hybrid Function.
Function name or handle | 'fminsearch' | 'patternsearch' | 'fminunc' |
'fmincon' | {[]}
or
1-by-2 cell array
| {@solver, hybridoptions}
, where solver =
,
fminsearchpatternsearch
,fminunc
, or fmincon
{[]}
InitialPenalty
NM
I* Initial value of the penalty
parameter
Positive scalar | {10}
InitialPopulationMatrix
Initial population used to seed the genetic algorithm. Has up toPopulationSize
rows and N
columns,
where N
is the number of variables. You can pass a
partial population, meaning one with fewer thanPopulationSize
rows. In that case, the genetic
algorithm uses CreationFcn
to generate the remaining
population members. See Population Options.
For an options structure, useInitialPopulation
.
Matrix | {[]}
InitialPopulationRange
Matrix or vector specifying the range of the individuals in the initial population.
Applies to gacreationuniform
creation function.ga
shifts and scales the default initial range to
match any finite bounds.
For an options structure, usePopInitRange
.
Matrix or vector | {[-10;10]}
for unbounded components,{[-1e4+1;1e4+1]}
for unbounded components of
integer-constrained problems, {[lb;ub]}
for bounded
components, with the default range modified to match one-sided
bounds
InitialScoresMatrix
Initial scores used to determine fitness. Has up to PopulationSize
rows and Nf
columns, where Nf
is the
number of fitness functions (1
forga
, greater than 1
forgamultiobj
). You can pass a partial scores matrix,
meaning one with fewer than PopulationSize
rows. In that
case, the solver fills in the scores when it evaluates the fitness
functions.
For an options structure, useInitialScores
.
Column vector for single objective | matrix for multiobjective
| {[]}
MaxGenerations
Maximum number of iterations before the algorithm halts.
For an options
structure, use Generations
.
Positive integer |{100*numberOfVariables}
for ga
, {200*numberOfVariables}
for gamultiobj
MaxStallGenerations
The algorithm stops if the average relative change in the best fitness function value
over MaxStallGenerations
generations is less than or
equal to FunctionTolerance
. IfStallTest
is 'geometricWeighted'
,
then the algorithm stops if the weighted average relative change is less
than or equal to FunctionTolerance
.
Forgamultiobj
, the algorithm stops when the geometric
average of the relative change in value of the spread overoptions.MaxStallGenerations
generations is less thanoptions.FunctionTolerance
, and the final spread is
less than the mean spread over the pastoptions.MaxStallGenerations
generations. See gamultiobj Algorithm.
For an options structure, useStallGenLimit
.
Positive integer | {50}
for ga
, {100}
for gamultiobj
MaxStallTime
NM The algorithm stops if there is no improvement in
the objective function for MaxStallTime
seconds, as
measured by tic
and toc
.
For an
options structure, use StallTimeLimit
.
Positive scalar | {Inf}
MaxTime
The algorithm stops after running for MaxTime
seconds, as measured
by tic
and toc
. This limit is enforced
after each iteration, so ga
can exceed the limit when
an iteration takes substantial time.
For an options structure,
use TimeLimit
.
Positive scalar | {Inf}
MigrationDirection
Direction of migration. See Migration Options.
'both'
| {'forward'}
MigrationFraction
Scalar from 0 through 1 specifying the fraction of individuals in each subpopulation
that migrates to a different subpopulation. See Migration Options.
Scalar | {0.2}
MigrationInterval
Positive integer specifying the number of generations
that take place between migrations of individuals between subpopulations.
See Migration Options.
Positive integer | {20}
MutationFcn
Function that produces mutation children. Specify as a name of a built-in mutation
function or a function handle. See Mutation Options.
{'mutationgaussian'}
for ga
without constraints
| {'mutationadaptfeasible'}*
forgamultiobj
and for ga
with
constraints | {'mutationpower'}
I* | 'mutationpositivebasis'
|'mutationuniform'
| Custom mutation function
NonlinearConstraintAlgorithm
Nonlinear constraint algorithm. See Nonlinear Constraint Solver Algorithms. Option unchangeable forgamultiobj
.
For an options structure,
use NonlinConAlgorithm
.
{'auglag'}
for ga
, {'penalty'}
for gamultiobj
OutputFcn
Functions that ga
calls at each iteration. Specify as a function
handle or a cell array of function handles. See Output Function Options.
For an options structure,
use OutputFcns
.
Function handle or cell array of function handles |{[]}
ParetoFraction
Scalar from 0 through 1 specifying the fraction of individuals to keep on the first
Pareto front while the solver selects individuals from higher fronts, forgamultiobj
only. See Multiobjective Options.
Scalar | {0.35}
PenaltyFactor
NM I* Penalty
update parameter.
Positive scalar | {100}
PlotFcn
Function that plots data computed by the algorithm. Specify as a name of a built-in
plot function, a function handle, or a cell array of built-in names or
function handles. See Plot Options.
For an options
structure, use PlotFcns
.
ga
or gamultiobj
: {[]} |
Custom plot function
'gaplotdistance' | 'gaplotgenealogy' | 'gaplotselection' |
'gaplotscorediversity' |'gaplotscores' | 'gaplotstopping' |
'gaplotmaxconstr' |
ga
only:'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' |
'gaplotrange'
gamultiobj
only: 'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' |
'gaplotspread'
PlotInterval
Positive integer specifying the number of generations
between consecutive calls to the plot functions.
Positive integer | {1}
PopulationSize
Size of the population.
Positive integer | {50}
when numberOfVariables
,
<= 5{200}
otherwise | {min(max(10*nvars,40),100)}
for
mixed-integer problems
PopulationType
Data type of the population. Must be 'doubleVector'
for
mixed-integer problems.
'bitstring'
| 'custom'
| {'doubleVector'}
ga
ignores
all constraints when PopulationType
is set to 'bitString'
or 'custom'
.
See Population Options.
SelectionFcn
Function that selects parents of crossover and mutation children. Specify as a name of
a built-in selection function or a function handle.
gamultiobj
uses only'selectiontournament'
.
{'selectionstochunif'}
for ga
,{'selectiontournament'}
forgamultiobj
|'selectionremainder'
|'selectionuniform'
|'selectionroulette'
| Custom selection
function
StallTest
NM Stopping test type.
'geometricWeighted'
| {'averageChange'}
UseVectorized
Specifies whether functions are vectorized. See Vectorize and Parallel Options (User Function Evaluation) and
Vectorize the Fitness Function.
For an options structure, use Vectorized
with the values 'on'
or'off'
.
true
| {false}