Viviane torres da silva mariela in s cort s carlos j p de lucena
This presentation is the property of its rightful owner.
Sponsored Links
1 / 54

ASF: Agent Society Framework PowerPoint PPT Presentation


  • 49 Views
  • Uploaded on
  • Presentation posted in: General

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?

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Viviane torres da silva mariela in s cort s carlos j p de lucena

Viviane Torres da Silva

Mariela Inês Cortés

Carlos J. P. de Lucena

ASF: Agent Society Framework


Motiva o

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


Frameworks e arquiteturas oo

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


Asf framework

ASF Framework


Agenda

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


Sociedade de agentes

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


Entidades

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


Aspectos estruturais do asf

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


Aspectos estruturais do asf1

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


Agente

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


Agente1

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


M dulo agent

Módulo Agent

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


Organiza o

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


M dulo organization

Módulo Organization

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


Agent role

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


M dulo agent role

Módulo Agent Role

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


M dulo object role

Módulo Object Role

  • Atributos

  • Métodos

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


M dulo environment

Módulo Environment

  • Passive environment

  • Active environment

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


Rela o entre as entidades

Relação entre as entidades

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


Asf agent society framework

Estrutura do ASF

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


Modelo de ciclo de vida x modelo computacional

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


Modelo de ciclo de vida de objeto

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


Modelo de ciclo de vida de papel de objeto

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


Modelo de ciclo de vida de papel de agente

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


Modelo de ciclo de vida de agente

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


Modelo de ciclo de vida de agente1

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


Modelo de ciclo de vida de agente2

Modelo de ciclo de vida de Agente

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


Modelo de ciclo de vida de sub organiza o

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


Modelo de ciclo de vida de sub organiza o1

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


Modelo de ciclo de vida de sub organiza o2

Modelo de ciclo de vida de Sub-organização

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


Modelo de ciclo de vida de main organiza o

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


Modelo de ciclo de vida de ambiente

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


Modelo computacional das entidades

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


Modelo computacional de ambiente

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


Modelo computacional de ambiente1

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


Modelo computacional de ambiente2

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


Modelo computacional de objetos

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


Modelo computacional de papel de objeto

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


Modelo computacional de papel de objeto1

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


Modelo computacional de papel de agente

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


Papel de agente

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


Modelo computacional de papel de agente1

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


Modelo computacional de papel de agente2

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


Modelo computacional de papel de agente3

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


Modelo computacional de agente

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


Modelo computacional de agente1

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


Modelo computacional de agente2

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


Modelo computacional de agente3

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


Modelo computacional de agente4

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


Modelo computacional de agente5

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


Modelo computacional de sub organiza es

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

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


Modelo computacional de sub organiza es1

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

}

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

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


Modelo computacional de main organiza es

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

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


Exemplo

Exemplo

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


  • Login