class Evolvable::UniformCrossover
Public Instance Methods
call(population)
click to toggle source
# File lib/evolvable/uniform_crossover.rb, line 5 def call(population) population.instances = initialize_offspring(population) population end
Private Instance Methods
initialize_offspring(population)
click to toggle source
# File lib/evolvable/uniform_crossover.rb, line 12 def initialize_offspring(population) parent_genes = population.instances.map!(&:genes) parent_gene_couples = parent_genes.combination(2).cycle Array.new(population.size) do |index| genes_1, genes_2 = parent_gene_couples.next genes = genes_1.zip(genes_2).map!(&:sample) population.new_instance(genes: genes, population_index: index) end end