Subsections


1. Introduction


1.1 What is FrEAK?

FrEAK, the Free Evolutionary Algorithm Kit, is a free toolkit for the creation, simulation, and analysis of evolutionary algorithms within a graphical interface. We created FrEAK as a comfortable, flexible and extendable platform to perform experimental analysis of evolutionary algorithms. Several components commonly used in evolutionary algorithms are provided with FrEAK and a developer's guide explains how to create your own components. The graphical interface allows you to create your own algorithms and to watch your algorithm running. With the built-in replay function, you can step back anytime and watch past runs and generations. Observers may be used to show, e.g., different performance measures, the individuals of the current population or other data derived from the algorithm. FrEAK uses the approved random number generator ``Mersenne Twister''1.1 to provide well-distributed pseudorandom numbers. The random seed is drawn from the current system time on schedule creation and preserved during load and save operations.


1.2 Evolutionary Algorithms

There are many views of evolutionary algorithms in the scientific community. In FrEAK, we consider evolutionary algorithms as randomized search heuristics used to optimize a specified fitness function. The fitness function is defined on a phenotype search space which represents the set of all search points. Search points are referred to as individuals. An individual contains a phenotype used to determine the individual's fitness, a genotype out of the genotype search space representing the individual's gene data and some other attributes like, e.g., its date of birth. Evolutionary algorithms in FrEAK are represented by algorithm graphs, also denoted as operator graphs. Algorithm graphs are acyclic flow graphs leading individuals through various nodes. The nodes represent operators like mutation, recombination, selection, and several other operators. They process the incoming individuals and propagate the resulting individuals through their outgoing edges. Every generation, the current population1.2 is led through the algorithm graph from a start node towards a finish node where the new population is received. A graphical editor is provided that enables you to design your own algorithm graphs. For further information, read Chapter 4: chapter4.


1.3 Overview

FrEAK is based on schedules containing the algorithm and simulation options. A wizard guides you through the process of creating a new schedule, as described in Chapter 2. You may save the current schedule to share the results of your algorithm or to continue the simulation later on. When a schedule has been created, lean back and start the simulation. FrEAK provides a replay mode allowing you to watch past runs and past generations in the current run. To learn more about controlling runs, read Chapter 3: chapter3.


1.3.1 Schedule Creation: Designing the Algorithm

The algorithm consists of seven components, which are called modules: The phenotype search space represents the domain of the fitness function. The fitness function is the function to be optimized. While most of the modules provided with FrEAK are designed for maximization problems, this is not a fundamental restriction; you may write custom modules that work with minimization problems as well. The genotype-mapper is an optional component. If a genotype-mapper is specified, it is used to map an individual's phenotype to a corresponding genotype. The operators inside the operator graph then work on the individual's genotype. If no genotype-mapper is specified, the genotype search space equals the phenotype search space and the individuals's phenotype represents its genotype, too. To specify the algorithm graph, you may create your own algorithm with the graphical editor or load an algorithm. Several common algorithms are provided with FrEAK and can be picked from a ready-made list. Stopping criteria tell the algorithm to stop the current run if a specified condition is fulfilled. The population model is an optional choice and allows you to maintain subdivisions inside the population. The last step here is to specify the initial population by choosing an initialization module that creates the individuals forming the first generation. If you want to write your own module, refer to the Module Developer's Guide.

1.3.2 Schedule Creation: Preparing the Simulation

Preparing the simulation covers the following two steps: Observers are modules collecting and computing data that is then displayed by views. E.g., observers can compute measures like the fitness variance within the population or simply collect all individuals of the current population. A view displays the data observed by an observer if it is able to handle the type of data the observer provides. The two most commonly used data types are individuals and numbers. Observers may have an arbitrary number of views. Last but not least, you may create batches of runs. A batch is a collection of runs with own configurations for the phenotype search space, the fitness function and the initialization module. The modules selected and configured in the previous steps form the first batch which is created by default. You may then eventually add other batches with different configurations, e.g., to vary the dimension of the search space or the population size.

1.3.3 Controlling Runs

When the schedule creation is finished, you see a control panel at the bottom, an information panel to the left and the created views to the right. For details, see Chapter 3: chapter3. Note that a speed limit of 10 generations per second is set by default in the control panel. You can switch off the speed limit or alter its value by using either the text field or the slider to the right. Then hit the Start button to start the simulation. When the stopping criterion is fulfilled, the run ends and the next run starts, if multiple runs or batches have been created. Please note that several options and commands are disabled when the algorithm is running. To pause the algorithm and enable editing commands, hit the Suspend button to suspend the current run. For further information about editing the current schedule, see Section 3.3: EditingSchedule. In the information panel, the current time index is shown. By entering a different time index or by using the navigation buttons in the control panel, you can skip back to past generations, runs, and batches to watch a replay of the simulation at that point of time. To continue the simulation, hit the Skip to End button and FrEAK continues creating new generations.