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