Options and Outputs
Running ga with the Default Options
To run the genetic algorithm with the default options, call ga
with
the syntax
[x,fval] = ga(@fitnessfun, nvars)
The input arguments to ga
are
@fitnessfun
— A function handle to the file that computes the fitness function. Compute Objective Functions explains how to write this file.nvars
— The number of independent variables for the fitness function.
The output arguments are
x
— The final pointfval
— The value of the fitness function atx
For a description of additional input and output arguments,
see the reference page for ga
.
You can run the example described in Minimize Rastrigin's Function from the command line by entering
rng(1,'twister') % For reproducibility % Define Rastrigin's function rastriginsfcn = @(pop)10.0 * size(pop,2) + sum(pop .^2 - 10.0*cos(2*pi.*pop),2); [x,fval] = ga(rastriginsfcn,2)
This returns
Optimization terminated: average change in the fitness value less than options.FunctionTolerance. x = -1.0421 -1.0018 fval = 2.4385
Setting Options at the Command Line
You can specify any of the options that are available for ga
by passing options
as an input argument to
ga
using the syntax
[x,fval] = ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options)
This syntax does not specify any linear equality, linear inequality, or nonlinear constraints.
You create options
using the function optimoptions
.
options = optimoptions(@ga);
This returns options
with the default values for its fields.
ga
uses these default values if you do not pass in options as
an input argument.
The value of each option is stored in a field of options
, such
as options.PopulationSize
. You can display any of these values by
entering options
followed by a period and the name of the field.
For example, to display the size of the population for the genetic algorithm, enter
options.PopulationSize
ans = '50 when numberOfVariables <= 5, else 200'
To create options
with a field value that is different from the
default — for example to set PopulationSize
to
100
instead of its default value 50
— enter
options = optimoptions('ga','PopulationSize',100);
This creates options
with all values set to their defaults
except for PopulationSize
, which is set to
100
.
If you now enter,
ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options)
ga
runs the genetic algorithm with a population size of
100
.
If you subsequently decide to change another field in options
,
such as setting PlotFcn
to @gaplotbestf
, which
plots the best fitness function value at each generation, call
optimoptions
with the syntax
options = optimoptions(options,'PlotFcn',@plotbestf);
This preserves the current values of all fields of options
except for PlotFcn
, which is changed to
@plotbestf
. Note that if you omit the input argument
options
, optimoptions
resets
PopulationSize
to its default value.
You can also set both PopulationSize
and
PlotFcn
with the single command
options = optimoptions('ga','PopulationSize',100,'PlotFcn',@plotbestf);
Additional Output Arguments
To get more information about the performance of the genetic
algorithm, you can call ga
with the syntax
[x,fval,exitflag,output,population,scores] = ga(@fitnessfcn, nvars)
Besides x
and fval
, this
function returns the following additional output arguments:
exitflag
— Integer value corresponding to the reason the algorithm terminatedoutput
— Structure containing information about the performance of the algorithm at each generationpopulation
— Final populationscores
— Final scores
See the ga
reference page for
more information about these arguments.