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.
- data/INSTALL +74 -0
- data/LICENSE +22 -0
- data/README +57 -0
- data/Rakefile +132 -0
- data/TODO +88 -0
- data/docs/FEATURES +111 -0
- data/docs/rdoc/classes/EvoSynth.html +2643 -0
- data/docs/rdoc/classes/EvoSynth/Adjustments.html +119 -0
- data/docs/rdoc/classes/EvoSynth/Adjustments/AdaptiveAdjustment.html +264 -0
- data/docs/rdoc/classes/EvoSynth/Adjustments/PredifinedAdjustment.html +235 -0
- data/docs/rdoc/classes/EvoSynth/ArrayGenome.html +313 -0
- data/docs/rdoc/classes/EvoSynth/BinaryGenome.html +518 -0
- data/docs/rdoc/classes/EvoSynth/Decoder.html +286 -0
- data/docs/rdoc/classes/EvoSynth/Evaluator.html +466 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers.html +469 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/AdaptiveES.html +448 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/BalancedCoevolutionary.html +439 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/DerandomizedES.html +450 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/Evolver.html +125 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/GeneticAlgorithm.html +467 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/Hillclimber.html +343 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch.html +422 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/GreatDelugeAcceptance.html +287 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/HillclimberAcceptance.html +197 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/RecordToRecordTravelAcceptance.html +296 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/SimulatedAnnealingAcceptance.html +286 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/LocalSearch/ThresholdAcceptance.html +287 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/MemeticAlgorithm.html +441 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/PopulationHillclimber.html +375 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/ProfileUsingEvolver.html +205 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/RoundRobinCoevolutionary.html +383 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/RunnableEvolver.html +279 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/RunnableEvolver/Goal.html +193 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/SelfAdaptiveES.html +394 -0
- data/docs/rdoc/classes/EvoSynth/Evolvers/SteadyStateGA.html +390 -0
- data/docs/rdoc/classes/EvoSynth/GlobalRecombinations.html +119 -0
- data/docs/rdoc/classes/EvoSynth/GlobalRecombinations/GlobalArithmeticCrossover.html +204 -0
- data/docs/rdoc/classes/EvoSynth/GlobalRecombinations/GlobalUniformCrossover.html +203 -0
- data/docs/rdoc/classes/EvoSynth/Individual.html +561 -0
- data/docs/rdoc/classes/EvoSynth/MaximizingIndividual.html +266 -0
- data/docs/rdoc/classes/EvoSynth/MetaOperators.html +149 -0
- data/docs/rdoc/classes/EvoSynth/MetaOperators/ConditionalCombinedOperator.html +278 -0
- data/docs/rdoc/classes/EvoSynth/MetaOperators/ProportionalCombinedOperator.html +285 -0
- data/docs/rdoc/classes/EvoSynth/MetaOperators/SequentialCombinedOperator.html +290 -0
- data/docs/rdoc/classes/EvoSynth/MinimizingIndividual.html +266 -0
- data/docs/rdoc/classes/EvoSynth/Mutations.html +251 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/BinaryMutation.html +336 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/EfficientBinaryMutation.html +345 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/ExchangeMutation.html +320 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/Functions.html +160 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/GaussMutation.html +311 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/Identity.html +220 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/InversionMutation.html +231 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/MixingMutation.html +233 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/OneGeneFlipping.html +295 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/SelfAdaptiveGaussMutation.html +347 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/ShiftingMutation.html +229 -0
- data/docs/rdoc/classes/EvoSynth/Mutations/UniformRealMutation.html +264 -0
- data/docs/rdoc/classes/EvoSynth/Output.html +212 -0
- data/docs/rdoc/classes/EvoSynth/Output/CSVExporter.html +211 -0
- data/docs/rdoc/classes/EvoSynth/Output/ConsoleWriter.html +194 -0
- data/docs/rdoc/classes/EvoSynth/Output/GnuPlotExporter.html +235 -0
- data/docs/rdoc/classes/EvoSynth/Output/GruffExporter.html +219 -0
- data/docs/rdoc/classes/EvoSynth/Output/Logger.html +345 -0
- data/docs/rdoc/classes/EvoSynth/Population.html +430 -0
- data/docs/rdoc/classes/EvoSynth/Problems.html +159 -0
- data/docs/rdoc/classes/EvoSynth/Problems/BinaryBenchmarkFuntions.html +258 -0
- data/docs/rdoc/classes/EvoSynth/Problems/FloatBenchmarkFuntions.html +406 -0
- data/docs/rdoc/classes/EvoSynth/Problems/GraphColouring.html +265 -0
- data/docs/rdoc/classes/EvoSynth/Problems/TSP.html +327 -0
- data/docs/rdoc/classes/EvoSynth/Profile.html +324 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations.html +251 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/ArithmeticCrossover.html +286 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/EdgeRecombination.html +203 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/Identity.html +192 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/KPointCrossover.html +286 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/OnePointCrossover.html +211 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/OrderedRecombination.html +206 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/PartiallyMappedCrossover.html +206 -0
- data/docs/rdoc/classes/EvoSynth/Recombinations/UniformCrossover.html +208 -0
- data/docs/rdoc/classes/EvoSynth/Selections.html +174 -0
- data/docs/rdoc/classes/EvoSynth/Selections/FitnessProportionalSelection.html +206 -0
- data/docs/rdoc/classes/EvoSynth/Selections/Identity.html +200 -0
- data/docs/rdoc/classes/EvoSynth/Selections/NStageTournamentSelection.html +273 -0
- data/docs/rdoc/classes/EvoSynth/Selections/RandomSelection.html +192 -0
- data/docs/rdoc/classes/EvoSynth/Selections/RouletteWheelSelection.html +212 -0
- data/docs/rdoc/classes/EvoSynth/Selections/SelectBest.html +206 -0
- data/docs/rdoc/classes/EvoSynth/Selections/TournamentSelection.html +274 -0
- data/docs/rdoc/classes/Examples.html +268 -0
- data/docs/rdoc/classes/Examples/Ants.html +198 -0
- data/docs/rdoc/classes/Examples/Ants/AntMutation.html +381 -0
- data/docs/rdoc/classes/Examples/Ants/Pheromon.html +256 -0
- data/docs/rdoc/classes/Examples/CCGAExample.html +305 -0
- data/docs/rdoc/classes/Examples/CCGAExample/CCGA2BenchmarkEvaluator.html +165 -0
- data/docs/rdoc/classes/Examples/CCGAExample/CCGABenchmarkEvaluator.html +242 -0
- data/docs/rdoc/classes/Examples/CCGAExample/CCGAIndividual.html +181 -0
- data/docs/rdoc/classes/Examples/CMBExample.html +215 -0
- data/docs/rdoc/classes/Examples/CMBExample/CMBEvaluator.html +212 -0
- data/docs/rdoc/classes/Examples/EsExample.html +270 -0
- data/docs/rdoc/classes/Examples/EsExample/BenchmarkEvaluator.html +162 -0
- data/docs/rdoc/classes/Examples/Exporter.html +208 -0
- data/docs/rdoc/classes/Examples/Exporter/ExporterEvaluator.html +196 -0
- data/docs/rdoc/classes/Examples/GraphColouring.html +199 -0
- data/docs/rdoc/classes/Examples/Hacking.html +147 -0
- data/docs/rdoc/classes/Examples/Hacking/HackingEvaluator.html +169 -0
- data/docs/rdoc/classes/Examples/LocalSearch.html +294 -0
- data/docs/rdoc/classes/Examples/LocalSearch/LocalSearchEvaluator.html +198 -0
- data/docs/rdoc/classes/Examples/MaxOnes.html +187 -0
- data/docs/rdoc/classes/Examples/MaxOnes/MaxOnesEvaluator.html +170 -0
- data/docs/rdoc/classes/Examples/Partitionproblem.html +201 -0
- data/docs/rdoc/classes/Examples/Partitionproblem/PartitionEvaluator.html +164 -0
- data/docs/rdoc/classes/Examples/Partitionproblem/PartitionIndividual.html +334 -0
- data/docs/rdoc/classes/Examples/Partitionproblem/PartitionMutation.html +199 -0
- data/docs/rdoc/classes/Examples/Partitionproblem/Testdata.html +294 -0
- data/docs/rdoc/classes/Examples/SPk.html +139 -0
- data/docs/rdoc/classes/Examples/SPk/SPkFitnessEvaluator.html +299 -0
- data/docs/rdoc/classes/Examples/TSP.html +187 -0
- data/docs/rdoc/created.rid +1 -0
- data/docs/rdoc/files/INSTALL.html +253 -0
- data/docs/rdoc/files/LICENSE.html +119 -0
- data/docs/rdoc/files/README.html +235 -0
- data/docs/rdoc/files/docs/FEATURES.html +428 -0
- data/docs/rdoc/files/examples/ants_rb.html +133 -0
- data/docs/rdoc/files/examples/ccga_example_rb.html +129 -0
- data/docs/rdoc/files/examples/cmb_example_rb.html +129 -0
- data/docs/rdoc/files/examples/evolution_strategies_rb.html +129 -0
- data/docs/rdoc/files/examples/exporter_rb.html +129 -0
- data/docs/rdoc/files/examples/graph_colouring_rb.html +129 -0
- data/docs/rdoc/files/examples/hacking_rb.html +129 -0
- data/docs/rdoc/files/examples/local_search_rb.html +129 -0
- data/docs/rdoc/files/examples/max_ones_rb.html +129 -0
- data/docs/rdoc/files/examples/partition_rb.html +131 -0
- data/docs/rdoc/files/examples/spk_rb.html +129 -0
- data/docs/rdoc/files/examples/tsp_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/core/array_genome_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/binary_genome_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/evaluator_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/core/individual_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/maximizing_individual_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/minimizing_individual_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/population_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/profile_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core/randomizer_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/core_rb.html +145 -0
- data/docs/rdoc/files/lib/evosynth/decoder/binary_to_real_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/decoder/gray_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/decoder_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/basic/genetic_algorithm_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/basic/hillclimber_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/basic/memetic_algorithm_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/basic/population_hillclimber_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/basic/steady_state_ga_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/coevolutionary/balanced_coevolutionary_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/coevolutionary/round_robin_coevolutionary_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/elitism_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/adaptive_es_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/derandomized_es_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/evolution_strategies/selfadaptive_es_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/evolver_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_great_deluge_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_hillclimber_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_record_to_record_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_simulated_annealing_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/acceptance_threshold_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/local_search/local_search_rb.html +137 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/profile_using_evolver_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/evolvers/runnable_evolver_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/evolvers_rb.html +153 -0
- data/docs/rdoc/files/lib/evosynth/operators/adjustments/adaptive_adjustment_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/adjustments/predefined_adjustment_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/adjustments_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/operators/global_recombinations/global_arithmetic_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/global_recombinations/global_uniform_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/global_recombinations_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/operators/meta_operators/conditional_combined_operator_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/meta_operators/proportional_combined_operator_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/meta_operators/sequential_combined_operator_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/meta_operators_rb.html +133 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/binary_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/efficient_binary_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/exchange_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/flip_functions_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/gauss_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/identity_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/inversion_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/mixing_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/one_gene_flipping_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/self_adaptive_gauss_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/shifting_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations/uniform_real_mutation_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/mutations_rb.html +151 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/arithmetic_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/edge_recombination_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/identity_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/k_point_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/one_point_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/ordered_recombination_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/partially_mapped_crossover_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations/uniform_crossover_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/recombinations_rb.html +143 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/best_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/fitness_proportional_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/identity_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/n_stage_tournament_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/random_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/roulette_wheel_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections/tournament_selection_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/operators/selections_rb.html +141 -0
- data/docs/rdoc/files/lib/evosynth/operators_rb.html +139 -0
- data/docs/rdoc/files/lib/evosynth/output/console_writer_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/output/exporter/csv_exporter_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/output/exporter/gnuplot_exporter_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/output/exporter/gruff_exporter_rb.html +131 -0
- data/docs/rdoc/files/lib/evosynth/output/exporter_rb.html +133 -0
- data/docs/rdoc/files/lib/evosynth/output/factory_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/output/logger_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/output_rb.html +135 -0
- data/docs/rdoc/files/lib/evosynth/problems/binary_benchmark_functions_rb.html +119 -0
- data/docs/rdoc/files/lib/evosynth/problems/float_benchmark_functions_rb.html +1630 -0
- data/docs/rdoc/files/lib/evosynth/problems/graph_colouring_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/problems/tsp_rb.html +129 -0
- data/docs/rdoc/files/lib/evosynth/problems_rb.html +135 -0
- data/docs/rdoc/files/lib/evosynth_rb.html +139 -0
- data/docs/rdoc/fr_class_index.html +245 -0
- data/docs/rdoc/fr_file_index.html +233 -0
- data/docs/rdoc/fr_method_index.html +661 -0
- data/docs/rdoc/index.html +21 -0
- data/docs/rdoc/rdoc-style.css +299 -0
- data/examples/ants.rb +237 -0
- data/examples/ccga_example.rb +150 -0
- data/examples/cmb_example.rb +117 -0
- data/examples/evolution_strategies.rb +84 -0
- data/examples/exporter.rb +90 -0
- data/examples/graph_colouring.rb +72 -0
- data/examples/hacking.rb +62 -0
- data/examples/local_search.rb +109 -0
- data/examples/max_ones.rb +83 -0
- data/examples/partition.rb +172 -0
- data/examples/spk.rb +106 -0
- data/examples/tsp.rb +83 -0
- data/lib/evosynth.rb +32 -0
- data/lib/evosynth/core.rb +33 -0
- data/lib/evosynth/core/array_genome.rb +77 -0
- data/lib/evosynth/core/binary_genome.rb +156 -0
- data/lib/evosynth/core/evaluator.rb +109 -0
- data/lib/evosynth/core/individual.rb +92 -0
- data/lib/evosynth/core/maximizing_individual.rb +71 -0
- data/lib/evosynth/core/minimizing_individual.rb +71 -0
- data/lib/evosynth/core/population.rb +120 -0
- data/lib/evosynth/core/profile.rb +110 -0
- data/lib/evosynth/core/randomizer.rb +73 -0
- data/lib/evosynth/decoder.rb +33 -0
- data/lib/evosynth/decoder/binary_to_real.rb +57 -0
- data/lib/evosynth/decoder/gray.rb +54 -0
- data/lib/evosynth/evolvers.rb +41 -0
- data/lib/evosynth/evolvers/basic/genetic_algorithm.rb +92 -0
- data/lib/evosynth/evolvers/basic/hillclimber.rb +64 -0
- data/lib/evosynth/evolvers/basic/memetic_algorithm.rb +111 -0
- data/lib/evosynth/evolvers/basic/population_hillclimber.rb +69 -0
- data/lib/evosynth/evolvers/basic/steady_state_ga.rb +85 -0
- data/lib/evosynth/evolvers/coevolutionary/balanced_coevolutionary.rb +125 -0
- data/lib/evosynth/evolvers/coevolutionary/round_robin_coevolutionary.rb +87 -0
- data/lib/evosynth/evolvers/elitism.rb +108 -0
- data/lib/evosynth/evolvers/evolution_strategies/adaptive_es.rb +104 -0
- data/lib/evosynth/evolvers/evolution_strategies/derandomized_es.rb +120 -0
- data/lib/evosynth/evolvers/evolution_strategies/selfadaptive_es.rb +82 -0
- data/lib/evosynth/evolvers/evolver.rb +43 -0
- data/lib/evosynth/evolvers/local_search/acceptance_great_deluge.rb +60 -0
- data/lib/evosynth/evolvers/local_search/acceptance_hillclimber.rb +47 -0
- data/lib/evosynth/evolvers/local_search/acceptance_record_to_record.rb +69 -0
- data/lib/evosynth/evolvers/local_search/acceptance_simulated_annealing.rb +59 -0
- data/lib/evosynth/evolvers/local_search/acceptance_threshold.rb +60 -0
- data/lib/evosynth/evolvers/local_search/local_search.rb +74 -0
- data/lib/evosynth/evolvers/profile_using_evolver.rb +77 -0
- data/lib/evosynth/evolvers/runnable_evolver.rb +89 -0
- data/lib/evosynth/operators.rb +30 -0
- data/lib/evosynth/operators/adjustments.rb +26 -0
- data/lib/evosynth/operators/adjustments/adaptive_adjustment.rb +55 -0
- data/lib/evosynth/operators/adjustments/predefined_adjustment.rb +46 -0
- data/lib/evosynth/operators/global_recombinations.rb +26 -0
- data/lib/evosynth/operators/global_recombinations/global_arithmetic_crossover.rb +50 -0
- data/lib/evosynth/operators/global_recombinations/global_uniform_crossover.rb +49 -0
- data/lib/evosynth/operators/meta_operators.rb +36 -0
- data/lib/evosynth/operators/meta_operators/conditional_combined_operator.rb +65 -0
- data/lib/evosynth/operators/meta_operators/proportional_combined_operator.rb +84 -0
- data/lib/evosynth/operators/meta_operators/sequential_combined_operator.rb +73 -0
- data/lib/evosynth/operators/mutations.rb +47 -0
- data/lib/evosynth/operators/mutations/binary_mutation.rb +100 -0
- data/lib/evosynth/operators/mutations/efficient_binary_mutation.rb +105 -0
- data/lib/evosynth/operators/mutations/exchange_mutation.rb +107 -0
- data/lib/evosynth/operators/mutations/flip_functions.rb +45 -0
- data/lib/evosynth/operators/mutations/gauss_mutation.rb +65 -0
- data/lib/evosynth/operators/mutations/identity.rb +62 -0
- data/lib/evosynth/operators/mutations/inversion_mutation.rb +73 -0
- data/lib/evosynth/operators/mutations/mixing_mutation.rb +75 -0
- data/lib/evosynth/operators/mutations/one_gene_flipping.rb +89 -0
- data/lib/evosynth/operators/mutations/self_adaptive_gauss_mutation.rb +73 -0
- data/lib/evosynth/operators/mutations/shifting_mutation.rb +88 -0
- data/lib/evosynth/operators/mutations/uniform_real_mutation.rb +59 -0
- data/lib/evosynth/operators/recombinations.rb +48 -0
- data/lib/evosynth/operators/recombinations/arithmetic_crossover.rb +67 -0
- data/lib/evosynth/operators/recombinations/edge_recombination.rb +108 -0
- data/lib/evosynth/operators/recombinations/identity.rb +42 -0
- data/lib/evosynth/operators/recombinations/k_point_crossover.rb +81 -0
- data/lib/evosynth/operators/recombinations/one_point_crossover.rb +56 -0
- data/lib/evosynth/operators/recombinations/ordered_recombination.rb +75 -0
- data/lib/evosynth/operators/recombinations/partially_mapped_crossover.rb +102 -0
- data/lib/evosynth/operators/recombinations/uniform_crossover.rb +54 -0
- data/lib/evosynth/operators/selections.rb +31 -0
- data/lib/evosynth/operators/selections/best_selection.rb +54 -0
- data/lib/evosynth/operators/selections/fitness_proportional_selection.rb +83 -0
- data/lib/evosynth/operators/selections/identity.rb +48 -0
- data/lib/evosynth/operators/selections/n_stage_tournament_selection.rb +84 -0
- data/lib/evosynth/operators/selections/random_selection.rb +44 -0
- data/lib/evosynth/operators/selections/roulette_wheel_selection.rb +54 -0
- data/lib/evosynth/operators/selections/tournament_selection.rb +71 -0
- data/lib/evosynth/output.rb +28 -0
- data/lib/evosynth/output/console_writer.rb +45 -0
- data/lib/evosynth/output/exporter.rb +27 -0
- data/lib/evosynth/output/exporter/csv_exporter.rb +62 -0
- data/lib/evosynth/output/exporter/gnuplot_exporter.rb +81 -0
- data/lib/evosynth/output/exporter/gruff_exporter.rb +70 -0
- data/lib/evosynth/output/factory.rb +38 -0
- data/lib/evosynth/output/logger.rb +83 -0
- data/lib/evosynth/problems.rb +37 -0
- data/lib/evosynth/problems/binary_benchmark_functions.rb +74 -0
- data/lib/evosynth/problems/float_benchmark_functions.rb +99 -0
- data/lib/evosynth/problems/graph_colouring.rb +89 -0
- data/lib/evosynth/problems/tsp.rb +88 -0
- data/test/benchmark/decoder_benchmark.rb +75 -0
- data/test/benchmark/mutation_benchmark.rb +88 -0
- data/test/benchmark/recombination_benchmark.rb +58 -0
- data/test/benchmark/selection_benchmark.rb +52 -0
- data/test/core/tc_array_genome.rb +154 -0
- data/test/core/tc_binary_genome.rb +160 -0
- data/test/core/tc_population.rb +154 -0
- data/test/core/tc_profile.rb +75 -0
- data/test/core/tc_randomizer.rb +165 -0
- data/test/coverage.rb +43 -0
- data/test/decoder/tc_binary_to_real.rb +52 -0
- data/test/decoder/tc_gray.rb +107 -0
- data/test/operators/adjustments/tc_adaptive_adjustment.rb +63 -0
- data/test/operators/adjustments/tc_predefined_adjustment.rb +49 -0
- data/test/operators/global_recombinations/tc_global_arithmetic_crossover.rb +78 -0
- data/test/operators/global_recombinations/tc_global_uniform_crossover.rb +90 -0
- data/test/operators/meta_operators/tc_conditional_combined_operator.rb +66 -0
- data/test/operators/meta_operators/tc_proportional_combined_operator.rb +167 -0
- data/test/operators/meta_operators/tc_sequential_combined_operator.rb +98 -0
- data/test/operators/mutations/tc_binary_mutation.rb +73 -0
- data/test/operators/mutations/tc_efficient_binary_mutation.rb +73 -0
- data/test/operators/mutations/tc_exchange_mutation.rb +127 -0
- data/test/operators/mutations/tc_gauss_mutation.rb +130 -0
- data/test/operators/mutations/tc_identity_mutation.rb +64 -0
- data/test/operators/mutations/tc_inversion_mutation.rb +70 -0
- data/test/operators/mutations/tc_mixing_mutation.rb +73 -0
- data/test/operators/mutations/tc_one_gene_flipping.rb +109 -0
- data/test/operators/mutations/tc_self_adaptive_gauss_mutation.rb +72 -0
- data/test/operators/mutations/tc_shifting_muation.rb +73 -0
- data/test/operators/mutations/tc_uniform_real_mutation.rb +65 -0
- data/test/operators/recombinations/tc_arithmetic_crossover.rb +79 -0
- data/test/operators/recombinations/tc_edge_recombination.rb +76 -0
- data/test/operators/recombinations/tc_identity_recombination.rb +81 -0
- data/test/operators/recombinations/tc_k_point_crossover.rb +81 -0
- data/test/operators/recombinations/tc_one_point_crossover.rb +80 -0
- data/test/operators/recombinations/tc_ordered_recombination.rb +76 -0
- data/test/operators/recombinations/tc_partially_mapped_crossover.rb +91 -0
- data/test/operators/recombinations/tc_uniform_crossover.rb +84 -0
- data/test/operators/selections/tc_best_selection.rb +85 -0
- data/test/operators/selections/tc_fitness_proportional_selection.rb +78 -0
- data/test/operators/selections/tc_identity.rb +91 -0
- data/test/operators/selections/tc_n_stage_tournament.rb +78 -0
- data/test/operators/selections/tc_random_selection.rb +70 -0
- data/test/operators/selections/tc_roulette_wheel_selection.rb +78 -0
- data/test/operators/selections/tc_tournament_selection.rb +83 -0
- data/test/problems/tc_binary_benchmark_functions.rb +126 -0
- data/test/problems/tc_float_benchmark_functions.rb +100 -0
- data/test/test_util/test_helper.rb +128 -0
- data/test/ts_adjustments.rb +26 -0
- data/test/ts_core.rb +29 -0
- data/test/ts_decoder.rb +26 -0
- data/test/ts_global_recombinations.rb +26 -0
- data/test/ts_meta_operators.rb +27 -0
- data/test/ts_mutations.rb +35 -0
- data/test/ts_problems.rb +26 -0
- data/test/ts_recombinations.rb +32 -0
- data/test/ts_selections.rb +31 -0
- data/testdata/README +4 -0
- data/testdata/bays29.tsp +68 -0
- data/testdata/myciel4.col +77 -0
- metadata +552 -0
data/INSTALL
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
== Installation HOWTO
|
|
2
|
+
|
|
3
|
+
=== Prerequisites:
|
|
4
|
+
|
|
5
|
+
- <b>Ruby 1.9.x</b> from http://www.ruby-lang.org or http://rubyforge.org/frs/?group_id=167
|
|
6
|
+
- <i>(optional)</i> <b>git</b> from http://git-scm.com (to build latest version from git repository)
|
|
7
|
+
|
|
8
|
+
- optional gems (install with "gem install <gem-name>" (as root)):
|
|
9
|
+
- shoulda and rake (Rakefile, Testsuite)
|
|
10
|
+
- gruff, gnuplot and rmagick (graphs)
|
|
11
|
+
- flake, flog, roodi and rcov (code quality tools)
|
|
12
|
+
|
|
13
|
+
=== Download EvoSynth:
|
|
14
|
+
|
|
15
|
+
- download source package from http://github.com/yadler/EvoSynth/archives/master
|
|
16
|
+
- or checkout with:
|
|
17
|
+
|
|
18
|
+
git clone git://github.com/yadler/EvoSynth.git
|
|
19
|
+
|
|
20
|
+
=== Run Testcases
|
|
21
|
+
|
|
22
|
+
To make sure everything is running, run the following command inside the evosynth directory:
|
|
23
|
+
|
|
24
|
+
rake test
|
|
25
|
+
|
|
26
|
+
=== Get the required testdata to run the examples (copy into the "testdata" directory):
|
|
27
|
+
|
|
28
|
+
- http://mat.gsia.cmu.edu/COLOR/instances/myciel4.col (graph colouring)
|
|
29
|
+
- http://elib.zib.de/pub/mp-testdata/tsp/tsplib/tsp/bays29.tsp (TSP)
|
|
30
|
+
|
|
31
|
+
- more testdata:
|
|
32
|
+
|
|
33
|
+
- http://mat.gsia.cmu.edu/COLOR/instances.html
|
|
34
|
+
- http://elib.zib.de/pub/mp-testdata/tsp/tsplib/tsp/index.html
|
|
35
|
+
|
|
36
|
+
=== Run examples and benchmarks
|
|
37
|
+
|
|
38
|
+
- run all examples with
|
|
39
|
+
rake run_examples
|
|
40
|
+
|
|
41
|
+
or run single examples with:
|
|
42
|
+
|
|
43
|
+
ruby -Ilib examples/max_ones.rb
|
|
44
|
+
ruby -Ilib examples/partition.rb
|
|
45
|
+
...
|
|
46
|
+
|
|
47
|
+
- <b>Attention:</b> the exporter.rb example will only work if you've installed the gruff, gnuplot and rmagick gems!
|
|
48
|
+
|
|
49
|
+
- if you are interessted in the performance of the individual components of EvoSynth, run the benchmark task:
|
|
50
|
+
|
|
51
|
+
rake run_benchmarks
|
|
52
|
+
|
|
53
|
+
or run individual benchmarks with:
|
|
54
|
+
|
|
55
|
+
ruby -Ilib test/benchmark/decoder_benchmark.rb
|
|
56
|
+
ruby -Ilib test/benchmark/mutation_benchmark.rb
|
|
57
|
+
...
|
|
58
|
+
|
|
59
|
+
=== Setup Netbeans as IDE (http://netbeans.org)
|
|
60
|
+
|
|
61
|
+
- download and install netbeans
|
|
62
|
+
- install Ruby plugin (Tools -> Plugins -> Available Plugins ...)
|
|
63
|
+
- create new project:
|
|
64
|
+
1. File -> New Project -> Ruby -> "Ruby Application with Existing Sources"
|
|
65
|
+
2. choose a name (for example "nb_evosynth")
|
|
66
|
+
3. choose a directory, this should be outside of the evosynth directory to keep the git repository clean
|
|
67
|
+
4. choose Ruby platform: Ruby 1.9.x
|
|
68
|
+
5. set source folder with "Source Folders -> Add folder" -> choose evosynth directory
|
|
69
|
+
|
|
70
|
+
- right click on new created project "Properties -> Run" -> add "-Ilib" to Ruby options
|
|
71
|
+
|
|
72
|
+
- test if everything is working:
|
|
73
|
+
1. open a example (examples folder in "Source Files")
|
|
74
|
+
2. run it with Shift + F6 (you might have to confirm a dialog)
|
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2009, 2010 Yves Adler <yves.adler@googlemail.com>
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
|
4
|
+
obtaining a copy of this software and associated documentation
|
|
5
|
+
files (the "Software"), to deal in the Software without
|
|
6
|
+
restriction, including without limitation the rights to use,
|
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the
|
|
9
|
+
Software is furnished to do so, subject to the following
|
|
10
|
+
conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be
|
|
13
|
+
included in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
== EvoSynth 0.1
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Website:: http://evosynth.rubyforge.org/
|
|
5
|
+
Project:: http://rubyforge.org/projects/evosynth/
|
|
6
|
+
Sourcecode:: http://gitorious.org/evosynth and http://github.com/yadler/EvoSynth
|
|
7
|
+
Author:: Yves Adler (http://yadler.wordpress.com/, mailto:yves.adler@googlemail.com)
|
|
8
|
+
Copyright:: Copyright (c) 2009, 2010 Yves Adler <yves.adler@googlemail.com>
|
|
9
|
+
License:: MIT (see LICENSE)
|
|
10
|
+
|
|
11
|
+
== Description
|
|
12
|
+
|
|
13
|
+
EvoSynth (Evolutionary Computation Synthesizer) is a framework for rapid development and prototyping of evolutionary algorithms.
|
|
14
|
+
|
|
15
|
+
== Features (for details see docs/FEATURES)
|
|
16
|
+
|
|
17
|
+
* classes for individuals, populations, algorithm profiles, genomes
|
|
18
|
+
* support for custom randomizer
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
* most common evolutionary algorithms:
|
|
22
|
+
* hillclimber (single individual and population based)
|
|
23
|
+
* standard genetic algorithm, steady state GA
|
|
24
|
+
* memetic algorithm
|
|
25
|
+
* evolution strategies (adaptive, selfadaptive and derandomized)
|
|
26
|
+
* local search (hillclimber, threshold acceptance, simulated annealing, great deluge, record-to-record travel)
|
|
27
|
+
* coevolutionary algorithms (round robin and balanced)
|
|
28
|
+
|
|
29
|
+
* selection strategies:
|
|
30
|
+
* identity
|
|
31
|
+
* random selection
|
|
32
|
+
* best selection
|
|
33
|
+
* n-stage tournament selection
|
|
34
|
+
* tournament selection
|
|
35
|
+
* fitness proportional selection
|
|
36
|
+
* roulette wheel selection
|
|
37
|
+
|
|
38
|
+
* mutations:
|
|
39
|
+
* identity
|
|
40
|
+
* one gene flipping, binary mutation, efficient binary mutation
|
|
41
|
+
* exchange mutation, inversion mutation, mixing mutation, shifting mutation
|
|
42
|
+
* uniform real mutation, gauss mutation, self-adaptive gaus mutation
|
|
43
|
+
|
|
44
|
+
* recombinations:
|
|
45
|
+
* identity
|
|
46
|
+
* one-point-crossover, k-point-crossover, uniform crossover
|
|
47
|
+
* arithmetic crossover
|
|
48
|
+
* ordered recombination, partially mapped crossover, edge recombination
|
|
49
|
+
* global uniform crossover, global arithmetic crossover
|
|
50
|
+
|
|
51
|
+
* meta operators: proportional, sequentional and conditional combined operators
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
== Installation
|
|
55
|
+
|
|
56
|
+
* gem install evosynth (as root)
|
|
57
|
+
* for detailed instructions (build from source, etc.) see INSTALL
|
data/Rakefile
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Copyright (c) 2009, 2010 Yves Adler <yves.adler@googlemail.com>
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person
|
|
4
|
+
# obtaining a copy of this software and associated documentation
|
|
5
|
+
# files (the "Software"), to deal in the Software without
|
|
6
|
+
# restriction, including without limitation the rights to use,
|
|
7
|
+
# copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
# copies of the Software, and to permit persons to whom the
|
|
9
|
+
# Software is furnished to do so, subject to the following
|
|
10
|
+
# conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
17
|
+
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
19
|
+
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
20
|
+
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
21
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
22
|
+
# OTHER DEALINGS IN THE SOFTWARE.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
require 'rake/gempackagetask'
|
|
26
|
+
require 'rake/testtask'
|
|
27
|
+
require 'rake/rdoctask'
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
desc "print message"
|
|
31
|
+
task :default do
|
|
32
|
+
puts "You have run rake without a task - please choose one of the following:\n\n"
|
|
33
|
+
puts `rake --tasks`
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
package_specification = Gem::Specification.new do |spec|
|
|
37
|
+
spec.required_ruby_version = '>= 1.9'
|
|
38
|
+
spec.platform = Gem::Platform::RUBY
|
|
39
|
+
spec.name = 'evosynth'
|
|
40
|
+
spec.version = '0.1.0'
|
|
41
|
+
|
|
42
|
+
spec.rubyforge_project = 'evosynth'
|
|
43
|
+
spec.homepage = 'http://evosynth.rubyforge.org'
|
|
44
|
+
spec.summary = 'EvoSynth (Evolutionary Computation Synthesizer) is a framework for rapid development and prototyping of evolutionary algorithms.'
|
|
45
|
+
spec.author = 'Yves Adler'
|
|
46
|
+
spec.email = 'yves.adler@googlemail.com'
|
|
47
|
+
|
|
48
|
+
spec.has_rdoc = true
|
|
49
|
+
spec.rdoc_options = ["--charset", "UTF-8", "--title", "EvoSynth Documentation", "--main", "README", "--line-numbers"]
|
|
50
|
+
spec.extra_rdoc_files = ["README", "LICENSE", "INSTALL", "docs/FEATURES"]
|
|
51
|
+
|
|
52
|
+
# files and dependencies:
|
|
53
|
+
|
|
54
|
+
files = FileList['**/*']; files.exclude('.git*'); files.exclude('pkg/*')
|
|
55
|
+
spec.files = files.to_a
|
|
56
|
+
spec.test_files = FileList['test/ts_*.rb']
|
|
57
|
+
spec.require_paths << 'lib'
|
|
58
|
+
|
|
59
|
+
# what about gruff, gnuplot & co ? where should I mention them?
|
|
60
|
+
spec.add_development_dependency(['shoulda', 'rake'])
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
Rake::GemPackageTask.new(package_specification) do |pkg|
|
|
64
|
+
pkg.need_zip = true
|
|
65
|
+
pkg.need_tar = true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
Rake::RDocTask.new do |rdoc|
|
|
69
|
+
rdoc.main = "README"
|
|
70
|
+
rdoc.rdoc_dir = "docs/rdoc"
|
|
71
|
+
rdoc.title = "EvoSynth Documentation"
|
|
72
|
+
rdoc.options = ["--charset", "UTF-8", "--line-numbers"]
|
|
73
|
+
rdoc.rdoc_files.include("README", "LICENSE", "INSTALL", "docs/FEATURES", "lib/**/*.rb", "examples/**/*.rb")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
# Test tasks and code quality stuff:
|
|
78
|
+
|
|
79
|
+
task :quality => [:test, :flog, :flay, :roodi]
|
|
80
|
+
|
|
81
|
+
lib_dir = File.expand_path("lib")
|
|
82
|
+
examples_dir = File.expand_path("examples")
|
|
83
|
+
test_dir = File.expand_path("test")
|
|
84
|
+
|
|
85
|
+
Rake::TestTask.new do |test|
|
|
86
|
+
test.libs = [lib_dir, test_dir]
|
|
87
|
+
test.test_files = FileList["test/ts_*.rb"]
|
|
88
|
+
test.verbose = true
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
desc "Analyze the code with roodi (Ruby Object Oriented Design Inferometer)"
|
|
92
|
+
task :roodi do
|
|
93
|
+
roodi_output = `roodi 'lib/**/*.rb' 'examples/**/*.rb'`
|
|
94
|
+
puts "ERROR: roodi not found. please install 'gems install roodi'" if $?.exitstatus == 127
|
|
95
|
+
puts roodi_output
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
desc "Analyze for code duplication"
|
|
99
|
+
task :flay do
|
|
100
|
+
flay_output = `flay '#{lib_dir}' '#{examples_dir}'`
|
|
101
|
+
puts "ERROR: flay not found. please install 'gems install flay'" if $?.exitstatus != 0
|
|
102
|
+
puts flay_output
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
desc "Analyze for code complexity"
|
|
106
|
+
task :flog do
|
|
107
|
+
flog_output = `find lib -name \*.rb | xargs flog -g`
|
|
108
|
+
puts "ERROR: flog not found. please install 'gems install flog'" if $?.exitstatus != 0
|
|
109
|
+
puts flog_output
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Shortcuts for examples and benchmark
|
|
113
|
+
|
|
114
|
+
desc "Run all examples"
|
|
115
|
+
task :run_examples do
|
|
116
|
+
example_files = FileList["examples/*.rb"]
|
|
117
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
|
118
|
+
example_files.each do |example_file|
|
|
119
|
+
puts "\nRunning example : #{example_file}\n\n"
|
|
120
|
+
load example_file
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
desc "Run all benchmarks"
|
|
125
|
+
task :run_benchmarks do
|
|
126
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
|
127
|
+
load 'test/benchmark/decoder_benchmark.rb'
|
|
128
|
+
load 'test/benchmark/mutation_benchmark.rb'
|
|
129
|
+
load 'test/benchmark/recombination_benchmark.rb'
|
|
130
|
+
load 'test/benchmark/selection_benchmark.rb'
|
|
131
|
+
end
|
|
132
|
+
|
data/TODO
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
============================== generelles ======================================
|
|
2
|
+
|
|
3
|
+
!!! Jeden morgen ein paar sachen Dokumentieren !!!
|
|
4
|
+
--> aktuell ab evolvers <--
|
|
5
|
+
|
|
6
|
+
fehlende oder fehlerhafte Testfälle:
|
|
7
|
+
|
|
8
|
+
- Selektionen: Float select_count (to_i testcase)
|
|
9
|
+
- EvoSynth::Evolvers::LocalSearch::HillclimberAcceptance
|
|
10
|
+
- EvoSynth::Evolvers::LocalSearch::SimulatedAnnealingAcceptance
|
|
11
|
+
- EvoSynth::Evolvers::LocalSearch::ThresholdAcceptance
|
|
12
|
+
- EvoSynth::Evolvers::LocalSearch::GreatDelugeAcceptance
|
|
13
|
+
- EvoSynth::Evolvers::LocalSearch::RecordToRecordTravelAcceptance
|
|
14
|
+
- EvoSynth::Mutations::SelfAdaptiveGaussMutation
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
============================== EvoSynth 0.2 ====================================
|
|
18
|
+
|
|
19
|
+
Features:
|
|
20
|
+
|
|
21
|
+
- Algorithmen:
|
|
22
|
+
=> CMBCoevolutionary braucht ein refactoring
|
|
23
|
+
|
|
24
|
+
- Checkpointing für Evolver, Save, Stop, Restart, Continue
|
|
25
|
+
=> eventuell mit Logger verknüppern
|
|
26
|
+
|
|
27
|
+
- EvoBench: Benchmark für Evolutionäre Algorithmen
|
|
28
|
+
=> wie sollten diese Versuche ablaufen? Stichwort statistische Relevanz
|
|
29
|
+
=> mutationen, selektionen und co
|
|
30
|
+
=> diversität und co (binär, float, wie denn genau? mit lambda?)
|
|
31
|
+
=> Versuchspläne und Statistiken?!
|
|
32
|
+
=> t-test (hypothesentest)
|
|
33
|
+
|
|
34
|
+
- Logger:
|
|
35
|
+
=> mehrere "Testläufe", Durchschnittswerte
|
|
36
|
+
=> html output templates, svg outputs?
|
|
37
|
+
-> http://www.germane-software.com/software/SVG/SVG::Graph/
|
|
38
|
+
=> logger sollte auch bei fitnessänderungen (der population?) getriggert werden können,
|
|
39
|
+
das geht aber vielleicht eher in richtung eventsystem
|
|
40
|
+
|
|
41
|
+
============================== EvoSynth >0.2 ===================================
|
|
42
|
+
|
|
43
|
+
Features:
|
|
44
|
+
|
|
45
|
+
- add # encoding: utf-8 to all ruby files
|
|
46
|
+
- was ist mit http://rubygems.rubyforge.org/rdoc/Gem/Security.html ?
|
|
47
|
+
|
|
48
|
+
- TSP und GraphColouring Problem generischer machen und refactorisieren
|
|
49
|
+
|
|
50
|
+
- Benchmarkfunktionen:
|
|
51
|
+
=> Matrix Multiplikationsproblem aus Paredis Paper (epistasis gut steuerbar)
|
|
52
|
+
=> C-Funktion (Weicker page 272)
|
|
53
|
+
=> sämtliche mit Randbedingungen (Weicker page 274)
|
|
54
|
+
|
|
55
|
+
- Decoder/Encoder:
|
|
56
|
+
=> RealToBinary, IntegerToBinary, BinaryToInteger
|
|
57
|
+
|
|
58
|
+
- Algorithmen:
|
|
59
|
+
=> Tabu-Suche am beispiel graph colouring (Weicker page 164)
|
|
60
|
+
=> Schwärme
|
|
61
|
+
=> neuronale Netze (gibts da ein gem für)
|
|
62
|
+
|
|
63
|
+
=> Evolutionäres Programmieren & Genetisches Programmieren (Weicker page 139--154)
|
|
64
|
+
-> Gentische Programmierung (Ruby programme wären schön)
|
|
65
|
+
-> rubytree gem nutzen: http://rubytree.rubyforge.org/rdoc/index.html
|
|
66
|
+
|
|
67
|
+
=> Mehrzieloptimierung:
|
|
68
|
+
-> NSGA selektion (204)
|
|
69
|
+
-> SPEA2, PAES (205,206)
|
|
70
|
+
-> wenigstens ein Beispiel zur Mehrzieloptimierung
|
|
71
|
+
|
|
72
|
+
=> Meta-Evolver (eventuell mittels metaprogramming alá Elistismus):
|
|
73
|
+
=> was ist mit hall-of-fame oder ähnlichem?
|
|
74
|
+
|
|
75
|
+
=> Mehrpopulationsprobleme & Koevolutionäres:
|
|
76
|
+
=> was ist da noch sinnvoll? inseln & migration?
|
|
77
|
+
|
|
78
|
+
- BinaryGenome mittels inline C optimieren
|
|
79
|
+
|
|
80
|
+
- nicht reelwertige Fitnesswerte?! Da fehlt nicht viel, aber zum Beispiel
|
|
81
|
+
die Fitnessproportionale Selektion braucht die (einfach nach ".fitness" suchen)
|
|
82
|
+
|
|
83
|
+
- Codegenerator System (z.b. für OpenBEALE und EO) -> siehe fehler!
|
|
84
|
+
|
|
85
|
+
- Bootstrap zeugs, inspiriert von OpenBEAGLE (initializer)
|
|
86
|
+
=> braucht man das wirklich?
|
|
87
|
+
=> Breeder klingt am besten (siehe ECJ)
|
|
88
|
+
=> variable anzahl an eltern, kindern für recombinationen (siehe EO paper)
|
data/docs/FEATURES
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
== Core features
|
|
2
|
+
|
|
3
|
+
* EvoSynth::Evaluator
|
|
4
|
+
* EvoSynth::Profile
|
|
5
|
+
* EvoSynth::Population
|
|
6
|
+
|
|
7
|
+
* EvoSynth::Individual
|
|
8
|
+
* EvoSynth::MaximizingIndividual
|
|
9
|
+
* EvoSynth::MinimizingIndividual
|
|
10
|
+
|
|
11
|
+
* EvoSynth::Randomizer
|
|
12
|
+
* EvoSynth.rand / EvoSynth.srand
|
|
13
|
+
* EvoSynth.nrand
|
|
14
|
+
* EvoSynth.rand_bool
|
|
15
|
+
|
|
16
|
+
* Include "Genotypes":
|
|
17
|
+
* EvoSynth::ArrayGenome (can contain any datatype as items)
|
|
18
|
+
* EvoSynth::BinaryGenome (not optimized yet)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
== Evolution algorithms
|
|
22
|
+
|
|
23
|
+
* meta features:
|
|
24
|
+
* EvoSynth::Evolvers.add_weak_elitism
|
|
25
|
+
* EvoSynth::Evolvers.add_strong_elitism
|
|
26
|
+
|
|
27
|
+
* basic evolvers:
|
|
28
|
+
* EvoSynth::Evolvers::Hillclimber
|
|
29
|
+
* EvoSynth::Evolvers::PopulationHillclimber
|
|
30
|
+
* EvoSynth::Evolvers::GeneticAlgorithm
|
|
31
|
+
* EvoSynth::Evolvers::SteadyStateGA
|
|
32
|
+
* EvoSynth::Evolvers::MemeticAlgorithm
|
|
33
|
+
|
|
34
|
+
* evolution strategies:
|
|
35
|
+
* EvoSynth::Evolvers::AdaptiveES
|
|
36
|
+
* EvoSynth::Evolvers::SelfAdaptiveES
|
|
37
|
+
* EvoSynth::Evolvers::DerandomizedES
|
|
38
|
+
|
|
39
|
+
* local search:
|
|
40
|
+
* EvoSynth::Evolvers::LocalSearch
|
|
41
|
+
* EvoSynth::Evolvers::LocalSearch::HillclimberAcceptance
|
|
42
|
+
* EvoSynth::Evolvers::LocalSearch::SimulatedAnnealingAcceptance
|
|
43
|
+
* EvoSynth::Evolvers::LocalSearch::ThresholdAcceptance
|
|
44
|
+
* EvoSynth::Evolvers::LocalSearch::GreatDelugeAcceptance
|
|
45
|
+
* EvoSynth::Evolvers::LocalSearch::RecordToRecordTravelAcceptance
|
|
46
|
+
|
|
47
|
+
* coevolutionary algorithms:
|
|
48
|
+
* EvoSynth::Evolvers::RoundRobinCoevolutionary
|
|
49
|
+
* EvoSynth::Evolvers::BalancedCoevolutionary (unfinished)
|
|
50
|
+
|
|
51
|
+
== Selections
|
|
52
|
+
|
|
53
|
+
* EvoSynth::Selections::Identity
|
|
54
|
+
* EvoSynth::Selections::SelectBest
|
|
55
|
+
* EvoSynth::Selections::NStageTournamentSelection
|
|
56
|
+
* EvoSynth::Selections::TournamentSelection
|
|
57
|
+
* EvoSynth::Selections::FitnessProportionalSelection
|
|
58
|
+
* EvoSynth::Selections::RouletteWheelSelection
|
|
59
|
+
* EvoSynth::Selections::RandomSelection
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
== Meta operators
|
|
63
|
+
|
|
64
|
+
* EvoSynth::MetaOperators::ProportionalCombinedOperator
|
|
65
|
+
* EvoSynth::MetaOperators::SequentialCombinedOperator
|
|
66
|
+
* EvoSynth::MetaOperators::ConditionalCombinedOperator
|
|
67
|
+
|
|
68
|
+
== Mutations
|
|
69
|
+
|
|
70
|
+
* work on every genome:
|
|
71
|
+
* EvoSynth::Mutations::Identity
|
|
72
|
+
|
|
73
|
+
* work on arrays (need flip function):
|
|
74
|
+
* EvoSynth::Mutations::BinaryMutation
|
|
75
|
+
* EvoSynth::Mutations::EfficientBinaryMutation
|
|
76
|
+
* EvoSynth::Mutations::OneGeneFlipping
|
|
77
|
+
|
|
78
|
+
* work on permutations:
|
|
79
|
+
* EvoSynth::Mutations::ExchangeMutation
|
|
80
|
+
* EvoSynth::Mutations::InversionMutation
|
|
81
|
+
* EvoSynth::Mutations::MixingMutation
|
|
82
|
+
* EvoSynth::Mutations::ShiftingMutation
|
|
83
|
+
|
|
84
|
+
* work on (arrays of) floats:
|
|
85
|
+
* EvoSynth::Mutations::GaussMutation
|
|
86
|
+
* EvoSynth::Mutations::UniformRealMutation
|
|
87
|
+
* EvoSynth::Mutations::SelfAdaptiveGaussMutation
|
|
88
|
+
|
|
89
|
+
== Recombinations
|
|
90
|
+
|
|
91
|
+
* work on every genome:
|
|
92
|
+
* EvoSynth::Recombinations::Identity
|
|
93
|
+
* EvoSynth::Recombinations::OnePointCrossover
|
|
94
|
+
* EvoSynth::Recombinations::KPointCrossover
|
|
95
|
+
* EvoSynth::Recombinations::UniformCrossover
|
|
96
|
+
* EvoSynth::Recombinations::ArithmeticCrossover (needs interpolation functions)
|
|
97
|
+
|
|
98
|
+
* work on permutations (no duplicates):
|
|
99
|
+
* EvoSynth::Recombinations::PartiallyMappedCrossover
|
|
100
|
+
* EvoSynth::Recombinations::OrderedRecombination
|
|
101
|
+
* EvoSynth::Recombinations::EdgeRecombination
|
|
102
|
+
|
|
103
|
+
== Global recombinations
|
|
104
|
+
|
|
105
|
+
* EvoSynth::GlobalRecombinations::GlobalUniformCrossover
|
|
106
|
+
* EvoSynth::GlobalRecombinations::GlobalArithmeticCrossover
|
|
107
|
+
|
|
108
|
+
== Adjustment strategies
|
|
109
|
+
|
|
110
|
+
* EvoSynth::Adjustments::PredifinedAdjustment
|
|
111
|
+
* EvoSynth::Adjustments::AdaptiveAdjustment
|