A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "ASF: Agent Society Framework Viviane Torres da Silva Mariela Inês Cortés Carlos J. P. de Lucena."— Transcrição da apresentação:

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

2 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

3 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

4 Laboratório de Engenharia de Software (LES) – PUC-Rio Framework É um conjunto de classes relacionadas capaz de gerar diferentes aplicações sobre um mesmo domínio Captura os conceitos gerais de um domínio de aplicação Grande potencial de especialização: –conjunto de classes abstratas e concretas

5 Laboratório de Engenharia de Software (LES) – PUC-Rio Framework Define partes que são fixas, i.e., não podem ser estendidas Define partes que são flexíveis, i.e., passíveis de extensão e customização As diferentes aplicações são geradas através da extensão das partes flexíveis Todas as aplicações possuem em comum o que estiver definido na parte fixa do framework

6 Laboratório de Engenharia de Software (LES) – PUC-Rio Framework Partes fixas: frozen-spots Partes flexíveis: hot-spots Hot-spots Frozen-spots

7 Laboratório de Engenharia de Software (LES) – PUC-Rio Aplicações do Framework Uma aplicação é gerada através da instanciação do framework A instanciação do framework é a implementação dos pontos flexíveis (hot-spots) Implementação dos hot-spots: extensão das classes abstratas e implementação dos métodos abstratos * * framework white-box

8 Laboratório de Engenharia de Software (LES) – PUC-Rio Aplicações do Framework

9 ASF Framework

10 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

11 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

12 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

13 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?

14 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 –...

15 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

16 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

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

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

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

20 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

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

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

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

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

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

26 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

27 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

28 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

29 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

30 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

31 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

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

33 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

34 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

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

36 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

37 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

38 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

39 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

40 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

41 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); }... }

42 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

43 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

44 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çã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); }... }

45 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

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

47 Laboratório de Engenharia de Software (LES) – PUC-Rio Modelo computacional de Papel de Agente Inactive public abstract class Agent extends Thread {... public void run() {... AgentRole currentRole = getCurrentRole(); if (currentRole != null) { //Cheking if thread was stopped while (continueExecution && !checkIfStopped(currentRole)) { //Checking if thread was suspended checkIfSuspended(currentRole); }... }... }

48 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; }... }

49 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();... }... }

50 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); } }... }

51 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);

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

53 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);

54 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(); }

55 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

56 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); }...}

57 Laboratório de Engenharia de Software (LES) – PUC-Rio Modelo computacional de Sub-organizações Start Running Frozen Migrating //Sub-organization Organization 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

58 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); }

59 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-organization MainOrganization mainOrg = new General_Store (env); mainOrg.setOrganizationName("General_Store"); Thread mainOrgThread = new Thread(mainOrg, "General_Store"); mainOrgThread.start();

60 Laboratório de Engenharia de Software (LES) – PUC-Rio Exemplo


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

Apresentações semelhantes


Anúncios Google