This distribution has 4 files: this README file, the graphs.blt
script, a patch to geppetto 1.2 to get it to print out raw fitness
summaries, and an example log file in case you want to test the
program and can't wait for a geppetto run to finish.

The file graphs.blt is a script which will graph the info in geppetto
log files (although it should be easy to change to any log files).  It
currently graphs (for each generation) raw, standardized and
normalized fitness; most, average, and least hits and hits of most
fit; structural complexity of the most fit of the generation
(including total number of nodes, number of terminals and number of
functions), average structural complexity; and the depth of the
deepest, shallowest, average depth, and depth of the fittest of
generation.  All graphs can be turned on or off in small groups.

It also tells you info about the run like number of generations, type
of selection, which generation the best of run so far is on and it's
fitnesses, etc.  Finally, if "current selection" is activated and you
click on a point in one of the graphs, you'll get various information
about it.

In general: the fittest of generation has small dashes, the average is
a solid line, and the worst has long dashes.

It accesses the log file every 10 seconds to see if it's changed
(although it knows when the run has finished and stops checking after
that).



To install:

First, you'll need Tcl 7.3 and tk 3.6 from sprite.berkeley.edu, in the
directory tcl, the files tcl7.3.tar.Z and tk3.6.tar.Z.  Unpack and
install tcl first, then tk.  This creates an executable called "wish".
Next, you'll need blt from harbor.ecn.purdue.edu, in the directory
pub/tcl/extensions, the file BLT-1.7.tar.gz.  Unpack and install it;
it will create an execuatble called "blt_wish".  At this point you can
toss the whole distribution except the one executable "blt_wish"
(unless you want to learn the wonderful world of tcl/tk, that is :-) ).

Change the first line of graphs.blt to hold the pathname of the
executable, then your off!  Try:

graphs.blt log

and after a few seconds a window should appear with a graph of raw
fitness versus generation, along with some other data, for the first
20 generations of a 50 generation run.

Geppetto doesn't put raw fitness into the generation summaries, so my
program can't plot it unless you make a small patch.  The file "patch"
is a diff of lib/population.c that tells what lines to change.



It should be pretty easy to hack up, especially to change input
format.  The parsing of every input file is done independently, in the
routine "processLine", in a big switch statement.  It compares each
input line against a list of formats, with "*" standing for "any
sequence of characters".  Then we get the info out of it with the
"scan" command, which acts like scanf from C.



Send your bug reports, wish list of improvements, improved code,
praise and offers of marriage to:

Martin C. Martin
The Robotics Institute
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh PA 15213
mcm@cs.cmu.edu
