Class: GeneGenie::Genie
- Inherits:
-
Object
- Object
- GeneGenie::Genie
- Defined in:
- lib/gene_genie/genie.rb
Overview
Top level, basic interface for GA optimisation. Genie will attempt to optimise based on best-guess defaults if none are provided Genie is basically a wrapper around GenePool that lets you get going as quickly as possible by providing a reasonable set of defaults. For more control and customisation, go straight to using GenePoo
Constant Summary collapse
- DEFAULT_NO_OF_GENERATIONS =
50
- IMPROVEMENT_THRESHOLD =
%
0.1
Instance Method Summary collapse
- #best ⇒ Object
- #best_fitness ⇒ Object
-
#initialize(template, fitness_evaluator) ⇒ Genie
constructor
A new instance of Genie.
-
#optimise(number_of_generations = 0) ⇒ Object
(also: #optimize)
Optimise the genes until the convergence criteria are met.
- #register_listener(listener) ⇒ Object
Constructor Details
#initialize(template, fitness_evaluator) ⇒ Genie
Returns a new instance of Genie.
18 19 20 21 22 |
# File 'lib/gene_genie/genie.rb', line 18 def initialize(template, fitness_evaluator) @template = template @fitness_evaluator = fitness_evaluator @gene_pool = GenePool.build(template, fitness_evaluator) end |
Instance Method Details
#best ⇒ Object
46 47 48 |
# File 'lib/gene_genie/genie.rb', line 46 def best @gene_pool.best_ever.to_hashes end |
#best_fitness ⇒ Object
50 51 52 |
# File 'lib/gene_genie/genie.rb', line 50 def best_fitness @gene_pool.best_ever.fitness end |
#optimise(number_of_generations = 0) ⇒ Object Also known as: optimize
Optimise the genes until the convergence criteria are met. A reasonable set of defaults for criteria will be applied.
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gene_genie/genie.rb', line 27 def optimise(number_of_generations = 0) previous_best = best_fitness # optimise if number_of_generations > 0 evolve_n_times(number_of_generations) else optimise_by_strategy end @best_fitness = @fitness_evaluator.fitness(best) @best_fitness > previous_best end |
#register_listener(listener) ⇒ Object
42 43 44 |
# File 'lib/gene_genie/genie.rb', line 42 def register_listener(listener) @gene_pool.register_listener(listener) end |