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,159 @@
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>Module: EvoSynth::Problems [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>Module</strong></td>
49
+ <td class="class-name-in-header">EvoSynth::Problems</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/problems/graph_colouring_rb.html">
57
+
58
+ lib/evosynth/problems/graph_colouring.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+
66
+ <a href="../../files/lib/evosynth/problems/float_benchmark_functions_rb.html">
67
+
68
+ lib/evosynth/problems/float_benchmark_functions.rb
69
+
70
+ </a>
71
+
72
+
73
+ <br />
74
+
75
+
76
+ <a href="../../files/lib/evosynth/problems/tsp_rb.html">
77
+
78
+ lib/evosynth/problems/tsp.rb
79
+
80
+ </a>
81
+
82
+
83
+ <br />
84
+
85
+
86
+ <a href="../../files/lib/evosynth/problems/binary_benchmark_functions_rb.html">
87
+
88
+ lib/evosynth/problems/binary_benchmark_functions.rb
89
+
90
+ </a>
91
+
92
+
93
+ <br />
94
+
95
+
96
+ <a href="../../files/lib/evosynth/problems_rb.html">
97
+
98
+ lib/evosynth/problems.rb
99
+
100
+ </a>
101
+
102
+
103
+ <br />
104
+
105
+ </td>
106
+ </tr>
107
+
108
+
109
+ </table>
110
+ </div>
111
+ <!-- banner header -->
112
+
113
+ <div id="bodyContent">
114
+
115
+ <div id="contextContent">
116
+
117
+ <div id="description">
118
+ <p>
119
+ This module contains some predefined problems. Most of them are widely used
120
+ to benchmark or demonstrate Evolutionary Computation.
121
+ </p>
122
+
123
+ </div>
124
+
125
+ </div>
126
+
127
+
128
+ </div>
129
+
130
+ <!-- if includes -->
131
+
132
+ <div id="section">
133
+
134
+ <div id="class-list">
135
+ <h3 class="section-bar">Classes and Modules</h3>
136
+
137
+ Module <a href="Problems/BinaryBenchmarkFuntions.html" class="link">EvoSynth::Problems::BinaryBenchmarkFuntions</a><br />
138
+ Module <a href="Problems/FloatBenchmarkFuntions.html" class="link">EvoSynth::Problems::FloatBenchmarkFuntions</a><br />
139
+ Class <a href="Problems/GraphColouring.html" class="link">EvoSynth::Problems::GraphColouring</a><br />
140
+ Class <a href="Problems/TSP.html" class="link">EvoSynth::Problems::TSP</a><br />
141
+
142
+ </div>
143
+
144
+
145
+
146
+
147
+ <!-- if method_list -->
148
+
149
+
150
+
151
+
152
+ </div>
153
+
154
+ <div id="validator-badges">
155
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
156
+ </div>
157
+
158
+ </body>
159
+ </html>
@@ -0,0 +1,258 @@
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>Module: EvoSynth::Problems::BinaryBenchmarkFuntions [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>Module</strong></td>
49
+ <td class="class-name-in-header">EvoSynth::Problems::BinaryBenchmarkFuntions</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/problems/binary_benchmark_functions_rb.html">
57
+
58
+ lib/evosynth/problems/binary_benchmark_functions.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+ </td>
66
+ </tr>
67
+
68
+
69
+ </table>
70
+ </div>
71
+ <!-- banner header -->
72
+
73
+ <div id="bodyContent">
74
+
75
+ <div id="contextContent">
76
+
77
+ <div id="description">
78
+ <p>
79
+ This module contains some multi-dimensional Benchmarkfunctions. You simply
80
+ set the number of dimensions by the length of the given (boolean) array.
81
+ </p>
82
+
83
+ </div>
84
+
85
+ </div>
86
+
87
+
88
+ <div id="method-list">
89
+ <h3 class="section-bar">Methods</h3>
90
+
91
+ <div class="name-list">
92
+
93
+ <a href="#M000012">count_ones</a>&nbsp;&nbsp;
94
+
95
+ <a href="#M000014">n_peaks</a>&nbsp;&nbsp;
96
+
97
+ <a href="#M000013">royal_road</a>&nbsp;&nbsp;
98
+
99
+ </div>
100
+ </div>
101
+
102
+ </div>
103
+
104
+ <!-- if includes -->
105
+
106
+ <div id="section">
107
+
108
+
109
+
110
+
111
+ <!-- if method_list -->
112
+
113
+ <div id="methods">
114
+
115
+ <h3 class="section-bar">Public Class methods</h3>
116
+
117
+
118
+ <div id="method-M000012" class="method-detail">
119
+ <a name="M000012"></a>
120
+
121
+ <div class="method-heading">
122
+
123
+ <a href="#M000012" class="method-signature">
124
+
125
+ <span class="method-name">count_ones</span><span class="method-args">(bs)</span>
126
+
127
+ </a>
128
+
129
+ </div>
130
+
131
+ <div class="method-description">
132
+
133
+ <p>
134
+ count-ones function
135
+ </p>
136
+ <p>
137
+ global maximum at f(x) = x at x(i) = 1 (or true), i = 1..n
138
+ </p>
139
+
140
+ <p><a class="source-toggle" href="#"
141
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000012-source">
143
+ <pre>
144
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/binary_benchmark_functions.rb, line 37</span>
145
+ 37: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">BinaryBenchmarkFuntions</span>.<span class="ruby-identifier">count_ones</span>(<span class="ruby-identifier">bs</span>)
146
+ 38: <span class="ruby-identifier">bs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>) }
147
+ 39: <span class="ruby-keyword kw">end</span>
148
+ </pre>
149
+ </div>
150
+
151
+ </div>
152
+ </div>
153
+
154
+
155
+ <div id="method-M000014" class="method-detail">
156
+ <a name="M000014"></a>
157
+
158
+ <div class="method-heading">
159
+
160
+ <a href="#M000014" class="method-signature">
161
+
162
+ <span class="method-name">n_peaks</span><span class="method-args">(peaks, xs)</span>
163
+
164
+ </a>
165
+
166
+ </div>
167
+
168
+ <div class="method-description">
169
+
170
+ <p>
171
+ N-Peak problem presented in &#8220;Using Problem Generators to Explore the
172
+ Effects of Epistasis&#8221;, De Jong et al 1997
173
+ </p>
174
+ <p>
175
+ global maximum: f(x) = 1.0 when peak == xs (hamming distance is 0)
176
+ </p>
177
+
178
+ <p><a class="source-toggle" href="#"
179
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
180
+ <div class="method-source-code" id="M000014-source">
181
+ <pre>
182
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/binary_benchmark_functions.rb, line 60</span>
183
+ 60: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">BinaryBenchmarkFuntions</span>.<span class="ruby-identifier">n_peaks</span>(<span class="ruby-identifier">peaks</span>, <span class="ruby-identifier">xs</span>)
184
+ 61: <span class="ruby-identifier">max_hamming_dist</span> = <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span>
185
+ 62:
186
+ 63: <span class="ruby-identifier">peaks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">peak</span><span class="ruby-operator">|</span>
187
+ 64: <span class="ruby-identifier">new_dist</span> = <span class="ruby-value">0</span><span class="ruby-value">.0</span>
188
+ 65: <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">each_with_index</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span> <span class="ruby-identifier">new_dist</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">peak</span>[<span class="ruby-identifier">index</span>] }
189
+ 66: <span class="ruby-identifier">max_hamming_dist</span> = <span class="ruby-identifier">new_dist</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">new_dist</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">max_hamming_dist</span>
190
+ 67: <span class="ruby-keyword kw">end</span>
191
+ 68:
192
+ 69: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">*</span> (<span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">max_hamming_dist</span>)
193
+ 70: <span class="ruby-keyword kw">end</span>
194
+ </pre>
195
+ </div>
196
+
197
+ </div>
198
+ </div>
199
+
200
+
201
+ <div id="method-M000013" class="method-detail">
202
+ <a name="M000013"></a>
203
+
204
+ <div class="method-heading">
205
+
206
+ <a href="#M000013" class="method-signature">
207
+
208
+ <span class="method-name">royal_road</span><span class="method-args">(k, bs)</span>
209
+
210
+ </a>
211
+
212
+ </div>
213
+
214
+ <div class="method-description">
215
+
216
+ <p>
217
+ Royal-Road function (Mitchell et al 1992)
218
+ </p>
219
+ <p>
220
+ global minimum: f(x) = 0 at x(i) = 1, i = 1..n (bs.size % k == 0)
221
+ </p>
222
+
223
+ <p><a class="source-toggle" href="#"
224
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
225
+ <div class="method-source-code" id="M000013-source">
226
+ <pre>
227
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/binary_benchmark_functions.rb, line 45</span>
228
+ 45: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">BinaryBenchmarkFuntions</span>.<span class="ruby-identifier">royal_road</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">bs</span>)
229
+ 46: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">bs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">k</span>
230
+ 47: <span class="ruby-identifier">sum</span> = <span class="ruby-value">0</span>
231
+ 48:
232
+ 49: <span class="ruby-identifier">m</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
233
+ 50: <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">bs</span>[(<span class="ruby-identifier">i</span><span class="ruby-operator">*</span><span class="ruby-identifier">k</span>)<span class="ruby-operator">..</span>(<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">*</span><span class="ruby-identifier">k</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">inject</span>(<span class="ruby-value">1</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">res</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">res</span> = (<span class="ruby-identifier">b</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">res</span>) }
234
+ 51: <span class="ruby-keyword kw">end</span>
235
+ 52:
236
+ 53: <span class="ruby-identifier">sum</span>
237
+ 54: <span class="ruby-keyword kw">end</span>
238
+ </pre>
239
+ </div>
240
+
241
+ </div>
242
+ </div>
243
+
244
+
245
+
246
+ </div>
247
+
248
+
249
+
250
+
251
+ </div>
252
+
253
+ <div id="validator-badges">
254
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
255
+ </div>
256
+
257
+ </body>
258
+ </html>
@@ -0,0 +1,406 @@
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>Module: EvoSynth::Problems::FloatBenchmarkFuntions [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>Module</strong></td>
49
+ <td class="class-name-in-header">EvoSynth::Problems::FloatBenchmarkFuntions</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/problems/float_benchmark_functions_rb.html">
57
+
58
+ lib/evosynth/problems/float_benchmark_functions.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+ </td>
66
+ </tr>
67
+
68
+
69
+ </table>
70
+ </div>
71
+ <!-- banner header -->
72
+
73
+ <div id="bodyContent">
74
+
75
+ <div id="contextContent">
76
+
77
+ <div id="description">
78
+ <p>
79
+ This module contains some multi-dimensional Benchmarkfunctions. You simply
80
+ set the number of dimensions by the length of the given (Float) array.
81
+ </p>
82
+
83
+ </div>
84
+
85
+ </div>
86
+
87
+
88
+ <div id="method-list">
89
+ <h3 class="section-bar">Methods</h3>
90
+
91
+ <div class="name-list">
92
+
93
+ <a href="#M000010">ackley</a>&nbsp;&nbsp;
94
+
95
+ <a href="#M000006">double_sum</a>&nbsp;&nbsp;
96
+
97
+ <a href="#M000011">griewank</a>&nbsp;&nbsp;
98
+
99
+ <a href="#M000008">rastgrin</a>&nbsp;&nbsp;
100
+
101
+ <a href="#M000009">rosenbrock</a>&nbsp;&nbsp;
102
+
103
+ <a href="#M000005">sinus_sum</a>&nbsp;&nbsp;
104
+
105
+ <a href="#M000007">sphere</a>&nbsp;&nbsp;
106
+
107
+ </div>
108
+ </div>
109
+
110
+ </div>
111
+
112
+ <!-- if includes -->
113
+
114
+ <div id="section">
115
+
116
+
117
+
118
+
119
+ <!-- if method_list -->
120
+
121
+ <div id="methods">
122
+
123
+ <h3 class="section-bar">Public Class methods</h3>
124
+
125
+
126
+ <div id="method-M000010" class="method-detail">
127
+ <a name="M000010"></a>
128
+
129
+ <div class="method-heading">
130
+
131
+ <a href="#M000010" class="method-signature">
132
+
133
+ <span class="method-name">ackley</span><span class="method-args">(xs)</span>
134
+
135
+ </a>
136
+
137
+ </div>
138
+
139
+ <div class="method-description">
140
+
141
+ <p>
142
+ Ackley (Ackley 1987)
143
+ </p>
144
+ <p>
145
+ global minimum: f(x) = 0 at x(i) = 0, i = 1..n
146
+ </p>
147
+
148
+ <p><a class="source-toggle" href="#"
149
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
150
+ <div class="method-source-code" id="M000010-source">
151
+ <pre>
152
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 81</span>
153
+ 81: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">ackley</span>(<span class="ruby-identifier">xs</span>)
154
+ 82: <span class="ruby-identifier">quad_sum</span> = <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span><span class="ruby-operator">**</span><span class="ruby-value">2</span> }
155
+ 83: <span class="ruby-identifier">cos_sum</span> = <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">cos</span>(<span class="ruby-value">2</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span><span class="ruby-operator">::</span><span class="ruby-constant">PI</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">x</span>) }
156
+ 84: <span class="ruby-value">20</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Math</span><span class="ruby-operator">::</span><span class="ruby-constant">E</span> <span class="ruby-operator">-</span> <span class="ruby-value">20</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-value">-0</span><span class="ruby-value">.2</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">sqrt</span>( (<span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span>) <span class="ruby-operator">*</span> <span class="ruby-identifier">quad_sum</span> )) <span class="ruby-operator">-</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">exp</span>( (<span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span>) <span class="ruby-operator">*</span> <span class="ruby-identifier">cos_sum</span> )
157
+ 85: <span class="ruby-keyword kw">end</span>
158
+ </pre>
159
+ </div>
160
+
161
+ </div>
162
+ </div>
163
+
164
+
165
+ <div id="method-M000006" class="method-detail">
166
+ <a name="M000006"></a>
167
+
168
+ <div class="method-heading">
169
+
170
+ <a href="#M000006" class="method-signature">
171
+
172
+ <span class="method-name">double_sum</span><span class="method-args">(xs)</span>
173
+
174
+ </a>
175
+
176
+ </div>
177
+
178
+ <div class="method-description">
179
+
180
+ <p>
181
+ Double Sum function (Schwefel 1977)
182
+ </p>
183
+ <p>
184
+ global minimum: f(x) = 0 at x(i) = 0, i = 1..n
185
+ </p>
186
+
187
+ <p><a class="source-toggle" href="#"
188
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
189
+ <div class="method-source-code" id="M000006-source">
190
+ <pre>
191
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 45</span>
192
+ 45: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">double_sum</span>(<span class="ruby-identifier">xs</span>)
193
+ 46: <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
194
+ 47: <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">xs</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">i</span>].<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span> }
195
+ 48: <span class="ruby-keyword kw">end</span>
196
+ 49: <span class="ruby-keyword kw">end</span>
197
+ </pre>
198
+ </div>
199
+
200
+ </div>
201
+ </div>
202
+
203
+
204
+ <div id="method-M000011" class="method-detail">
205
+ <a name="M000011"></a>
206
+
207
+ <div class="method-heading">
208
+
209
+ <a href="#M000011" class="method-signature">
210
+
211
+ <span class="method-name">griewank</span><span class="method-args">(xs)</span>
212
+
213
+ </a>
214
+
215
+ </div>
216
+
217
+ <div class="method-description">
218
+
219
+ <p>
220
+ Griewank (Törn &amp; Zilinskas 1989)
221
+ </p>
222
+ <p>
223
+ global minimum: f(x) = 0 at x(i) = 0, i = 1..n
224
+ </p>
225
+
226
+ <p><a class="source-toggle" href="#"
227
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
228
+ <div class="method-source-code" id="M000011-source">
229
+ <pre>
230
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 91</span>
231
+ 91: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">griewank</span>(<span class="ruby-identifier">xs</span>)
232
+ 92: <span class="ruby-identifier">product</span> = <span class="ruby-value">1.0</span>
233
+ 93: <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">each_with_index</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">product</span> <span class="ruby-operator">*=</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">cos</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">sqrt</span>(<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>) }
234
+ 94: <span class="ruby-value">1</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span><span class="ruby-operator">**</span><span class="ruby-value">2</span> <span class="ruby-operator">/</span> (<span class="ruby-value">400</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span>) } <span class="ruby-operator">-</span> <span class="ruby-identifier">product</span>
235
+ 95: <span class="ruby-keyword kw">end</span>
236
+ </pre>
237
+ </div>
238
+
239
+ </div>
240
+ </div>
241
+
242
+
243
+ <div id="method-M000008" class="method-detail">
244
+ <a name="M000008"></a>
245
+
246
+ <div class="method-heading">
247
+
248
+ <a href="#M000008" class="method-signature">
249
+
250
+ <span class="method-name">rastgrin</span><span class="method-args">(xs)</span>
251
+
252
+ </a>
253
+
254
+ </div>
255
+
256
+ <div class="method-description">
257
+
258
+ <p>
259
+ Rastgrin (Törn &amp; Zilinskas 1989)
260
+ </p>
261
+ <p>
262
+ global minimum: f(x) = 0 at x(i) = 0, i = 1..n
263
+ </p>
264
+
265
+ <p><a class="source-toggle" href="#"
266
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
267
+ <div class="method-source-code" id="M000008-source">
268
+ <pre>
269
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 63</span>
270
+ 63: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">rastgrin</span>(<span class="ruby-identifier">xs</span>)
271
+ 64: <span class="ruby-value">10</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span><span class="ruby-operator">**</span><span class="ruby-value">2</span> <span class="ruby-operator">-</span> <span class="ruby-value">10</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">cos</span>(<span class="ruby-value">2</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span><span class="ruby-operator">::</span><span class="ruby-constant">PI</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">x</span>) }
272
+ 65: <span class="ruby-keyword kw">end</span>
273
+ </pre>
274
+ </div>
275
+
276
+ </div>
277
+ </div>
278
+
279
+
280
+ <div id="method-M000009" class="method-detail">
281
+ <a name="M000009"></a>
282
+
283
+ <div class="method-heading">
284
+
285
+ <a href="#M000009" class="method-signature">
286
+
287
+ <span class="method-name">rosenbrock</span><span class="method-args">(xs)</span>
288
+
289
+ </a>
290
+
291
+ </div>
292
+
293
+ <div class="method-description">
294
+
295
+ <p>
296
+ Rosenbrock (De Jong 1975)
297
+ </p>
298
+ <p>
299
+ global minimum: f(x) = 0 at x(i) = 1, i = 1..n
300
+ </p>
301
+
302
+ <p><a class="source-toggle" href="#"
303
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
304
+ <div class="method-source-code" id="M000009-source">
305
+ <pre>
306
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 71</span>
307
+ 71: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">rosenbrock</span>(<span class="ruby-identifier">xs</span>)
308
+ 72: (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">2</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
309
+ 73: <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">100</span> <span class="ruby-operator">*</span> (<span class="ruby-identifier">xs</span>[<span class="ruby-identifier">i</span>]<span class="ruby-operator">**</span><span class="ruby-value">2</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xs</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>])<span class="ruby-operator">**</span><span class="ruby-value">2</span> <span class="ruby-operator">+</span> (<span class="ruby-value">1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xs</span>[<span class="ruby-identifier">i</span>])<span class="ruby-operator">**</span><span class="ruby-value">2</span>
310
+ 74: <span class="ruby-keyword kw">end</span>
311
+ 75: <span class="ruby-keyword kw">end</span>
312
+ </pre>
313
+ </div>
314
+
315
+ </div>
316
+ </div>
317
+
318
+
319
+ <div id="method-M000005" class="method-detail">
320
+ <a name="M000005"></a>
321
+
322
+ <div class="method-heading">
323
+
324
+ <a href="#M000005" class="method-signature">
325
+
326
+ <span class="method-name">sinus_sum</span><span class="method-args">(xs)</span>
327
+
328
+ </a>
329
+
330
+ </div>
331
+
332
+ <div class="method-description">
333
+
334
+ <p>
335
+ Sinus Sum function (Schwefel 1995)
336
+ </p>
337
+ <p>
338
+ global minimum: f(x) = 0 at x(i) = 420.9687, i = 1..n
339
+ </p>
340
+
341
+ <p><a class="source-toggle" href="#"
342
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
343
+ <div class="method-source-code" id="M000005-source">
344
+ <pre>
345
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 37</span>
346
+ 37: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">sinus_sum</span>(<span class="ruby-identifier">xs</span>)
347
+ 38: <span class="ruby-value">418.98289</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-operator">-</span><span class="ruby-identifier">x</span> <span class="ruby-operator">*</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">sin</span>(<span class="ruby-constant">Math</span>.<span class="ruby-identifier">sqrt</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>)) }
348
+ 39: <span class="ruby-keyword kw">end</span>
349
+ </pre>
350
+ </div>
351
+
352
+ </div>
353
+ </div>
354
+
355
+
356
+ <div id="method-M000007" class="method-detail">
357
+ <a name="M000007"></a>
358
+
359
+ <div class="method-heading">
360
+
361
+ <a href="#M000007" class="method-signature">
362
+
363
+ <span class="method-name">sphere</span><span class="method-args">(xs)</span>
364
+
365
+ </a>
366
+
367
+ </div>
368
+
369
+ <div class="method-description">
370
+
371
+ <p>
372
+ Sphere function (Rechenberg 1973 and De Jong 1975)
373
+ </p>
374
+ <p>
375
+ global minimum: f(x) = 0 at x(i) = 0, i = 1..n
376
+ </p>
377
+
378
+ <p><a class="source-toggle" href="#"
379
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
380
+ <div class="method-source-code" id="M000007-source">
381
+ <pre>
382
+ <span class="ruby-comment cmt"># File lib/evosynth/problems/float_benchmark_functions.rb, line 55</span>
383
+ 55: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">FloatBenchmarkFuntions</span>.<span class="ruby-identifier">sphere</span>(<span class="ruby-identifier">xs</span>)
384
+ 56: <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span><span class="ruby-value">.0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span><span class="ruby-operator">**</span><span class="ruby-value">2</span> }
385
+ 57: <span class="ruby-keyword kw">end</span>
386
+ </pre>
387
+ </div>
388
+
389
+ </div>
390
+ </div>
391
+
392
+
393
+
394
+ </div>
395
+
396
+
397
+
398
+
399
+ </div>
400
+
401
+ <div id="validator-badges">
402
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
403
+ </div>
404
+
405
+ </body>
406
+ </html>