class Agent
Public Class Methods
new()
click to toggle source
# File lib/agens/agent.rb, line 9 def initialize @sensor_classes = {} @actuator_classes = {} @sensors = {} @actuators = {} setup @sensor_classes.each do |name, sensor_clazz| sensor = sensor_clazz.new_link @sensors[name] = sensor end @actuator_classes.each do |name, actuator_clazz| actuator = actuator_clazz.new_link @actuators[name] = actuator end self.async.think_loop end
Public Instance Methods
to_s()
click to toggle source
# File lib/agens/agent.rb, line 30 def to_s s = "Agent #{self.class.name}:\n" s << " Sensors:\n" @sensor_classes.each {|n, _| s << " <- #{n}\n"} s << " Actuators:\n" @actuator_classes.each {|n, _| s << " -> #{n}\n"} s end
Protected Instance Methods
actuator(actuator_clazz, name = nil)
click to toggle source
# File lib/agens/agent.rb, line 69 def actuator(actuator_clazz, name = nil) name = actuator_clazz.name.to_sym if name == nil @actuator_classes[name] = actuator_clazz end
perform_reasoning()
click to toggle source
# File lib/agens/agent.rb, line 58 def perform_reasoning raise NotImplementedError, "[#{self.class.name}] My reasoning is not implemented yet..." end
sensor(sensor_clazz, name = nil)
click to toggle source
region DSL
# File lib/agens/agent.rb, line 63 def sensor(sensor_clazz, name = nil) name = sensor_clazz.name.to_sym if name == nil @sensor_classes[name] = sensor_clazz end
setup()
click to toggle source
# File lib/agens/agent.rb, line 54 def setup warn "[#{self.class.name}] I do not have any setup...(give me some sensors and actuators please)" end
Private Instance Methods
idle()
click to toggle source
# File lib/agens/agent.rb, line 49 def idle info "[#{self.class.name}] Idling..." end
think_loop()
click to toggle source
# File lib/agens/agent.rb, line 41 def think_loop while true perform_reasoning sleep(1) end end