Class: CrossOverNewGenerationStrategy

Inherits:
NewGenerationStrategy show all
Defined in:
lib/gimuby/genetic/solution/new_generation_strategy/cross_over_new_generation_strategy.rb

Instance Method Summary collapse

Constructor Details

#initialize(cross_overs_number = 1) ⇒ CrossOverNewGenerationStrategy

Returns a new instance of CrossOverNewGenerationStrategy.



5
6
7
# File 'lib/gimuby/genetic/solution/new_generation_strategy/cross_over_new_generation_strategy.rb', line 5

def initialize(cross_overs_number = 1)
  @cross_overs_number = cross_overs_number
end

Instance Method Details

#reproduce(solution1, solution2) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/gimuby/genetic/solution/new_generation_strategy/cross_over_new_generation_strategy.rb', line 9

def reproduce(solution1, solution2)
  permutation1 = solution1.get_solution_representation
  permutation2 = solution2.get_solution_representation
  cross_overs_number = @cross_overs_number
  if cross_overs_number <= 0
    cross_overs_number = permutation1.length - cross_overs_number
  end
  cross_overs_number.times do |_|
    r = reproduce_step(permutation1, permutation2)
    permutation1 = r.shift
    permutation2 = r.shift
  end
  [permutation1, permutation2]
end