Everything below the line is the report generated by running the examples/tsp.rb file.
It compares the permutation crossovers and mutators on how well they perform for a travelling salesperson problem.
The stats shown are the minimum/maximum/average/standard deviation values of the fitness of the best individual at the end of a run.
(The negative numbers appear because the fitness values of this problem are negative, they are -(tour length), so higher fitness = less negative = shorter tour.)

Information

Version Info
Ruby Install Nameruby1.9
Ruby Version1.9.0
Charlie Version0.7.0
Benchmark Info
Genotype classTSP
Population size20
Number of generations per run400
Number of tests 75
Tests repeated 8 times
Number of runs 600
Total number of generations 240000
Total time3065.13 seconds
Best Solution Info
Fitness-49.4142135623731
Solution

Stats for all

minmaxavgstddevtime
All -106.09945 -49.41421 -64.97019 14.64138 5.10853

Stats for selection

selectionminmaxavgstddevtime
TruncationSelection(1) -70.29089 -49.41421 -54.89465 4.85560 4.73426
TournamentSelection(4,nil) -74.65633 -50.24264 -57.49742 6.10241 5.34921
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) -106.09945 -60.27113 -82.51849 10.81629 5.24211

Stats for crossover

crossoverminmaxavgstddevtime
PCross(0.01,EdgeRecombinationCrossover,NullCrossover) -87.87504 -49.41421 -61.18256 9.73620 1.04294
NullCrossover -100.25851 -49.41421 -61.97633 10.84589 0.96349
PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) -104.27663 -49.41421 -66.28876 16.08793 6.37321
EdgeRecombinationCrossover -106.09945 -50.24264 -66.54002 17.76890 16.08622
PermutationCrossover -103.29070 -49.41421 -68.86325 15.56277 1.07676

Stats for mutation

mutationminmaxavgstddevtime
PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -89.43852 -49.41421 -60.51521 13.05329 5.09944
PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -95.40273 -49.41421 -61.43875 13.56565 5.13533
InversionMutator -104.27663 -50.24264 -62.73381 14.50125 5.09606
InsertionMutator -100.52547 -51.07107 -67.00697 14.28351 5.11576
TranspositionMutator -106.09945 -54.89292 -73.15620 13.95175 5.09604

Detailed Stats

selectioncrossovermutationminmaxavgstddevtime
TruncationSelection(1) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -52.30714 -49.41421 -50.60426 0.91156 0.95208
TruncationSelection(1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -51.07107 -50.24264 -50.76041 0.40106 0.98964
TruncationSelection(1) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -52.72792 -50.24264 -51.22558 0.87691 0.93372
TournamentSelection(4,nil) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -51.89949 -50.24264 -51.24784 0.66376 16.54497
TruncationSelection(1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -53.13556 -49.41421 -51.58719 1.10880 5.91365
TournamentSelection(4,nil) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -54.54978 -50.24264 -51.66041 1.33665 16.52618
TruncationSelection(1) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -52.72792 -50.24264 -51.79430 0.84662 1.01287
TruncationSelection(1) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -53.96399 -50.24264 -51.81492 1.18131 14.96399
TruncationSelection(1) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -52.72792 -51.07107 -51.84690 0.66853 15.06075
TruncationSelection(1) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -53.55635 -49.41421 -51.95045 1.28326 1.02286
TruncationSelection(1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -53.55635 -49.41421 -52.00141 1.21990 1.07561
TournamentSelection(4,nil) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -54.14214 -51.07107 -52.04594 1.02153 1.00213
TruncationSelection(1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -53.55635 -50.24264 -52.05400 1.24084 5.93632
TournamentSelection(4,nil) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -54.14214 -51.07107 -52.17012 1.20090 1.10170
TruncationSelection(1) EdgeRecombinationCrossover InversionMutator -52.72792 -51.07107 -52.21016 0.57656 14.81719
TournamentSelection(4,nil) EdgeRecombinationCrossover InversionMutator -53.96399 -51.07107 -52.25141 0.80717 16.71523
TruncationSelection(1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InversionMutator -53.96399 -50.24264 -52.25947 1.21415 5.85903
TruncationSelection(1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InversionMutator -54.79242 -50.24264 -52.31207 1.35609 0.96660
TournamentSelection(4,nil) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -54.54978 -51.07107 -52.35496 1.11756 1.09146
TruncationSelection(1) NullCrossover InversionMutator -54.79242 -50.24264 -52.41398 1.33643 0.91202
TournamentSelection(4,nil) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -54.54978 -51.07107 -52.53980 1.16820 1.01109
TruncationSelection(1) PermutationCrossover InversionMutator -55.21320 -50.24264 -52.57177 1.37347 0.99686
TournamentSelection(4,nil) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -55.37820 -50.24264 -52.95237 1.49725 6.79277
TournamentSelection(4,nil) NullCrossover InversionMutator -54.54978 -52.48528 -53.49076 0.64183 0.98048
TournamentSelection(4,nil) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InversionMutator -56.37163 -51.89949 -53.61494 1.35364 1.06751
TournamentSelection(4,nil) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -55.79899 -50.82843 -53.97299 1.36485 6.72614
TruncationSelection(1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InsertionMutator -58.43613 -53.30056 -54.61828 1.77768 5.81680
TruncationSelection(1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InsertionMutator -58.20663 -51.07107 -54.69342 2.01822 0.95630
TournamentSelection(4,nil) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -59.03506 -51.07107 -54.91139 2.75003 1.14467
TournamentSelection(4,nil) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InversionMutator -57.13556 -52.72792 -55.47655 1.38673 6.84813
TruncationSelection(1) NullCrossover InsertionMutator -58.95742 -53.96399 -55.70100 1.90482 0.93387
TruncationSelection(1) EdgeRecombinationCrossover InsertionMutator -60.24869 -52.48528 -56.21957 2.36032 14.94895
TournamentSelection(4,nil) EdgeRecombinationCrossover InsertionMutator -60.43613 -54.12899 -56.79226 2.42681 16.89561
TournamentSelection(4,nil) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InsertionMutator -61.29127 -54.72792 -56.87826 2.25115 6.95990
TruncationSelection(1) PermutationCrossover InsertionMutator -61.57665 -54.79242 -57.20620 2.05316 0.98585
TournamentSelection(4,nil) EdgeRecombinationCrossover TranspositionMutator -59.54320 -56.61427 -57.93886 0.92769 17.00705
TournamentSelection(4,nil) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -63.67219 -54.72792 -58.35955 2.78776 1.15344
TournamentSelection(4,nil) NullCrossover InsertionMutator -66.47818 -57.42955 -60.63537 3.39796 0.98454
TournamentSelection(4,nil) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InsertionMutator -65.80187 -54.54978 -61.22398 3.95878 1.06662
TournamentSelection(4,nil) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) TranspositionMutator -65.08641 -54.89292 -61.59254 2.79083 6.82873
TruncationSelection(1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) TranspositionMutator -67.15821 -58.04590 -62.97541 3.07897 5.84013
TruncationSelection(1) NullCrossover TranspositionMutator -65.91552 -60.09298 -63.22374 1.68596 0.86923
TruncationSelection(1) EdgeRecombinationCrossover TranspositionMutator -66.61427 -59.37820 -63.26242 2.45802 14.71506
TruncationSelection(1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) TranspositionMutator -70.29089 -57.36506 -63.46912 3.82955 0.92202
TruncationSelection(1) PermutationCrossover TranspositionMutator -69.75699 -59.08641 -63.59028 3.27770 0.95505
TournamentSelection(4,nil) PermutationCrossover InsertionMutator -69.97072 -59.60770 -64.14886 3.51963 1.11157
TournamentSelection(4,nil) PermutationCrossover InversionMutator -68.55197 -61.84104 -64.90526 2.01579 1.12217
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InversionMutator -70.85911 -60.27113 -64.91929 3.07749 1.07131
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) NullCrossover InversionMutator -76.96079 -61.77655 -66.55074 4.31777 0.98118
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -73.61549 -60.45589 -66.88755 3.50167 1.10229
TournamentSelection(4,nil) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) TranspositionMutator -71.33193 -62.83447 -66.92619 2.73421 1.02544
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -75.21828 -63.15090 -67.38138 3.49076 1.00662
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -72.82518 -65.43340 -68.34626 2.64042 1.11205
TournamentSelection(4,nil) PermutationCrossover TranspositionMutator -72.13301 -62.25798 -69.18239 3.21692 1.07691
TournamentSelection(4,nil) NullCrossover TranspositionMutator -74.65633 -65.93225 -70.16245 2.50411 0.94589
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) NullCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -74.22624 -63.91483 -70.46518 2.86931 1.01846
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) InsertionMutator -79.19028 -71.56667 -75.71230 2.37733 1.06194
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) NullCrossover InsertionMutator -87.09602 -67.97003 -78.63100 6.00700 0.97945
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.01,EdgeRecombinationCrossover,NullCrossover) TranspositionMutator -87.87504 -75.96347 -82.34647 3.52806 1.03367
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -87.20898 -79.72979 -82.87258 2.69193 1.13924
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -87.17956 -79.04826 -83.84643 2.31572 6.36178
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -93.31691 -78.97345 -83.98026 4.07404 6.48629
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) NullCrossover TranspositionMutator -100.25851 -78.52298 -84.57383 6.54850 0.94158
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -91.46754 -80.68282 -85.10818 4.12671 16.72167
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) EdgeRecombinationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, NullMutator=>0.2}) -89.43852 -80.42415 -85.78717 2.75180 16.46962
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PermutationCrossover PMutateN({InversionMutator=>0.4, InsertionMutator=>0.4, RotationMutator=>0.2}) -95.40273 -75.09688 -86.77959 6.83885 1.14756
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PermutationCrossover InsertionMutator -96.12691 -84.44038 -88.70466 4.28990 1.10992
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) EdgeRecombinationCrossover InversionMutator -97.34419 -84.32280 -88.85287 3.73374 16.56028
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PermutationCrossover InversionMutator -96.56141 -82.32755 -89.28991 5.19156 1.11565
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InsertionMutator -93.07450 -83.62849 -89.34411 3.26897 6.38855
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) InversionMutator -104.27663 -81.25216 -89.88794 7.09025 6.42722
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PCross(0.5,EdgeRecombinationCrossover,PermutationCrossover) TranspositionMutator -102.72231 -86.47006 -92.90567 5.06228 6.41269
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) EdgeRecombinationCrossover InsertionMutator -100.52547 -79.43848 -94.59522 6.48078 16.53656
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) PermutationCrossover TranspositionMutator -103.29070 -90.39370 -96.68161 4.55684 1.05686
Elitism(ScaledRouletteSelection[1,2,3,4,...],1) EdgeRecombinationCrossover TranspositionMutator -106.09945 -92.79563 -98.51203 5.09080 16.81027