GEATbx: Main page  Tutorial  Algorithms  M-functions  Parameter/Options  Example functions  www.geatbx.com

# 1 Introduction

The Genetic and Evolutionary Algorithm Toolbox for use with Matlab (GEATbx) provides a framework to utilize Evolutionary Algorithms for the optimization of a broad range of systems. Multiple Evolutionary Algorithms, evolutionary operators and special principles (population models, competition, multiple strategies, visualization) are available.

The GEATbx integrates all these operators and extensions. The user selects preconfigured algorithms or defines its own parameters. All operators and options of the GEATbx can be accessed by setting the appropriate parameters in the Option Structure. The toolbox handles all interactions and dependencies between operators and parameters. It integrates the provided extensions (i.e. visualization, result reports) into a framework for the optimization of real world systems.

The following sections provide an overview of the parameter/option handling of the GEATbx.

Section 1.1 (Predefined Evolutionary Algorithms) describes the preconfigured Evolutionary Algorithms for different system domains called ToolBoX functions. Each of these predefined algorithms is a collection of parameter options. The sum of these options define a special Evolutionary Algorithm. By selecting/using one or multiple of these ToolBoX functions complete algorithms may be applied in one step.

The default option settings of the GEATbx are preconfigured for the parameter optimization of real valued variables. Without selecting any special options or ToolBoX functions the GEATbx works good for this problem domain.

All option handling/applying of the GEATbx is done inside/using one function - geaoptset. The handling and working of this function is similar to simset from Simulink. How this functions works and special features useful for real work are explained in Section 1.2 (Option handling with geaoptset.m)

Section 1.3 (Examples of option settings) explains, how to define options and their parameters. A few examples of realistic setups apart from the predefined ToolBoX functions in Section 1.1 are provided. Special attention is paid to the definition of multiple strategies for the subpopulations.

During an optimization the GEATbx can output status information. Section 1.4 (Status and result output during optimization) explains this information. Additionally, the options to adjust the frequency and amount of status information are named. The same information may be saved into text files. This is very important for long running optimizations or the analysis of multiple runs. At the same time this produces a good documentation of the optimizations done.

Chapter 2-12 explains all available options of the GEATbx version 3.x in detail. Each chapter describes the options of a group (General, Recombination, Mutation, ...). Only a few of these options are used at a time. Most of these options are only needed for very special cases. The GEATbx was and is used for many different tasks - and some of the options are only needed then. The main objective of defining all these options is, that the toolbox may be completely controlled from outside by the definition of the respective parameters/parameterfiles. This is especially important when using the compiled version of the GEATbx.

The described concept for the option and parameter definition of the GEATbx version 3.x is different from GEATbx version 1.9x and 2.x. To provide an easy upgrade path the explanation of each option contains information of the option number under version 1.9x or 2.x (at the end of each option explanation in Chapter 2-12).

Chapter 13 (Comparison of Options (1.9x / 2.x / 3.x)) contains an tabular overview of the numbers of the available options in GEATbx version 1.9x and 2.x and their names in GEATbx version 3.x (the new names of the options are linked to the respective explanations). All options available in version 1.9x and 2.x are also available in version 3.x. Thus, the upgrade from an older version to the new one involves "just" the renaming of the options and the adaptation of the naming mechanism explained in Section 1.3 (Examples of option settings).

The GEATbx is fully modularized. The operators and functions of the GEATbx may be used for building own Evolutionary Algorithms. All functions use a defined and self-contained interface including check of the validity of the inputs. So, all operators are directly available and can be used inside special functions, algorithms and tools. However, then all extensions for the efficient application to the optimization of real world systems are lost. No direct example for the composition of own algorithms is provided. Nevertheless, the main function of the GEATbx, geamain2, is a full blown example.

## 1.1 Predefined Evolutionary Algorithms

The GEA Toolbox includes a number of predefined Evolutionary Algorithms called ToolBoX functions (tbx3*.m). One example is the frequently used tbx3real. These functions define some of the options of the GEATbx and define thus a special algorithm. The ToolBoX functions can be used as a starting point for individually predefined Evolutionary Algorithms.

These special option files contain all settings for a given problem class. For instance, optimization of ordering problems (tbx3perm) or parameter optimization of integer (tbx3int) or binary variables (tbx3bin).

tbx3real (real valued variables, multiple subpopulations, standard operators for real valued variables):

tbx3int (integer valued variables, multiple subpopulation, standard operators for integer valued variables):

tbx3bin (binary valued variables, multiple subpopulation, standard operators for binary valued variables):

• binary valued variables (VariableFormat=4): the EA works on binary values as well (genotype == phenotype),
• recombination algorithm:
• mutation algorithm: binary valued mutation (Mutation.Name='mutbin'),
• In case the problem to solve uses real valued variables (phenotype) and the EA should use binary values (genotype), just set VariableFormat=1 and employ the parameters above.

All previous ToolBoX functions use more or less standard parameters. The following examples show more advanced variants.

tbx3es1 (real valued variables, locally oriented optimization, uses evolution strategy mutation):

tbx3comp (switches competition on, default competition options are employed):

tbx3perm (ordering/permutation problem, standard operators for permutation problems):

All these ToolBoX functions are directly available inside the GEATbx. They define a number of algorithms that should help solve many problems. Simultaneously they serve as template to write own ToolBoX functions or support the definition of special algorithms.

## 1.2 Option handling with geaoptset.m

The main file for all option handling (GEATbx version 3.x) is geaoptset. This file is similar to simset (but can handle multi-level options and checks the validity of the options).

The function geaoptset may be used in multiple ways. All these possibilities will be explained in the following paragraphs:

• info on available options,
• define and add single or multiple options,
• merge option structures,
• check the validity of options.

### Default Options

When calling geaoptset without any input or output parameter a long table containing all possible options and their default values, value ranges, and types is printed on the screen.

Properties of GEA Toolbox and their possible and default settings:

Tab. 1-1: Table of default option settings (defined in geaoptset)

```>> geaoptset

Property Name          Type             min. Range max.  Numb. of para.   Default value
NumberSubpopulation   positive integer   1    Inf       just one         4
NumberIndividuals     positive integer   1    Inf       num. subpop      25 20 15 30
VariableFormat        positive integer   0      5       just one         0
Selection.Name        string           NaN    NaN       num. subpop     {1}  selsus
Selection.Pressure    positive scalar    0    Inf       num. subpop      1.7
...```

If you just want to get the default set of options, call geaoptset with one output parameter. This returns a structure containing all possible options with their default settings:

`>> DefOptions = geaoptset;`

The GEATbx contains a function to display (nearly) every variable in a pretty way: prprintf. Using this function the full options structure can be displayed. (The functionality of prprintf can be used with any other structure / cell array / matrix / scalar as well.)

Tab. 1-2: Table of default option settings (output from prprintf)

```>> prprintf(DefOptions)     % Some of the options are deleted
ans =
NumberSubpopulation  :  4
NumberIndividuals    :  25   20   15   30
VariableFormat       :  0
Selection
Name               :  {1}  selsus
Pressure           :  1.7
RankingMethod      :  0
GenerationGap      :  0.9
Recombination
Name  :  {1}  recdis
Rate  :  1
Mutation
Name       :  {1}  mutreal
Rate       :  1
Range      :  0.1
Precision  :  12
Migration
Do         :  1
Interval   :  20
Rate       :  0.1
... and so on```

tbd.

`GeaOpt = geaoptset(GeaOpt, 'NumberSubpopulation', 2);`

tbd.

### Check Validity of Option Structures

To check an options structure for validity call the utility function geaoptset with just one argument (the options structure to check).

`GeaOpt = geaoptset(GeaOpt);`

During the check of the parameters the following things are done:

• check the type of the parameters (string or scalar, integer or real number),
• check the boundaries of the parameters,
• check single/multi strategy parameters,
• expand multi strategy parameters to the number of subpopulations,
• check special parameters
• include missing parameters.

At the end of the check the returned options structure is full and valid and includes all previously provided parameters.

tbd.

## 1.4 Status and result output during optimization

The GEATbx produces extensive status and result reports during an optimization. By default text information is written to the Matlab command window (status information). This information may be saved additionally into an text file for later retrieval and analysis (default is, this information not to save).

The option Output.TextInterval controls if and how often status information is displayed on the screen. By default this option has the value 1. Thus, status information is printed every generation. Higher values for Output.TextInterval define, that less often status information is printed on the screen. A value of 5 defines, that status information is displayed every 5 generations.

The option Output.SaveTextInterval controls if and how often the status information is saved into an text file. By default, this option is switched off (option value is 0). By setting this option to a value of 1 or higher status information is saved to a text file every specified generation (the name of the file is defined in the option Output.SaveTextFileName).

The contents of the status information printed on screen and saved into a text file is (basically) identical. By using the options Output.TextExclude* and Output.SaveTextExclude* the contents of the status information can be adjusted.

At the beginning of an optimization the used options of the optimization are displayed in a formatted form. This information is called header. Only the used options are displayed and some comments may be added. Thus, every used parameter is fully documented - even when this setting was not directly set by the user but taken from one of the predefined ToolBoX functions or the default options set. Figure 1-1 contains an example of the displayed header information (from running demofun1).

Fig. 1-1: Output of all used options at the beginning of an optimization (Header of status information)

```Evolutionary Optimization

Objective function:  objfun1       Date: 05-Mar-2000     Time: 21:46:12
number of variables:   10
boundaries of variables:        -512
512

Evolutionary algorithm parameters:
subpopulations =      4       individuals =     25   (at start per subpopulation)
termination    1:  max. generations = 400;
variable format =    0   (real values - phenotype == genotype)
selection
function = selsus
pressure =    1.7
gen. gap =    0.9
reinsertion
rate =      1
method =      2
recombination
name = recdis  recdis  reclin  recdis
rate =      1
mutation
name = mutreal
rate =      1
range =    0.1    0.01   0.001  0.0001
precision =     16
regional model
migration
rate =   0.1    interval =   20    topology =    0    selection =  1
output
results on screen every  5  generation
grafical display of results every  10  generation
method = 111111
style  = 614143
results into text file every  5  generation
file name =  res_beasv_objfun1_var_1_01.txt```

During the optimization status information is displayed in tabular format, one line per generation (or as often as defined in Output.TextInterval). The table header provides a short description of the information contained in the status table. The run-status information contains:

• number of current generation,
• number of objective function calls,
• best objective value found so far (one value for single-objective optimization, multiple value for the multi-objective case),
• variables of the best individual (not displayed on screen by default - may be switched on as well),
• position of the subpopulations (applies only when using multiple subpopulations),
• size of the subpopulations (applies only when using competition between subpopulations),
• information on the termination criteria (how much each of the used termination criteria is full-filled),
• calculation time (time for one generation, overall time for the optimization until now).

The last 5 types of information may be switched on or off. Please check the description of the options Output.TextExclude* and Output.SaveTextExclude*.

According to the above header information, every 5 generations one line of status information is displayed.

Fig. 1-2: Status information displayed in command window during optimization (some lines removed)

```Generation   f-Count     Obj. Function       Pos of subpopulations / size                       Term: 1        Time: cpu/gen,  full
5.           451             40519          3   2   1   4      31     23     23     23      [   1.25%]     (  0.00min  00:00:02)
10.           888             30140          2   3   1   4      28     21     30     21      [   2.50%]     (  0.00min  00:00:03)
15.          1331             12935          3   1   2   4      26     19     36     19      [   3.75%]     (  0.00min  00:00:06)
20.          1776            8572.8          3   1   2   4      22     17     44     17      [   5.00%]     (  0.00min  00:00:06)
25.          2217            4910.8          3   2   1   4      20     24     40     16      [   6.25%]     (  0.00min  00:00:08)
30.          2660            3644.4          3   1   2   4      18     22     45     15      [   7.50%]     (  0.00min  00:00:09)
35.          3100            2414.4          2   1   3   4      17     28     41     14      [   8.75%]     (  0.00min  00:00:11)
40.          3540            1210.6          2   1   3   4      15     39     34     12      [  10.00%]     (  0.00min  00:00:11)
45.          3979            678.95          3   1   2   4      14     44     31     11      [  11.25%]     (  0.00min  00:00:13)
50.          4418            208.31          3   1   2   4      13     49     28     10      [  12.50%]     (  0.00min  00:00:14)

200.         17636       1.1752e-005          4   2   3   1       5      5     18     72      [  50.00%]     (  0.00min  00:00:54)
205.         18076       8.6381e-006          4   3   2   1       5      5     17     73      [  51.25%]     (  0.00min  00:00:56)
210.         18516       8.6179e-006          4   3   2   1       5      5     16     74      [  52.50%]     (  0.00min  00:00:57)
215.         18956       5.6262e-006          1   4   3   2       5      5     15     75      [  53.75%]     (  0.00min  00:00:58)
220.         19396       4.2513e-006          3   4   1   2       5      5     13     77      [  55.00%]     (  0.00min  00:00:59)

370.         32604       4.4879e-008          3   4   2   1       5      5     13     77      [  92.50%]     (  0.00min  00:01:38)
375.         33044       3.9711e-008          4   3   1   2       5      5     12     78      [  93.75%]     (  0.00min  00:01:40)
380.         33484       3.4701e-008          2   4   1   3       5      5     10     80      [  95.00%]     (  0.00min  00:01:41)
385.         33928       3.2459e-008          3   4   2   1       5      5      9     81      [  96.25%]     (  0.00min  00:01:42)
390.         34368       3.1356e-008          3   4   2   1       5      5      8     82      [  97.50%]     (  0.00min  00:01:43)
395.         34808       1.4482e-008          3   4   2   1       5      5      7     83      [  98.75%]     (  0.00min  00:01:45)
400.         35248       1.4482e-008          4   3   2   1       5      5      5     85      [ 100.00%]     (  0.00min  00:01:46)   ```

At the end of the optimization (when any one of the termination criteria is full-filled) result information is displayed on the screen (and saved into a text file if specified). The result information contains:

• which termination criteria was full-filled (here: max. number of generations),
• how long the optimization run (number of generations and time),
• best objective value found (one value for the single-objective case and multiple values for the multi-objective case) and when this result was found (number of generation),
• variable values of the best individual.

Fig. 1-3: Result information displayed in command window at the end of the optimization

```End of optimization: max. generations (400 generations; 1.78 cpu minutes / 1.78 time minutes)
Best Objective value:  1.44825e-008   in Generation 393
Best Individual:   -2.734e-005 -1.4079e-005   2.419e-005 -2.9976e-005 -2.8788e-005  9.4641e-005 -1.3272e-005  3.2009e-005  2.7127e-005  -1.8188e-005 ```

All the status information together (header, status of run and result of optimization) provide a detailed overview of a complete optimization run with as much information as needed normally. When saving the information into a text file as well (Output.SaveTextInterval) it can be used for later (off-line) analysis. At the same time this textual information provides a good documentation of an optimization run even readable years later.

## 1.5 Description of Options

The following Chapters explain all available options of the GEATbx version 3.x in detail. Each of the following Chapters describes the options of a group (General, Recombination, Mutation, ...).

Only a few of the available options are used at a time by the user. Most of these options are only needed for very special cases. The GEATbx was and is used for many different tasks - and some of the options are only needed then. All options not specially defined by the user are preset and contain useful values.

Each option description contains:

• a short description of the option,
• the default value and type of the option (defined in geaoptset),
• the meaning of the different values or the available parameter values (i.e. function names for recombination or which value means switch option on or off),
• short examples of setting the option (and possibly related options),
• special tips for the application of the option,
• which other options correspond with the option (directly),
• the option numbers in GEATbx version 1.9x and 2.x.

 GEATbx: Main page  Tutorial  Algorithms  M-functions  Parameter/Options  Example functions  www.geatbx.com

This document is part of version 3.8 of the GEATbx: Genetic and Evolutionary Algorithm Toolbox for use with Matlab - www.geatbx.com.
The Genetic and Evolutionary Algorithm Toolbox is not public domain.