### An Interactive Tutorial

#### Abstract

Evolvica is a hypertext-based tutorial about Evolutionary Algorithms and is being developed at the Evolutionary & Swarm Design Laboratory, Department of Computer Science, University of Calgary..

Mainly based on Mathematica's programming environment Evolvica comprises a collection of HTML documents in combination with Mathematica notebooks (versions 3.0 and 2.x).

#### Evolutionary algorithms

In a biological sense, evolution subsumes a huge number of complex interaction, mutation, and selection processes which finally ­ after millions and millions of years ­ have come up with a fascinating diversity of life forms in nature. Furthermore, evolution may describe any kind of organism development, as for instance structure formation or growth processes.

Especially for these two aspects of evolution ­ on a populational scale of competing and interacting organisms as well as on the scale of developing single organisms ­ Evolvica´s World of Evolution offers a collection of algorithmic models, which will be briefly characterized in the sequel.

• Evolution Strategies:

Evolution Strategies (ES) represent a widely applied class of optimization algorithms based on evolutionary principles. Features of an object to be optimized are parametrized as vectors of numbers. "Populations" of these vectors are evolved via selection and variation processes over a number of generations. Fitness values, defined according to the optimization task to be solved, decide about the individuals´ survival probabilities from generation to generation.

References:

• Genetic Algorithms:

Genetic Algorithms (GA) are another representative population-based class of evolutionary algorithms using evolution principles like selection, mutation, and recombination, as e.g. stated by Charles Darwin's evolution theory. Based on the idea of competing individuals, Genetic Algorithms are used to solve complex, however, mostly numerical optimization tasks. Whereas Evolution Strategies work on the actual parameters to be optimized, Genetic Algorithms perform mutations and recombinations on an encoded version of the parameters, mostly in the form of binary strings.

References:

• Genetic Programming:

The Genetic Programming (GP) paradigm enhances Genetic Algorithms in order to evolve or breed hierarchical structures like computer programs. Symbolic expressions (know e.g. from LISP or Mathematica) are a widely used representation form for those evolvable programs.

References:

• Lindenmayer-Systems:

A single organism's evolution, that is, its structure formation and growth processes, can be simulated by parallel rewrite systems, as e.g. know in the form of Lindenmayer-systems or L-systems.

References:

• Biological Models of Morphogenesis (Univ. of Calgary)
• Further L-system references ...

• Genetic L-System Programming:

Applying Genetic Programming techniques to breed L-systems leads to new possibilities of inferencing L-systems, which means to evolve L-systems that describe developmental processes with predefined characteristic.

References:

#### Evolvica - Who might find the tutorial useful?

##### Teaching and Training

Evolvica can be used in the classroom to demonstrate basic principles of evolutionary algorithms and optimization techniques in a vivid and interactive way (e.g. by animations, hyperlinked tutorial documents, etc.).

##### Programing and Evolution: Learning by Doing

Furthermore, you can use Evolvica as a starting point for your own explorations within the fascinating world of evolution.

If you already have some experience in programming with Mathematica, you may rely on a number of packages in order to build your own evolutionary algorithm implementations.

However, even if up to now you did not have the chance to work with Mathematica and Mathematica´s notebook environment, we can assure you: With the help of numerous programming examples it will be easy for you to explore Evolvica's World of Evolution.