Class: Evolvable::PointCrossover

Inherits:
Object
  • Object
show all
Defined in:
lib/evolvable/point_crossover.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(points_count: 1) ⇒ PointCrossover

Returns a new instance of PointCrossover.



31
32
33
# File 'lib/evolvable/point_crossover.rb', line 31

def initialize(points_count: 1)
  @points_count = points_count
end

Instance Attribute Details

#points_countObject

Returns the value of attribute points_count.



35
36
37
# File 'lib/evolvable/point_crossover.rb', line 35

def points_count
  @points_count
end

Instance Method Details

#call(population) ⇒ Object



37
38
39
40
# File 'lib/evolvable/point_crossover.rb', line 37

def call(population)
  population.evolvables = new_evolvables(population, population.size)
  population
end

#new_evolvables(population, count) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/evolvable/point_crossover.rb', line 42

def new_evolvables(population, count)
  parent_genome_cycle = population.new_parent_genome_cycle
  evolvables = []
  loop do
    genome_1, genome_2 = parent_genome_cycle.next
    crossover_genomes(genome_1, genome_2).each do |genome|
      evolvable = population.new_evolvable(genome: genome)
      evolvables << evolvable
      return evolvables if evolvable.generation_index == count
    end
  end
end