Evolution Framework

home

GraphMeister application

source code

Being a genetic algorithm, GraphMeister creates a population of random
path tuples in G which start and end in k, and then evolves new pathes
from the existing ones. The number of parent pathes needed to produce a
child path is 2.

v w l c

(whitespace between v, w, and l; between l and c no whitespace is needed) where v and w are vertex numbers, l is a floating-point number (the length (weight) of the edge(s)), and c is the optional character '!'. This line means: draw an edge of length l from v to w; if c ='!', that's all (a one-way edge), if c is missing, draw an edge of the same length l from w to v too (these 2 edges may be regarded as a 2-way edge). Here is an example. (See what it is? It is the triangle bounded by Limmatstr, Langstr and Röntgenstr in Kreis 5 of Zurich, Switzerland. One-way streets are respected. The base vertex is at the crossing of Röntgenstr and Heinrichstr, where I used to live in the squatted house Heinrichstr 137.)

If the graph described by this file is disconnected, GraphMeister will detect that and complain. The return pathes will be written into a file in the same directory as the graph file, the name of which is equal to the name of the graph file, with ".rp" appended.

By the way, the file I/O is the reason that GraphMeister cannot be an
applet.

where you can enter the pool size, i.e. the number of individuals of the population, the "number of trucks", i.e. t, and the maximal path length. Press "OK", and GraphMeister will beep at you if entered nonsense. Otherwise, the pool will be created. You can cancel the pool creation by hitting "Cancel" in the main window:

A future version will provide some information on the progress of the
pool creation.

where you have to enter the number of individuals to be replaced in each new generation, the mutation rate, the inertia, and the number of generations to breed. Cf the Evolution Framework manual for the definition of these terms.

Hitting "OK" will cause GraphMeister to beep at you if you entered nonsense,
otherwise evolution will start, and the main window informs you about the
progress and the current best individual.

The left-hand panel of the horizontally split pane is the list of individuals:
each line corresponds to an individual, the 1st number in the line is the
index (the smaller, the better), the 2nd the number of vertices passed
by this individual, the 3rd the maximum of the lengthes of the pathes of
this individual (remember that an individual is a t-tuple of pathes), and
the last number in this row is the value of the fitness function for this
individual. In the right-hand panel you see the sequence of vertices passed
by the pathes (trucks) that make up the individual.

- Error handling. At the moment, the only error message you get is something like "EvolutionException caught" in the status bar of the main window.
- More comprehensive source code commentation