P A DE. Pade Documentation. Release 1.0

Size: px
Start display at page:

Download "P A DE. Pade Documentation. Release 1.0"

Transcription

1 P A DE Pade Documentation Release 1.0 May 31, 2016

2

3 Contents 1 Multi-Agent Systems in Python! PADE is Simple! PADE is easy to install! General Functionalities User Guide Installation Hello, world! My first agent Time agents Sending messages Receiving messages Using call_later() method Sending objects Filtering Messages GUI Protocols PADE API References API PADE i

4 ii

5 CHAPTER 1 Multi-Agent Systems in Python! PADE is a framework for the development, execution, and management of multi-agent systems in distributed computer environments. PADE is fully written in Python code and uses the libraries from Twisted project to allow communication amonge the network nodes. PADE is freeware, licensed under the MIT license terms, developed by the Smart Power Grids Research Group (GREI) with the Department of Electrical Engineering of the Federal University of Ceará. Anyone who is interested to contribute to the project is invited to download, run, test, and provide the developers with feedback about the platform. 1.1 PADE is Simple! # This is file start_mas.py from pade.misc.common import set_ams, start_loop if name == main : set_ams( localhost, 8000) start_loop(list(), gui=true) 1.2 PADE is easy to install! To install PADE, just type the following command line from the prompt in a Linux terminal: 1

6 $ pip install pade $ python start_ams.py 1.3 General Functionalities PADE was developed according to requirements for automation systems. It offers the following library resources for the development of multi-agent systems: Object Orientation abstraction for the implementation of a proper environment that allows agents to be executed using object-oriented concepts; Execution Environment module for the initialization of the agent execution environment, which is entirely developed in Python code; FIPA-ACL standard messages module for the implementation and handling of FIPA- ACL messages; Message Filter module that allows filtering messages as desired; FIPA Protocols module for the proper implementation of protocols as defined by FIPA; Cyclic and Temporal Behaviors module for the implementation of cyclical and temporal behavior; Database module for the interaction with database; Sending Serialized Objects it is possible to send serialized objects as a content of FIPA- ACL messages. In addition to the aforementioned functionalities, PADE is easy to install and setup, being multi-platform so that it can be installed and used in embedded hardware running distinct operating systems such as Linux, Raspberry Pi, BeagleBone Black, as well as Windows. 2 Chapter 1. Multi-Agent Systems in Python!

7 CHAPTER 2 User Guide 2.1 Installation Installing PADE in your PC, laptop, or embedded device is quite easy. You just need to be connected to the internet! Installation via pip To install PADE via pip, just type the following command line: $ pip install pade Done! PADE is installed! Warning: Warning: PADE has been officially tested in Ubuntu LTS environment, as it is necessary to install packages python-twisted-qt4reactor and pyside for this purpose Installation via GitHub If you wish to access PADE source code and install it using this approach, just type the following command lines: $ git clone $ cd Pade $ python setup.py install Done! PADE is ready to be used! Test Python interpreted using the following command: 3

8 from pade.misc.utility import display_message Installing PADE in a virtual environment When dealing with Python modules, it is important to know how to create and manipulate virtual environments in order to manage the project dependencies in a more organized way. Here we will show how it is possible to create a virtual Python environment, activating it and using pip to install PADE. Please, access Python Guide for a more detailed view on virtual Python environments: Firstly you need to install virtualenv package in your PC typing the following command: $ pip install virtualenv After installing virtualenv, it is time to create a virtual environment with the following command: $ cd my_project_folder $ virtualenv venv Type the following command to activate the virtual environment: $ source venv/bin/activate Now, just install PADE via pip: $ pip install pade Activating the graphical user interface (GUI) It is necessary to install PySide package, which is a Qt binding, so that PADE graphical user interface (GUI can be properly used. Since there are no Pyside binaries available for Linux and the involved procedure is quite long, it is necessary to perform the following actions: 1. Install PySide with the following command: $ sudo apt-get install python-pyside 2. Copy PySide installation folder from folder site-packages, which is the standard path used by your operating system, to the one where the standard packages of the virtual environment are currently installed. In this case, the path is venv/lib/python2.7/site-packages. Done! PySide is installed in the virtual environment, but another procedure must still be carried out, which consists in installing the reactor that interacts with Pyside event loop. For this purpose, type the following command: 4 Chapter 2. User Guide

9 $ sudo apt-get install python-qt4reactor 2.2 Hello, world! PADE was created with a main purpose: simplicity! After PADE is installed in your PC, it is quite simple to start using it. In a given folder, create a file called start_mas.py by using your favorite text editor. Then type (or copy and paste) the following code inside it: # this is file start_mas.py from pade.misc.common import set_ams, start_loop if name == main : set_ams( localhost, 8000) start_loop(list(), gui=true) You will see a graphic interface like this: 2.2. Hello, world! 5

10 2.3 My first agent Now it is time to create a real agent! Creating my first agent In order to create your first agent, open your favorite text editor and type (or copy and paste) the following code: 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 AgenteHelloWorld(Agent): def init (self, aid): super(agentehelloworld, self). init (aid=aid, debug=false) display_message(self.aid.localname, Hello World! ) if name == main : set_ams( localhost, 8000, debug=false) agents = list() agente_hello = AgenteHelloWorld(AID(name= agente_hello )) agente_hello.ams = { name : localhost, port : 8000} agents.append(agente_hello) start_loop(agents, gui=true) This is an agent, but it is not quite useful at all, is it? It can be only run once. :( The following question remains: how is it possible to create an agent whose behavior is run from time to time? 2.4 Time agents In real applications the agent behavior is typically run from time to time, and not only once. How is it possible to implement it in PADE? :( 6 Chapter 2. User Guide

11 2.4.1 Running a time agent This is the example of an agent that runs indefinitely at 1.0-second intervals. #!coding=utf-8 # Hello world temporal in PADE! # # Criado por Lucas S Melo em 21 de julho de 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) 2.4. Time agents 7

12 2.4.2 Running two time agents What if two agents with the same behavior are necessary? No problem at all. Just instantiate another agent with the same class. 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) 2.5 Sending messages Sending a message using PADE is quite simple! The messages sent by PADE-based agents use FIPA-ACL standard and have the following fields: conversation-id: conversation unique identity; performative: message label; sender: message sender; receivers: message receivers; content: message content; protocol: message protocol; language: adopted language; encoding: encoding message; ontology: adopted ontology; reply-with: expression used by the answer agent to identify a message; reply-by: reference to a previous action, where the message is an answer. in-reply-to: date/time label indicating when an answer must be received. 8 Chapter 2. User Guide

13 2.5.1 FIPA-ACL messages in PADE A FIPA-ACL message can be structured in the following form: from pade.acl.messages import ACLMessage, AID message = ACLMessage(ACLMessage.INFORM) message.set_protocol(aclmessage.fipa_request_protocol) message.add_receiver(aid( agent_receiver )) message.set_content( Hello, Agent! ) Sending a Message in PADE Once inside a given instance of class Agent(), the message can be sent by simply typing the following command: self.send(message) FIPA-ACL standard messages By using print message command, a FIPA-ACL message will be displayed as follows: (inform :conversationid b2e806b8-50a0-11e5-b3b6-e8b1fc5c3cdf :receiver (set (agent-identifier :name agent_destination@localhost:51645 :addresses (sequence localhost:51645 ) ) ) ) :content "Hello, agent!" :protocol fipa-request protocol XML standard messages It is also possible to get messages in XML format using print message.as_xml() command Sending messages 9

14 <?xml version="1.0"?> <ACLMessage date="01/09/2015 as 08:58:03:113891"> <performative>inform</performative> <sender/> <receivers> </receivers> <reply-to/> <content>ola Agente</content> <language/> <enconding/> <ontology/> <protocol>fipa-request protocol</protocol> <conversationid>b2e806b8-50a0-11e5-b3b6-e8b1fc5c3cdf</conversationid> <reply-with/> <in-reply-to/> <reply-by/> </ACLMessage> 2.6 Receiving messages In order to allow agents to receive messages in PADE, it is simply necessary to implement react() method inside the class that inherits information from class Agent() Receiving FIPA-ACL messages in PADE The following example shows the implementation of two distinct agents: sender, which is modeled by class Sender(), being responsible for sending a message; and receiver, which is modeled by class Receiver(), which receives the sent message and also aggregates react() method. 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 from pade.acl.messages import ACLMessage class Remetente(Agent): def init (self, aid): super(remetente, self). init (aid=aid, debug=false) def on_start(self): 10 Chapter 2. User Guide

15 display_message(self.aid.localname, Enviando Mensagem ) message = ACLMessage(ACLMessage.INFORM) message.add_receiver(aid( destinatario )) message.set_content( Ola ) self.send(message) def react(self, message): pass class Destinatario(Agent): def init (self, aid): super(destinatario, self). init (aid=aid, debug=false) def react(self, message): display_message(self.aid.localname, Mensagem recebida ) if name == main : set_ams( localhost, 8000, debug=false) agentes = list() destinatario = Destinatario(AID(name= destinatario )) destinatario.ams = { name : localhost, port : 8000} agentes.append(destinatario) remetente = Remetente(AID(name= remetente )) remetente.ams = { name : localhost, port : 8000} agentes.append(remetente) start_loop(agentes, gui=true) GUI It is possible to see PADE GUI as follows, which shows the agents registered in the multiagent system. By clicking the message received by the agent, it is possible to see its respective content. One moment, please! PADE allows postponing the execution of a given code part quite simply! Just employ call_later() method, which is available in class Agent() Receiving messages 11

16 12 Chapter 2. User Guide

17 2.7 Using call_later() method In order to use call_later() properly, the following parameters must be specified: delay type, method supposed to be called after such time interval and its respective argument using the following syntax: call_later(time, method, *args). The following code employs call_later() in classe Sender() using on_start() method to ensure that all agents are launched in the platform, thus initializing send_message() 4.0 seconds after the execution of agents: 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 from pade.acl.messages import ACLMessage class Remetente(Agent): def init (self, aid): super(remetente, self). init (aid=aid, debug=false) def on_start(self): self.call_later(4.0, self.send_message) def send_message(self): display_message(self.aid.localname, Enviando Mensagem ) message = ACLMessage(ACLMessage.INFORM) message.add_receiver(aid( destinatario )) message.set_content( Ola ) self.send(message) def react(self, message): pass class Destinatario(Agent): def init (self, aid): super(destinatario, self). init (aid=aid, debug=false) def react(self, message): display_message(self.aid.localname, Mensagem recebida ) if name == main : set_ams( localhost, 8000, debug=false) 2.7. Using call_later() method 13

18 agentes = list() destinatario = Destinatario(AID(name= destinatario )) destinatario.ams = { name : localhost, port : 8000} agentes.append(destinatario) remetente = Remetente(AID(name= remetente )) remetente.ams = { name : localhost, port : 8000} agentes.append(remetente) start_loop(agentes, gui=true) 2.8 Sending objects It is not always possible to represent the content that must be sent to other agents using a simple text, is it? In order to attach objects to FIPA-ACL messages in PADE, it is only necessary to use the Python native module called pickle Sending serialized objects using pickle The following steps can be used to send a serialized object with pickle: import pickle Pickle is a library dedicated to serialized objects, while pickle.dumps() must be used according to the following syntax: dados = { nome : agente_consumidor, porta : 2004} dados_serial = pickle.dumps(dados) message.set_content(dados_serial) Done! The object can now be sent as attached to the message content Receiving serialized objects using pickle Now, the object can be received by loading it with the following command: dados_serial = message.content dados = pickle.loads(dados_serial) Plain simple ;) 14 Chapter 2. User Guide

19 2.9 Filtering Messages It is possible to implement message filters in PADE in a simple and direct way using class Filter(): from pade.acl.filters import Filter Filtering messages with Filters module Let s consider the following message: from pade.acl.messages import ACLMessage from pade.acl.aid import AID message = ACLMessage(ACLMessage.INFORM) message.set_protocol(aclmessage.fipa_request_protocol) message.set_sender(aid( remetente )) message.add_receiver(aid( destinatario )) In this case, it is possible to create the following filter: from pade.acl.filters import Filter f.performative = ACLMessage.REQUEST It is possible to notice how the filter works when applied to a message in a Python interpreter session. >> f.filter(message) False Now, the filter is adjusted for another condition: f.performative = ACLMessage.INFORM Once again, it is applied to the message, as a new result is obtained. >> f.filter(message) True 2.10 GUI Activating the GUI in PADE is rather simple, as it is only necessary to set parameter gui=true in the following function: 2.9. Filtering Messages 15

20 start_loop(agentes, gui=true) PADE GUI is currently simple and does not present many functions, since its implementation is based on framework Qt/PySide, thus bringing some complex issues to be solved. However, version 2.0 is supposed to present a more complete and functional web-based GUI using Flask framework Protocols PADE supports the most used protocols established by FIPA, which are: FIPA-Request FIPA-Contract-Net FIPA-Subscribe Any protocol in PADE must be implemented as an extended class. For instance, if FIPA- Request protocol is required, a given class supposed to inherit features from class FipaRequestProtocol is necessary. from pade.behaviours.protocols import FipaRequestProtocol class ProtocoloDeRequisicao(FipaRequestProtocol): def init (self): super(protocoloderequisicao, self). init () FIPA-Request FIPA-Request is the simplest protocol used as a normalized representation for requesting a task or information from an initiator agent to a participant one. The communication diagram used by FIPA-Request protocol is shown as follows. 16 Chapter 2. User Guide

21 In order to show an example using FIPA-Request, the interaction between two agents is considered. Agent Clock displays the updated time and date every one second, although it is not able to determine such data. On the other hand, agent Time is used to provide them accurately. Then, FIPA-Request can be used so that information is changed between the agents. Agent Clock acts as an initiator, while agent Time corresponds to the participant according to the following code: from pade.misc.common import start_loop, set_ams from pade.misc.utility import display_message from pade.core.agent import Agent from pade.acl.messages import ACLMessage from pade.acl.aid import AID from pade.behaviours.protocols import FipaRequestProtocol from pade.behaviours.protocols import TimedBehaviour from datetime import datetime class CompRequest(FipaRequestProtocol): """Comportamento FIPA Request do agente Horario""" def init (self, agent): super(comprequest, self). init (agent=agent, message=none, is_initiator=false) def handle_request(self, message): super(comprequest, self).handle_request(message) display_message(self.agent.aid.localname, mensagem request recebida ) now = datetime.now() Protocols 17

22 reply = message.create_reply() reply.set_performative(aclmessage.inform) reply.set_content(now.strftime( %d/%m/%y - %H:%M:%S )) self.agent.send(reply) class CompRequest2(FipaRequestProtocol): """Comportamento FIPA Request do agente Relogio""" def init (self, agent, message): super(comprequest2, self). init (agent=agent, message=message, is_initiator=true) def handle_inform(self, message): display_message(self.agent.aid.localname, message.content) class ComportTemporal(TimedBehaviour): """Comportamento FIPA Request do agente Relogio""" def init (self, agent, time, message): super(comporttemporal, self). init (agent, time) self.message = message def on_time(self): super(comporttemporal, self).on_time() self.agent.send(self.message) class AgenteHorario(Agent): """Classe que define o agente Horario""" def init (self, aid): super(agentehorario, self). init (aid=aid, debug=false) self.comport_request = CompRequest(self) self.behaviours.append(self.comport_request) class AgenteRelogio(Agent): """Classe que define o agente Relogio""" def init (self, aid): super(agenterelogio, self). init (aid=aid) # mensagem que requisita horario do horario message = ACLMessage(ACLMessage.REQUEST) 18 Chapter 2. User Guide

23 message.set_protocol(aclmessage.fipa_request_protocol) message.add_receiver(aid(name= horario )) message.set_content( time ) self.comport_request = CompRequest2(self, message) self.comport_temp = ComportTemporal(self, 1.0, message) self.behaviours.append(self.comport_request) self.behaviours.append(self.comport_temp) def main(): agentes = list() set_ams( localhost, 8000, debug=false) a = AgenteHorario(AID(name= horario )) a.ams = { name : localhost, port : 8000} agentes.append(a) a = AgenteRelogio(AID(name= relogio )) a.ams = { name : localhost, port : 8000} agentes.append(a) start_loop(agentes, gui=true) if name == main : main() All modules and classes necessary for the implementation of agents are imported in the first part of the code. Then the classes responsible for the protocol implementation can be defined i.e. classes BehRequest and BehRequest2, which are associated with the behaviors of agents Time and Clock, respectively. Since agent Clock needs to send a request to agent Time every one second, a timed behavior must be associated to it, which is defined according to class TimedBehavior. Then the very agents are defined in classes AgentTime and AgentClock, which are an extension of class Agent and determine their respective behaviors and protocols. Function main is defined in the last part of the code, which indicates the location of agent mas, thus instantiating all agents and starting the loop execution FIPA-Contract-Net FIPA-Contract-Net protocol is used in cases where any negotiation between agents is necessary. Analogously to FIPA-Request protocol, there are two types of agents: one responsible for starting the negotiation and making requests, called initiator; and one or more Protocols 19

24 agents that join the negotiation, called participants, which answer the requests sent by the initiator. Let s see an example. An example regarding the use of FIPA-ContractNet in negotiation is shown as follows, where an initiator agent requests electric power to another two participant agents. from pade.misc.common import start_loop, set_ams from pade.misc.utility import display_message from pade.core.agent import Agent from pade.acl.messages import ACLMessage from pade.acl.aid import AID from pade.behaviours.protocols import FipaContractNetProtocol class CompContNet1(FipaContractNetProtocol): CompContNet1 Comportamento FIPA-ContractNet Iniciante que envia mensagens CFP para outros agentes alimentadores solicitando propostas de restauração. Este comportamento também faz a analise das das propostas e analisa-as selecionando a que julga ser a melhor def init (self, agent, message): 20 Chapter 2. User Guide

25 super(compcontnet1, self). init ( agent=agent, message=message, is_initiator=true) self.cfp = message def handle_all_proposes(self, proposes): """ """ super(compcontnet1, self).handle_all_proposes(proposes) melhor_propositor = None maior_potencia = 0.0 demais_propositores = list() display_message(self.agent.aid.name, Analisando propostas... ) i = 1 # lógica de seleção de propostas pela maior potência disponibilizada for message in proposes: content = message.content potencia = float(content) display_message(self.agent.aid.name, Analisando proposta {i}.format(i=i)) display_message(self.agent.aid.name, Potencia Ofertada: {pot}.format(pot=potencia)) i += 1 if potencia > maior_potencia: if melhor_propositor is not None: demais_propositores.append(melhor_propositor) maior_potencia = potencia melhor_propositor = message.sender else: demais_propositores.append(message.sender) display_message(self.agent.aid.name, A melhor proposta foi de: {pot} VA.format( pot=maior_potencia)) if demais_propositores!= []: display_message(self.agent.aid.name, Enviando respostas de recusa... ) resposta = ACLMessage(ACLMessage.REJECT_PROPOSAL) resposta.set_protocol(aclmessage.fipa_contract_net_protocol) resposta.set_content( ) for agente in demais_propositores: resposta.add_receiver(agente) Protocols 21

26 self.agent.send(resposta) if melhor_propositor is not None: display_message(self.agent.aid.name, Enviando resposta de aceitacao... ) resposta = ACLMessage(ACLMessage.ACCEPT_PROPOSAL) resposta.set_protocol(aclmessage.fipa_contract_net_protocol) resposta.set_content( OK ) resposta.add_receiver(melhor_propositor) self.agent.send(resposta) def handle_inform(self, message): """ """ super(compcontnet1, self).handle_inform(message) display_message(self.agent.aid.name, Mensagem INFORM recebida ) def handle_refuse(self, message): """ """ super(compcontnet1, self).handle_refuse(message) display_message(self.agent.aid.name, Mensagem REFUSE recebida ) def handle_propose(self, message): """ """ super(compcontnet1, self).handle_propose(message) display_message(self.agent.aid.name, Mensagem PROPOSE recebida ) class CompContNet2(FipaContractNetProtocol): CompContNet2 Comportamento FIPA-ContractNet Participante que é acionado quando um agente recebe uma mensagem do Tipo CFP enviando logo em seguida uma proposta e caso esta seja selecinada realiza as as análises de restrição para que seja possível a restauração def init (self, agent): super(compcontnet2, self). init (agent=agent, message=none, is_initiator=false) 22 Chapter 2. User Guide

27 def handle_cfp(self, message): """ """ self.agent.call_later(1.0, self._handle_cfp, message) def _handle_cfp(self, message): """ """ super(compcontnet2, self).handle_cfp(message) self.message = message display_message(self.agent.aid.name, Mensagem CFP recebida ) resposta = self.message.create_reply() resposta.set_performative(aclmessage.propose) resposta.set_content(str(self.agent.pot_disp)) self.agent.send(resposta) def handle_reject_propose(self, message): """ """ super(compcontnet2, self).handle_reject_propose(message) display_message(self.agent.aid.name, Mensagem REJECT_PROPOSAL recebida ) def handle_accept_propose(self, message): """ """ super(compcontnet2, self).handle_accept_propose(message) display_message(self.agent.aid.name, Mensagem ACCEPT_PROPOSE recebida ) resposta = message.create_reply() resposta.set_performative(aclmessage.inform) resposta.set_content( OK ) self.agent.send(resposta) class AgenteIniciante(Agent): def init (self, aid): super(agenteiniciante, self). init (aid=aid, debug=false) message = ACLMessage(ACLMessage.CFP) Protocols 23

28 message.set_protocol(aclmessage.fipa_contract_net_protocol) message.set_content( 60.0 ) message.add_receiver(aid( AP1 )) message.add_receiver(aid( AP2 )) comp = CompContNet1(self, message) self.behaviours.append(comp) self.call_later(2.0, comp.on_start) class AgenteParticipante(Agent): def init (self, aid, pot_disp): super(agenteparticipante, self). init (aid=aid, debug=false) self.pot_disp = pot_disp comp = CompContNet2(self) self.behaviours.append(comp) if name == " main ": set_ams( localhost, 5000, debug=false) aa_1 = AgenteIniciante(AID(name= AI1 )) aa_1.ams = { name : localhost, port : 5000} aa_2 = AgenteParticipante(AID(name= AP1 ), 150.0) aa_2.ams = { name : localhost, port : 5000} aa_3 = AgenteParticipante(AID(name= AP2 ), 100.0) aa_3.ams = { name : localhost, port : 5000} agents_list = list([aa_1, aa_2, aa_3]) start_loop(agents_list, gui=true) The code that implements the communication between agents using FIPA-ContractNet defines two classes for the protocol. The first one corresponds to the initiator behavior (CompContNet1), while the second one represents the participant behavior (CompCont- Net2). It is worth to mention that a CFP (call for proposals) message is necessary in order to structure the initiator class and call on_start() method. This action occurs inside the class responsible for implementing the initiator agent i.e. AgentInitiator(). On the other hand, AgentParticipant() is responsible for the implementation of agents that present proposals for the negotiation. 24 Chapter 2. User Guide

29 The messages regarding the negotiation can be seen in PADE GUI as follows FIPA-Subscribe FIPA-Subscribe protocol implements the editor-subscriber behavior, which employs an agent editor that can accept the association of other agents eventually interested in some specific information. The subscriber agent then receives a message whenever information is available from the editor. Let s see an example: In order to subscribe to information, a SUBSCRIBE message must be sent from the agent to the editor. Subscription can be then be accepted or denied (AGREE/REFUSE). If information is updated, the editor is responsible for publishing it to all respective subscribers by sending INFORM messages. The code for the implementation of one agent editor and two agents subscribers using PADE can be seen as follows. from pade.misc.common import start_loop, set_ams from pade.misc.utility import display_message from pade.core.agent import Agent from pade.acl.aid import AID from pade.acl.messages import ACLMessage Protocols 25

30 from pade.behaviours.protocols import FipaSubscribeProtocol, TimedBehaviour from numpy import sin class SubscribeInitiator(FipaSubscribeProtocol): def init (self, agent, message): super(subscribeinitiator, self). init (agent, message, is_initiator=true) def handle_agree(self, message): display_message(self.agent.aid.name, message.content) def handle_inform(self, message): display_message(self.agent.aid.name, message.content) class SubscribeParticipant(FipaSubscribeProtocol): def init (self, agent): super(subscribeparticipant, self). init (agent, message=none, is_initiator=false) def handle_subscribe(self, message): 26 Chapter 2. User Guide

31 self.register(message.sender) display_message(self.agent.aid.name, message.content) resposta = message.create_reply() resposta.set_performative(aclmessage.agree) resposta.set_content( Pedido de subscricao aceito ) self.agent.send(resposta) def handle_cancel(self, message): self.deregister(self, message.sender) display_message(self.agent.aid.name, message.content) def notify(self, message): super(subscribeparticipant, self).notify(message) class Time(TimedBehaviour): def init (self, agent, notify): super(time, self). init (agent, 1) self.notify = notify self.inc = 0 def on_time(self): super(time, self).on_time() message = ACLMessage(ACLMessage.INFORM) message.set_protocol(aclmessage.fipa_subscribe_protocol) message.set_content(str(sin(self.inc))) self.notify(message) self.inc += 0.1 class AgenteInitiator(Agent): def init (self, aid, message): super(agenteinitiator, self). init (aid) self.protocol = SubscribeInitiator(self, message) self.behaviours.append(self.protocol) class AgenteParticipante(Agent): def init (self, aid): super(agenteparticipante, self). init (aid) self.protocol = SubscribeParticipant(self) Protocols 27

32 self.timed = Time(self, self.protocol.notify) self.behaviours.append(self.protocol) self.behaviours.append(self.timed) if name == main : set_ams( localhost, 5000, debug=false) editor = AgenteParticipante(AID( editor )) editor.ams = { name : localhost, port : 5000} msg = ACLMessage(ACLMessage.SUBSCRIBE) msg.set_protocol(aclmessage.fipa_subscribe_protocol) msg.set_content( Pedido de subscricao ) msg.add_receiver( editor ) ass1 = AgenteInitiator(AID( assinante_1 ), msg) ass1.ams = { name : localhost, port : 5000} ass2 = AgenteInitiator(AID( assinante_2 ), msg) ass2.ams = { name : localhost, port : 5000} agentes = [editor, ass1, ass2] start_loop(agentes, gui=true) 28 Chapter 2. User Guide

33 CHAPTER 3 PADE API References 3.1 API PADE Aqui estão todos os módulos que são de interesse para utilização do PADE, tais como o módulo que contém a classe Agent, módulo de construção de mensagens e de construção de comportamentos. 29

Programming Agents with JADE for Multi-Agent Systems

Programming Agents with JADE for Multi-Agent Systems Programming Agents with JADE for Multi-Agent Systems Ass.Lecturer Noor Thamer Based on Jade, Java and Eclipse documentation Ass.Lecturer Noor Thamer 1 Content Briefly about components JADE overview Setting

More information

Flask-Sendmail Documentation

Flask-Sendmail Documentation Flask-Sendmail Documentation Release 0.1 Anthony Ford February 14, 2014 Contents 1 Installing Flask-Sendmail 3 2 Configuring Flask-Sendmail 5 3 Sending messages 7 4 Bulk emails 9 5 Attachments 11 6 Unit

More information

FIPA ACL Message Structure Specification

FIPA ACL Message Structure Specification 1 2 3 4 5 FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS FIPA ACL Message Structure Specification 6 7 Document title FIPA ACL Message Structure Specification Document number XC00061E Document source FIPA TC

More information

Learn Sphinx Documentation Documentation

Learn Sphinx Documentation Documentation Learn Sphinx Documentation Documentation Release 0.0.1 Lucas Simon Rodrigues Magalhaes January 31, 2014 Contents 1 Negrito e italico 1 2 Listas 3 3 Titulos 5 4 H1 Titulo 7 4.1 H2 Sub-Titulo.............................................

More information

yardstick Documentation

yardstick Documentation yardstick Documentation Release 0.1.0 Kenny Freeman December 30, 2015 Contents 1 yardstick 3 1.1 What is yardstick?............................................ 3 1.2 Features..................................................

More information

iperf3 Documentation Release Mathijs Mortimer

iperf3 Documentation Release Mathijs Mortimer iperf3 Documentation Release 0.1.7 Mathijs Mortimer Nov 07, 2017 Contents 1 Installation 3 1.1 iperf3 utility............................................... 3 1.2 iperf3 python wrapper..........................................

More information

CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup

CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup Purpose: The purpose of this lab is to setup software that you will be using throughout the term for learning about Python

More information

The protocols are governed by the FIPA organization and their precise definitions are available at

The protocols are governed by the FIPA organization and their precise definitions are available at 2. Communication Protocols Communication protocols were created to allow the agents to communicate regardless of their implementation, including the environment and the programming language. The protocols

More information

doconv Documentation Release Jacob Mourelos

doconv Documentation Release Jacob Mourelos doconv Documentation Release 0.1.6 Jacob Mourelos October 17, 2016 Contents 1 Introduction 3 2 Features 5 2.1 Available Format Conversions...................................... 5 3 Installation 7 3.1

More information

Software Agent Computing. Agent Mobility

Software Agent Computing. Agent Mobility Software Agent Computing Agent Mobility Planning mobility roadmap Agent mobility = to migrate or to make a copy (clone) itself across one or multiple network hosts Support for mobility in JADE: a set of

More information

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears About the Tutorial TurboGears is a Python web application framework, which consists of many modules. It is designed around the MVC architecture that are similar to Ruby on Rails or Struts. TurboGears are

More information

simpleai Documentation

simpleai Documentation simpleai Documentation Release 0.8.1 Juan Pedro Fisanotti Sep 07, 2017 Contents 1 Simple AI 3 2 Installation 5 3 Examples 7 4 More detailed documentation 9 5 Help and discussion 11 6 Authors 13 i ii simpleai

More information

Django-CSP Documentation

Django-CSP Documentation Django-CSP Documentation Release 3.0 James Socol, Mozilla September 06, 2016 Contents 1 Installing django-csp 3 2 Configuring django-csp 5 2.1 Policy Settings..............................................

More information

Table of Contents EVALUATION COPY

Table of Contents EVALUATION COPY Table of Contents Introduction... 1-2 A Brief History of Python... 1-3 Python Versions... 1-4 Installing Python... 1-5 Environment Variables... 1-6 Executing Python from the Command Line... 1-7 IDLE...

More information

Rastreamento de objetos do vpc

Rastreamento de objetos do vpc Rastreamento de objetos do vpc Índice Introdução Rastreamento de objetos do vpc Diagrama de Rede Comandos show da linha de base Introdução Este documento descreve o Rastreamento de objetos do vpc, porque

More information

Roman Numeral Converter Documentation

Roman Numeral Converter Documentation Roman Numeral Converter Documentation Release 0.1.0 Adrian Cruz October 07, 2014 Contents 1 Roman Numeral Converter 3 1.1 Features.................................................. 3 2 Installation 5

More information

Pizco Documentation. Release 0.1. Hernan E. Grecco

Pizco Documentation. Release 0.1. Hernan E. Grecco Pizco Documentation Release 0.1 Hernan E. Grecco Nov 02, 2017 Contents 1 Design principles 3 2 Pizco in action 5 3 Contents 7 3.1 Getting Started.............................................. 7 3.2 Futures..................................................

More information

Querying Microsoft SQL Server 2014 (20461)

Querying Microsoft SQL Server 2014 (20461) Querying Microsoft SQL Server 2014 (20461) Formato do curso: Presencial e Live Training Localidade: Lisboa Com certificação: MCSA: SQL Server Data: 14 Nov. 2016 a 25 Nov. 2016 Preço: 1630 Promoção: -760

More information

Software repository suse linux. Software repository suse linux.zip

Software repository suse linux. Software repository suse linux.zip Software repository suse linux Software repository suse linux.zip 22/10/2014 Zypper is command line interface in SUSE Linux which is used to install, update, remove software, manage repositories.download

More information

python-ev3dev Documentation

python-ev3dev Documentation python-ev3dev Documentation Release 1.0.0.post32 Ralph Hempel et al Oct 08, 2017 Contents 1 Getting Started 3 2 Usage Examples 5 2.1 Required: Import the library.......................................

More information

flask-jwt-simple Documentation

flask-jwt-simple Documentation flask-jwt-simple Documentation Release 0.0.3 vimalloc rlam3 Nov 17, 2018 Contents 1 Installation 3 2 Basic Usage 5 3 Changing JWT Claims 7 4 Changing Default Behaviors 9 5 Configuration Options 11 6 API

More information

Introduction to containers

Introduction to containers Introduction to containers Nabil Abdennadher nabil.abdennadher@hesge.ch 1 Plan Introduction Details : chroot, control groups, namespaces My first container Deploying a distributed application using containers

More information

NOTES ON RUNNING PYTHON CODE

NOTES ON RUNNING PYTHON CODE NOTES ON RUNNING PYTHON CODE ERIC MARTIN Part 1. Setting things up The School has python 3.2.3 installed. 1. Installing python if necessary On personal computers with no version of python 3 installed,

More information

Tizen TCT User Guide

Tizen TCT User Guide Tizen 2.3.1 TCT User Guide Table of Contents 1. Environment setup... 3 1.1. Symbols and abbreviations... 3 1.2. Hardware Requirements... 3 1.3. Software Requirements... 3 2. Getting TCT-source and TCT-manager...

More information

Python wrapper for Viscosity.app Documentation

Python wrapper for Viscosity.app Documentation Python wrapper for Viscosity.app Documentation Release Paul Kremer March 08, 2014 Contents 1 Python wrapper for Viscosity.app 3 1.1 Features.................................................. 3 2 Installation

More information

Plumeria Documentation

Plumeria Documentation Plumeria Documentation Release 0.1 sk89q Aug 20, 2017 Contents 1 Considerations 3 2 Installation 5 2.1 Windows................................................. 5 2.2 Debian/Ubuntu..............................................

More information

CGI Web Server e*way Intelligent Adapter User s Guide

CGI Web Server e*way Intelligent Adapter User s Guide CGI Web Server e*way Intelligent Adapter User s Guide Release 5.0.5 for Schema Run-time Environment (SRE) Monk Version Copyright 2005, 2010, Oracle and/or its affiliates. All rights reserved. This software

More information

ndeftool documentation

ndeftool documentation ndeftool documentation Release 0.1.0 Stephen Tiedemann May 19, 2018 Contents 1 NDEFTOOL 3 1.1 Synopsis................................................. 3 1.2 Description................................................

More information

Using the BMP085/180 with Raspberry Pi or Beaglebone Black

Using the BMP085/180 with Raspberry Pi or Beaglebone Black Using the BMP085/180 with Raspberry Pi or Beaglebone Black Created by Kevin Townsend Last updated on 2014-06-28 08:31:07 PM EDT Guide Contents Guide Contents Overview A Note on Distributions Configuring

More information

Quick Installation Guide: TC-Python

Quick Installation Guide: TC-Python Quick Installation Guide: TC-Python Thermo-Calc Version 2018b Quick Installation Guide: TC-Python ǀ 1 of 7 TC-Python Quick Install Guide This quick guide helps you do a TC-Python API installation. There

More information

GMusicProcurator Documentation

GMusicProcurator Documentation GMusicProcurator Documentation Release 0.5.0 Mark Lee Sep 27, 2017 Contents 1 Features 3 2 Table of Contents 5 2.1 Installation................................................ 5 2.1.1 Requirements..........................................

More information

gunny Documentation Release David Blewett

gunny Documentation Release David Blewett gunny Documentation Release 0.1.0 David Blewett December 29, 2013 Contents 1 gunny 3 1.1 Features.................................................. 3 2 Installation 5 2.1 Dependencies...............................................

More information

Tensorflow v0.10 installed from scratch on Ubuntu 16.04, CUDA 8.0RC+Patch, cudnn v5.1 with a 1080GTX

Tensorflow v0.10 installed from scratch on Ubuntu 16.04, CUDA 8.0RC+Patch, cudnn v5.1 with a 1080GTX Tensorflow v0.10 installed from scratch on Ubuntu 16.04, CUDA 8.0RC+Patch, cudnn v5.1 with a 1080GTX While Tensorflow has a great documentation, you have quite a lot of details that are not obvious, especially

More information

httpclient Documentation

httpclient Documentation httpclient Documentation Release 1 Franck Cuny May 07, 2012 CONTENTS 1 Basic usage 3 2 User Guide 5 2.1 Installing httpclient............................................ 5 2.2 Creating your first client.........................................

More information

A Sample Approach to your Project

A Sample Approach to your Project A Sample Approach to your Project An object-oriented interpreted programming language Python 3 :: Flask :: SQLite3 A micro web framework written in Python A public domain, barebones SQL database system

More information

Platform Migrator Technical Report TR

Platform Migrator Technical Report TR Platform Migrator Technical Report TR2018-990 Munir Contractor mmc691@nyu.edu Christophe Pradal christophe.pradal@inria.fr Dennis Shasha shasha@cs.nyu.edu May 12, 2018 CONTENTS: 1 Abstract 4 2 Platform

More information

TPS Documentation. Release Thomas Roten

TPS Documentation. Release Thomas Roten TPS Documentation Release 0.1.0 Thomas Roten Sep 27, 2017 Contents 1 TPS: TargetProcess in Python! 3 2 Installation 5 3 Contributing 7 3.1 Types of Contributions..........................................

More information

UCRI IEEE Secure Development Conference RAPIDS 2 HS outreach SFS

UCRI IEEE Secure Development Conference RAPIDS 2 HS outreach SFS UC.yber; Meeting 20 Announcements Tomorrow UCRI will be hearing out our research ideas IEEE Secure Development Conference (at MIT) apply by Aug 11th RAPIDS 2 under discussion as State faces funding problems

More information

API Wrapper Documentation

API Wrapper Documentation API Wrapper Documentation Release 0.1.7 Ardy Dedase February 09, 2017 Contents 1 API Wrapper 3 1.1 Overview................................................. 3 1.2 Installation................................................

More information

API for RF receivers including ThinkRF WSA4000

API for RF receivers including ThinkRF WSA4000 API for RF receivers including ThinkRF WSA4000 Release 0.3.0 ThinkRF Corporation February 01, 2013 CONTENTS i ii Contents: CONTENTS 1 2 CONTENTS CHAPTER ONE MANUAL 1.1 Installation Install from PyPI:

More information

I2C LCD Documentation

I2C LCD Documentation I2C LCD Documentation Release 0.1.0 Peter Landoll Sep 04, 2017 Contents 1 I2C LCD 3 1.1 Features.................................................. 3 1.2 Credits..................................................

More information

Silpa Documentation. Release 0.1. Santhosh Thottingal

Silpa Documentation. Release 0.1. Santhosh Thottingal Silpa Documentation Release 0.1 Santhosh Thottingal February 27, 2014 Contents 1 Install Instructions 3 1.1 VirtialEnv Instructions.......................................... 3 2 Silpa-Flask 5 2.1 Writing

More information

smsghussd Documentation

smsghussd Documentation smsghussd Documentation Release 0.1.0 Mawuli Adzaku July 11, 2015 Contents 1 How to use 3 2 Author 7 3 LICENSE 9 3.1 Contents:................................................. 9 3.2 Feedback.................................................

More information

Instituto Politécnico de Tomar. Python. Introduction. Ricardo Campos. Licenciatura ITM Técnicas Avançadas de Programação Abrantes, Portugal, 2018

Instituto Politécnico de Tomar. Python. Introduction. Ricardo Campos. Licenciatura ITM Técnicas Avançadas de Programação Abrantes, Portugal, 2018 Instituto Politécnico de Tomar Python Introduction Ricardo Campos Licenciatura ITM Técnicas Avançadas de Programação Abrantes, Portugal, 2018 This presentation was developed by Ricardo Campos, Professor

More information

ReggieNet: Communication Workshop

ReggieNet: Communication Workshop ReggieNet: Communication Workshop Facilitators: Mayuko Nakamura (mnakamu), Charles Bristow (cebrist), Linda Summer (lsummer) & Steve Travers (sttrave) Forums Before you start FORUM: A Forum is a collection

More information

Hydra Installation Manual

Hydra Installation Manual Hydra Installation Manual Table of Contents 1. Introduction...1 2. Download...1 3. Configuration...1 4. Creating the Database...2 5. Importing WordNets...2 6. Known Issues...3 7. Detailed installation

More information

Campaigns. Salesforce, Winter

Campaigns. Salesforce, Winter Campaigns Salesforce, Winter 19 @salesforcedocs Última atualização: 16/10/2018 A versão em Inglês deste documento tem precedência sobre a versão traduzida. Copyright 2000 2018 salesforce.com, inc. Todos

More information

Bitnami Re:dash for Huawei Enterprise Cloud

Bitnami Re:dash for Huawei Enterprise Cloud Bitnami Re:dash for Huawei Enterprise Cloud Description Re:dash is an open source data visualization and collaboration tool. It was designed to allow fast and easy access to billions of records in all

More information

FIPA Agent Software Integration Specification

FIPA Agent Software Integration Specification FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS FIPA Agent Software Integration Specification Document title FIPA Agent Software Integration Specification Document number XC00079A Document source FIPA Architecture

More information

User-space SPI TFT Python Library - ILI9341

User-space SPI TFT Python Library - ILI9341 User-space SPI TFT Python Library - ILI9341 Created by Tony DiCola Last updated on 2015-04-09 03:44:11 PM EDT Guide Contents Guide Contents Overview Wiring Raspberry Pi BeagleBone Black Usage Dependencies

More information

PriceMyLoan.com Lock Desk Guide. Revision 0705

PriceMyLoan.com Lock Desk Guide. Revision 0705 PriceMyLoan.com Revision 0705 PriceMyLoan Introduction...3 Customer Support...3 Viewing Rate Lock Submissions...4 Approving Rate Locks...4 Breaking Rate Locks...5 Recording Notes...5 Using Tasks...5 The

More information

American Public Health Association s Affiliate Online Community User s Guide. October 2015 edition

American Public Health Association s Affiliate Online Community User s Guide. October 2015 edition American Public Health Association s Affiliate Online Community User s Guide October 2015 edition TABLE OF CONTENTS Getting Started- Creating Your Account.3 Getting Started- Tips and Suggestions.4 Getting

More information

payload Documentation

payload Documentation payload Documentation Release Paul Belanger January 31, 2015 Contents 1 API Complete Reference 3 1.1 Payload API Reference.......................................... 3 2 Developers Docs 9 2.1 Developer

More information

Programming in Python

Programming in Python COURSE DESCRIPTION This course presents both the programming interface and the techniques that can be used to write procedures in Python on Unix / Linux systems. COURSE OBJECTIVES Each participant will

More information

Picasa web download photos. Picasa web download photos.zip

Picasa web download photos. Picasa web download photos.zip Picasa web download photos Picasa web download photos.zip 12/02/2016 Empresa quer focar seus esforços no Google Photos, um "novo espaço para acessar os dados dos seus Picasa Web Albums e poder ver, fazer

More information

Release Ralph Offinger

Release Ralph Offinger nagios c heck p aloaltodocumentation Release 0.3.2 Ralph Offinger May 30, 2017 Contents 1 nagios_check_paloalto: a Nagios/Icinga Plugin 3 1.1 Documentation..............................................

More information

coopy Documentation Release 0.4b Felipe Cruz

coopy Documentation Release 0.4b Felipe Cruz coopy Documentation Release 0.4b Felipe Cruz November 27, 2013 Contents 1 Using 3 2 Restrictions 5 3 Status 7 4 contribute 9 5 contents 11 5.1 Installation................................................

More information

Managing Dependencies and Runtime Security. ActiveState Deminar

Managing Dependencies and Runtime Security. ActiveState Deminar ActiveState Deminar About ActiveState Track-record: 97% of Fortune 1000, 20+ years open source Polyglot: 5 languages - Python, Perl, Tcl, Go, Ruby Runtime Focus: concept to development to production Welcome

More information

FIPA specification and JADE. Tomáš Poch

FIPA specification and JADE. Tomáš Poch FIPA specification and JADE Tomáš Poch Agents System that is situated in some environment, and that is capable of autonomous action in this environment in order to meet its design objectives [Wooldridge

More information

MaSMT: A Multi-agent System Development Framework for English-Sinhala Machine Translation

MaSMT: A Multi-agent System Development Framework for English-Sinhala Machine Translation MaSMT: A Multi-agent System Development Framework for English-Sinhala Machine Translation B. Hettige #1, A. S. Karunananda *2, G. Rzevski *3 # Department of Statistics and Computer Science, University

More information

Easy PostgreSQL Clustering with Patroni. Ants Aasma

Easy PostgreSQL Clustering with Patroni. Ants Aasma Easy PostgreSQL Clustering with Patroni Introduction About me Support engineer at Cybertec Helping others run PostgreSQL for 5 years. Helping myself run PostgreSQL since 7.4 days. What are we going to

More information

Patch Server for Jamf Pro Documentation

Patch Server for Jamf Pro Documentation Patch Server for Jamf Pro Documentation Release 0.8.2 Bryson Tyrrell Jun 06, 2018 Contents 1 Change History 3 2 Using Patch Starter Script 7 3 Troubleshooting 9 4 Testing the Patch Server 11 5 Running

More information

Python simple arp table reader Documentation

Python simple arp table reader Documentation Python simple arp table reader Documentation Release 0.0.1 David Francos Nov 17, 2017 Contents 1 Python simple arp table reader 3 1.1 Features.................................................. 3 1.2 Usage...................................................

More information

Twisted is the first library we ll be working with that does not come with the Python Standard Library.

Twisted is the first library we ll be working with that does not come with the Python Standard Library. LECTURE 12 Twisted TWISTED Last lecture, we introduced the mental model needed to work with Twisted. The most important points to keep in mind are: Twisted is asynchronous. Multiple independent tasks may

More information

Briefcase Documentation

Briefcase Documentation Briefcase Documentation Release 0.1 Russell Keith-Magee Jan 26, 2018 Contents 1 Table of contents 3 1.1 Tutorial.................................................. 3 1.2 How-to guides..............................................

More information

Installation Guide for Python

Installation Guide for Python GPDI 513 Beginner s Guide to the Python Programming Language Installation Guide for Python Linux Operating System If you are using a Linux computer, open the terminal and type the following commands in

More information

Python AMT Tools Documentation

Python AMT Tools Documentation Python AMT Tools Documentation Release 0.8.0 Sean Dague Jan 14, 2018 Contents 1 Python AMT Tools 3 1.1 Background................................................ 3 1.2 Hardware that includes AMT......................................

More information

Python Project Example Documentation

Python Project Example Documentation Python Project Example Documentation Release 0.1.0 Neil Stoddard Mar 22, 2017 Contents 1 Neilvana Example 3 1.1 Features.................................................. 3 1.2 Credits..................................................

More information

Frontier Documentation

Frontier Documentation Frontier Documentation Release 0.1.3-dev Sam Nicholls August 14, 2014 Contents 1 Frontier 3 1.1 Requirements............................................... 3 1.2 Installation................................................

More information

What is an Algebra. Core Relational Algebra. What is Relational Algebra? Operação de Seleção. Álgebra Relacional: Resumo

What is an Algebra. Core Relational Algebra. What is Relational Algebra? Operação de Seleção. Álgebra Relacional: Resumo What is an Algebra Bancos de Dados Avançados Revisão: Álgebra Relacional DCC030 - TCC: Bancos de Dados Avançados (Ciência Computação) DCC049 - TSI: Bancos de Dados Avançados (Sistemas Informação) DCC842

More information

Yellow pages and Interaction Protocols

Yellow pages and Interaction Protocols Yellow pages and Interaction Protocols Fabiano Dalpiaz Agent-Oriented Software Engineering (AOSE) 2009-10 Yellow pages How do you look for someone providing a service? Either you know a service provider......or

More information

Using the YANG Development Kit (YDK) with Cisco IOS XE

Using the YANG Development Kit (YDK) with Cisco IOS XE Using the YANG Development Kit (YDK) with Cisco IOS XE 1. Overview The YANG Development Kit (YDK) is a software development kit that provides APIs that are generated from YANG data models. These APIs,

More information

Sprite (contd) Code and Process Migration

Sprite (contd) Code and Process Migration Sprite (contd) Sprite process migration Facilitated by the Sprite file system State transfer Swap everything out Send page tables and file descriptors to receiver Demand page process in Only dependencies

More information

Ceilometer Documentation

Ceilometer Documentation Ceilometer Documentation Release 0.0 OpenStack, LLC July 06, 2012 CONTENTS 1 What is the purpose of the project and vision for it? 3 2 Table of contents 5 2.1 Initial setup................................................

More information

Embedded Linux. A Tour inside ARM's Kernel

Embedded Linux. A Tour inside ARM's Kernel Embedded Linux A Tour inside ARM's Kernel Contents 1. Shell basics 2. Introduction to Embedded Linux 3. Kernel Programming for Module / Driver Installation 4. Module / Device Driver in RPi 5. Cross Compiling

More information

Installation of the DigitalSystemsVM virtual machine

Installation of the DigitalSystemsVM virtual machine Installation of the DigitalSystemsVM virtual machine Notice This document explains how to install the DigitalSystemsVM virtual machine on a computer with Linux Ubuntu 16.04 LTS. If questions or problems

More information

Jade: Java Agent DEvelopment Framework Overview

Jade: Java Agent DEvelopment Framework Overview Jade: Java Agent DEvelopment Framework Overview Multiagent Systems LM Sistemi Multiagente LM Stefano Mariani revised by Andrea Omicini s.mariani@unibo.it, andrea.omicini@unibo.it Dipartimento di Informatica:

More information

AMath 483/583 Lecture 2

AMath 483/583 Lecture 2 AMath 483/583 Lecture 2 Outline: Binary storage, floating point numbers Version control main ideas Client-server version control, e.g., CVS, Subversion Distributed version control, e.g., git, Mercurial

More information

invenio-formatter Documentation

invenio-formatter Documentation invenio-formatter Documentation Release 1.0.0 CERN Mar 25, 2018 Contents 1 User s Guide 3 1.1 Installation................................................ 3 1.2 Configuration...............................................

More information

First Exam/Second Test 19/6/2010

First Exam/Second Test 19/6/2010 Instituto Superior Técnico Programação Avançada First Exam/Second Test 19/6/2010 Name: Number: Write your number on every page. Your answers should not be longer than the available space. You can use the

More information

Getting Started with Python

Getting Started with Python Getting Started with Python A beginner course to Python Ryan Leung Updated: 2018/01/30 yanyan.ryan.leung@gmail.com Links Tutorial Material on GitHub: http://goo.gl/grrxqj 1 Learning Outcomes Python as

More information

Archan. Release 2.0.1

Archan. Release 2.0.1 Archan Release 2.0.1 Jul 30, 2018 Contents 1 Archan 1 1.1 Features.................................................. 1 1.2 Installation................................................ 1 1.3 Documentation..............................................

More information

Pypeline Documentation

Pypeline Documentation Pypeline Documentation Release 0.2 Kyle Corbitt May 09, 2014 Contents 1 Contents 3 1.1 Installation................................................ 3 1.2 Quick Start................................................

More information

The Basics of Visual Studio Code

The Basics of Visual Studio Code / VS Code 0.9.1 is available. Check out the new features /updates and update /docs/howtoupdate it now. TOPICS The Basics Tweet 16 Like 16 Edit in GitHub https://github.com/microsoft/vscode docs/blob/master/docs/editor/codebasics.md

More information

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version...

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version... Contents Note: pay attention to where you are........................................... 1 Note: Plaintext version................................................... 1 Hello World of the Bash shell 2 Accessing

More information

The Bliss GUI Framework. Installation Guide. Matías Guijarro

The Bliss GUI Framework. Installation Guide. Matías Guijarro The Bliss GUI Framework Installation Guide Author Date Matías Guijarro 08/09/05 Index 1. Installing the Framework... 3 1.1 Deploying the packages... 3 1.2 Testing the installation... 4 2.Setting up the

More information

AMath 483/583 Lecture 2. Notes: Notes: Homework #1. Class Virtual Machine. Notes: Outline:

AMath 483/583 Lecture 2. Notes: Notes: Homework #1. Class Virtual Machine. Notes: Outline: AMath 483/583 Lecture 2 Outline: Binary storage, floating point numbers Version control main ideas Client-server version control, e.g., CVS, Subversion Distributed version control, e.g., git, Mercurial

More information

Pulp Python Support Documentation

Pulp Python Support Documentation Pulp Python Support Documentation Release 1.0.1 Pulp Project October 20, 2015 Contents 1 Release Notes 3 1.1 1.0 Release Notes............................................ 3 2 Administrator Documentation

More information

Briefcase Documentation

Briefcase Documentation Briefcase Documentation Release 0.2.6.dev1 Russell Keith-Magee Jul 10, 2018 Contents 1 Table of contents 3 1.1 Tutorial.................................................. 3 1.2 How-to guides..............................................

More information

PySide. overview. Marc Poinot (ONERA/DSNA)

PySide. overview. Marc Poinot (ONERA/DSNA) PySide overview Marc Poinot (ONERA/DSNA) Outline Quite short but practical overview Qt Toolkit overview Model/View PySide pyqt4 vs PySide Designer & Cython Widget bindings Class reuse ONERA/PySide-2/8

More information

TZC WALLET + HEADLESS WALLET ON LINUX. Local Wallet + PoS Headless Wallet on VPS (Ubuntu 16.04)

TZC WALLET + HEADLESS WALLET ON LINUX. Local Wallet + PoS Headless Wallet on VPS (Ubuntu 16.04) TZC WALLET + HEADLESS WALLET ON LINUX Local Wallet + PoS Headless Wallet on VPS (Ubuntu 16.04) What you need: a - A local computer running under Ubuntu 16.04 b - A remote server (Virtual Private Network,

More information

A Byte of Python. Swaroop C H

A Byte of Python. Swaroop C H A Byte of Python Swaroop C H A Byte of Python Swaroop C H Copyright 2003-2005 Swaroop C H Abstract This book will help you to learn the Python programming language, whether you are new to computers or

More information

FIPA-OS Feature Overview. Agent Technology Group Nortel Networks February 2000

FIPA-OS Feature Overview. Agent Technology Group Nortel Networks February 2000 FIPA-OS Feature Overview Agent Technology Group Nortel Networks February 2000 FIPA-OS - Aims FIPA-OS is a Open Source implementation of FIPA and is available for free. http://www.nort elnetworks.com/ fipa-os

More information

Flask-Sitemap Documentation

Flask-Sitemap Documentation Flask-Sitemap Documentation Release 0.3.0 CERN May 06, 2018 Contents 1 Contents 3 2 Installation 5 2.1 Requirements............................................... 5 3 Usage 7 3.1 Simple Example.............................................

More information

yagmail Documentation

yagmail Documentation yagmail Documentation Release 0.10.189 kootenpv Feb 08, 2018 Contents 1 API Reference 3 1.1 Authentication.............................................. 3 1.2 SMTP Client...............................................

More information

Patch Server for Jamf Pro Documentation

Patch Server for Jamf Pro Documentation Patch Server for Jamf Pro Documentation Release 0.7.0 Bryson Tyrrell Mar 16, 2018 Contents 1 Change History 3 2 Setup the Patch Server Web Application 7 3 Add Your Patch Server to Jamf Pro 11 4 API Authentication

More information

Coding Getting Started with Python

Coding Getting Started with Python DEVNET-3602 Coding 1002 - Getting Started with Python Matthew DeNapoli, DevNet Developer Evangelist Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find

More information

SharePoint. Team Site End User Guide. Table of Contents

SharePoint. Team Site End User Guide. Table of Contents Table of Contents Introduction... 1 Logging in for the First Time:... 1 Areas of the team site:... 2 Navigating the team site:... 3 Adding Content to the team site:... 3 The Ribbon:... 3 Adding a Link:...

More information

1.1 Jadex - Engineering Goal-Oriented Agents

1.1 Jadex - Engineering Goal-Oriented Agents 1.1 Jadex - Engineering Goal-Oriented Agents In previous sections of the book agents have been considered as software artifacts that differ from objects mainly in their capability to autonomously execute

More information

Niv Mizrahi. VP github.com/nivm

Niv Mizrahi. VP  github.com/nivm Python Packaging Niv Mizrahi VP R&D @ emedgene @ravinizme github.com/nivm Python We Love Python Python The syntax is simple and expressive, it has tons of open source modules and frameworks and a great

More information