Class: GeneGenie::Combiner::UniformCombiner

Inherits:
Object
  • Object
show all
Defined in:
lib/gene_genie/combiner/uniform_combiner.rb

Overview

Picks alleles from each Gene randomly

Since:

  • 0.0.1

Instance Method Summary collapse

Instance Method Details

#call(first_gene, second_gene) ⇒ Object

Since:

  • 0.0.1



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gene_genie/combiner/uniform_combiner.rb', line 5

def call(first_gene, second_gene)
  first_gene_hashes = first_gene.to_hashes
  second_gene_hashes = second_gene.to_hashes
  new_information = first_gene_hashes.map.with_index do |part, index|
    new_hash = {}
    part.each do |k, v|
      new_hash[k] = (rand > 0.5) ? v : second_gene_hashes[index][k]
    end
    new_hash
  end
  Gene.new(information: new_information,
           fitness_evaluator: first_gene.fitness_evaluator,
           gene_combiner: self)
end