evosynth 0.1.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 (390) hide show
  1. data/INSTALL +74 -0
  2. data/LICENSE +22 -0
  3. data/README +57 -0
  4. data/Rakefile +132 -0
  5. data/TODO +88 -0
  6. data/docs/FEATURES +111 -0
  7. data/docs/rdoc/classes/EvoSynth.html +2643 -0
  8. data/docs/rdoc/classes/EvoSynth/Adjustments.html +119 -0
  9. data/docs/rdoc/classes/EvoSynth/Adjustments/AdaptiveAdjustment.html +264 -0
  10. data/docs/rdoc/classes/EvoSynth/Adjustments/PredifinedAdjustment.html +235 -0
  11. data/docs/rdoc/classes/EvoSynth/ArrayGenome.html +313 -0
  12. data/docs/rdoc/classes/EvoSynth/BinaryGenome.html +518 -0
  13. data/docs/rdoc/classes/EvoSynth/Decoder.html +286 -0
  14. data/docs/rdoc/classes/EvoSynth/Evaluator.html +466 -0
  15. data/docs/rdoc/classes/EvoSynth/Evolvers.html +469 -0
  16. data/docs/rdoc/classes/EvoSynth/Evolvers/AdaptiveES.html +448 -0
  17. data/docs/rdoc/classes/EvoSynth/Evolvers/BalancedCoevolutionary.html +439 -0
  18. data/docs/rdoc/classes/EvoSynth/Evolvers/DerandomizedES.html +450 -0
  19. data/docs/rdoc/classes/EvoSynth/Evolvers/Evolver.html +125 -0
  20. data/docs/rdoc/classes/EvoSynth/Evolvers/GeneticAlgorithm.html +467 -0
  21. data/docs/rdoc/classes/EvoSynth/Evolvers/Hillclimber.html +343 -0
  22. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch.html +422 -0
  23. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/GreatDelugeAcceptance.html +287 -0
  24. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/HillclimberAcceptance.html +197 -0
  25. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/RecordToRecordTravelAcceptance.html +296 -0
  26. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/SimulatedAnnealingAcceptance.html +286 -0
  27. data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/ThresholdAcceptance.html +287 -0
  28. data/docs/rdoc/classes/EvoSynth/Evolvers/MemeticAlgorithm.html +441 -0
  29. data/docs/rdoc/classes/EvoSynth/Evolvers/PopulationHillclimber.html +375 -0
  30. data/docs/rdoc/classes/EvoSynth/Evolvers/ProfileUsingEvolver.html +205 -0
  31. data/docs/rdoc/classes/EvoSynth/Evolvers/RoundRobinCoevolutionary.html +383 -0
  32. data/docs/rdoc/classes/EvoSynth/Evolvers/RunnableEvolver.html +279 -0
  33. data/docs/rdoc/classes/EvoSynth/Evolvers/RunnableEvolver/Goal.html +193 -0
  34. data/docs/rdoc/classes/EvoSynth/Evolvers/SelfAdaptiveES.html +394 -0
  35. data/docs/rdoc/classes/EvoSynth/Evolvers/SteadyStateGA.html +390 -0
  36. data/docs/rdoc/classes/EvoSynth/GlobalRecombinations.html +119 -0
  37. data/docs/rdoc/classes/EvoSynth/GlobalRecombinations/GlobalArithmeticCrossover.html +204 -0
  38. data/docs/rdoc/classes/EvoSynth/GlobalRecombinations/GlobalUniformCrossover.html +203 -0
  39. data/docs/rdoc/classes/EvoSynth/Individual.html +561 -0
  40. data/docs/rdoc/classes/EvoSynth/MaximizingIndividual.html +266 -0
  41. data/docs/rdoc/classes/EvoSynth/MetaOperators.html +149 -0
  42. data/docs/rdoc/classes/EvoSynth/MetaOperators/ConditionalCombinedOperator.html +278 -0
  43. data/docs/rdoc/classes/EvoSynth/MetaOperators/ProportionalCombinedOperator.html +285 -0
  44. data/docs/rdoc/classes/EvoSynth/MetaOperators/SequentialCombinedOperator.html +290 -0
  45. data/docs/rdoc/classes/EvoSynth/MinimizingIndividual.html +266 -0
  46. data/docs/rdoc/classes/EvoSynth/Mutations.html +251 -0
  47. data/docs/rdoc/classes/EvoSynth/Mutations/BinaryMutation.html +336 -0
  48. data/docs/rdoc/classes/EvoSynth/Mutations/EfficientBinaryMutation.html +345 -0
  49. data/docs/rdoc/classes/EvoSynth/Mutations/ExchangeMutation.html +320 -0
  50. data/docs/rdoc/classes/EvoSynth/Mutations/Functions.html +160 -0
  51. data/docs/rdoc/classes/EvoSynth/Mutations/GaussMutation.html +311 -0
  52. data/docs/rdoc/classes/EvoSynth/Mutations/Identity.html +220 -0
  53. data/docs/rdoc/classes/EvoSynth/Mutations/InversionMutation.html +231 -0
  54. data/docs/rdoc/classes/EvoSynth/Mutations/MixingMutation.html +233 -0
  55. data/docs/rdoc/classes/EvoSynth/Mutations/OneGeneFlipping.html +295 -0
  56. data/docs/rdoc/classes/EvoSynth/Mutations/SelfAdaptiveGaussMutation.html +347 -0
  57. data/docs/rdoc/classes/EvoSynth/Mutations/ShiftingMutation.html +229 -0
  58. data/docs/rdoc/classes/EvoSynth/Mutations/UniformRealMutation.html +264 -0
  59. data/docs/rdoc/classes/EvoSynth/Output.html +212 -0
  60. data/docs/rdoc/classes/EvoSynth/Output/CSVExporter.html +211 -0
  61. data/docs/rdoc/classes/EvoSynth/Output/ConsoleWriter.html +194 -0
  62. data/docs/rdoc/classes/EvoSynth/Output/GnuPlotExporter.html +235 -0
  63. data/docs/rdoc/classes/EvoSynth/Output/GruffExporter.html +219 -0
  64. data/docs/rdoc/classes/EvoSynth/Output/Logger.html +345 -0
  65. data/docs/rdoc/classes/EvoSynth/Population.html +430 -0
  66. data/docs/rdoc/classes/EvoSynth/Problems.html +159 -0
  67. data/docs/rdoc/classes/EvoSynth/Problems/BinaryBenchmarkFuntions.html +258 -0
  68. data/docs/rdoc/classes/EvoSynth/Problems/FloatBenchmarkFuntions.html +406 -0
  69. data/docs/rdoc/classes/EvoSynth/Problems/GraphColouring.html +265 -0
  70. data/docs/rdoc/classes/EvoSynth/Problems/TSP.html +327 -0
  71. data/docs/rdoc/classes/EvoSynth/Profile.html +324 -0
  72. data/docs/rdoc/classes/EvoSynth/Recombinations.html +251 -0
  73. data/docs/rdoc/classes/EvoSynth/Recombinations/ArithmeticCrossover.html +286 -0
  74. data/docs/rdoc/classes/EvoSynth/Recombinations/EdgeRecombination.html +203 -0
  75. data/docs/rdoc/classes/EvoSynth/Recombinations/Identity.html +192 -0
  76. data/docs/rdoc/classes/EvoSynth/Recombinations/KPointCrossover.html +286 -0
  77. data/docs/rdoc/classes/EvoSynth/Recombinations/OnePointCrossover.html +211 -0
  78. data/docs/rdoc/classes/EvoSynth/Recombinations/OrderedRecombination.html +206 -0
  79. data/docs/rdoc/classes/EvoSynth/Recombinations/PartiallyMappedCrossover.html +206 -0
  80. data/docs/rdoc/classes/EvoSynth/Recombinations/UniformCrossover.html +208 -0
  81. data/docs/rdoc/classes/EvoSynth/Selections.html +174 -0
  82. data/docs/rdoc/classes/EvoSynth/Selections/FitnessProportionalSelection.html +206 -0
  83. data/docs/rdoc/classes/EvoSynth/Selections/Identity.html +200 -0
  84. data/docs/rdoc/classes/EvoSynth/Selections/NStageTournamentSelection.html +273 -0
  85. data/docs/rdoc/classes/EvoSynth/Selections/RandomSelection.html +192 -0
  86. data/docs/rdoc/classes/EvoSynth/Selections/RouletteWheelSelection.html +212 -0
  87. data/docs/rdoc/classes/EvoSynth/Selections/SelectBest.html +206 -0
  88. data/docs/rdoc/classes/EvoSynth/Selections/TournamentSelection.html +274 -0
  89. data/docs/rdoc/classes/Examples.html +268 -0
  90. data/docs/rdoc/classes/Examples/Ants.html +198 -0
  91. data/docs/rdoc/classes/Examples/Ants/AntMutation.html +381 -0
  92. data/docs/rdoc/classes/Examples/Ants/Pheromon.html +256 -0
  93. data/docs/rdoc/classes/Examples/CCGAExample.html +305 -0
  94. data/docs/rdoc/classes/Examples/CCGAExample/CCGA2BenchmarkEvaluator.html +165 -0
  95. data/docs/rdoc/classes/Examples/CCGAExample/CCGABenchmarkEvaluator.html +242 -0
  96. data/docs/rdoc/classes/Examples/CCGAExample/CCGAIndividual.html +181 -0
  97. data/docs/rdoc/classes/Examples/CMBExample.html +215 -0
  98. data/docs/rdoc/classes/Examples/CMBExample/CMBEvaluator.html +212 -0
  99. data/docs/rdoc/classes/Examples/EsExample.html +270 -0
  100. data/docs/rdoc/classes/Examples/EsExample/BenchmarkEvaluator.html +162 -0
  101. data/docs/rdoc/classes/Examples/Exporter.html +208 -0
  102. data/docs/rdoc/classes/Examples/Exporter/ExporterEvaluator.html +196 -0
  103. data/docs/rdoc/classes/Examples/GraphColouring.html +199 -0
  104. data/docs/rdoc/classes/Examples/Hacking.html +147 -0
  105. data/docs/rdoc/classes/Examples/Hacking/HackingEvaluator.html +169 -0
  106. data/docs/rdoc/classes/Examples/LocalSearch.html +294 -0
  107. data/docs/rdoc/classes/Examples/LocalSearch/LocalSearchEvaluator.html +198 -0
  108. data/docs/rdoc/classes/Examples/MaxOnes.html +187 -0
  109. data/docs/rdoc/classes/Examples/MaxOnes/MaxOnesEvaluator.html +170 -0
  110. data/docs/rdoc/classes/Examples/Partitionproblem.html +201 -0
  111. data/docs/rdoc/classes/Examples/Partitionproblem/PartitionEvaluator.html +164 -0
  112. data/docs/rdoc/classes/Examples/Partitionproblem/PartitionIndividual.html +334 -0
  113. data/docs/rdoc/classes/Examples/Partitionproblem/PartitionMutation.html +199 -0
  114. data/docs/rdoc/classes/Examples/Partitionproblem/Testdata.html +294 -0
  115. data/docs/rdoc/classes/Examples/SPk.html +139 -0
  116. data/docs/rdoc/classes/Examples/SPk/SPkFitnessEvaluator.html +299 -0
  117. data/docs/rdoc/classes/Examples/TSP.html +187 -0
  118. data/docs/rdoc/created.rid +1 -0
  119. data/docs/rdoc/files/INSTALL.html +253 -0
  120. data/docs/rdoc/files/LICENSE.html +119 -0
  121. data/docs/rdoc/files/README.html +235 -0
  122. data/docs/rdoc/files/docs/FEATURES.html +428 -0
  123. data/docs/rdoc/files/examples/ants_rb.html +133 -0
  124. data/docs/rdoc/files/examples/ccga_example_rb.html +129 -0
  125. data/docs/rdoc/files/examples/cmb_example_rb.html +129 -0
  126. data/docs/rdoc/files/examples/evolution_strategies_rb.html +129 -0
  127. data/docs/rdoc/files/examples/exporter_rb.html +129 -0
  128. data/docs/rdoc/files/examples/graph_colouring_rb.html +129 -0
  129. data/docs/rdoc/files/examples/hacking_rb.html +129 -0
  130. data/docs/rdoc/files/examples/local_search_rb.html +129 -0
  131. data/docs/rdoc/files/examples/max_ones_rb.html +129 -0
  132. data/docs/rdoc/files/examples/partition_rb.html +131 -0
  133. data/docs/rdoc/files/examples/spk_rb.html +129 -0
  134. data/docs/rdoc/files/examples/tsp_rb.html +131 -0
  135. data/docs/rdoc/files/lib/evosynth/core/array_genome_rb.html +119 -0
  136. data/docs/rdoc/files/lib/evosynth/core/binary_genome_rb.html +119 -0
  137. data/docs/rdoc/files/lib/evosynth/core/evaluator_rb.html +129 -0
  138. data/docs/rdoc/files/lib/evosynth/core/individual_rb.html +119 -0
  139. data/docs/rdoc/files/lib/evosynth/core/maximizing_individual_rb.html +119 -0
  140. data/docs/rdoc/files/lib/evosynth/core/minimizing_individual_rb.html +119 -0
  141. data/docs/rdoc/files/lib/evosynth/core/population_rb.html +119 -0
  142. data/docs/rdoc/files/lib/evosynth/core/profile_rb.html +119 -0
  143. data/docs/rdoc/files/lib/evosynth/core/randomizer_rb.html +119 -0
  144. data/docs/rdoc/files/lib/evosynth/core_rb.html +145 -0
  145. data/docs/rdoc/files/lib/evosynth/decoder/binary_to_real_rb.html +119 -0
  146. data/docs/rdoc/files/lib/evosynth/decoder/gray_rb.html +119 -0
  147. data/docs/rdoc/files/lib/evosynth/decoder_rb.html +131 -0
  148. data/docs/rdoc/files/lib/evosynth/evolvers/basic/genetic_algorithm_rb.html +119 -0
  149. data/docs/rdoc/files/lib/evosynth/evolvers/basic/hillclimber_rb.html +119 -0
  150. data/docs/rdoc/files/lib/evosynth/evolvers/basic/memetic_algorithm_rb.html +119 -0
  151. data/docs/rdoc/files/lib/evosynth/evolvers/basic/population_hillclimber_rb.html +119 -0
  152. data/docs/rdoc/files/lib/evosynth/evolvers/basic/steady_state_ga_rb.html +119 -0
  153. data/docs/rdoc/files/lib/evosynth/evolvers/coevolutionary/balanced_coevolutionary_rb.html +119 -0
  154. data/docs/rdoc/files/lib/evosynth/evolvers/coevolutionary/round_robin_coevolutionary_rb.html +119 -0
  155. data/docs/rdoc/files/lib/evosynth/evolvers/elitism_rb.html +119 -0
  156. data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/adaptive_es_rb.html +129 -0
  157. data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/derandomized_es_rb.html +129 -0
  158. data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/selfadaptive_es_rb.html +119 -0
  159. data/docs/rdoc/files/lib/evosynth/evolvers/evolver_rb.html +131 -0
  160. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_great_deluge_rb.html +119 -0
  161. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_hillclimber_rb.html +119 -0
  162. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_record_to_record_rb.html +119 -0
  163. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_simulated_annealing_rb.html +119 -0
  164. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_threshold_rb.html +119 -0
  165. data/docs/rdoc/files/lib/evosynth/evolvers/local_search/local_search_rb.html +137 -0
  166. data/docs/rdoc/files/lib/evosynth/evolvers/profile_using_evolver_rb.html +119 -0
  167. data/docs/rdoc/files/lib/evosynth/evolvers/runnable_evolver_rb.html +129 -0
  168. data/docs/rdoc/files/lib/evosynth/evolvers_rb.html +153 -0
  169. data/docs/rdoc/files/lib/evosynth/operators/adjustments/adaptive_adjustment_rb.html +119 -0
  170. data/docs/rdoc/files/lib/evosynth/operators/adjustments/predefined_adjustment_rb.html +119 -0
  171. data/docs/rdoc/files/lib/evosynth/operators/adjustments_rb.html +131 -0
  172. data/docs/rdoc/files/lib/evosynth/operators/global_recombinations/global_arithmetic_crossover_rb.html +119 -0
  173. data/docs/rdoc/files/lib/evosynth/operators/global_recombinations/global_uniform_crossover_rb.html +119 -0
  174. data/docs/rdoc/files/lib/evosynth/operators/global_recombinations_rb.html +131 -0
  175. data/docs/rdoc/files/lib/evosynth/operators/meta_operators/conditional_combined_operator_rb.html +119 -0
  176. data/docs/rdoc/files/lib/evosynth/operators/meta_operators/proportional_combined_operator_rb.html +119 -0
  177. data/docs/rdoc/files/lib/evosynth/operators/meta_operators/sequential_combined_operator_rb.html +119 -0
  178. data/docs/rdoc/files/lib/evosynth/operators/meta_operators_rb.html +133 -0
  179. data/docs/rdoc/files/lib/evosynth/operators/mutations/binary_mutation_rb.html +119 -0
  180. data/docs/rdoc/files/lib/evosynth/operators/mutations/efficient_binary_mutation_rb.html +119 -0
  181. data/docs/rdoc/files/lib/evosynth/operators/mutations/exchange_mutation_rb.html +119 -0
  182. data/docs/rdoc/files/lib/evosynth/operators/mutations/flip_functions_rb.html +119 -0
  183. data/docs/rdoc/files/lib/evosynth/operators/mutations/gauss_mutation_rb.html +119 -0
  184. data/docs/rdoc/files/lib/evosynth/operators/mutations/identity_rb.html +119 -0
  185. data/docs/rdoc/files/lib/evosynth/operators/mutations/inversion_mutation_rb.html +119 -0
  186. data/docs/rdoc/files/lib/evosynth/operators/mutations/mixing_mutation_rb.html +119 -0
  187. data/docs/rdoc/files/lib/evosynth/operators/mutations/one_gene_flipping_rb.html +119 -0
  188. data/docs/rdoc/files/lib/evosynth/operators/mutations/self_adaptive_gauss_mutation_rb.html +119 -0
  189. data/docs/rdoc/files/lib/evosynth/operators/mutations/shifting_mutation_rb.html +119 -0
  190. data/docs/rdoc/files/lib/evosynth/operators/mutations/uniform_real_mutation_rb.html +119 -0
  191. data/docs/rdoc/files/lib/evosynth/operators/mutations_rb.html +151 -0
  192. data/docs/rdoc/files/lib/evosynth/operators/recombinations/arithmetic_crossover_rb.html +119 -0
  193. data/docs/rdoc/files/lib/evosynth/operators/recombinations/edge_recombination_rb.html +129 -0
  194. data/docs/rdoc/files/lib/evosynth/operators/recombinations/identity_rb.html +119 -0
  195. data/docs/rdoc/files/lib/evosynth/operators/recombinations/k_point_crossover_rb.html +119 -0
  196. data/docs/rdoc/files/lib/evosynth/operators/recombinations/one_point_crossover_rb.html +119 -0
  197. data/docs/rdoc/files/lib/evosynth/operators/recombinations/ordered_recombination_rb.html +129 -0
  198. data/docs/rdoc/files/lib/evosynth/operators/recombinations/partially_mapped_crossover_rb.html +129 -0
  199. data/docs/rdoc/files/lib/evosynth/operators/recombinations/uniform_crossover_rb.html +119 -0
  200. data/docs/rdoc/files/lib/evosynth/operators/recombinations_rb.html +143 -0
  201. data/docs/rdoc/files/lib/evosynth/operators/selections/best_selection_rb.html +119 -0
  202. data/docs/rdoc/files/lib/evosynth/operators/selections/fitness_proportional_selection_rb.html +119 -0
  203. data/docs/rdoc/files/lib/evosynth/operators/selections/identity_rb.html +119 -0
  204. data/docs/rdoc/files/lib/evosynth/operators/selections/n_stage_tournament_selection_rb.html +119 -0
  205. data/docs/rdoc/files/lib/evosynth/operators/selections/random_selection_rb.html +119 -0
  206. data/docs/rdoc/files/lib/evosynth/operators/selections/roulette_wheel_selection_rb.html +119 -0
  207. data/docs/rdoc/files/lib/evosynth/operators/selections/tournament_selection_rb.html +119 -0
  208. data/docs/rdoc/files/lib/evosynth/operators/selections_rb.html +141 -0
  209. data/docs/rdoc/files/lib/evosynth/operators_rb.html +139 -0
  210. data/docs/rdoc/files/lib/evosynth/output/console_writer_rb.html +129 -0
  211. data/docs/rdoc/files/lib/evosynth/output/exporter/csv_exporter_rb.html +129 -0
  212. data/docs/rdoc/files/lib/evosynth/output/exporter/gnuplot_exporter_rb.html +131 -0
  213. data/docs/rdoc/files/lib/evosynth/output/exporter/gruff_exporter_rb.html +131 -0
  214. data/docs/rdoc/files/lib/evosynth/output/exporter_rb.html +133 -0
  215. data/docs/rdoc/files/lib/evosynth/output/factory_rb.html +129 -0
  216. data/docs/rdoc/files/lib/evosynth/output/logger_rb.html +119 -0
  217. data/docs/rdoc/files/lib/evosynth/output_rb.html +135 -0
  218. data/docs/rdoc/files/lib/evosynth/problems/binary_benchmark_functions_rb.html +119 -0
  219. data/docs/rdoc/files/lib/evosynth/problems/float_benchmark_functions_rb.html +1630 -0
  220. data/docs/rdoc/files/lib/evosynth/problems/graph_colouring_rb.html +129 -0
  221. data/docs/rdoc/files/lib/evosynth/problems/tsp_rb.html +129 -0
  222. data/docs/rdoc/files/lib/evosynth/problems_rb.html +135 -0
  223. data/docs/rdoc/files/lib/evosynth_rb.html +139 -0
  224. data/docs/rdoc/fr_class_index.html +245 -0
  225. data/docs/rdoc/fr_file_index.html +233 -0
  226. data/docs/rdoc/fr_method_index.html +661 -0
  227. data/docs/rdoc/index.html +21 -0
  228. data/docs/rdoc/rdoc-style.css +299 -0
  229. data/examples/ants.rb +237 -0
  230. data/examples/ccga_example.rb +150 -0
  231. data/examples/cmb_example.rb +117 -0
  232. data/examples/evolution_strategies.rb +84 -0
  233. data/examples/exporter.rb +90 -0
  234. data/examples/graph_colouring.rb +72 -0
  235. data/examples/hacking.rb +62 -0
  236. data/examples/local_search.rb +109 -0
  237. data/examples/max_ones.rb +83 -0
  238. data/examples/partition.rb +172 -0
  239. data/examples/spk.rb +106 -0
  240. data/examples/tsp.rb +83 -0
  241. data/lib/evosynth.rb +32 -0
  242. data/lib/evosynth/core.rb +33 -0
  243. data/lib/evosynth/core/array_genome.rb +77 -0
  244. data/lib/evosynth/core/binary_genome.rb +156 -0
  245. data/lib/evosynth/core/evaluator.rb +109 -0
  246. data/lib/evosynth/core/individual.rb +92 -0
  247. data/lib/evosynth/core/maximizing_individual.rb +71 -0
  248. data/lib/evosynth/core/minimizing_individual.rb +71 -0
  249. data/lib/evosynth/core/population.rb +120 -0
  250. data/lib/evosynth/core/profile.rb +110 -0
  251. data/lib/evosynth/core/randomizer.rb +73 -0
  252. data/lib/evosynth/decoder.rb +33 -0
  253. data/lib/evosynth/decoder/binary_to_real.rb +57 -0
  254. data/lib/evosynth/decoder/gray.rb +54 -0
  255. data/lib/evosynth/evolvers.rb +41 -0
  256. data/lib/evosynth/evolvers/basic/genetic_algorithm.rb +92 -0
  257. data/lib/evosynth/evolvers/basic/hillclimber.rb +64 -0
  258. data/lib/evosynth/evolvers/basic/memetic_algorithm.rb +111 -0
  259. data/lib/evosynth/evolvers/basic/population_hillclimber.rb +69 -0
  260. data/lib/evosynth/evolvers/basic/steady_state_ga.rb +85 -0
  261. data/lib/evosynth/evolvers/coevolutionary/balanced_coevolutionary.rb +125 -0
  262. data/lib/evosynth/evolvers/coevolutionary/round_robin_coevolutionary.rb +87 -0
  263. data/lib/evosynth/evolvers/elitism.rb +108 -0
  264. data/lib/evosynth/evolvers/evolution_strategies/adaptive_es.rb +104 -0
  265. data/lib/evosynth/evolvers/evolution_strategies/derandomized_es.rb +120 -0
  266. data/lib/evosynth/evolvers/evolution_strategies/selfadaptive_es.rb +82 -0
  267. data/lib/evosynth/evolvers/evolver.rb +43 -0
  268. data/lib/evosynth/evolvers/local_search/acceptance_great_deluge.rb +60 -0
  269. data/lib/evosynth/evolvers/local_search/acceptance_hillclimber.rb +47 -0
  270. data/lib/evosynth/evolvers/local_search/acceptance_record_to_record.rb +69 -0
  271. data/lib/evosynth/evolvers/local_search/acceptance_simulated_annealing.rb +59 -0
  272. data/lib/evosynth/evolvers/local_search/acceptance_threshold.rb +60 -0
  273. data/lib/evosynth/evolvers/local_search/local_search.rb +74 -0
  274. data/lib/evosynth/evolvers/profile_using_evolver.rb +77 -0
  275. data/lib/evosynth/evolvers/runnable_evolver.rb +89 -0
  276. data/lib/evosynth/operators.rb +30 -0
  277. data/lib/evosynth/operators/adjustments.rb +26 -0
  278. data/lib/evosynth/operators/adjustments/adaptive_adjustment.rb +55 -0
  279. data/lib/evosynth/operators/adjustments/predefined_adjustment.rb +46 -0
  280. data/lib/evosynth/operators/global_recombinations.rb +26 -0
  281. data/lib/evosynth/operators/global_recombinations/global_arithmetic_crossover.rb +50 -0
  282. data/lib/evosynth/operators/global_recombinations/global_uniform_crossover.rb +49 -0
  283. data/lib/evosynth/operators/meta_operators.rb +36 -0
  284. data/lib/evosynth/operators/meta_operators/conditional_combined_operator.rb +65 -0
  285. data/lib/evosynth/operators/meta_operators/proportional_combined_operator.rb +84 -0
  286. data/lib/evosynth/operators/meta_operators/sequential_combined_operator.rb +73 -0
  287. data/lib/evosynth/operators/mutations.rb +47 -0
  288. data/lib/evosynth/operators/mutations/binary_mutation.rb +100 -0
  289. data/lib/evosynth/operators/mutations/efficient_binary_mutation.rb +105 -0
  290. data/lib/evosynth/operators/mutations/exchange_mutation.rb +107 -0
  291. data/lib/evosynth/operators/mutations/flip_functions.rb +45 -0
  292. data/lib/evosynth/operators/mutations/gauss_mutation.rb +65 -0
  293. data/lib/evosynth/operators/mutations/identity.rb +62 -0
  294. data/lib/evosynth/operators/mutations/inversion_mutation.rb +73 -0
  295. data/lib/evosynth/operators/mutations/mixing_mutation.rb +75 -0
  296. data/lib/evosynth/operators/mutations/one_gene_flipping.rb +89 -0
  297. data/lib/evosynth/operators/mutations/self_adaptive_gauss_mutation.rb +73 -0
  298. data/lib/evosynth/operators/mutations/shifting_mutation.rb +88 -0
  299. data/lib/evosynth/operators/mutations/uniform_real_mutation.rb +59 -0
  300. data/lib/evosynth/operators/recombinations.rb +48 -0
  301. data/lib/evosynth/operators/recombinations/arithmetic_crossover.rb +67 -0
  302. data/lib/evosynth/operators/recombinations/edge_recombination.rb +108 -0
  303. data/lib/evosynth/operators/recombinations/identity.rb +42 -0
  304. data/lib/evosynth/operators/recombinations/k_point_crossover.rb +81 -0
  305. data/lib/evosynth/operators/recombinations/one_point_crossover.rb +56 -0
  306. data/lib/evosynth/operators/recombinations/ordered_recombination.rb +75 -0
  307. data/lib/evosynth/operators/recombinations/partially_mapped_crossover.rb +102 -0
  308. data/lib/evosynth/operators/recombinations/uniform_crossover.rb +54 -0
  309. data/lib/evosynth/operators/selections.rb +31 -0
  310. data/lib/evosynth/operators/selections/best_selection.rb +54 -0
  311. data/lib/evosynth/operators/selections/fitness_proportional_selection.rb +83 -0
  312. data/lib/evosynth/operators/selections/identity.rb +48 -0
  313. data/lib/evosynth/operators/selections/n_stage_tournament_selection.rb +84 -0
  314. data/lib/evosynth/operators/selections/random_selection.rb +44 -0
  315. data/lib/evosynth/operators/selections/roulette_wheel_selection.rb +54 -0
  316. data/lib/evosynth/operators/selections/tournament_selection.rb +71 -0
  317. data/lib/evosynth/output.rb +28 -0
  318. data/lib/evosynth/output/console_writer.rb +45 -0
  319. data/lib/evosynth/output/exporter.rb +27 -0
  320. data/lib/evosynth/output/exporter/csv_exporter.rb +62 -0
  321. data/lib/evosynth/output/exporter/gnuplot_exporter.rb +81 -0
  322. data/lib/evosynth/output/exporter/gruff_exporter.rb +70 -0
  323. data/lib/evosynth/output/factory.rb +38 -0
  324. data/lib/evosynth/output/logger.rb +83 -0
  325. data/lib/evosynth/problems.rb +37 -0
  326. data/lib/evosynth/problems/binary_benchmark_functions.rb +74 -0
  327. data/lib/evosynth/problems/float_benchmark_functions.rb +99 -0
  328. data/lib/evosynth/problems/graph_colouring.rb +89 -0
  329. data/lib/evosynth/problems/tsp.rb +88 -0
  330. data/test/benchmark/decoder_benchmark.rb +75 -0
  331. data/test/benchmark/mutation_benchmark.rb +88 -0
  332. data/test/benchmark/recombination_benchmark.rb +58 -0
  333. data/test/benchmark/selection_benchmark.rb +52 -0
  334. data/test/core/tc_array_genome.rb +154 -0
  335. data/test/core/tc_binary_genome.rb +160 -0
  336. data/test/core/tc_population.rb +154 -0
  337. data/test/core/tc_profile.rb +75 -0
  338. data/test/core/tc_randomizer.rb +165 -0
  339. data/test/coverage.rb +43 -0
  340. data/test/decoder/tc_binary_to_real.rb +52 -0
  341. data/test/decoder/tc_gray.rb +107 -0
  342. data/test/operators/adjustments/tc_adaptive_adjustment.rb +63 -0
  343. data/test/operators/adjustments/tc_predefined_adjustment.rb +49 -0
  344. data/test/operators/global_recombinations/tc_global_arithmetic_crossover.rb +78 -0
  345. data/test/operators/global_recombinations/tc_global_uniform_crossover.rb +90 -0
  346. data/test/operators/meta_operators/tc_conditional_combined_operator.rb +66 -0
  347. data/test/operators/meta_operators/tc_proportional_combined_operator.rb +167 -0
  348. data/test/operators/meta_operators/tc_sequential_combined_operator.rb +98 -0
  349. data/test/operators/mutations/tc_binary_mutation.rb +73 -0
  350. data/test/operators/mutations/tc_efficient_binary_mutation.rb +73 -0
  351. data/test/operators/mutations/tc_exchange_mutation.rb +127 -0
  352. data/test/operators/mutations/tc_gauss_mutation.rb +130 -0
  353. data/test/operators/mutations/tc_identity_mutation.rb +64 -0
  354. data/test/operators/mutations/tc_inversion_mutation.rb +70 -0
  355. data/test/operators/mutations/tc_mixing_mutation.rb +73 -0
  356. data/test/operators/mutations/tc_one_gene_flipping.rb +109 -0
  357. data/test/operators/mutations/tc_self_adaptive_gauss_mutation.rb +72 -0
  358. data/test/operators/mutations/tc_shifting_muation.rb +73 -0
  359. data/test/operators/mutations/tc_uniform_real_mutation.rb +65 -0
  360. data/test/operators/recombinations/tc_arithmetic_crossover.rb +79 -0
  361. data/test/operators/recombinations/tc_edge_recombination.rb +76 -0
  362. data/test/operators/recombinations/tc_identity_recombination.rb +81 -0
  363. data/test/operators/recombinations/tc_k_point_crossover.rb +81 -0
  364. data/test/operators/recombinations/tc_one_point_crossover.rb +80 -0
  365. data/test/operators/recombinations/tc_ordered_recombination.rb +76 -0
  366. data/test/operators/recombinations/tc_partially_mapped_crossover.rb +91 -0
  367. data/test/operators/recombinations/tc_uniform_crossover.rb +84 -0
  368. data/test/operators/selections/tc_best_selection.rb +85 -0
  369. data/test/operators/selections/tc_fitness_proportional_selection.rb +78 -0
  370. data/test/operators/selections/tc_identity.rb +91 -0
  371. data/test/operators/selections/tc_n_stage_tournament.rb +78 -0
  372. data/test/operators/selections/tc_random_selection.rb +70 -0
  373. data/test/operators/selections/tc_roulette_wheel_selection.rb +78 -0
  374. data/test/operators/selections/tc_tournament_selection.rb +83 -0
  375. data/test/problems/tc_binary_benchmark_functions.rb +126 -0
  376. data/test/problems/tc_float_benchmark_functions.rb +100 -0
  377. data/test/test_util/test_helper.rb +128 -0
  378. data/test/ts_adjustments.rb +26 -0
  379. data/test/ts_core.rb +29 -0
  380. data/test/ts_decoder.rb +26 -0
  381. data/test/ts_global_recombinations.rb +26 -0
  382. data/test/ts_meta_operators.rb +27 -0
  383. data/test/ts_mutations.rb +35 -0
  384. data/test/ts_problems.rb +26 -0
  385. data/test/ts_recombinations.rb +32 -0
  386. data/test/ts_selections.rb +31 -0
  387. data/testdata/README +4 -0
  388. data/testdata/bays29.tsp +68 -0
  389. data/testdata/myciel4.col +77 -0
  390. metadata +552 -0
@@ -0,0 +1,345 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <title>Class: EvoSynth::Output::Logger [EvoSynth Documentation]</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
7
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
8
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
9
+ <script type="text/javascript">
10
+ // <![CDATA[
11
+
12
+ function popupCode( url ) {
13
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
14
+ }
15
+
16
+ function toggleCode( id ) {
17
+ if ( document.getElementById )
18
+ elem = document.getElementById( id );
19
+ else if ( document.all )
20
+ elem = eval( "document.all." + id );
21
+ else
22
+ return false;
23
+
24
+ elemStyle = elem.style;
25
+
26
+ if ( elemStyle.display != "block" ) {
27
+ elemStyle.display = "block"
28
+ } else {
29
+ elemStyle.display = "none"
30
+ }
31
+
32
+ return true;
33
+ }
34
+
35
+ // Make codeblocks hidden by default
36
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
37
+
38
+ // ]]>
39
+ </script>
40
+
41
+ </head>
42
+ <body>
43
+
44
+
45
+ <div id="classHeader">
46
+ <table class="header-table">
47
+ <tr class="top-aligned-row">
48
+ <td><strong>Class</strong></td>
49
+ <td class="class-name-in-header">EvoSynth::Output::Logger</td>
50
+ </tr>
51
+ <tr class="top-aligned-row">
52
+ <td><strong>In:</strong></td>
53
+ <td>
54
+
55
+
56
+ <a href="../../../files/lib/evosynth/output/logger_rb.html">
57
+
58
+ lib/evosynth/output/logger.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+ </td>
66
+ </tr>
67
+
68
+
69
+ <tr class="top-aligned-row">
70
+ <td><strong>Parent:</strong></td>
71
+ <td>
72
+
73
+ Object
74
+
75
+ </td>
76
+ </tr>
77
+
78
+ </table>
79
+ </div>
80
+ <!-- banner header -->
81
+
82
+ <div id="bodyContent">
83
+
84
+ <div id="contextContent">
85
+
86
+ <div id="description">
87
+ <p>
88
+ Customizable logger
89
+ </p>
90
+ <pre>
91
+ logger = EvoSynth::Output::Logger.new(10, true,
92
+ &quot;gen&quot; =&gt; -&gt;{ evolver.generations_computed },
93
+ &quot;best&quot; =&gt; -&gt;{ profile.population.best.fitness },
94
+ &quot;worst&quot; =&gt; -&gt;{ profile.population.worst.fitness }
95
+ )
96
+ evolver.add_observer(logger)
97
+ </pre>
98
+
99
+ </div>
100
+
101
+ </div>
102
+
103
+
104
+ <div id="method-list">
105
+ <h3 class="section-bar">Methods</h3>
106
+
107
+ <div class="name-list">
108
+
109
+ <a href="#M000110">clear_data</a>&nbsp;&nbsp;
110
+
111
+ <a href="#M000111">column_names</a>&nbsp;&nbsp;
112
+
113
+ <a href="#M000109">new</a>&nbsp;&nbsp;
114
+
115
+ <a href="#M000112">update</a>&nbsp;&nbsp;
116
+
117
+ </div>
118
+ </div>
119
+
120
+ </div>
121
+
122
+ <!-- if includes -->
123
+
124
+ <div id="includes">
125
+ <h3 class="section-bar">Included Modules</h3>
126
+
127
+ <div id="includes-list">
128
+
129
+ <span class="include-name">Observable</span>
130
+
131
+ </div>
132
+ </div>
133
+
134
+ <div id="section">
135
+
136
+
137
+
138
+ <div id="attribute-list">
139
+ <h3 class="section-bar">Attributes</h3>
140
+
141
+ <div class="name-list">
142
+ <table>
143
+
144
+ <tr class="top-aligned-row context-row">
145
+ <td class="context-item-name">data</td>
146
+
147
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
148
+
149
+ <td class="context-item-desc"></td>
150
+ </tr>
151
+
152
+ <tr class="top-aligned-row context-row">
153
+ <td class="context-item-name">save_data</td>
154
+
155
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
156
+
157
+ <td class="context-item-desc"></td>
158
+ </tr>
159
+
160
+ <tr class="top-aligned-row context-row">
161
+ <td class="context-item-name">show_errors</td>
162
+
163
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
164
+
165
+ <td class="context-item-desc"></td>
166
+ </tr>
167
+
168
+ <tr class="top-aligned-row context-row">
169
+ <td class="context-item-name">things_to_log</td>
170
+
171
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
172
+
173
+ <td class="context-item-desc"></td>
174
+ </tr>
175
+
176
+ </table>
177
+ </div>
178
+ </div>
179
+
180
+
181
+ <!-- if method_list -->
182
+
183
+ <div id="methods">
184
+
185
+ <h3 class="section-bar">Public Class methods</h3>
186
+
187
+
188
+ <div id="method-M000109" class="method-detail">
189
+ <a name="M000109"></a>
190
+
191
+ <div class="method-heading">
192
+
193
+ <a href="#M000109" class="method-signature">
194
+
195
+ <span class="method-name">new</span><span class="method-args">(log_step, save_data, things_to_log = {})</span>
196
+
197
+ </a>
198
+
199
+ </div>
200
+
201
+ <div class="method-description">
202
+
203
+ <p><a class="source-toggle" href="#"
204
+ onclick="toggleCode('M000109-source');return false;">[Source]</a></p>
205
+ <div class="method-source-code" id="M000109-source">
206
+ <pre>
207
+ <span class="ruby-comment cmt"># File lib/evosynth/output/logger.rb, line 43</span>
208
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">log_step</span>, <span class="ruby-identifier">save_data</span>, <span class="ruby-identifier">things_to_log</span> = {})
209
+ 44: <span class="ruby-ivar">@data</span> = {}
210
+ 45:
211
+ 46: <span class="ruby-ivar">@log_step</span> = <span class="ruby-identifier">log_step</span>
212
+ 47: <span class="ruby-ivar">@save_data</span> = <span class="ruby-identifier">save_data</span>
213
+ 48: <span class="ruby-ivar">@things_to_log</span> = <span class="ruby-identifier">things_to_log</span>
214
+ 49: <span class="ruby-ivar">@show_errors</span> = <span class="ruby-keyword kw">false</span>
215
+ 50: <span class="ruby-keyword kw">end</span>
216
+ </pre>
217
+ </div>
218
+
219
+ </div>
220
+ </div>
221
+
222
+
223
+ <h3 class="section-bar">Public Instance methods</h3>
224
+
225
+
226
+ <div id="method-M000110" class="method-detail">
227
+ <a name="M000110"></a>
228
+
229
+ <div class="method-heading">
230
+
231
+ <a href="#M000110" class="method-signature">
232
+
233
+ <span class="method-name">clear_data</span><span class="method-args">()</span>
234
+
235
+ </a>
236
+
237
+ </div>
238
+
239
+ <div class="method-description">
240
+
241
+ <p><a class="source-toggle" href="#"
242
+ onclick="toggleCode('M000110-source');return false;">[Source]</a></p>
243
+ <div class="method-source-code" id="M000110-source">
244
+ <pre>
245
+ <span class="ruby-comment cmt"># File lib/evosynth/output/logger.rb, line 52</span>
246
+ 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_data</span>
247
+ 53: <span class="ruby-ivar">@data</span> = {}
248
+ 54: <span class="ruby-keyword kw">end</span>
249
+ </pre>
250
+ </div>
251
+
252
+ </div>
253
+ </div>
254
+
255
+
256
+ <div id="method-M000111" class="method-detail">
257
+ <a name="M000111"></a>
258
+
259
+ <div class="method-heading">
260
+
261
+ <a href="#M000111" class="method-signature">
262
+
263
+ <span class="method-name">column_names</span><span class="method-args">()</span>
264
+
265
+ </a>
266
+
267
+ </div>
268
+
269
+ <div class="method-description">
270
+
271
+ <p><a class="source-toggle" href="#"
272
+ onclick="toggleCode('M000111-source');return false;">[Source]</a></p>
273
+ <div class="method-source-code" id="M000111-source">
274
+ <pre>
275
+ <span class="ruby-comment cmt"># File lib/evosynth/output/logger.rb, line 56</span>
276
+ 56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">column_names</span>
277
+ 57: <span class="ruby-identifier">line</span> = []
278
+ 58: <span class="ruby-ivar">@things_to_log</span>.<span class="ruby-identifier">each_pair</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">key</span> }
279
+ 59: <span class="ruby-identifier">line</span>
280
+ 60: <span class="ruby-keyword kw">end</span>
281
+ </pre>
282
+ </div>
283
+
284
+ </div>
285
+ </div>
286
+
287
+
288
+ <div id="method-M000112" class="method-detail">
289
+ <a name="M000112"></a>
290
+
291
+ <div class="method-heading">
292
+
293
+ <a href="#M000112" class="method-signature">
294
+
295
+ <span class="method-name">update</span><span class="method-args">(observable, counter)</span>
296
+
297
+ </a>
298
+
299
+ </div>
300
+
301
+ <div class="method-description">
302
+
303
+ <p><a class="source-toggle" href="#"
304
+ onclick="toggleCode('M000112-source');return false;">[Source]</a></p>
305
+ <div class="method-source-code" id="M000112-source">
306
+ <pre>
307
+ <span class="ruby-comment cmt"># File lib/evosynth/output/logger.rb, line 62</span>
308
+ 62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">update</span>(<span class="ruby-identifier">observable</span>, <span class="ruby-identifier">counter</span>)
309
+ 63: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">counter</span> <span class="ruby-operator">%</span> <span class="ruby-ivar">@log_step</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
310
+ 64:
311
+ 65: <span class="ruby-identifier">line</span> = []
312
+ 66: <span class="ruby-ivar">@things_to_log</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
313
+ 67: <span class="ruby-keyword kw">begin</span>
314
+ 68: <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">call</span>
315
+ 69: <span class="ruby-keyword kw">rescue</span>
316
+ 70: <span class="ruby-ivar">@show_errors</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;ERROR while retrieving #{value.inspect}&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\t&quot;</span>
317
+ 71: <span class="ruby-keyword kw">end</span>
318
+ 72: <span class="ruby-keyword kw">end</span>
319
+ 73:
320
+ 74: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">counter</span>] = <span class="ruby-identifier">line</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">save_data</span>
321
+ 75:
322
+ 76: <span class="ruby-identifier">changed</span>
323
+ 77: <span class="ruby-identifier">notify_observers</span> <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">counter</span>, <span class="ruby-identifier">line</span>
324
+ 78: <span class="ruby-keyword kw">end</span>
325
+ </pre>
326
+ </div>
327
+
328
+ </div>
329
+ </div>
330
+
331
+
332
+
333
+ </div>
334
+
335
+
336
+
337
+
338
+ </div>
339
+
340
+ <div id="validator-badges">
341
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
342
+ </div>
343
+
344
+ </body>
345
+ </html>
@@ -0,0 +1,430 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <title>Class: EvoSynth::Population [EvoSynth Documentation]</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
7
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
8
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
9
+ <script type="text/javascript">
10
+ // <![CDATA[
11
+
12
+ function popupCode( url ) {
13
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
14
+ }
15
+
16
+ function toggleCode( id ) {
17
+ if ( document.getElementById )
18
+ elem = document.getElementById( id );
19
+ else if ( document.all )
20
+ elem = eval( "document.all." + id );
21
+ else
22
+ return false;
23
+
24
+ elemStyle = elem.style;
25
+
26
+ if ( elemStyle.display != "block" ) {
27
+ elemStyle.display = "block"
28
+ } else {
29
+ elemStyle.display = "none"
30
+ }
31
+
32
+ return true;
33
+ }
34
+
35
+ // Make codeblocks hidden by default
36
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
37
+
38
+ // ]]>
39
+ </script>
40
+
41
+ </head>
42
+ <body>
43
+
44
+
45
+ <div id="classHeader">
46
+ <table class="header-table">
47
+ <tr class="top-aligned-row">
48
+ <td><strong>Class</strong></td>
49
+ <td class="class-name-in-header">EvoSynth::Population</td>
50
+ </tr>
51
+ <tr class="top-aligned-row">
52
+ <td><strong>In:</strong></td>
53
+ <td>
54
+
55
+
56
+ <a href="../../files/lib/evosynth/core/population_rb.html">
57
+
58
+ lib/evosynth/core/population.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+ </td>
66
+ </tr>
67
+
68
+
69
+ <tr class="top-aligned-row">
70
+ <td><strong>Parent:</strong></td>
71
+ <td>
72
+
73
+ <a href="ArrayGenome.html">
74
+
75
+ EvoSynth::ArrayGenome
76
+
77
+ </a>
78
+
79
+ </td>
80
+ </tr>
81
+
82
+ </table>
83
+ </div>
84
+ <!-- banner header -->
85
+
86
+ <div id="bodyContent">
87
+
88
+ <div id="contextContent">
89
+
90
+ <div id="description">
91
+ <p>
92
+ This class is used to create and maintain a population. In this case a
93
+ population is simply a Array of individuals that keeps track of changes.
94
+ </p>
95
+
96
+ </div>
97
+
98
+ </div>
99
+
100
+
101
+ <div id="method-list">
102
+ <h3 class="section-bar">Methods</h3>
103
+
104
+ <div class="name-list">
105
+
106
+ <a href="#M000236">add</a>&nbsp;&nbsp;
107
+
108
+ <a href="#M000238">best</a>&nbsp;&nbsp;
109
+
110
+ <a href="#M000235">deep_clone</a>&nbsp;&nbsp;
111
+
112
+ <a href="#M000234">new</a>&nbsp;&nbsp;
113
+
114
+ <a href="#M000237">remove</a>&nbsp;&nbsp;
115
+
116
+ <a href="#M000240">to_s</a>&nbsp;&nbsp;
117
+
118
+ <a href="#M000239">worst</a>&nbsp;&nbsp;
119
+
120
+ </div>
121
+ </div>
122
+
123
+ </div>
124
+
125
+ <!-- if includes -->
126
+
127
+ <div id="section">
128
+
129
+
130
+
131
+
132
+ <!-- if method_list -->
133
+
134
+ <div id="methods">
135
+
136
+ <h3 class="section-bar">Public Class methods</h3>
137
+
138
+
139
+ <div id="method-M000234" class="method-detail">
140
+ <a name="M000234"></a>
141
+
142
+ <div class="method-heading">
143
+
144
+ <a href="#M000234" class="method-signature">
145
+
146
+ <span class="method-name">Population.new &rarr; Population<br />
147
+ Population.new(size) &rarr; Population (with given size)<br />
148
+ Population.new(size) { block } &rarr; Population (with given size and block to intialize each individual)<br />
149
+ </span>
150
+
151
+ </a>
152
+
153
+ </div>
154
+
155
+ <div class="method-description">
156
+
157
+ <p>
158
+ Creates a population
159
+ </p>
160
+
161
+ <p><a class="source-toggle" href="#"
162
+ onclick="toggleCode('M000234-source');return false;">[Source]</a></p>
163
+ <div class="method-source-code" id="M000234-source">
164
+ <pre>
165
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 39</span>
166
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
167
+ 40: <span class="ruby-keyword kw">super</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
168
+ 41: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">map!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">individual</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> } <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
169
+ 42: <span class="ruby-keyword kw">end</span>
170
+ </pre>
171
+ </div>
172
+
173
+ </div>
174
+ </div>
175
+
176
+
177
+ <h3 class="section-bar">Public Instance methods</h3>
178
+
179
+
180
+ <div id="method-M000236" class="method-detail">
181
+ <a name="M000236"></a>
182
+
183
+ <div class="method-heading">
184
+
185
+ <a href="#M000236" class="method-signature">
186
+
187
+ <span class="method-name">add</span><span class="method-args">(individual)</span>
188
+
189
+ </a>
190
+
191
+ </div>
192
+
193
+ <div class="method-description">
194
+
195
+ <p>
196
+ Adds a individual to the population.
197
+ </p>
198
+
199
+ <p><a class="source-toggle" href="#"
200
+ onclick="toggleCode('M000236-source');return false;">[Source]</a></p>
201
+ <div class="method-source-code" id="M000236-source">
202
+ <pre>
203
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 54</span>
204
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add</span>(<span class="ruby-identifier">individual</span>)
205
+ 55: <span class="ruby-keyword kw">self</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">individual</span>
206
+ 56: <span class="ruby-keyword kw">end</span>
207
+ </pre>
208
+ </div>
209
+
210
+ </div>
211
+ </div>
212
+
213
+
214
+ <div id="method-M000238" class="method-detail">
215
+ <a name="M000238"></a>
216
+
217
+ <div class="method-heading">
218
+
219
+ <a href="#M000238" class="method-signature">
220
+
221
+ <span class="method-name">p = Population.new<br />
222
+ p.best #=> Returns the best individual<br />
223
+ p.best(3) #=> Returns the 3 best individuals<br />
224
+ </span>
225
+
226
+ </a>
227
+
228
+ </div>
229
+
230
+ <div class="method-description">
231
+
232
+ <p>
233
+ Returns the best N individuals (by comparing with <=>) of the population.
234
+ </p>
235
+
236
+ <p><a class="source-toggle" href="#"
237
+ onclick="toggleCode('M000238-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000238-source">
239
+ <pre>
240
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 83</span>
241
+ 83: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">best</span>(<span class="ruby-identifier">count</span> = <span class="ruby-value">1</span>)
242
+ 84: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sort!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">changed?</span>
243
+ 85: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">changed</span> = <span class="ruby-keyword kw">false</span>
244
+ 86: <span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span>(<span class="ruby-identifier">count</span>).<span class="ruby-identifier">reverse</span>
245
+ 87: <span class="ruby-keyword kw">end</span>
246
+ </pre>
247
+ </div>
248
+
249
+ </div>
250
+ </div>
251
+
252
+
253
+ <div id="method-M000235" class="method-detail">
254
+ <a name="M000235"></a>
255
+
256
+ <div class="method-heading">
257
+
258
+ <a href="#M000235" class="method-signature">
259
+
260
+ <span class="method-name">deep_clone</span><span class="method-args">()</span>
261
+
262
+ </a>
263
+
264
+ </div>
265
+
266
+ <div class="method-description">
267
+
268
+ <p>
269
+ Returns a clone of the population (<a
270
+ href="Population.html#M000235">deep_clone</a>)
271
+ </p>
272
+
273
+ <p><a class="source-toggle" href="#"
274
+ onclick="toggleCode('M000235-source');return false;">[Source]</a></p>
275
+ <div class="method-source-code" id="M000235-source">
276
+ <pre>
277
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 46</span>
278
+ 46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
279
+ 47: <span class="ruby-identifier">my_clone</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clone</span>
280
+ 48: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">each_index</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span> <span class="ruby-identifier">my_clone</span>[<span class="ruby-identifier">index</span>] = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">index</span>].<span class="ruby-identifier">deep_clone</span> }
281
+ 49: <span class="ruby-identifier">my_clone</span>
282
+ 50: <span class="ruby-keyword kw">end</span>
283
+ </pre>
284
+ </div>
285
+
286
+ </div>
287
+ </div>
288
+
289
+
290
+ <div id="method-M000237" class="method-detail">
291
+ <a name="M000237"></a>
292
+
293
+ <div class="method-heading">
294
+
295
+ <a href="#M000237" class="method-signature">
296
+
297
+ <span class="method-name">remove</span><span class="method-args">(individual)</span>
298
+
299
+ </a>
300
+
301
+ </div>
302
+
303
+ <div class="method-description">
304
+
305
+ <p>
306
+ Removes a give individual (first occurence) from the population.
307
+ </p>
308
+
309
+ <p><a class="source-toggle" href="#"
310
+ onclick="toggleCode('M000237-source');return false;">[Source]</a></p>
311
+ <div class="method-source-code" id="M000237-source">
312
+ <pre>
313
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 60</span>
314
+ 60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove</span>(<span class="ruby-identifier">individual</span>)
315
+ 61: <span class="ruby-comment cmt"># FIXME: this is a rather ugly hack</span>
316
+ 62: <span class="ruby-comment cmt"># -&gt; should be replaced with a cool 1.9 function</span>
317
+ 63:
318
+ 64: <span class="ruby-identifier">found</span> = <span class="ruby-keyword kw">nil</span>
319
+ 65: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
320
+ 66: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">individual</span>
321
+ 67: <span class="ruby-identifier">found</span> = <span class="ruby-identifier">index</span>
322
+ 68: <span class="ruby-keyword kw">break</span>
323
+ 69: <span class="ruby-keyword kw">end</span>
324
+ 70: <span class="ruby-keyword kw">end</span>
325
+ 71:
326
+ 72: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-identifier">found</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">found</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>
327
+ 73: <span class="ruby-keyword kw">end</span>
328
+ </pre>
329
+ </div>
330
+
331
+ </div>
332
+ </div>
333
+
334
+
335
+ <div id="method-M000240" class="method-detail">
336
+ <a name="M000240"></a>
337
+
338
+ <div class="method-heading">
339
+
340
+ <a href="#M000240" class="method-signature">
341
+
342
+ <span class="method-name">to_s &rarr; string<br />
343
+ </span>
344
+
345
+ </a>
346
+
347
+ </div>
348
+
349
+ <div class="method-description">
350
+
351
+ <p>
352
+ Returns description of this individual
353
+ </p>
354
+ <pre>
355
+ p = Population.new
356
+ p.to_s #=&gt; &quot;Population &lt;size=0&gt;&quot;
357
+ </pre>
358
+
359
+ <p><a class="source-toggle" href="#"
360
+ onclick="toggleCode('M000240-source');return false;">[Source]</a></p>
361
+ <div class="method-source-code" id="M000240-source">
362
+ <pre>
363
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 110</span>
364
+ 110: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
365
+ 111: <span class="ruby-keyword kw">begin</span>
366
+ 112: <span class="ruby-node">&quot;Population &lt;size=#{self.size}, best.fitness=#{best.fitness}, worst.fitness=#{worst.fitness}&gt;&quot;</span>
367
+ 113: <span class="ruby-keyword kw">rescue</span>
368
+ 114: <span class="ruby-node">&quot;Population &lt;size=#{self.size}&gt;&quot;</span>
369
+ 115: <span class="ruby-keyword kw">end</span>
370
+ 116: <span class="ruby-keyword kw">end</span>
371
+ </pre>
372
+ </div>
373
+
374
+ </div>
375
+ </div>
376
+
377
+
378
+ <div id="method-M000239" class="method-detail">
379
+ <a name="M000239"></a>
380
+
381
+ <div class="method-heading">
382
+
383
+ <a href="#M000239" class="method-signature">
384
+
385
+ <span class="method-name">p = Population.new<br />
386
+ p.worst #=> Returns the worst individual<br />
387
+ p.worst(3) #=> Returns the 3 worst individuals<br />
388
+ </span>
389
+
390
+ </a>
391
+
392
+ </div>
393
+
394
+ <div class="method-description">
395
+
396
+ <p>
397
+ Returns the worst N individuals (by comparing with <=>) of the population.
398
+ </p>
399
+
400
+ <p><a class="source-toggle" href="#"
401
+ onclick="toggleCode('M000239-source');return false;">[Source]</a></p>
402
+ <div class="method-source-code" id="M000239-source">
403
+ <pre>
404
+ <span class="ruby-comment cmt"># File lib/evosynth/core/population.rb, line 96</span>
405
+ 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">worst</span>(<span class="ruby-identifier">count</span> = <span class="ruby-value">1</span>)
406
+ 97: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sort!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">changed?</span>
407
+ 98: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">changed</span> = <span class="ruby-keyword kw">false</span>
408
+ 99: <span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">count</span>).<span class="ruby-identifier">reverse</span>
409
+ 100: <span class="ruby-keyword kw">end</span>
410
+ </pre>
411
+ </div>
412
+
413
+ </div>
414
+ </div>
415
+
416
+
417
+
418
+ </div>
419
+
420
+
421
+
422
+
423
+ </div>
424
+
425
+ <div id="validator-badges">
426
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
427
+ </div>
428
+
429
+ </body>
430
+ </html>