class Gemnetic::Specimen

Attributes

gens[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/gemnetic/specimen.rb, line 5
def initialize(params = {})
  @gens = params.fetch(:gens, randomize)
end

Public Instance Methods

battle(specimen) click to toggle source
# File lib/gemnetic/specimen.rb, line 25
def battle specimen
  return self unless self.evaluate < specimen.evaluate
  specimen
end
crossover(specimen) click to toggle source
# File lib/gemnetic/specimen.rb, line 9
def crossover specimen
  raise NotImplementedError, "You must override the crossover method to crossover two specimens in a new one"
end
dup() click to toggle source
# File lib/gemnetic/specimen.rb, line 30
def dup
  self.class.new(gens: @gens.dup)
end
evaluate() click to toggle source
# File lib/gemnetic/specimen.rb, line 17
def evaluate
  raise NotImplementedError, "You must override the evaluate method to calculate the fitness of the specimen"
end
mutate() click to toggle source
# File lib/gemnetic/specimen.rb, line 13
def mutate
  raise NotImplementedError, "You must override the mutate method to generate a new specimen based current specimen"
end
randomize() click to toggle source
# File lib/gemnetic/specimen.rb, line 21
def randomize
  raise NotImplementedError, "You must override the randomize method to randomize the gens of the specimen"
end
to_s() click to toggle source
# File lib/gemnetic/specimen.rb, line 34
def to_s
  {
    evaluation: evaluate,
    gens: @gens
  }.to_s
end