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 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 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