Agentes Temporais¶
Em aplicações reais é comum que o comportamento do agente seja executado de tempos em tempos e não apenas uma vez, mas como fazer isso no PADE? :(
Execução de um agente temporal¶
Este é um exemplo de um agente que executa indefinidamente um comportamento a cada 1,0 segundos:
#!coding=utf-8
# Hello world temporal in PADE!
#
# Criado por Lucas S Melo em 21 de julho de 2015 - Fortaleza, Ceará - Brasil
from pade.behaviours.protocols import TimedBehaviour
from pade.misc.utility import display_message
from pade.misc.common import set_ams, start_loop
from pade.core.agent import Agent
from pade.acl.aid import AID
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__':
set_ams('localhost', 8000, debug=False)
agents = list()
agente_1 = AgenteHelloWorld(AID(name='agente_1'))
agente_1.ams = {'name': 'localhost', 'port': 8000}
agents.append(agente_1)
start_loop(agents, gui=True)
Execução de dois agentes temporais¶
Mas e se eu quiser dois agentes com o mesmo comportamento!? Não tem problema, basta instanciar um outro agente com a mesma classe!
if __name__ == '__main__':
set_ams('localhost', 8000, debug=False)
agents = list()
agente_1 = AgenteHelloWorld(AID(name='agente_1'))
agente_1.ams = {'name': 'localhost', 'port': 8000}
agente_2 = AgenteHelloWorld(AID(name='agente_2'))
agente_2.ams = {'name': 'localhost', 'port': 8000}
agents.append(agente_1)
agents.append(agente_2)
start_loop(agents, gui=True)