Class: Algorithm::Genetic::Population
- Inherits:
-
Object
- Object
- Algorithm::Genetic::Population
- Includes:
- Enumerable
- Defined in:
- lib/algorithm/genetic/population.rb
Overview
population management class
Instance Attribute Summary collapse
-
#generation ⇒ Object
readonly
Returns the value of attribute generation.
Instance Method Summary collapse
-
#each ⇒ Object
iterate each member.
-
#generate ⇒ Object
increment the generation: senection, crossover and mutation.
-
#initialize(population_size, evaluator, opts = {}) ⇒ Population
constructor
constructor of population.
Constructor Details
#initialize(population_size, evaluator, opts = {}) ⇒ Population
constructor of population
- code_length
-
size of code
- population_size
-
size of population
- evaluator
-
an Evaluator instance or Proc instance returns Evaluator instance
- opts
-
hash of options
options:
:selection :: an array of module name including select method and params
:crossover :: an array of module name including crossover method and params
:mutation :: an array of module name including mutate method and params
:mutation_chance :: mutation chance (float of 0 to 1)
need block for generate an initial (random) code of a gene
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/algorithm/genetic/population.rb', line 36 def initialize(population_size, evaluator, opts = {}) @evaluator = evaluator @members = Array.new(population_size){ Algorithm::Genetic::Gene.new(yield, evaluator, opts) } @generation = 0 if opts[:selection] @selection_params = opts[:selection].dup selection_module = @selection_params.shift.to_s.capitalize self.extend(Algorithm::Genetic::Selection.const_get(selection_module)) end end |
Instance Attribute Details
#generation ⇒ Object (readonly)
Returns the value of attribute generation.
20 21 22 |
# File 'lib/algorithm/genetic/population.rb', line 20 def generation @generation end |
Instance Method Details
#each ⇒ Object
iterate each member
60 61 62 63 |
# File 'lib/algorithm/genetic/population.rb', line 60 def each return @members.each unless block_given? @members.each{|m| yield m } end |
#generate ⇒ Object
increment the generation: senection, crossover and mutation
51 52 53 54 55 56 57 |
# File 'lib/algorithm/genetic/population.rb', line 51 def generate @generation += 1 select! crossover mutate sort! end |