Timed Agents¶
In real world applications it’s common that the agent’s behaviours are executed in periodic intervals and not only one time, but how can we do this in PADE applications? :(
Running Timed agents in PADE¶
This is an example which an agent runs actions indefinitely for every 1,0 second.
#!coding=utf-8
# Hello world temporal in Pade!
from pade.misc.utility import display_message, start_loop
from pade.core.agent import Agent
from pade.acl.aid import AID
from pade.behaviours.protocols import TimedBehaviour
from sys import argv
class ComportTemporal(TimedBehaviour):
def __init__(self, agent, time):
super(ComportTemporal, self).__init__(agent, time)
def on_time(self):
super(ComportTemporal, self).on_time()
display_message(self.agent.aid.localname, 'Hello World!')
class AgenteHelloWorld(Agent):
def __init__(self, aid):
super(AgenteHelloWorld, self).__init__(aid=aid, debug=False)
comp_temp = ComportTemporal(self, 1.0)
self.behaviours.append(comp_temp)
if __name__ == '__main__':
agents_per_process = 2
c = 0
agents = list()
for i in range(agents_per_process):
port = int(argv[1]) + c
agent_name = 'agent_hello_{}@localhost:{}'.format(port, port)
agente_hello = AgenteHelloWorld(AID(name=agent_name))
agents.append(agente_hello)
c += 1000
start_loop(agents)