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