@@ -37,7 +37,7 @@ A chromosome is a list of bits, or a list of numbers in our case, that encodes a

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.

A decoder is a 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}

...

...

@@ -48,19 +48,32 @@ The evolutionary algorithm uses the evaluator to rank the chromosomes of a popul

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.

A simple crossover function, called \emph{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.

Crossover and mutation should be chosen such that when 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.

Populations should be diverse and include non-optimal solutions from distant parts of 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.

\paragraph{The evolutionary algorithm}

With these ingredients, an evolutionary works as follows.

It first generates an initial population of chromosomes randomly.

Then, until the stop criterion is reached, it calculates new populations as follows.

The chromosomes of the current population are decoded, evaluated, and sorted from best to worst.

The selection strategy picks those chromosomes that are allowed to produce offspring.

The offspring is decoded and evaluated, and sorted into the current population.

The worst chromosomes are discarded, so that a new population of the same size as the old population is obtained.

There are different possible stop criteria, the simplest one being a fixed number of generations.

Another one is convergence, which stops when the best solution has not changed for a fixed number of generations.

\subsection{Criticism of Evolutionary Algorithms}

...

...

@@ -70,7 +83,7 @@ In the literature on algorithms, it is customary to provide correctness proofs f

No such proof can be given for probabilistic algorithms.

The best we can do is guarantee that populations do not get worse over time, by always keeping the best solution found so far.

Another problem with evolutionary algorithms is that their effectiveness depends on the input parameters, like population size and mutation probability.

Another problem with evolutionary algorithms is that their effectiveness depends on the input parameters, like chosen selection strategy, population size and mutation probability.

Which parameters work well can change with the problem instance, and may require some adjustments until satisfying results can be reliably produced.

End users, who are only interested in the results and not the inner workings of the algorithm should not be bothered with such technicalities.

We need further research and computer experiments with realistic scenarios to develop a parameter set that performs reasonably reliable in practice for our problem.