asf: agent society framework viviane torres da silva mariela inês cortés carlos j. p. de lucena
TRANSCRIPT
![Page 1: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/1.jpg)
ASF: Agent Society Framework
Viviane Torres da SilvaMariela Inês Cortés
Carlos J. P. de Lucena
![Page 2: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/2.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Motivação
• Como implementar sistemas multi-agentes (SMA)?
• Como implementar os agentes, o ambiente, os papéis usando orientação a objetos?
• Como mapear agentes para classes, organizações para classes, ...?
• Usar de plataformas, arquiteturas, frameworks orientados a objetos específicos para implementar SMA
• Exemplos:– Jade, Jadex, FIPAOS, ZEUS, KAoS e Desire
![Page 3: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/3.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Frameworks e Arquiteturas OO
• Objetivo: prover classes orientadas a agentes reutilizáveis que possam ser estendidas e customizadas para implementar sistemas de domínio específico
• Definem classes orientadas a objetos, os relacionamentos entres as classes e a maneira como estas classes interagem
![Page 4: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/4.jpg)
ASF Framework
![Page 5: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/5.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Agenda
• Sociedade de agentes
• Aspectos estruturais do ASF
• Aspectos dinâmicos do ASF– Modelo de ciclo de vida das entidades– Modelo computacional das entidades
• Exemplo utilizando o ASF
• Trabalhos em andamento
![Page 6: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/6.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Sociedade de Agentes
• Sociedade = grupo = organização
• Não são compostas apenas por agentes mas também por organizações, papéis, ambientes e objetos
• Agentes podem desempenhar vários papéis em diferentes organizações
• Agentes desempenham pelo menos um papel em uma organização
![Page 7: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/7.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Entidades
• Objects– Attributes, methods
• Agents– Goals, beliefs, plans and actions
• Organizations– Goals, beliefs, plans, actions e axioms
• Agent Roles– Goals, beliefs, duties, rights e protocols
• Object Roles– Attributes and methods
• Environment– Passive or active environment
![Page 8: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/8.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Aspectos Estruturais do ASF
• Objetivo: dar suporte à implementação de agentes, organizações, papéis e ambientes
• Como implementar ...– as entidades,– suas propriedades, – seus relacionamentos, – a interação entre as entidades e– a execução interna das entidades?
![Page 9: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/9.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Aspectos Estruturais do ASF
• Fornece um conjunto de módulos que devem ser estendidos para implementar a aplicação
• Cada módulo representa uma entidade do SMA
• Instanciação da aplicação:– para implementar uma classe de agente da
aplicação estende-se o módulo Agent– para implementar uma classe de organização da
aplicação estende-se o módulo Organization– ...
![Page 10: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/10.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Agente
• Agent– Thread (entidade autônoma)
• Messages– Enviadas e recebidas (entidade interativa)
• Goals– Nome, tipo, valor– Está associado a planos que podem atingir o goal
• Beliefs– Nome, tipo, valor
![Page 11: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/11.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Agente
• Plans– Define uma ordem de execução de um conjunto de ações– Está relacionado a goals que pode atingir
• Actions– Define a execução interna do agentes (entidade adaptativa)– Possui pré e pós-condições
![Page 12: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/12.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Agent
![Page 13: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/13.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Organização
• Organização– Thread (entidade autônoma)
• Main-organization– Não desempenha papéis– Pode definir sub-organizações
• (Sub-)Organization– Desempenha papéis em organizações– Pode definir sub-organizações
• Goals, beliefs, plans, actions and messages• Axiom:
– Nome, tipo, valor
![Page 14: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/14.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Organization
![Page 15: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/15.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Agent Role
• Goals, Beliefs
• Duties– Define ações que são obrigações
• Rights– Define ações que são direitos
• Protocols– Define ordem de envio e recebimento de
mensagems
![Page 16: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/16.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Agent Role
![Page 17: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/17.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Object Role
• Atributos• Métodos
![Page 18: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/18.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Environment
• Passive environment• Active environment
![Page 19: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/19.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Relação entre as entidades
![Page 20: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/20.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Estrutura do ASF
![Page 21: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/21.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida X Modelo computacional
• Modelo de ciclo de vida– Define o conjunto de estado possíveis e as suas
transições
• Modelo computacional.– Descreve a execução da entidade nos estados
definido no modelo de ciclo de vida
![Page 22: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/22.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Objeto
• Start:– Criação do objeto
• Registrar objeto no ambiente
• Running:– Execução do objeto
• Death:– Destruição do objeto
• Cancelar o registro do objeto no ambiente
deathrunningstartcreation destruction
![Page 23: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/23.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Papel de Objeto
• Start:– Criação do papel de objeto
• Registrar o objeto no papel (objeto não conhece o papel)• Registrar a papel na organização
• Running:– Execução do papel do objeto
• Death:– Destruição do papel do objeto
• Cancelar o registro no papel na organização
deathrunningstartcreation destruction
![Page 24: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/24.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Papel de Agente
• Start– Criação do papel
• Registrar o papel na organização
• Active– Execução do papel
• Inactive– Execução interrompida
• Death– Destruição do papel
• Cancelar o registro do papel na organização
death
activestart
commitmentcreated
commitmentcanceled
inactive
activatedeactivate
commitmentcanceled
![Page 25: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/25.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Agente
• Agente executa no contexto dos papéis• Para cada papel que o agente desempenha
uma thread de agente é criada
• Start– Criação do agente
• Registrar o agente no ambiente
– Criação de um papel de agente• Associar papel ao agente e vice-versa
• Running– Execução do agente
![Page 26: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/26.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Agente
• Frozen– Todos os papéis do agente estão desativados
• Agente existe mas não está executando
• Migrating– Migração do agente de um ambiente para outro
• Cancelar/desativar todos os papéis no ambiente origem• Criar/ativar pelo menos um papel no ambiente destino
• Death– Destruição do agente
• Cancelar o registro do agente no ambiente
– Destruição do papel de agente• Cancelar associação entre agente e papel
![Page 27: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/27.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Agente
frozen
migrating
deathrunningstart
activate deactivate
creation destruction
activate or commitdeactivate or cancel
![Page 28: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/28.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Sub-organização
• Start– Igual ao de agentes
• Frozen– Igual ao de agentes
• Migrating– Entidades devem papar de desempenhar papéis dentro
da sub-organização (cancelar/desativar papéis)– Cancelar/desativar todos os papéis no ambiente origem– Criar/ativar pelo menos um papel no ambiente destino– Entidades podem se mover também para continuar a
desmpenhar os papéis
![Page 29: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/29.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Sub-organização
• Death– Destruição da sub-organização
• Cancelar o registro da sub-organização no ambiente
– Destruição do papel de agente• Cancelar associação entre sub-organização e papel
– Destruição dos papéis desempenhados dentro da sub-organização
![Page 30: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/30.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Sub-organização
frozen
migrating
deathrunningstart
activate deactivate
creation destruction
activate or commitdeactivate or cancel
![Page 31: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/31.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Main-organização
• Start– Criação da main-organização
• Registrar da main-organização no ambiente
• Running– Execução da main-organização
• Death– Destruição da main-organização
• Cancelar o registro da main-organização no ambiente
deathrunningstartcreation destruction
![Page 32: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/32.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Ambiente
• Start– Criação do ambiente
• Running– Execução do ambiente
• Death– Destruição do ambiente
• Destruição de todos os agentes, organizações e objetos
deathrunningstartcreation destruction
![Page 33: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/33.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional das Entidades
• Identifica o comportamento entre todas as entidades de um determinado tipo associado a um determinado estado
• Define o comportamento independente do domínio das entidades em um determinado estado
![Page 34: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/34.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Ambiente
• Start– Criação do ambiente
• Running– Execução do ambiente
Environment env = new Virtual_Marketplace ();
Comportamento dependente do domínio
![Page 35: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/35.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Ambiente
public abstract class Environment{ ... public void destroy() { //Destroying the agents Vector vAgents = getAgents(); if (vAgents != null) { Enumeration enumvAgents = vAgents.elements(); while (enumvAgents.hasMoreElements()) { Agent agentAux = (Agent)enumvAgents.nextElement(); agentAux.destroy(); } }
• Death– Destruição do ambiente
• Destruição de todos os agentes, organizações e objetos
![Page 36: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/36.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Ambiente
//Destroying the organizations Vector vOrganizations = getOrganizations(); if (vOrganizations != null) { Enumeration enumvOrg = vOrganizations.elements(); while (enumvOrg.hasMoreElements()) { MainOrganization orgAux = (MainOrganization)enumvOrg.nextElement(); orgAux.destroy(); } }
//Destroying the objects Vector vObjects = getObjects(); if (vObjects != null) { Enumeration enumvObjects = vObjects.elements(); while (enumvObjects.hasMoreElements()) { Object objAux = enumvObjects.nextElement(); cancelObjectRegister(objAux); } } } ...}
![Page 37: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/37.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Objetos
• Start:– Criação do objeto
• Registrar objeto no ambiente
• Running:– Execução do objeto
• Death:– Destruição do objeto
• Cancelar o registro do objeto no ambiente
Book book = new Book ();env.registerObjects(book); //Registering the object in the environment
env.cancelObjectRegister(book);
Comportamento dependente do domínio
![Page 38: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/38.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Objeto
• Start:– Criação do papel de objeto
• Registrar o objeto no papel (objeto não conhece o papel)• Registrar a papel na organização
• Running:– Execução do papel do objeto
Offer bookOffer = new Offer(mainOrg);bookOffer.setObject(book);
Comportamento dependente do domínio
![Page 39: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/39.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Objeto
• Death:– Destruição do papel do objeto
• Cancelar o registro no papel na organizaçãopublic abstract class ObjectRole{ ... public void destroy () { //object playing role setObject(null); //destroying role of the organization where it was being played MainOrganization organization = getOwner(); Vector vRoles = organization.getObjectRoles(); Enumeration enumvRoles = vRoles.elements(); while (enumvRoles.hasMoreElements()) { ObjectRole roleAux = (ObjectRole)enumvRoles.nextElement(); if (roleAux == this) vRoles.remove(roleAux); } } ...}
![Page 40: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/40.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Agente
• Start– Criação do papel
• Registrar o papel na organização
• Active– Execução do papel
AgentRole agRole = new Buyer (mainOrg);agRole.setRoleName ("Buyer01");
Comportamento dependente do domínio
![Page 41: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/41.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Papel de Agente
• Inactive– Execuçãointerrompida
public abstract class AgentRole{ ... public synchronized void supendThread() { threadSuspended = true; } public synchronized void resumeThread() { threadSuspended = false; } protected boolean threadSuspended() { return threadSuspended; } ...}
public abstract class Agent extends Thread{ ... private void checkIfSuspended(AgentRole role) { if (role.threadSuspended()) { synchronized (this) { while (role.threadSuspended()) System.out.println("Suspended"); System.out.println("Resumed"); } } } ...}
![Page 42: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/42.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Agente
• Death– Destruir o papel significa parar de executar o papel
• Sinalizar que o agente deve parar de executar o papel
public abstract class AgentRole{ ... protected boolean threadStopped() { return threadStopped; } public void stopThread() { threadStopped = true; } ...}
![Page 43: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/43.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Agente
public abstract class Agent extends Thread{... public void run() {... //Cheking if thread was stopped while (continueExecution && !checkIfStopped(currentRole)) { ... } //The thread was stoped
... //The current role must be destroyed currentRole.destroy(); //Verify if the agent is playing other roles vRoles = getRolesBeingPlayed(); if (vRoles == null) //If the agent is not playing other roles, the agent must be //destroyed destroy(); ... }...}
![Page 44: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/44.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Papel de Agente• Death
– Destruição do papel• cancelar o registro do papel na organização
public abstract class AgentRole{... protected void destroy () { //agent playing role setAgent(null); //organization playing role setOrganization(null); //The current role must be removed from the list of the roles being played //in an organization MainOrganization organization = getOwner(); Vector vRoles = organization.getAgentRoles(); Enumeration enumvRoles = vRoles.elements(); while (enumvRoles.hasMoreElements()) { AgentRole roleAux = (AgentRole)enumvRoles.nextElement(); if (roleAux == this) vRoles.remove(roleAux); } }...}
![Page 45: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/45.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
• Agente executa no contexto dos papéis• Para cada papel que o agente desempenha
uma thread de agente é criada • Start
– Criação do agente• Registrar o agente no ambiente
– Criação de um papel de agente• Associar papel ao agente e vice-versa
Agent agent = new User_Agent (env, mainOrg, agRole);agent.setAgentName ("UserAgent::Viviane");Thread agentThread = new Thread(agent, agRole.getRoleName());agentThread.start();agRole.setAgent (agent);
![Page 46: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/46.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
• Running– Execução do agente
goal selected
plan selected
goal achieved
All goals were achieved or the agent tried to achieve all goals
All plans associatedwith the goal were
executed or there is not any plan associated
with the goal goal not achieved
Selecting goal
Executing plan
Selecting plan
(1)
(2)
(3)
(4)
(5)
(6)
protected abstract Plan selectingPlan(Vector vPlansExecuted, Goal goal); protected abstract void executingPlan(Plan plan); protected abstract Goal selectingGoalToAchieve();
![Page 47: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/47.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
public void run() {
... //Cheking if thread was stopped while (continueExecution && !checkIfStopped(currentRole)) { checkIfSuspended(currentRole); //Checking if thread was suspended //Selecting a goal to be achieved Goal goal = selectingGoalToAchieve(); while (goal != null) { //Selecting a plan to be executed Plan plan = selectingPlan(vPlansExecuted, goal); while (plan != null) {
//Checking if thread was suspended checkIfSuspended(currentRole); //Executing a plan executingPlan(plan); checkIfSuspended(currentRole); if (checkIfStopped(currentRole)) break; vPlansExecuted.add(plan);
![Page 48: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/48.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
if (!goal.getAchieved()) //Secting another plan plan = selectingPlan(vPlansExecuted, goal); else { //Goal achieved
... } plan = null; } } //The goal was achieved or //all plans associated with the goal were executed or //there is not any plan associated with the goal //Selecting another goal if (checkIfStopped(currentRole)) break; //Selecting another goal goal = selectingGoalToAchieve(); vPlansExecuted.clear(); } } }
![Page 49: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/49.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
• Frozen– Todos os papéis do agente estão desativados
• Migrating
Modelo computacional do estado inactive de papéis de agente já foi descrito
Trabalho Futuro
![Page 50: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/50.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Agente
• Death– Destruição do agente
• Cancelar o registro do agente no ambiente
– Destruição do papel de agente
public abstract class Agent extends Thread{ ... public void destroy() { //Stoping all threads Vector vRoles = getRolesBeingPlayed(); Enumeration enumvRoles = vRoles.elements(); while (enumvRoles.hasMoreElements()) { AgentRole roleAux = (AgentRole)enumvRoles.nextElement(); roleAux.stopThread(); } //Canceling the register Environment env = getEnvironment(); env.cancelObjectRegister(this); }...}
![Page 51: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/51.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Sub-organizações
• Start
• Running
• Frozen
• Migrating
//Sub-organizationOrganization subOrg = new Imported_Bookstore (env, mainOrg, orgRole);subOrg.setOrganizationName("ImportedBookStore::Amazon");Thread subOrgThread = new Thread(subOrg,orgRole.getRoleName());subOrgThread.start();orgRole.setOrganization(subOrg);
Igual ao de agentes
Modelo computacional do estado inactive de papéis de agente já foi descrito
Trabalho Futuro
![Page 52: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/52.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Sub-organizações
• Death– Destruição da sub-organização
• Cancelar o registro da sub-organização no ambiente
– Destruição do papel de agente• Cancelar associação entre sub-organização e papel
– Destruição dos papéis desempenhados dentro da sub-organização
public void destroy() { //Destroying the roles being played Vector vRoles = getRolesBeingPlayed(); Enumeration enumvRoles = vRoles.elements(); while (enumvRoles.hasMoreElements()) { AgentRole roleAux = (AgentRole)enumvRoles.nextElement(); vRoles.remove(roleAux); roleAux.destroy(); } //Destroying the agent roles played in the organization //The thread of the entity playing the role must be stoped vRoles = getAgentRoles(); enumvRoles = vRoles.elements(); Agent agent; while (enumvRoles.hasMoreElements()) { AgentRole roleAux = (AgentRole)enumvRoles.nextElement(); roleAux.stopBeingPlayed(); vRoles.remove(roleAux); } //Destroying the object roles played in the organization //It is not necessary to destroy the object playing the role vRoles = getObjectRoles(); enumvRoles = vRoles.elements(); while (enumvRoles.hasMoreElements()) { ObjectRole objRoleAux = (ObjectRole)enumvRoles.nextElement(); vRoles.remove(objRoleAux); } //Canceling the register Environment env = getEnvironment(); env.cancelOrganizationRegister(this); }
![Page 53: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/53.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Main-Organizações
• Start
• Running– Não há a necessidade de checar se algum papel foi
suspenso, pois não executa papéis.
• Death– Não destrói papéis que desempenha, pois não
desempenha papéis
//Main-organizationMainOrganization mainOrg = new General_Store (env);mainOrg.setOrganizationName("General_Store");Thread mainOrgThread = new Thread(mainOrg, "General_Store");mainOrgThread.start();
![Page 54: ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena](https://reader036.vdocuments.pub/reader036/viewer/2022062512/552fc105497959413d8c015d/html5/thumbnails/54.jpg)
Laboratório de Engenharia de Software (LES) – PUC-Rio
Exemplo