class Evolvable::Evaluation

Constants

GOALS

Attributes

goal[RW]

Public Class Methods

new(goal = :maximize) click to toggle source
# File lib/evolvable/evaluation.rb, line 9
def initialize(goal = :maximize)
  @goal = normalize_goal(goal)
end

Public Instance Methods

best_instance(population) click to toggle source
# File lib/evolvable/evaluation.rb, line 19
def best_instance(population)
  population.instances.max_by { |instance| goal.evaluate(instance) }
end
call(population) click to toggle source
# File lib/evolvable/evaluation.rb, line 15
def call(population)
  population.instances.sort_by! { |instance| goal.evaluate(instance) }
end
met_goal?(population) click to toggle source
# File lib/evolvable/evaluation.rb, line 23
def met_goal?(population)
  goal.met?(population.instances.last)
end

Private Instance Methods

goal_from_hash(goal_arg) click to toggle source
# File lib/evolvable/evaluation.rb, line 44
def goal_from_hash(goal_arg)
  goal_type, value = goal_arg.first
  goal = GOALS[goal_type]
  goal.value = value
  goal
end
goal_from_symbol(goal_arg) click to toggle source
# File lib/evolvable/evaluation.rb, line 40
def goal_from_symbol(goal_arg)
  GOALS[goal_arg]
end
normalize_goal(goal_arg) click to toggle source
# File lib/evolvable/evaluation.rb, line 29
def normalize_goal(goal_arg)
  case goal_arg
  when Symbol
    goal_from_symbol(goal_arg)
  when Hash
    goal_from_hash(goal_arg)
  else
    goal_arg
  end
end