./randtest: Random Number Test
Using the RAN2 random number generator (RNG).
Using specified random seed 555
Library thinks the random seed is 555

running the chi-square test for randomness of the RNG...
 (there will be some failures of the chi-square test)
  integer test (1000):  chi-squared should be within 20 of 100
    run #0	93.2	
    run #1	101.52	
    run #2	119.752	
    run #3	103.175	
    run #4	130.718	***failed***
    run #5	118.672	
    run #6	93.8672	
    run #7	101.787	
    run #8	132.579	***failed***
    run #9	114.258	
  integer test (10000):  chi-squared should be within 20 of 100
    run #0	88.2	
    run #1	87.82	
    run #2	77.3	***failed***
    run #3	81.22	
    run #4	94.18	
    run #5	113.46	
    run #6	102.72	
    run #7	94.24	
    run #8	71.24	***failed***
    run #9	117.86	
  integer test (10000):  chi-squared should be within 20 of 100
    run #0	109.12	
    run #1	113.06	
    run #2	133.26	***failed***
    run #3	99.82	
    run #4	109.18	
    run #5	90.52	
    run #6	100.58	
    run #7	101.34	
    run #8	93.74	
    run #9	89.38	
  integer test (100000):  chi-squared should be within 20 of 100
    run #0	119.2	
    run #1	99.978	
    run #2	110.9	
    run #3	103.678	
    run #4	82.366	
    run #5	102.464	
    run #6	91.632	
    run #7	86.788	
    run #8	109.812	
    run #9	86.968	
Example 1

This program tries to fill a 2DBinaryStringGenome with
alternating 1s and 0s using a SimpleGA

The GA found:
0101010101
1010101010
0101010101
1010101010
0101010101

Example 2

This program generates a sequence of random numbers then uses
a simple GA and binary-to-decimal genome to match the
sequence.

input sequence:
  0.265886    54.6261          3   -2.85019    69151.2 0.00150462          2 
random values in the genome:
  0.980392    18.4314          3   -4.34118    23997.6 0.00276471   0.494118 
the ga generated:
  0.278431    54.5098          3   -2.87059    2450.59 0.00163529    2.00392 

best of generation data are in 'bog.dat'
Example 3

This program reads in a data file then runs a simple GA whose
objective function tries to match the pattern of bits that are
in the data file.

input pattern:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

best of generation data are in 'bog.dat'
the ga generated:
  *       *                     
          * * * * *             
      * *   *         * *       
    *                 *   *     
    *     * * *   * *     *     
  *               * *   *   *   
  *               *         *   
  * *           *     * *     * 
  *       *           *     *   
    *         *       *   *   * 
*         * * * * * *   * *     
      * *                       
          * * * * * * *         
              *     *           

Example 4

This program tries to fill a 3DBinaryStringGenome with
alternating 1s and 0s using a SteadyStateGA

the ga generated:
0101010101
1010101010
0101010101
1010101010
0101010101

1010101010
0101010101
1010101010
0101010101
1010101010

0101010101
1010101010
0101010101
1010101010
0101010101


best of generation data are in 'bog.dat'
Example 5

This program shows how to use a composite genome.  It reads
a matrix from a data file and a set of values to be matched in
a binary-to-decimal genome then uses a steady-state GA to
match the pattern and value set.

input pattern:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

input sequence:
10.2 32.5 66 99.234 0.003 210 

the ga generated:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

8.3767 32.4286 55.2418 101.924 0.00209011 150.615 

Example 6

This example uses a SteadyState GA and Tree<int> genome.  It
tries to maximize the size of the tree genomes that it
contains.  The genomes contain ints in its nodes.

8653 nodes, 120 levels deep.
best of generation data are in 'bog.dat'
Example 7

This program reads in a data file then runs a steady-state GA 
whose objective function tries to match the pattern of bits that
are in the data file.

input pattern:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

the ga generated:
        *             *         
          * * * * *             
      * *           * * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
*   *     * * * * * * *   *     
      * *             * *       
          * * * * * *     *     
                                

best of generation data are in 'bog.dat'
Example 8

This program runs a steady-state GA whose objective function
tries to maximize the size of the list and tries to make lists
that contain the number 101 in the nodes.  The lists contain
ints in the nodes.

the list contains 0 nodes
the ga used the parameters:
minimaxi	1
number_of_generations	50
generations_to_convergence	20
convergence_percentage	0.99
crossover_probability	0.6
mutation_probability	0.05
population_size	40
score_frequency	1
flush_frequency	10
record_diversity	0
score_filename	bog.dat
select_scores	7
number_of_best	1
replacement_percentage	0.5
replacement_number	20

Example 9

This program finds the maximum value in the function
  y = - x1^2 - x2^2
with the constraints
     -5 <= x1 <= 5
     -5 <= x2 <= 5


the ga found an optimum at the point (7.62951e-05, 0.00328069)

best of generation data are in 'bog.dat'
Example 10

This program uses sharing to do speciation.  The objective
function has more than one optimum, so different genomes
may have equally high scores.  Speciation keeps the population
from clustering at one optimum.
  Both gene-wise and phenotype-wise distance functions are used.
  Populations from all three runs are written to the files 
pop.nospec.dat, pop.genespec.dat and pop.phenespec.dat.  The
function is written to the file sinusoid.dat

running with no speciation (fitness proportionate scaling)...
the ga found an optimum at the point 3.2549
running the ga with speciation (sharing using bit-wise)...
the ga found an optimum at the point 2.2549
running the ga with speciation (sharing using phenotype-wise)...
the ga found an optimum at the point 4.2549
dumping the function to file...
Example 11

This program illustrates the use of order-based lists.  The
list in this problem contains 25 numbers, 0 to 24.  It tries
to put them in descending order from 24 to 0.

the ga generated the following list (objective score is 24):
24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
best of generation data are in 'bog.dat'
minimaxi	1
number_of_generations	1000
generations_to_convergence	20
convergence_percentage	0.99
crossover_probability	0.6
mutation_probability	0.01
population_size	30
score_frequency	10
flush_frequency	10
record_diversity	0
score_filename	bog.dat
select_scores	2
number_of_best	1
replacement_percentage	0.5
replacement_number	15

Example 12

This program illustrates the use of order-based strings.  The
string in this problem contains 26 letters, a to z.  It tries
to put them in alphabetic order.

the ga generated the following string (objective score is 26):
abcdefghijklmnopqrstuvwxyz
GAStringGenome
Example 13

This program runs a GA-within-GA.  The outer level GA tries to
match the pattern read in from a file.  The inner level GA is
run only when the outer GA reaches a threshhold objective score
then it tries to match a sequence of numbers that were generated
randomly at the beginning of the program's execution.

You might have to run the primary GA for more than 5000
generations to get a score high enough to kick in the secondary
genetic algorithm.  Use the ngen option to do this on the
command line.

input pattern:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

input sequence:
  0.265886    54.6261          3   -2.85019    69151.2 0.00150462          2 
the ga generated:
  *   *       *     *       * * 
        * *     * *           * 
      *               *         
    * * * *             * *     
  * * * *   *     *       *     
  *       * * * * *         *   
          *   *   *     *   *   
        *   *     *   *   * * * 
  *       *     *       * * * * 
* * *   *     *   * *   * *   * 
*   * *   * *     * * *   *     
    * * *                 *   * 
    * *       *   * *     *     
    * *           * *           

  0.411765    12.9412          3   -2.16471    74143.5 0.00749412    6.17647 

best of generation data are in 'bog.dat'
Example 14

This example shows how to create a genome that contains
a list of lists.  We create a composite genome that has
lists in it.  Each list has some nodes, only one of which
contains the number 0.  The objective is to move the node with
number 0 in it to the nth position where n is the number of the
list within the composite genome.

a randomly-generated set of paths:
list 0:	28 20 21 22 25 24 0 26 23 27 
list 1:	22 20 23 21 0 24 25 26 28 27 
list 2:	20 23 21 28 27 24 22 26 0 25 
list 3:	0 20 21 22 23 24 27 26 25 28 
list 4:	0 28 21 22 23 24 27 26 20 25 
list 5:	28 27 21 26 23 24 25 22 20 0 

the ga generated:
list 0:	0 26 24 22 25 23 27 28 21 20 
list 1:	24 0 20 26 23 22 25 27 21 28 
list 2:	21 26 0 22 23 20 25 27 28 24 
list 3:	24 21 22 0 23 27 25 20 26 28 
list 4:	24 26 23 21 0 20 22 28 27 25 
list 5:	20 26 21 25 23 0 24 22 27 28 

Example 15

This program generates a sequence of random numbers then uses
a simple GA and binary-to-decimal genome to match the
sequence.  It uses the convergence of the best-of-generation
as the criterion for when to stop.

input sequence:
  0.265886    54.6261          3   -2.85019    69151.2 0.00150462          2 
random values in the genome:
  0.419608     85.098          3   -4.90588       6760 0.00834118    5.92941 
the ga generated:
  0.247059    49.8039          3   -2.74118    60823.5 0.00156471    2.00392 

Example 16

This example uses a SteadyState GA and Tree<int> genome.  It
tries to maximize the size of the tree genomes that it
contains.  The genomes contain points in its nodes.  Two
different runs are made:  first with the swap subtree mutator,
second with the destructive mutator.

initializing...evolving for 10 generations.............
the ga generated a tree with 37 nodes, 9 levels deep.

initializing...evolving for 10 generations.............
the ga generated a tree with 35 nodes, 12 levels deep.
Example 17

This program illustrates the use of a 2DArrayGenome with
three alleles.  It tries to fill a 2D array with alternating
0s and 1s, and -1s at the corners.  You will have to run it
for something like 10000 generations to get the perfect score.

evolving...........................................................................................................................................................................................................

the ga generated:
 -1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 -1
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
 -1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 -1

Example 18

This program is designed to compare the GA types.  You can
specify steady-state, incremental, or simple GA and tweak any
of the parameters for each of these GA types.  The objective
function tries to match a pattern read in from a file.

input pattern:
                                
          * * * * * *           
      * *             * *       
    *                     *     
    *     * *     * *     *     
  *       * *     * *       *   
  *                         *   
  *                         *   
  *                         *   
    *   *             *   *     
    *     * * * * * *     *     
      * *             * *       
          * * * * * *           
                                

the ga generated:
      *                         
          *   * * * *           
        *             *         
    *     * *             *     
    *   * * *     * *     *   * 
  *       * *     * *       *   
  *         *               *   
  *                         *   
  *                     *   *   
    *   *                 *     
    *     * * * * * *     *     
      * *             * *       
*         * * * * *             
                                

the statistics for the run are:
400	# current generation
0.990521	# current convergence
12000	# number of selections since initialization
10776	# number of crossovers since initialization
2707	# number of mutations since initialization
12000	# number of replacements since initialization
11051	# number of genome evaluations since initialization
201	# number of population evaluations since initialization
211	# maximum score since initialization
88	# minimum score since initialization
182.65	# average of all scores ('on-line' performance)
187.255	# average of maximum scores ('off-line' performance)
178.162	# average of minimum scores ('off-line' performance)

112.9	# mean score in initial population
127	# maximum score in initial population
88	# minimum score in initial population
7.63996	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

207.2	# mean score in current population
211	# maximum score in current population
203	# minimum score in current population
2.49689	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
10	# how often to record scores
50	# how often to write scores to file
bog.dat	# name of file to which scores are written

the objective function was called 11051 times

best of generation data are in 'bog.dat'
Example 19

This program runs the DeJong test problems.

running DeJong function number 1 ...
the ga generated:
5.11 -5.12 -5.12 

the statistics for the run are:
400	# current generation
1	# current convergence
3200	# number of selections since initialization
2481	# number of crossovers since initialization
152	# number of mutations since initialization
2800	# number of replacements since initialization
2524	# number of genome evaluations since initialization
401	# number of population evaluations since initialization
78.5409	# maximum score since initialization
0.342654	# minimum score since initialization
77.4228	# average of all scores ('on-line' performance)
78.006	# average of maximum scores ('off-line' performance)
77.0203	# average of minimum scores ('off-line' performance)

25.943	# mean score in initial population
76.0281	# maximum score in initial population
0.342654	# minimum score in initial population
14.6341	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

78.5409	# mean score in current population
78.5409	# maximum score in current population
78.5409	# minimum score in current population
7.75982e-06	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
10	# how often to record scores
50	# how often to write scores to file
bog.dat	# name of file to which scores are written

best-of-generation data are in 'bog.dat'
Example 20

Running Holland's Royal Road test problem with a genome that is
240 bits long (16 blocks).  The parameters are as follows: 

	block size: 8
	  gap size: 7
	        m*: 4
	        u*: 1
	         u: 0.3
	         v: 0.02


the ga generated:
110010100110101111111110100011010111000001101111111110010111011000111001011110001010011100111111111000101111111110110001100110011010111011110000011011011000110101000111111110111000101000111111001111111110011001001110010111101111111110101000
the highest level achieved was 1

the statistics for the run are:
10000	# current generation
1	# current convergence
2560000	# number of selections since initialization
2305756	# number of crossovers since initialization
613723	# number of mutations since initialization
2560000	# number of replacements since initialization
2360486	# number of genome evaluations since initialization
10001	# number of population evaluations since initialization
4.52	# maximum score since initialization
-0.06	# minimum score since initialization
4.51608	# average of all scores ('on-line' performance)
4.51795	# average of maximum scores ('off-line' performance)
4.51532	# average of minimum scores ('off-line' performance)

0.541289	# mean score in initial population
1.9	# maximum score in initial population
-0.06	# minimum score in initial population
0.303989	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

4.52001	# mean score in current population
4.52	# maximum score in current population
4.52	# minimum score in current population
1.38418e-05	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
20	# how often to record scores
100	# how often to write scores to file
bog.dat	# name of file to which scores are written

the parameters for the run are:
minimaxi	1
number_of_generations	10000
generations_to_convergence	20
convergence_percentage	0.99
crossover_probability	0.9
mutation_probability	0.001
population_size	512
score_frequency	20
flush_frequency	100
record_diversity	0
score_filename	bog.dat
select_scores	2
number_of_best	1
replacement_percentage	0.5
replacement_number	256
Example 21

This example shows various uses of the allele set object
in combination with the real number genome.


running ga number 1 (alternate allele(0) and allele(3))...
the ga generated:
-10 10 -10 10 -10 10 -10 10 

running ga number 2 (continuous descending order)...
the ga generated:
0.722113 0.690404 0.475627 0.443254 0.413628 0.307699 0.286382 0.0776234 

running ga number 2a (descending order, EXCLUSIVE)...
the ga generated:
0.877096 0.635132 0.0272497 0.92776 0.512969 0.228361 0.17755 0.021867 

running ga number 3 (discretized ascending order)...
the ga generated:
2.5 3 4 4.5 6 7 9 9.5 

running ga number 4 (maximize each gene)...
the ga generated:
10 100 -5 -1e-04 11000 
Example 22

This example shows how to derive your own genetic algorithm
class.  Here we use a custom, single-child crossover and a
modified replacement strategy with overlapping populations.

initializing...
evolving..........

dumping the function to file...
initial population is in 'pop.initial.dat'
final population is in 'pop.final.dat'
the function is in 'sinusoid.dat'
parameters were:

minimaxi	1
number_of_generations	500
generations_to_convergence	20
convergence_percentage	0.99
crossover_probability	1
mutation_probability	0.01
population_size	100
score_frequency	10
flush_frequency	100
record_diversity	0
score_filename	bog.dat
select_scores	255
number_of_best	1
replacement_percentage	0.25
replacement_number	25

Example 23

This program tries to maximize or minimize, depending on the
command line argument that you give it.  Use the command-line
argument 'mm -1' to minimize (the default for this example), or
'mm 1' to maximize.  The objective function is a simple 
sinusoidal.

printing initial population to file...
printing final population to file...
printing function to file...
Example 24

This example illustrates how to derive your own genetic
algorithm.  This genetic algorithm does restricted mating and
uses a selector slightly more finicky than a uniform random
selector.  The objective function is a simple sinusoidal.

printing population to file 'population.dat'...
printing function to file 'sinusoid.dat'...
Example 25

This example uses a genetic algorithm with multiple populations.

initializing...evolving.......................................................................................................
best individual is: 11111111111111111111111111111111

100	# current generation
1	# current convergence
13000	# number of selections since initialization
12500	# number of crossovers since initialization
12024	# number of mutations since initialization
12500	# number of replacements since initialization
12650	# number of genome evaluations since initialization
1005	# number of population evaluations since initialization
1	# maximum score since initialization
0	# minimum score since initialization
0.163021	# average of all scores ('on-line' performance)
0.984688	# average of maximum scores ('off-line' performance)
0	# average of minimum scores ('off-line' performance)

0.1125	# mean score in initial population
0.6875	# maximum score in initial population
0	# minimum score in initial population
0.255937	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

0.166667	# mean score in current population
1	# maximum score in current population
0	# minimum score in current population
0.379049	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
1	# how often to record scores
0	# how often to write scores to file
generations.dat	# name of file to which scores are written

Example 26

The Travelling Salesman Problem (TSP) demo program.

initializing...evolving...10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 the shortest path found is 22.6503
this is the distance from the sequence
5 6 10 14 18 19 15 11 7 3 2 1 20 0 4 8 12 16 17 13 9 

1000	# current generation
1	# current convergence
100000	# number of selections since initialization
100000	# number of crossovers since initialization
10014	# number of mutations since initialization
100000	# number of replacements since initialization
100100	# number of genome evaluations since initialization
1001	# number of population evaluations since initialization
64.3227	# maximum score since initialization
22.6503	# minimum score since initialization
23.1626	# average of all scores ('on-line' performance)
23.2062	# average of maximum scores ('off-line' performance)
23.0545	# average of minimum scores ('off-line' performance)

54.0745	# mean score in initial population
64.3227	# maximum score in initial population
44.4397	# minimum score in initial population
4.07012	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

22.6503	# mean score in current population
22.6503	# maximum score in current population
22.6503	# minimum score in current population
2.66312e-06	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
100	# how often to record scores
0	# how often to write scores to file
generations.dat	# name of file to which scores are written

Example 27

Deterministic crowding demonstration program.

In addition to the standard GAlib command-line arguments,
you can specify one of the four following functions:
   0 - modified Himmelblau's function
   1 - Foxholes (25)
   2 - Schwefel's nasty (1 glob. Max bei (420.96/420.96)
   3 - Mexican Hat (optimum at 0,0)

best individual is 3.00116 1.99599 

100	# current generation
0.999999	# current convergence
10000	# number of selections since initialization
5000	# number of crossovers since initialization
245	# number of mutations since initialization
953	# number of replacements since initialization
5100	# number of genome evaluations since initialization
101	# number of population evaluations since initialization
10	# maximum score since initialization
5.06768	# minimum score since initialization
9.90808	# average of all scores ('on-line' performance)
9.99984	# average of maximum scores ('off-line' performance)
9.35657	# average of minimum scores ('off-line' performance)

8.84823	# mean score in initial population
9.99917	# maximum score in initial population
5.06768	# minimum score in initial population
1.05433	# standard deviation of initial population
-1	# diversity of initial population (0=identical,-1=unset)

9.99484	# mean score in current population
10	# maximum score in current population
9.96593	# minimum score in current population
0.00755568	# standard deviation of current population
-1	# diversity of current population (0=identical,-1=unset)

20	# how far back to look for convergence
100	# how often to record scores
0	# how often to write scores to file
generations.dat	# name of file to which scores are written

