ASF: Agent Society Framework
Viviane Torres da Silva
Mariela Inês Cortés
Carlos J. P. de Lucena
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
• 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
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 = 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
• 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
• 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 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
• 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
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
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
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Organization
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
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Agent Role
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Object Role
• Atributos
• Métodos
Laboratório de Engenharia de Software (LES) – PUC-Rio
Módulo Environment
• Passive environment
• Active environment
Laboratório de Engenharia de Software (LES) – PUC-Rio
Relação entre as entidades
Laboratório de Engenharia de Software (LES) – PUC-Rio
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
– 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
• 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
creation
start
Laboratório de Engenharia de Software (LES) – PUC-Rio
destruction
running
death
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
creation
start
Laboratório de Engenharia de Software (LES) – PUC-Rio
destruction
running
death
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
start
commitment
created
deactivate
Laboratório de Engenharia de Software (LES) – PUC-Rio
commitment
canceled
active
death
activate
inactive
commitment
canceled
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 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 Agente
frozen
activate
deactivate
creation
start
destruction
running
deactivate or cancel
activate or commit
migrating
Laboratório de Engenharia de Software (LES) – PUC-Rio
death
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çã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 suborganização
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo de ciclo de vida de Sub-organização
frozen
activate
deactivate
creation
start
destruction
running
deactivate or cancel
activate or commit
migrating
Laboratório de Engenharia de Software (LES) – PUC-Rio
death
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
creation
start
Laboratório de Engenharia de Software (LES) – PUC-Rio
destruction
running
death
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
creation
start
Laboratório de Engenharia de Software (LES) – PUC-Rio
destruction
running
death
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
• Start
– Criação do ambiente
Environment env = new Virtual_Marketplace ();
• Running
– Execução do ambiente
Comportamento dependente do domínio
Laboratório de Engenharia de Software (LES) – PUC-Rio
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 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
• Start:
– Criação do objeto
• Registrar objeto no ambiente
Book book = new Book ();
env.registerObjects(book); //Registering the object in the environment
• Running:
– Execução do objeto
Comportamento dependente do domínio
• Death:
– Destruição do objeto
• Cancelar o registro do objeto no ambiente
env.cancelObjectRegister(book);
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
Offer bookOffer = new Offer(mainOrg);
bookOffer.setObject(book);
• Running:
– Execução do papel do objeto
Comportamento dependente do domínio
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);
}
}
...
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
AgentRole agRole = new Buyer (mainOrg);
agRole.setRoleName ("Buyer01");
• Active
– Execução do papel
Comportamento dependente do domínio
Laboratório de Engenharia de Software (LES) – PUC-Rio
Papel de Agente
• Inactive
– Execução
interrompida
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");
}
}
}
...
}
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 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 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 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
• 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 Agente
• Running
– Execução do agente
All goals were
(6)
achieved or the agent
tried to achieve all goals
Selecting goal
All plans associated
with the goal were
(4)
executed or there is
not any plan associated
with the goal
goal selected (1)
Selecting plan
plan selected (2)
goal not (3)
achieved
goal (5)
achieved
Executing plan
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 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 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 Agente
• Frozen
– Todos os papéis do agente estão desativados
Modelo computacional do estado inactive de papéis de agente já foi descrito
• Migrating
Trabalho Futuro
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);
}
...}
Laboratório de Engenharia de Software (LES) – PUC-Rio
Modelo computacional de Sub-organizações
• Start
//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);
• Running
Igual ao de agentes
• Frozen
Modelo computacional do estado inactive de papéis de agente já foi descrito
• Migrating
Trabalho Futuro
Laboratório de Engenharia de Software (LES) – PUC-Rio
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 da
entity
playing the role
must be stoped
• Cancelar
o
registro
sub-organização
no
ambiente
vRoles = getAgentRoles();
enumvRoles = vRoles.elements();
Agent agent;
while (enumvRoles.hasMoreElements())
{
• Cancelar
associação entre sub-organização
e papel
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);
Laboratório de Engenharia
de Software (LES) – PUC-Rio
}
Modelo computacional de Sub-organizações
• Death
– Destruição da sub-organização
– Destruição do papel de agente
– Destruição dos papéis desempenhados dentro da suborganização
Modelo computacional de Main-Organizações
• Start
//Main-organization
MainOrganization mainOrg = new General_Store (env);
mainOrg.setOrganizationName("General_Store");
Thread mainOrgThread = new Thread(mainOrg, "General_Store");
mainOrgThread.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
Laboratório de Engenharia de Software (LES) – PUC-Rio
Exemplo
Laboratório de Engenharia de Software (LES) – PUC-Rio
Download

Media:aula10(Plataforma - ASF) - (LES) da PUC-Rio