Commit 6b9118c1 authored by Markus Klinik's avatar Markus Klinik
Browse files

ingredients for EAs

parent f5fd4e20
......@@ -29,3 +29,34 @@ His work has been a big inspiration for this article.
\subsection{Ingredients for Evolutionary Algorithms}
There are many variants of evolutionary algorithms, but they all need the following parts.
\paragraph{Chromosomes}
A chromosome is a list of bits, or a list of numbers in our case, that encodes a solution.
A population is a set of chromosomes, and an evolutionary algorithm tries to construct chromosomes that encode good solutions without knowing the encoding method.
\paragraph{Decoder}
A decoder is a problem-specific function that takes a chromosome and calculates a solution from it, in our case a schedule.
The evolutionary algorithm uses the decoder to compare and rank the chromosomes of a population.
\paragraph{Evaluator}
An evaluator is a function that takes two solutions and compares which one is better.
The evolutionary algorithm uses the evaluator to rank the chromosomes of a population in order to determine which ones to use for the construction of the next population.
\paragraph{Crossover and mutation}
Crossover and mutation are two functions that directly manipulate chromosomes.
Many standard variants are possible, but they can also be provided on a problem-specific basis.
Crossover gets two parent chromosomes as input and produces one or more child chromosomes, with the hope that the children have some good properties from both parents.
For example, one-point crossover randomly determines a cut point in the chromosome and produces two children: one with the part before the cut point from the first parent and the rest from the second parent, and the other child the other way around.
Mutation randomly changes one entry of a chromosome.
In some encoding schemes, not all possible chromosomes encode valid solutions.
Crossover and mutation should take care that given valid chromosomes, they produce valid chromosomes.
\paragraph{Selection strategy}
Genetic algorithms work by constructing new populations from old ones.
In order to do this, the algorithm has to select chromosomes from the old population to which to apply crossover and mutation.
In general it is a bad idea to just select the best chromosomes of a population, as this can lead to fast convergence towards a local optimum.
Populations should be diverse and include non-optimal solutions from other places in the search space, in order to discover good solutions far away from each other.
To preserve diversity, the algorithm should select a mix of good and bad chromosomes to produce offspring.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment