class Algorithms::GeneticAlgorithm::CombinationSolution

Public Class Methods

new(possible_elements, size, data: possible_elements.sample(size)) click to toggle source
# File lib/algorithms/genetic_algorithm/solutions/combination.rb, line 4
def initialize(possible_elements, size, data: possible_elements.sample(size))
  @data, @possible_elements, @size = Set.new(data), possible_elements, size
end

Public Instance Methods

crossover(other_solution) click to toggle source
# File lib/algorithms/genetic_algorithm/solutions/combination.rb, line 12
def crossover(other_solution)
  size = @data.size
  common = @data & other_solution.data
  sym_diff = @data ^ other_solution.data
  sampled_sym_diff = Set.new(sym_diff.to_a.sample(size - common.size))
  new_data = common.union(sampled_sym_diff)
  create_new_solution(new_data)
end
mutate() click to toggle source
# File lib/algorithms/genetic_algorithm/solutions/combination.rb, line 8
def mutate
  create_new_solution(Set.new(@possible_elements.sample(@size)))
end