1 / 54

ASF: Agent Society Framework

Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena. ASF: Agent Society Framework. Motivação. Como implementar sistemas multi-agentes (SMA)? Como implementar os agentes, o ambiente, os papéis usando orientação a objetos?

asher-wells
Download Presentation

ASF: Agent Society Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena ASF: Agent Society Framework

  2. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  3. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  4. ASF Framework

  5. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  6. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  7. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  8. 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? Laboratório de Engenharia de Software (LES) – PUC-Rio

  9. 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 • ... Laboratório de Engenharia de Software (LES) – PUC-Rio

  10. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  11. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  12. Módulo Agent Laboratório de Engenharia de Software (LES) – PUC-Rio

  13. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  14. Módulo Organization Laboratório de Engenharia de Software (LES) – PUC-Rio

  15. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  16. Módulo Agent Role Laboratório de Engenharia de Software (LES) – PUC-Rio

  17. Módulo Object Role • Atributos • Métodos Laboratório de Engenharia de Software (LES) – PUC-Rio

  18. Módulo Environment • Passive environment • Active environment Laboratório de Engenharia de Software (LES) – PUC-Rio

  19. Relação entre as entidades Laboratório de Engenharia de Software (LES) – PUC-Rio

  20. Estrutura do ASF Laboratório de Engenharia de Software (LES) – PUC-Rio

  21. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  22. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  23. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  24. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  25. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  26. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  27. Modelo de ciclo de vida de Agente Laboratório de Engenharia de Software (LES) – PUC-Rio

  28. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  29. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  30. Modelo de ciclo de vida de Sub-organização Laboratório de Engenharia de Software (LES) – PUC-Rio

  31. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  32. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  33. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  34. Modelo computacional de Ambiente • Start • Criação do ambiente • Running • Execução do ambiente Environment env = new Virtual_Marketplace (); Comportamento dependente do domínio Laboratório de Engenharia de Software (LES) – PUC-Rio

  35. Modelo computacional de Ambiente • Death • Destruição do ambiente • Destruição de todos os agentes, organizações e objetos 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(); } } Laboratório de Engenharia de Software (LES) – PUC-Rio

  36. 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); • } • } • } • ... • } Laboratório de Engenharia de Software (LES) – PUC-Rio

  37. 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 Comportamento dependente do domínio env.cancelObjectRegister(book); Laboratório de Engenharia de Software (LES) – PUC-Rio

  38. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  39. Modelo computacional de Papel de Objeto • Death: • Destruição do papel do objeto • Cancelar o registro no papel na organização public 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); } } ... } Laboratório de Engenharia de Software (LES) – PUC-Rio

  40. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  41. 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"); } } } ... } Papel de Agente • Inactive • Execução interrompida public abstract class AgentRole { ... public synchronized void supendThread() { threadSuspended = true; } public synchronized void resumeThread() { threadSuspended = false; } protected boolean threadSuspended() { return threadSuspended; } ... } Laboratório de Engenharia de Software (LES) – PUC-Rio

  42. 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; } ... } Laboratório de Engenharia de Software (LES) – PUC-Rio

  43. 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(); ... }... } Laboratório de Engenharia de Software (LES) – PUC-Rio

  44. 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); } }... } Laboratório de Engenharia de Software (LES) – PUC-Rio

  45. 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); Laboratório de Engenharia de Software (LES) – PUC-Rio

  46. Modelo computacional de Agente • Running • Execução do agente protected abstract Plan selectingPlan(Vector vPlansExecuted, Goal goal); protected abstract void executingPlan(Plan plan); protected abstract Goal selectingGoalToAchieve(); Laboratório de Engenharia de Software (LES) – PUC-Rio

  47. 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); Laboratório de Engenharia de Software (LES) – PUC-Rio

  48. 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(); } } } Laboratório de Engenharia de Software (LES) – PUC-Rio

  49. 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 Laboratório de Engenharia de Software (LES) – PUC-Rio

  50. 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); } ...} Laboratório de Engenharia de Software (LES) – PUC-Rio

More Related