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,313 @@
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::ArrayGenome [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::ArrayGenome</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/array_genome_rb.html">
57
+
58
+ lib/evosynth/core/array_genome.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
+ Array
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
+ Array based genome which keeps track of changes (changed attribute) to
89
+ reduce the need to recalculate the fitness function (see <a
90
+ href="Evaluator.html">Evaluator</a>)
91
+ </p>
92
+ <p>
93
+ This genome can contain any type of genes.
94
+ </p>
95
+ <p>
96
+ TODO: complete documentation
97
+ </p>
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="#M000230">changed=</a>&nbsp;&nbsp;
110
+
111
+ <a href="#M000231">changed?</a>&nbsp;&nbsp;
112
+
113
+ <a href="#M000233">clone</a>&nbsp;&nbsp;
114
+
115
+ <a href="#M000232">to_s</a>&nbsp;&nbsp;
116
+
117
+ </div>
118
+ </div>
119
+
120
+ </div>
121
+
122
+ <!-- if includes -->
123
+
124
+ <div id="section">
125
+
126
+ <div id="constants-list">
127
+ <h3 class="section-bar">Constants</h3>
128
+
129
+ <div class="name-list">
130
+ <table summary="Constants">
131
+
132
+ <tr class="top-aligned-row context-row">
133
+ <td class="context-item-name">METHODS_THAT_CHANGE_ARRAY</td>
134
+ <td>=</td>
135
+ <td class="context-item-value">['initialize', '[]=', 'delete', 'delete_at', 'collect!', 'map!', '&lt;&lt;', 'reject!', 'uniq!', 'unshift', 'shift', 'sort!', 'pop', 'push', 'flatten!', 'reverse!', 'slice!', 'clear']</td>
136
+
137
+ <td>&nbsp;</td>
138
+ <td class="context-item-desc">
139
+ see <a
140
+ href="http://ruby-doc.org/doxygen/1.8.4/group__ruby__ary.html#ga9">ruby-doc.org/doxygen/1.8.4/group__ruby__ary.html#ga9</a>
141
+ see rb_ary_store and rb_ary_modify
142
+
143
+ </td>
144
+
145
+ </tr>
146
+
147
+ </table>
148
+ </div>
149
+ </div>
150
+
151
+
152
+
153
+
154
+ <!-- if method_list -->
155
+
156
+ <div id="methods">
157
+
158
+ <h3 class="section-bar">Public Instance methods</h3>
159
+
160
+
161
+ <div id="method-M000230" class="method-detail">
162
+ <a name="M000230"></a>
163
+
164
+ <div class="method-heading">
165
+
166
+ <a href="#M000230" class="method-signature">
167
+
168
+ <span class="method-name">changed=</span><span class="method-args">(value)</span>
169
+
170
+ </a>
171
+
172
+ </div>
173
+
174
+ <div class="method-description">
175
+
176
+ <p>
177
+ Set the changed flag (boolean) of the genome
178
+ </p>
179
+
180
+ <p><a class="source-toggle" href="#"
181
+ onclick="toggleCode('M000230-source');return false;">[Source]</a></p>
182
+ <div class="method-source-code" id="M000230-source">
183
+ <pre>
184
+ <span class="ruby-comment cmt"># File lib/evosynth/core/array_genome.rb, line 38</span>
185
+ 38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">changed=</span>(<span class="ruby-identifier">value</span>)
186
+ 39: <span class="ruby-ivar">@changed</span> = <span class="ruby-identifier">value</span>
187
+ 40: <span class="ruby-keyword kw">end</span>
188
+ </pre>
189
+ </div>
190
+
191
+ </div>
192
+ </div>
193
+
194
+
195
+ <div id="method-M000231" class="method-detail">
196
+ <a name="M000231"></a>
197
+
198
+ <div class="method-heading">
199
+
200
+ <a href="#M000231" class="method-signature">
201
+
202
+ <span class="method-name">changed?</span><span class="method-args">()</span>
203
+
204
+ </a>
205
+
206
+ </div>
207
+
208
+ <div class="method-description">
209
+
210
+ <p>
211
+ True if the genome has changed, false otherwise. Has to be set to false
212
+ manually.
213
+ </p>
214
+
215
+ <p><a class="source-toggle" href="#"
216
+ onclick="toggleCode('M000231-source');return false;">[Source]</a></p>
217
+ <div class="method-source-code" id="M000231-source">
218
+ <pre>
219
+ <span class="ruby-comment cmt"># File lib/evosynth/core/array_genome.rb, line 44</span>
220
+ 44: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">changed?</span>
221
+ 45: <span class="ruby-ivar">@changed</span>
222
+ 46: <span class="ruby-keyword kw">end</span>
223
+ </pre>
224
+ </div>
225
+
226
+ </div>
227
+ </div>
228
+
229
+
230
+ <div id="method-M000233" class="method-detail">
231
+ <a name="M000233"></a>
232
+
233
+ <div class="method-heading">
234
+
235
+ <a href="#M000233" class="method-signature">
236
+
237
+ <span class="method-name">clone</span><span class="method-args">()</span>
238
+
239
+ </a>
240
+
241
+ </div>
242
+
243
+ <div class="method-description">
244
+
245
+ <p>
246
+ Returns a clone of this genome
247
+ </p>
248
+
249
+ <p><a class="source-toggle" href="#"
250
+ onclick="toggleCode('M000233-source');return false;">[Source]</a></p>
251
+ <div class="method-source-code" id="M000233-source">
252
+ <pre>
253
+ <span class="ruby-comment cmt"># File lib/evosynth/core/array_genome.rb, line 56</span>
254
+ 56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clone</span>
255
+ 57: <span class="ruby-identifier">my_clone</span> = <span class="ruby-keyword kw">super</span>
256
+ 58: <span class="ruby-identifier">my_clone</span>.<span class="ruby-identifier">changed</span> = <span class="ruby-keyword kw">false</span>
257
+ 59: <span class="ruby-identifier">my_clone</span>
258
+ 60: <span class="ruby-keyword kw">end</span>
259
+ </pre>
260
+ </div>
261
+
262
+ </div>
263
+ </div>
264
+
265
+
266
+ <div id="method-M000232" class="method-detail">
267
+ <a name="M000232"></a>
268
+
269
+ <div class="method-heading">
270
+
271
+ <a href="#M000232" class="method-signature">
272
+
273
+ <span class="method-name">to_s</span><span class="method-args">()</span>
274
+
275
+ </a>
276
+
277
+ </div>
278
+
279
+ <div class="method-description">
280
+
281
+ <p>
282
+ Return a printable version of this genome.
283
+ </p>
284
+
285
+ <p><a class="source-toggle" href="#"
286
+ onclick="toggleCode('M000232-source');return false;">[Source]</a></p>
287
+ <div class="method-source-code" id="M000232-source">
288
+ <pre>
289
+ <span class="ruby-comment cmt"># File lib/evosynth/core/array_genome.rb, line 50</span>
290
+ 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
291
+ 51: <span class="ruby-keyword kw">self</span> <span class="ruby-operator">*</span> <span class="ruby-value str">&quot;, &quot;</span>
292
+ 52: <span class="ruby-keyword kw">end</span>
293
+ </pre>
294
+ </div>
295
+
296
+ </div>
297
+ </div>
298
+
299
+
300
+
301
+ </div>
302
+
303
+
304
+
305
+
306
+ </div>
307
+
308
+ <div id="validator-badges">
309
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
310
+ </div>
311
+
312
+ </body>
313
+ </html>
@@ -0,0 +1,518 @@
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::BinaryGenome [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::BinaryGenome</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/binary_genome_rb.html">
57
+
58
+ lib/evosynth/core/binary_genome.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
+ Array
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
+ Binary genome which keeps track of changes (changed attribute) to reduce
89
+ the need to recalculate the fitness function (see <a
90
+ href="Evaluator.html">Evaluator</a>)
91
+ </p>
92
+ <p>
93
+ This genome is a simple bitstring and each gene is a boolean.
94
+ </p>
95
+ <p>
96
+ FIXME: implment in C for better performance - right now its pretty useless
97
+ TODO: complete documentation
98
+ </p>
99
+
100
+ </div>
101
+
102
+ </div>
103
+
104
+
105
+ <div id="method-list">
106
+ <h3 class="section-bar">Methods</h3>
107
+
108
+ <div class="name-list">
109
+
110
+ <a href="#M000248">[]</a>&nbsp;&nbsp;
111
+
112
+ <a href="#M000249">[]=</a>&nbsp;&nbsp;
113
+
114
+ <a href="#M000245">changed=</a>&nbsp;&nbsp;
115
+
116
+ <a href="#M000246">changed?</a>&nbsp;&nbsp;
117
+
118
+ <a href="#M000247">clone</a>&nbsp;&nbsp;
119
+
120
+ <a href="#M000250">flip!</a>&nbsp;&nbsp;
121
+
122
+ <a href="#M000244">new</a>&nbsp;&nbsp;
123
+
124
+ <a href="#M000251">size</a>&nbsp;&nbsp;
125
+
126
+ <a href="#M000252">to_s</a>&nbsp;&nbsp;
127
+
128
+ </div>
129
+ </div>
130
+
131
+ </div>
132
+
133
+ <!-- if includes -->
134
+
135
+ <div id="section">
136
+
137
+
138
+
139
+
140
+ <!-- if method_list -->
141
+
142
+ <div id="methods">
143
+
144
+ <h3 class="section-bar">Public Class methods</h3>
145
+
146
+
147
+ <div id="method-M000244" class="method-detail">
148
+ <a name="M000244"></a>
149
+
150
+ <div class="method-heading">
151
+
152
+ <a href="#M000244" class="method-signature">
153
+
154
+ <span class="method-name">new</span><span class="method-args">(intial_value = 0)</span>
155
+
156
+ </a>
157
+
158
+ </div>
159
+
160
+ <div class="method-description">
161
+
162
+ <p>
163
+ Creates a <a href="BinaryGenome.html">BinaryGenome</a> with a given initial
164
+ (Integer) value. Default constructs a new <a
165
+ href="BinaryGenome.html">BinaryGenome</a> with the initial value of 0.
166
+ </p>
167
+
168
+ <p><a class="source-toggle" href="#"
169
+ onclick="toggleCode('M000244-source');return false;">[Source]</a></p>
170
+ <div class="method-source-code" id="M000244-source">
171
+ <pre>
172
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 40</span>
173
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">intial_value</span> = <span class="ruby-value">0</span>)
174
+ 41: <span class="ruby-ivar">@data</span> = <span class="ruby-identifier">intial_value</span>
175
+ 42: <span class="ruby-ivar">@changed</span> = <span class="ruby-keyword kw">true</span>
176
+ 43: <span class="ruby-keyword kw">end</span>
177
+ </pre>
178
+ </div>
179
+
180
+ </div>
181
+ </div>
182
+
183
+
184
+ <h3 class="section-bar">Public Instance methods</h3>
185
+
186
+
187
+ <div id="method-M000248" class="method-detail">
188
+ <a name="M000248"></a>
189
+
190
+ <div class="method-heading">
191
+
192
+ <a href="#M000248" class="method-signature">
193
+
194
+ <span class="method-name">[]</span><span class="method-args">(*args)</span>
195
+
196
+ </a>
197
+
198
+ </div>
199
+
200
+ <div class="method-description">
201
+
202
+ <p>
203
+ Array like index accessor
204
+ </p>
205
+ <p>
206
+ [index] [index, length] [range]
207
+ </p>
208
+
209
+ <p><a class="source-toggle" href="#"
210
+ onclick="toggleCode('M000248-source');return false;">[Source]</a></p>
211
+ <div class="method-source-code" id="M000248-source">
212
+ <pre>
213
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 71</span>
214
+ 71: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
215
+ 72: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
216
+ 73:
217
+ 74: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
218
+ 75: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Numeric</span>
219
+ 76: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]]
220
+ 77: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Range</span>
221
+ 78: <span class="ruby-identifier">get_sub_range</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
222
+ 79: <span class="ruby-keyword kw">else</span>
223
+ 80: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;argument should be either index or range&quot;</span>
224
+ 81: <span class="ruby-keyword kw">end</span>
225
+ 82:
226
+ 83: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">2</span>
227
+ 84: <span class="ruby-identifier">get_sub_range</span> <span class="ruby-constant">Range</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
228
+ 85: <span class="ruby-keyword kw">else</span>
229
+ 86: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;wrong number of arguments&quot;</span>
230
+ 87: <span class="ruby-keyword kw">end</span>
231
+ 88: <span class="ruby-keyword kw">end</span>
232
+ </pre>
233
+ </div>
234
+
235
+ </div>
236
+ </div>
237
+
238
+
239
+ <div id="method-M000249" class="method-detail">
240
+ <a name="M000249"></a>
241
+
242
+ <div class="method-heading">
243
+
244
+ <a href="#M000249" class="method-signature">
245
+
246
+ <span class="method-name">[]=</span><span class="method-args">(*args)</span>
247
+
248
+ </a>
249
+
250
+ </div>
251
+
252
+ <div class="method-description">
253
+
254
+ <p>
255
+ Array like index accessor
256
+ </p>
257
+
258
+ <p><a class="source-toggle" href="#"
259
+ onclick="toggleCode('M000249-source');return false;">[Source]</a></p>
260
+ <div class="method-source-code" id="M000249-source">
261
+ <pre>
262
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 92</span>
263
+ 92: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
264
+ 93: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">2</span>
265
+ 94:
266
+ 95: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
267
+ 96: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Numeric</span>
268
+ 97: <span class="ruby-identifier">set_gene</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
269
+ 98: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Range</span>
270
+ 99: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]
271
+ 100: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Numeric</span>
272
+ 101: <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span> <span class="ruby-identifier">set_gene</span>(<span class="ruby-identifier">index</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]) }
273
+ 102: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
274
+ 103: <span class="ruby-identifier">offset</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">begin</span>
275
+ 104: <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span> <span class="ruby-identifier">set_gene</span>(<span class="ruby-identifier">index</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>][<span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">offset</span>]) }
276
+ 105: <span class="ruby-keyword kw">else</span>
277
+ 106: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;argument (1) should be either index or range&quot;</span>
278
+ 107: <span class="ruby-keyword kw">end</span>
279
+ 108:
280
+ 109: <span class="ruby-keyword kw">else</span>
281
+ 110: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;argument (0) should be either index or range&quot;</span>
282
+ 111: <span class="ruby-keyword kw">end</span>
283
+ 112:
284
+ 113: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">3</span>
285
+ 114: <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">times</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">offset</span><span class="ruby-operator">|</span> <span class="ruby-identifier">set_gene</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">offset</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>]) }
286
+ 115: <span class="ruby-keyword kw">else</span>
287
+ 116: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;wrong number of arguments&quot;</span>
288
+ 117: <span class="ruby-keyword kw">end</span>
289
+ 118: <span class="ruby-keyword kw">end</span>
290
+ </pre>
291
+ </div>
292
+
293
+ </div>
294
+ </div>
295
+
296
+
297
+ <div id="method-M000245" class="method-detail">
298
+ <a name="M000245"></a>
299
+
300
+ <div class="method-heading">
301
+
302
+ <a href="#M000245" class="method-signature">
303
+
304
+ <span class="method-name">changed=</span><span class="method-args">(value)</span>
305
+
306
+ </a>
307
+
308
+ </div>
309
+
310
+ <div class="method-description">
311
+
312
+ <p>
313
+ Set the changed flag (boolean) of the genome
314
+ </p>
315
+
316
+ <p><a class="source-toggle" href="#"
317
+ onclick="toggleCode('M000245-source');return false;">[Source]</a></p>
318
+ <div class="method-source-code" id="M000245-source">
319
+ <pre>
320
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 47</span>
321
+ 47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">changed=</span>(<span class="ruby-identifier">value</span>)
322
+ 48: <span class="ruby-ivar">@changed</span> = <span class="ruby-identifier">value</span>
323
+ 49: <span class="ruby-keyword kw">end</span>
324
+ </pre>
325
+ </div>
326
+
327
+ </div>
328
+ </div>
329
+
330
+
331
+ <div id="method-M000246" class="method-detail">
332
+ <a name="M000246"></a>
333
+
334
+ <div class="method-heading">
335
+
336
+ <a href="#M000246" class="method-signature">
337
+
338
+ <span class="method-name">changed?</span><span class="method-args">()</span>
339
+
340
+ </a>
341
+
342
+ </div>
343
+
344
+ <div class="method-description">
345
+
346
+ <p>
347
+ True if the genome has changed, false otherwise. Has to be set to false
348
+ manually.
349
+ </p>
350
+
351
+ <p><a class="source-toggle" href="#"
352
+ onclick="toggleCode('M000246-source');return false;">[Source]</a></p>
353
+ <div class="method-source-code" id="M000246-source">
354
+ <pre>
355
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 53</span>
356
+ 53: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">changed?</span>
357
+ 54: <span class="ruby-ivar">@changed</span>
358
+ 55: <span class="ruby-keyword kw">end</span>
359
+ </pre>
360
+ </div>
361
+
362
+ </div>
363
+ </div>
364
+
365
+
366
+ <div id="method-M000247" class="method-detail">
367
+ <a name="M000247"></a>
368
+
369
+ <div class="method-heading">
370
+
371
+ <a href="#M000247" class="method-signature">
372
+
373
+ <span class="method-name">clone</span><span class="method-args">()</span>
374
+
375
+ </a>
376
+
377
+ </div>
378
+
379
+ <div class="method-description">
380
+
381
+ <p>
382
+ Returns a clone of this genome
383
+ </p>
384
+
385
+ <p><a class="source-toggle" href="#"
386
+ onclick="toggleCode('M000247-source');return false;">[Source]</a></p>
387
+ <div class="method-source-code" id="M000247-source">
388
+ <pre>
389
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 59</span>
390
+ 59: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clone</span>
391
+ 60: <span class="ruby-identifier">my_clone</span> = <span class="ruby-constant">BinaryGenome</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@data</span>)
392
+ 61: <span class="ruby-identifier">my_clone</span>.<span class="ruby-identifier">changed</span> = <span class="ruby-keyword kw">false</span>
393
+ 62: <span class="ruby-identifier">my_clone</span>
394
+ 63: <span class="ruby-keyword kw">end</span>
395
+ </pre>
396
+ </div>
397
+
398
+ </div>
399
+ </div>
400
+
401
+
402
+ <div id="method-M000250" class="method-detail">
403
+ <a name="M000250"></a>
404
+
405
+ <div class="method-heading">
406
+
407
+ <a href="#M000250" class="method-signature">
408
+
409
+ <span class="method-name">flip!</span><span class="method-args">(index)</span>
410
+
411
+ </a>
412
+
413
+ </div>
414
+
415
+ <div class="method-description">
416
+
417
+ <p>
418
+ Flips (inverts) the gene at the given index
419
+ </p>
420
+
421
+ <p><a class="source-toggle" href="#"
422
+ onclick="toggleCode('M000250-source');return false;">[Source]</a></p>
423
+ <div class="method-source-code" id="M000250-source">
424
+ <pre>
425
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 122</span>
426
+ 122: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">flip!</span>(<span class="ruby-identifier">index</span>)
427
+ 123: <span class="ruby-ivar">@data</span> = <span class="ruby-ivar">@data</span> <span class="ruby-operator">^</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">index</span>)
428
+ 124: <span class="ruby-keyword kw">end</span>
429
+ </pre>
430
+ </div>
431
+
432
+ </div>
433
+ </div>
434
+
435
+
436
+ <div id="method-M000251" class="method-detail">
437
+ <a name="M000251"></a>
438
+
439
+ <div class="method-heading">
440
+
441
+ <a href="#M000251" class="method-signature">
442
+
443
+ <span class="method-name">size</span><span class="method-args">()</span>
444
+
445
+ </a>
446
+
447
+ </div>
448
+
449
+ <div class="method-description">
450
+
451
+ <p>
452
+ Returns the size (in bits) of this genome.
453
+ </p>
454
+
455
+ <p><a class="source-toggle" href="#"
456
+ onclick="toggleCode('M000251-source');return false;">[Source]</a></p>
457
+ <div class="method-source-code" id="M000251-source">
458
+ <pre>
459
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 128</span>
460
+ 128: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">size</span>
461
+ 129: <span class="ruby-ivar">@size</span> = <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">size</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span> <span class="ruby-ivar">@size</span>
462
+ 130: <span class="ruby-ivar">@size</span>
463
+ 131: <span class="ruby-keyword kw">end</span>
464
+ </pre>
465
+ </div>
466
+
467
+ </div>
468
+ </div>
469
+
470
+
471
+ <div id="method-M000252" class="method-detail">
472
+ <a name="M000252"></a>
473
+
474
+ <div class="method-heading">
475
+
476
+ <a href="#M000252" class="method-signature">
477
+
478
+ <span class="method-name">to_s</span><span class="method-args">()</span>
479
+
480
+ </a>
481
+
482
+ </div>
483
+
484
+ <div class="method-description">
485
+
486
+ <p>
487
+ Return a printable version of the genome
488
+ </p>
489
+
490
+ <p><a class="source-toggle" href="#"
491
+ onclick="toggleCode('M000252-source');return false;">[Source]</a></p>
492
+ <div class="method-source-code" id="M000252-source">
493
+ <pre>
494
+ <span class="ruby-comment cmt"># File lib/evosynth/core/binary_genome.rb, line 135</span>
495
+ 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
496
+ 136: <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value">2</span>)
497
+ 137: <span class="ruby-keyword kw">end</span>
498
+ </pre>
499
+ </div>
500
+
501
+ </div>
502
+ </div>
503
+
504
+
505
+
506
+ </div>
507
+
508
+
509
+
510
+
511
+ </div>
512
+
513
+ <div id="validator-badges">
514
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
515
+ </div>
516
+
517
+ </body>
518
+ </html>