class ConnectedMeasure
Return the number of connected class for an archipelago
Public Instance Methods
compute(archipelago)
click to toggle source
@param archipelago {Archipelago}
# File lib/gimuby/genetic/archipelago/measure/connected_measure.rb, line 7 def compute(archipelago) init_connected_classes(archipelago) old_signature = get_state_signature new_signature = '' until old_signature == new_signature old_signature = new_signature try_to_reduce(archipelago) new_signature = get_state_signature end get_connected_classes_count end
Private Instance Methods
get_connected_classes_count()
click to toggle source
# File lib/gimuby/genetic/archipelago/measure/connected_measure.rb, line 37 def get_connected_classes_count different_classes = [] @connected_classes.each do |_, connected_class| unless different_classes.include?(connected_class) different_classes.push(connected_class) end end different_classes.length end
get_state_signature()
click to toggle source
# File lib/gimuby/genetic/archipelago/measure/connected_measure.rb, line 29 def get_state_signature signature = '' @connected_classes.each do |k, v| signature = '|' + k.to_s + '-->' + v.to_s + "\n" end signature end
init_connected_classes(archipelago)
click to toggle source
# File lib/gimuby/genetic/archipelago/measure/connected_measure.rb, line 21 def init_connected_classes(archipelago) nodes = archipelago.get_nodes @connected_classes = {} nodes.each do |node| @connected_classes[node] = node end end
try_to_reduce(archipelago)
click to toggle source
@param archipelago {Archipelago}
# File lib/gimuby/genetic/archipelago/measure/connected_measure.rb, line 48 def try_to_reduce(archipelago) @connected_classes.each do |key1, value1| @connected_classes.each do |key2, value2| unless (key1 == key2) || (value1 == value2) if archipelago.has_edge(key1, key2) if value1 < value2 @connected_classes[key2] = value1 else @connected_classes[key1] = value2 end end end end end end