charlie 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. data/History.txt +14 -0
  2. data/Manifest.txt +13 -22
  3. data/README.txt +3 -3
  4. data/Rakefile +1 -1
  5. data/TODO.txt +11 -21
  6. data/data/BENCHMARK +25 -23
  7. data/data/CROSSOVER +5 -1
  8. data/data/GENOTYPE +6 -6
  9. data/data/MUTATION +19 -7
  10. data/data/SELECTION +2 -1
  11. data/data/template.html +2 -1
  12. data/examples/EXAMPLES_README.txt +70 -0
  13. data/examples/bitstring.rb +72 -0
  14. data/examples/{gladiatorial_sunburn.rb → coevolution.rb} +80 -22
  15. data/examples/function_optimization.rb +113 -0
  16. data/examples/output/{royalroad1_report.html → bitstring_royalroad.html} +822 -655
  17. data/examples/output/function_optimization_sombrero.html +2289 -0
  18. data/examples/output/function_optimization_twopeak.csv +210 -0
  19. data/examples/output/function_optimization_twopeak.html +2477 -0
  20. data/examples/output/string_weasel.html +513 -0
  21. data/examples/output/tsp.html +633 -882
  22. data/examples/{money.rb → permutation.rb} +20 -8
  23. data/examples/string.rb +98 -0
  24. data/examples/tree.rb +37 -12
  25. data/examples/tsp.rb +34 -22
  26. data/lib/charlie.rb +5 -1
  27. data/lib/charlie/1.9fixes.rb +46 -0
  28. data/lib/charlie/crossover.rb +31 -14
  29. data/lib/charlie/etc/minireport.rb +5 -4
  30. data/lib/charlie/etc/monkey.rb +11 -8
  31. data/lib/charlie/gabenchmark.rb +230 -0
  32. data/lib/charlie/genotype.rb +4 -0
  33. data/lib/charlie/list/list_crossover.rb +25 -5
  34. data/lib/charlie/mutate.rb +34 -7
  35. data/lib/charlie/permutation/permutation.rb +34 -6
  36. data/lib/charlie/population.rb +12 -122
  37. data/lib/charlie/selection.rb +1 -0
  38. data/lib/charlie/tree/tree.rb +179 -17
  39. data/test/t_common.rb +1 -1
  40. data/test/test_benchmark.rb +19 -5
  41. data/test/test_cross.rb +23 -1
  42. data/test/test_evolve.rb +14 -1
  43. data/test/test_mutator.rb +28 -2
  44. data/test/test_permutation.rb +23 -1
  45. data/test/test_sel.rb +3 -1
  46. data/test/test_tree.rb +63 -1
  47. metadata +17 -25
  48. data/examples/bit.rb +0 -10
  49. data/examples/function_opt_2peak.rb +0 -24
  50. data/examples/function_opt_sombero.rb +0 -38
  51. data/examples/gladiatorial_simple.rb +0 -17
  52. data/examples/gridwalk.rb +0 -29
  53. data/examples/output/flattened_sombero.html +0 -6400
  54. data/examples/output/flattened_sombero2_.html +0 -3576
  55. data/examples/output/fopt1_dblopt.html +0 -2160
  56. data/examples/output/hill10.html +0 -5816
  57. data/examples/output/hill2.csv +0 -24
  58. data/examples/output/hill2.html +0 -384
  59. data/examples/output/royalroad2_report.html +0 -1076
  60. data/examples/output/royalroadquick_report.html +0 -504
  61. data/examples/output/weasel1_report.html +0 -1076
  62. data/examples/output/weasel2_report.html +0 -240
  63. data/examples/royalroad.rb +0 -26
  64. data/examples/royalroad2.rb +0 -18
  65. data/examples/simple_climb_hill2.rb +0 -47
  66. data/examples/weasel.rb +0 -36
@@ -0,0 +1,513 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
6
+ <title>GA Benchmark Report</title>
7
+ <style type='text/css'>
8
+ table{
9
+ background: #ccc;
10
+ font-family: Verdana, Helvetica, sans-serif;
11
+ font-size: small;
12
+ }
13
+ th {
14
+ background: #666;
15
+ color: white;
16
+ padding: 3px;
17
+ font-weight: bold;
18
+ }
19
+ td {
20
+ color: #333;
21
+ background: #e2e2e2;
22
+ padding: 2px 3px;
23
+ text-align: center;
24
+ }
25
+ </style>
26
+
27
+ </script>
28
+ <script type="text/javascript">
29
+
30
+ </script>
31
+ </head>
32
+ <body>
33
+ <h1>Information</h1>
34
+
35
+ <table>
36
+ <tr><th colspan=2>Version Info</th></tr>
37
+ <tr><td>Ruby Install Name</td><td>ruby1.9</td></tr>
38
+ <tr><td>Ruby Version</td><td>1.9.0</td></tr>
39
+ <tr><td>Charlie Version</td><td>0.7.0</td></tr>
40
+ <tr><th colspan=2>Benchmark Info</th></tr>
41
+ <tr><td>Genotype class</td><td>Weasel</td></tr>
42
+ <tr><td>Population size</td><td>20</td></tr>
43
+ <tr><td>Number of generations per run</td><td>100</td></tr>
44
+ <tr><td>Number of tests </td><td>36</td></tr>
45
+ <tr><td>Tests repeated </td><td>10 times</td></tr>
46
+ <tr><td>Number of runs </td><td>360</td></tr>
47
+ <tr><td>Total number of generations </td><td>36000</td></tr>
48
+ <tr><td>Total time</td><td>56.79 seconds</td></tr>
49
+ <tr><th colspan=2>Best Solution Info</th></tr>
50
+ <tr><td>Fitness</td><td>28</td></tr>
51
+ <tr><td>Solution</td><td><textarea rows=3 cols=40>"methinks it is like a weasel"</textarea></td></tr>
52
+ </table>
53
+ <h1>Stats for all</h1><table>
54
+ <tr><th></th><th>min</th><th>max</th><th>avg</th><th>stddev</th><th>time</th></tr>
55
+ <tr>
56
+ <td>All</td>
57
+ <td>10.00000</td>
58
+ <td>28.00000</td>
59
+ <td>19.15000</td>
60
+ <td>4.38048</td>
61
+ <td>0.15772</td>
62
+ </tr>
63
+ </table><h1>Stats for selection</h1><table>
64
+ <tr><th>selection</th><th>min</th><th>max</th><th>avg</th><th>stddev</th><th>time</th></tr>
65
+ <tr>
66
+ <td>TruncationSelection(1)</td>
67
+ <td>17.00000</td>
68
+ <td>28.00000</td>
69
+ <td>22.01667</td>
70
+ <td>2.58838</td>
71
+ <td>0.12067</td>
72
+ </tr>
73
+ <tr>
74
+ <td>TruncationSelection(0.2)</td>
75
+ <td>17.00000</td>
76
+ <td>26.00000</td>
77
+ <td>21.55833</td>
78
+ <td>2.26494</td>
79
+ <td>0.12660</td>
80
+ </tr>
81
+ <tr>
82
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
83
+ <td>10.00000</td>
84
+ <td>18.00000</td>
85
+ <td>13.87500</td>
86
+ <td>1.97299</td>
87
+ <td>0.22588</td>
88
+ </tr>
89
+ </table><h1>Stats for crossover</h1><table>
90
+ <tr><th>crossover</th><th>min</th><th>max</th><th>avg</th><th>stddev</th><th>time</th></tr>
91
+ <tr>
92
+ <td>UniformCrossover</td>
93
+ <td>10.00000</td>
94
+ <td>28.00000</td>
95
+ <td>20.03333</td>
96
+ <td>4.89887</td>
97
+ <td>0.16967</td>
98
+ </tr>
99
+ <tr>
100
+ <td>SinglePointCrossover</td>
101
+ <td>11.00000</td>
102
+ <td>27.00000</td>
103
+ <td>19.35833</td>
104
+ <td>4.25205</td>
105
+ <td>0.15410</td>
106
+ </tr>
107
+ <tr>
108
+ <td>NullCrossover</td>
109
+ <td>10.00000</td>
110
+ <td>27.00000</td>
111
+ <td>18.05833</td>
112
+ <td>3.67037</td>
113
+ <td>0.14937</td>
114
+ </tr>
115
+ </table><h1>Stats for mutation</h1><table>
116
+ <tr><th>mutation</th><th>min</th><th>max</th><th>avg</th><th>stddev</th><th>time</th></tr>
117
+ <tr>
118
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
119
+ <td>11.00000</td>
120
+ <td>28.00000</td>
121
+ <td>21.06667</td>
122
+ <td>4.57724</td>
123
+ <td>0.15100</td>
124
+ </tr>
125
+ <tr>
126
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
127
+ <td>11.00000</td>
128
+ <td>26.00000</td>
129
+ <td>19.96667</td>
130
+ <td>4.14849</td>
131
+ <td>0.15189</td>
132
+ </tr>
133
+ <tr>
134
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
135
+ <td>11.00000</td>
136
+ <td>24.00000</td>
137
+ <td>18.25556</td>
138
+ <td>4.04849</td>
139
+ <td>0.16056</td>
140
+ </tr>
141
+ <tr>
142
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
143
+ <td>10.00000</td>
144
+ <td>23.00000</td>
145
+ <td>17.31111</td>
146
+ <td>3.69878</td>
147
+ <td>0.16741</td>
148
+ </tr>
149
+ </table><h1>Detailed Stats</h1><table>
150
+ <tr><th>selection</th><th>crossover</th><th>mutation</th><th>min</th><th>max</th><th>avg</th><th>stddev</th><th>time</th></tr>
151
+ <tr>
152
+ <td>TruncationSelection(1)</td>
153
+ <td>UniformCrossover</td>
154
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
155
+ <td>24.00000</td>
156
+ <td>28.00000</td>
157
+ <td>25.50000</td>
158
+ <td>1.20416</td>
159
+ <td>0.12470</td>
160
+ </tr>
161
+ <tr>
162
+ <td>TruncationSelection(1)</td>
163
+ <td>SinglePointCrossover</td>
164
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
165
+ <td>22.00000</td>
166
+ <td>27.00000</td>
167
+ <td>24.90000</td>
168
+ <td>1.64012</td>
169
+ <td>0.10627</td>
170
+ </tr>
171
+ <tr>
172
+ <td>TruncationSelection(0.2)</td>
173
+ <td>UniformCrossover</td>
174
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
175
+ <td>23.00000</td>
176
+ <td>26.00000</td>
177
+ <td>24.80000</td>
178
+ <td>0.97980</td>
179
+ <td>0.13991</td>
180
+ </tr>
181
+ <tr>
182
+ <td>TruncationSelection(1)</td>
183
+ <td>UniformCrossover</td>
184
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
185
+ <td>22.00000</td>
186
+ <td>26.00000</td>
187
+ <td>24.10000</td>
188
+ <td>1.04403</td>
189
+ <td>0.13074</td>
190
+ </tr>
191
+ <tr>
192
+ <td>TruncationSelection(0.2)</td>
193
+ <td>UniformCrossover</td>
194
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
195
+ <td>20.00000</td>
196
+ <td>26.00000</td>
197
+ <td>23.90000</td>
198
+ <td>2.07123</td>
199
+ <td>0.12649</td>
200
+ </tr>
201
+ <tr>
202
+ <td>TruncationSelection(1)</td>
203
+ <td>NullCrossover</td>
204
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
205
+ <td>21.00000</td>
206
+ <td>27.00000</td>
207
+ <td>23.60000</td>
208
+ <td>1.56205</td>
209
+ <td>0.10141</td>
210
+ </tr>
211
+ <tr>
212
+ <td>TruncationSelection(0.2)</td>
213
+ <td>SinglePointCrossover</td>
214
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
215
+ <td>20.00000</td>
216
+ <td>26.00000</td>
217
+ <td>23.40000</td>
218
+ <td>1.49666</td>
219
+ <td>0.12687</td>
220
+ </tr>
221
+ <tr>
222
+ <td>TruncationSelection(1)</td>
223
+ <td>SinglePointCrossover</td>
224
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
225
+ <td>22.00000</td>
226
+ <td>25.00000</td>
227
+ <td>23.30000</td>
228
+ <td>1.10000</td>
229
+ <td>0.11225</td>
230
+ </tr>
231
+ <tr>
232
+ <td>TruncationSelection(1)</td>
233
+ <td>UniformCrossover</td>
234
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
235
+ <td>20.00000</td>
236
+ <td>24.00000</td>
237
+ <td>22.70000</td>
238
+ <td>1.18743</td>
239
+ <td>0.13683</td>
240
+ </tr>
241
+ <tr>
242
+ <td>TruncationSelection(0.2)</td>
243
+ <td>SinglePointCrossover</td>
244
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
245
+ <td>21.00000</td>
246
+ <td>25.00000</td>
247
+ <td>22.60000</td>
248
+ <td>1.42829</td>
249
+ <td>0.11422</td>
250
+ </tr>
251
+ <tr>
252
+ <td>TruncationSelection(0.2)</td>
253
+ <td>UniformCrossover</td>
254
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
255
+ <td>20.00000</td>
256
+ <td>24.00000</td>
257
+ <td>22.00000</td>
258
+ <td>1.26491</td>
259
+ <td>0.14228</td>
260
+ </tr>
261
+ <tr>
262
+ <td>TruncationSelection(0.2)</td>
263
+ <td>NullCrossover</td>
264
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
265
+ <td>20.00000</td>
266
+ <td>24.00000</td>
267
+ <td>22.00000</td>
268
+ <td>1.61245</td>
269
+ <td>0.11877</td>
270
+ </tr>
271
+ <tr>
272
+ <td>TruncationSelection(0.2)</td>
273
+ <td>UniformCrossover</td>
274
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
275
+ <td>20.00000</td>
276
+ <td>22.00000</td>
277
+ <td>21.30000</td>
278
+ <td>0.78102</td>
279
+ <td>0.13769</td>
280
+ </tr>
281
+ <tr>
282
+ <td>TruncationSelection(1)</td>
283
+ <td>UniformCrossover</td>
284
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
285
+ <td>19.00000</td>
286
+ <td>23.00000</td>
287
+ <td>21.30000</td>
288
+ <td>1.34536</td>
289
+ <td>0.14400</td>
290
+ </tr>
291
+ <tr>
292
+ <td>TruncationSelection(0.2)</td>
293
+ <td>SinglePointCrossover</td>
294
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
295
+ <td>20.00000</td>
296
+ <td>23.00000</td>
297
+ <td>21.20000</td>
298
+ <td>0.97980</td>
299
+ <td>0.12886</td>
300
+ </tr>
301
+ <tr>
302
+ <td>TruncationSelection(1)</td>
303
+ <td>NullCrossover</td>
304
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
305
+ <td>20.00000</td>
306
+ <td>22.00000</td>
307
+ <td>21.10000</td>
308
+ <td>0.94340</td>
309
+ <td>0.10837</td>
310
+ </tr>
311
+ <tr>
312
+ <td>TruncationSelection(1)</td>
313
+ <td>SinglePointCrossover</td>
314
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
315
+ <td>19.00000</td>
316
+ <td>23.00000</td>
317
+ <td>21.10000</td>
318
+ <td>1.13578</td>
319
+ <td>0.11877</td>
320
+ </tr>
321
+ <tr>
322
+ <td>TruncationSelection(0.2)</td>
323
+ <td>NullCrossover</td>
324
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
325
+ <td>19.00000</td>
326
+ <td>22.00000</td>
327
+ <td>20.60000</td>
328
+ <td>0.80000</td>
329
+ <td>0.10633</td>
330
+ </tr>
331
+ <tr>
332
+ <td>TruncationSelection(0.2)</td>
333
+ <td>SinglePointCrossover</td>
334
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
335
+ <td>19.00000</td>
336
+ <td>22.00000</td>
337
+ <td>19.80000</td>
338
+ <td>0.97980</td>
339
+ <td>0.12576</td>
340
+ </tr>
341
+ <tr>
342
+ <td>TruncationSelection(1)</td>
343
+ <td>SinglePointCrossover</td>
344
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
345
+ <td>18.00000</td>
346
+ <td>21.00000</td>
347
+ <td>19.50000</td>
348
+ <td>0.80623</td>
349
+ <td>0.12954</td>
350
+ </tr>
351
+ <tr>
352
+ <td>TruncationSelection(1)</td>
353
+ <td>NullCrossover</td>
354
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
355
+ <td>17.00000</td>
356
+ <td>22.00000</td>
357
+ <td>19.40000</td>
358
+ <td>1.28062</td>
359
+ <td>0.11449</td>
360
+ </tr>
361
+ <tr>
362
+ <td>TruncationSelection(0.2)</td>
363
+ <td>NullCrossover</td>
364
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
365
+ <td>17.00000</td>
366
+ <td>20.00000</td>
367
+ <td>18.70000</td>
368
+ <td>0.90000</td>
369
+ <td>0.11634</td>
370
+ </tr>
371
+ <tr>
372
+ <td>TruncationSelection(0.2)</td>
373
+ <td>NullCrossover</td>
374
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
375
+ <td>17.00000</td>
376
+ <td>19.00000</td>
377
+ <td>18.40000</td>
378
+ <td>0.80000</td>
379
+ <td>0.13571</td>
380
+ </tr>
381
+ <tr>
382
+ <td>TruncationSelection(1)</td>
383
+ <td>NullCrossover</td>
384
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
385
+ <td>17.00000</td>
386
+ <td>19.00000</td>
387
+ <td>17.70000</td>
388
+ <td>0.64031</td>
389
+ <td>0.12066</td>
390
+ </tr>
391
+ <tr>
392
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
393
+ <td>SinglePointCrossover</td>
394
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
395
+ <td>14.00000</td>
396
+ <td>18.00000</td>
397
+ <td>15.80000</td>
398
+ <td>1.40000</td>
399
+ <td>0.20914</td>
400
+ </tr>
401
+ <tr>
402
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
403
+ <td>UniformCrossover</td>
404
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
405
+ <td>13.00000</td>
406
+ <td>18.00000</td>
407
+ <td>15.20000</td>
408
+ <td>1.60000</td>
409
+ <td>0.22664</td>
410
+ </tr>
411
+ <tr>
412
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
413
+ <td>UniformCrossover</td>
414
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
415
+ <td>12.00000</td>
416
+ <td>17.00000</td>
417
+ <td>14.90000</td>
418
+ <td>1.75784</td>
419
+ <td>0.23452</td>
420
+ </tr>
421
+ <tr>
422
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
423
+ <td>NullCrossover</td>
424
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
425
+ <td>11.00000</td>
426
+ <td>17.00000</td>
427
+ <td>14.60000</td>
428
+ <td>1.74356</td>
429
+ <td>0.21633</td>
430
+ </tr>
431
+ <tr>
432
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
433
+ <td>SinglePointCrossover</td>
434
+ <td>ListMutator([:n_point, 2],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
435
+ <td>12.00000</td>
436
+ <td>18.00000</td>
437
+ <td>14.60000</td>
438
+ <td>1.74356</td>
439
+ <td>0.21780</td>
440
+ </tr>
441
+ <tr>
442
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
443
+ <td>NullCrossover</td>
444
+ <td>ListMutator([:n_point, 1],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
445
+ <td>11.00000</td>
446
+ <td>18.00000</td>
447
+ <td>14.40000</td>
448
+ <td>2.00998</td>
449
+ <td>0.20527</td>
450
+ </tr>
451
+ <tr>
452
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
453
+ <td>SinglePointCrossover</td>
454
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
455
+ <td>11.00000</td>
456
+ <td>16.00000</td>
457
+ <td>13.20000</td>
458
+ <td>1.83303</td>
459
+ <td>0.22544</td>
460
+ </tr>
461
+ <tr>
462
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
463
+ <td>NullCrossover</td>
464
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
465
+ <td>11.00000</td>
466
+ <td>16.00000</td>
467
+ <td>13.20000</td>
468
+ <td>1.46969</td>
469
+ <td>0.22026</td>
470
+ </tr>
471
+ <tr>
472
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
473
+ <td>NullCrossover</td>
474
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
475
+ <td>10.00000</td>
476
+ <td>17.00000</td>
477
+ <td>13.00000</td>
478
+ <td>1.84391</td>
479
+ <td>0.22853</td>
480
+ </tr>
481
+ <tr>
482
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
483
+ <td>SinglePointCrossover</td>
484
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
485
+ <td>11.00000</td>
486
+ <td>16.00000</td>
487
+ <td>12.90000</td>
488
+ <td>1.37477</td>
489
+ <td>0.23434</td>
490
+ </tr>
491
+ <tr>
492
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
493
+ <td>UniformCrossover</td>
494
+ <td>ListMutator([:n_point, 3],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
495
+ <td>11.00000</td>
496
+ <td>15.00000</td>
497
+ <td>12.80000</td>
498
+ <td>1.16619</td>
499
+ <td>0.24177</td>
500
+ </tr>
501
+ <tr>
502
+ <td>Elitism(ScaledRouletteSelection[1,2,3,4,...],1)</td>
503
+ <td>UniformCrossover</td>
504
+ <td>ListMutator([:n_point, 4],[:replace, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "])</td>
505
+ <td>10.00000</td>
506
+ <td>14.00000</td>
507
+ <td>11.90000</td>
508
+ <td>1.13578</td>
509
+ <td>0.25047</td>
510
+ </tr>
511
+ </table>
512
+ </body>
513
+ </html>