Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DEvelopment
Framework
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
2021
1
Agenda
Java Agent DEvelopment Framework
Plataforma multiagente
Agentes en JADE
Comportamientos
5
Plataforma multiagente
distribuida
A1
AMS DF
Main container
Is registered
A4 Is registered with A2 A3
with
Network
A5
AMS DF
Main container
Platform 2
7
Agenda
Java Agent DEvelopment Framework
Plataforma multiagente
Agentes en JADE
Comportamientos
Suspend
Wake up Unknow
Destroy
Active
Quit
Move Invoke
Create
Execute
Transit Initiated
10
Creando un agente JADE
import jade.core.Agent;
Descargar JADE e
implementar el agente MiAgente
11
Ejecutando el agente
Desde Eclipse
Run…
Java Application
Main Class: jade.Boot
Argumentos: -gui nombre_agente:class_agente
12
Interface de la plataforma
JADE
13
Finalización del agente
Finalizar la ejecución agente
doDelete()
Invoca a
takeDown()
14
Pasaje de argumentos
Por línea de comando.
java jade.Boot nombre:clase(arg1,arg2,arg3)
Array de Object
getArgument()
15
Crear un agente desde otro
agente/aplicación
16
Crear un agente desde otro
agente/aplicación
import jade.wrapper.*;
…
AgentContainer c = getContainerController();
try {
AgentController a = c.createNewAgent( "X1",
“MiAgente", null ); • Nombre = “X1”
a.start(); • Clase: “MiAgente”
} • Argumentos: null
catch (StaleProxyException e){}
…
17
Agenda
Java Agent DEvelopment Framework
Plataforma multiagente
Agentes en JADE
Comportamientos
removeBehaviour()
19
Comportamientos del agente
Cada clase que extiende Behaviour debe
implementar
action() define la acción a ser ejecutada cuando se
ejecute el comportamiento
done() determina si el comportamiento ha sido
completado.
El agente puede ejecutar varios comportamientos
concurrentemente.
Métodos onStart() y onEnd()
20
Comportamientos del agente
Todos los comportamientos del agente son
manejados por el mismo thread
Permite tener un único thread por agente.
Provee mejor performance ya que el switch de
comportamiento es mas rápido que el switch de
thread en Java.
Elimina los problemas de sincronización entre
comportamientos concurrentes que acceden al
mismo recurso.
Facilita la persistencia y la movilidad.
21
Path de ejecución del thread
del agente setup()
Inicialización
Adición del
comportamiento
inicial
¿El agente ha SI
sido cancelado
(doDelete())?
NO
Tomar el siguiente
comportamiento del pool de
comportamientos activos
"Vida" del agente
b.action() (Ejecución de los
comportamientos)
NO
b.done()?
SI
Remover el comportamiento
actual del pool de
comportamientos activos
Operaciones de
takeDown() limpieza 22
Comportamientos
public class MiBehaviour extends Behaviour {
public void action() {
System.out.println("El agente “ +
myAgent.getAID().getName()+" está activo.");
}
public boolean done() {
return true;
}
}
23
Comportamiento en un thread
dedicado
Desventaja de un único thread
Si el comportamiento se bloquea, se bloquea el
agente.
JADE permite que un comportamiento se
ejecute en un thread dedicado.
jade.core.behaviours.
ThreadedBehaviourFactory
wrap() permite wrapear un comportamiento
normal en un ThreadedBehaviour
24
Consideraciones thread
dedicado
removeBehaviour() no funciona con
comportamientos en thread dedicado.
ThreadedBehaviourFactory.getThread(b)
interrupt()
26
Comportamiento "One-shot"
Se ejecuta una única vez
La clase OneShotBehaviour ya
implementa el método done()
public class MyOneShotBehaviour
extends OneShotBehaviour {
public void action() {
// Ejecuta la operación X
}
}
27
Comportamiento cíclico
Se mantiene activo tanto tiempo como esté
activo el agente.
La clase CyclicBehaviour ya implementa
el método done()
public class MyCyclicBehaviour extends
CyclicBehaviour {
public void action() {
// Ejecuta la operación Y
}
}
28
Comportamientos genéricos
Mantienen un estado del agente y en base a
él ejecutan diferentes operaciones.
Finalizan cuando cierta condición es
cumplida.
29
Comportamientos genéricos
public class MyThreeStepBehaviour extends Behaviour {
private int step = 0;
public void action() {
switch (step) {
case 0: // perform operation X
step++;
break;
case 1: // perform operation Y
step++;
break;
case 2: // perform operation Z
step++;
break;
}
}
public boolean done() {
return step == 3;
}
}
30
Comportamientos para
programar operaciones
WakerBehaviour
action() y done() ya implementados
Ejecuta handleElapsedTimeout() luego de
alcanzado un timeout especificado en el
constructor.
public class MyAgent extends Agent {
protected void setup() {
32
Comportamientos compuestos
CompositeBehaviour
Modela comportamientos que están compuestos
por otros comportamientos (hijos).
La política de selección de hijos está
implementada en las subclases:
SequencialBehaviour
ParallelBehaviour
FSMBehaviour – Finite State Machine
33
SequencialBehaviour
Ejecuta los hijos en forma secuencial.
Agregar hijos
addSubBehaviour(Behaviour b)
ParallelBehaviour
Ejecuta sub-comportamientos
concurrentemente.
Se ejecuta hasta que cierta condición es
alcanzada
Todos/uno/algunos de sus hijos finalizan
35
FSMBehaviour
Permite especificar estados y transiciones
registerFirstState(Behaviour b, String n)
Registra un único comportamiento como estado inicial.
registerLastState(Behaviour b, String n)
Registra uno o más comportamientos como estados finales.
registerState(Behaviour b, String n)
Registra uno o más comportamientos como estados
intermedios.
FSMBehaviour
registerTransition(String s1, String s2,
int event)
Registra una transición entre el estado s1 y s2. Event
es el evento retornado por el método onEnd() del
comportamiento s1.
registerDefaultTransition(String s1,
String s2)
Registra una transición entre el estado s1 y s2. La
transición es ejecutada cuando s1 termina con un
evento que no está explicitado para ninguna otra
transición.
Behaviour - DataStore
Útil para el intercambio de datos entre
comportamientos
setDataStore(DataStore ds)
DataStore getDataStore()
Extiende la clase HashMap
put(Object key, Object value)
Plataforma multiagente
Agentes en JADE
Comportamientos
40
Agentes con interfaz gráfica
Agente Interfaz gráfica
public class MiAgenteGui extends public class GuiAgentFrame extends
GuiAgent { JFrame {
…
private GuiAgentFrame gui; private MiAgenteGui myAgent;
…
public void setup() {
gui = new GuiAgentFrame(this);
gui.setVisible(true); // Listener de la interfaz
public void actionPerformed(ActionEvent
} evt){
GuiEvent ev = new GuiEvent(this,0);
protected void onGuiEvent(GuiEvent ev.addParameter(//datos del evento);
ev) { myAgent.postGuiEvent(ev);
// procesa los eventos }
}
}
41
Agentes con interfaz gráfica
Probando interfaz…
OnGuiEvent()
Behaviour.action()
42
Agentes con interfaz gráfica
Para modificar la interfaz
desde el agente // Método en la interfaz
public void contestar(final String s){
Encapsular el acceso a la
Runnable addIt = new Runnable() {
interfaz con un objeto public void run() {
Runnable // cambio en la interfaz
Utilizar }
SwingUtilities.invoke };
SwingUtilities.invokeLater(addIt);
Later() para enviar el
}
runnable al thread Event
Dispatcher.
44
JADE – Java Agent
DEvelopment
Framework
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
45
Agentes inteligentes y
sistemas multiagentes
Taller de Sistemas Multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN – Fac. de Ciencias Exactas- UNICEN
CONICET
2021
Agenda
La materia
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Taller de sistemas multiagentes
Objetivo de la materia
Agentes
Cursada intensiva
Trabajo final
Agenda
La materia
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Agentes
?
Agentes: definiciones
Nwana
“Agente: componente de software y/o hardware el
cual es capaz de actuar de manera precisa con el
fin de realizar tareas en representación de su
usuario”.
Agentes: definiciones…
Shoham
“Un agente es una entidad cuyo estado es visto como
compuesto de componentes mentales tales como
creencias, elecciones, aptitudes y compromisos”.
Maes
“Un agente autónomo es un sistema computacional
que habita en un entorno dinámico-complejo,
percibiendo y actuando autónomamente en este
entorno, y haciendo esto para realizar un conjunto
de objetivos o tareas para los cuales fueron
diseñados”.
Agentes: más definiciones…
Agente
Datos Acciones
Efectos
Comunicación Tareas
Comunicación
Ambiente
Sistemas de control
Termostato
Alarma
Software daemons
Agentes inteligentes
Wooldridge & Jennings
“Un agente inteligente es un agente capaz de ejecutar
flexiblemente acciones autónomas con el fin de
cumplir sus objetivos”, donde flexibilidad significa:
Características Termostato
Autonomía Si
Reactividad Si
Pro-actividad No
Habilidad social No
Otras cuestiones…
Adaptación
Implica percibir el entorno y reconfigurar el
estado mental en respuesta a este entorno.
Aprendizaje
Mediante distintas técnicas de aprendizaje
de máquina.
Agentes y objetos
Objetos:
Entidades computacionales que encapsulan algún
estado, son capaces de realizar acciones, o
métodos en este estado, y se comunican mediante
el envío de mensajes.
Sistema experto
Sistema capaz de resolver problemas o dar
consejos en algún dominio rico en
conocimiento.
Agentes vs. SE
SE no interactúan directamente con el ambiente.
Programación Orientada a Agentes
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Vista abstracta de un agente
Agente
Datos Acciones
Ambiente
Arquitectura abstracta de un agente
inteligente
Historia
h : s0
a0
s1
a1
s2
a2
s3
a3
... a
u1
su
au
...
Agentes puramente reactivos
Termostato
S= {s temperatura, s temperatura}
A = {calefacción_ on, calefacción _ off }
calefacción off si s temperatura
action(s)
calefacción on cualquierotra
Percepción y acción
see action
Agente
Datos Acciones
Ambiente
see : S P action : P* A
Percepción y acción
Ventajas de la división
Sea
X: “La temperatura de la habitación es Ok”.
Y: “Ventana cerrada”.
S x, y
, x, y
, x, y
, x, y
p1 si s s1 cerrar vent p1
p si s s2
see( s ) 2 action( p ) calefacción on p2
p3 si s s3 o s4 calefacción off p3
Agentes con estado
see action
Ambiente
Jess D
Prolog
Motor de Base de
inferencia Conocimiento
: reglas de deducción |_ p
Toma de decisiones
Conjunto de comportamientos para llevar a
cabo tareas.
Comportamiento
Situación Acción
Comportamientos simultáneos
Jerarquía de comportamientos
Prioridad
Arquitectura reactiva
Belief-Desire-Intention
Razonamiento práctico
Deliberación
¿Qué objetivos cumplir?
Razonamiento orientado a objetivos
¿Cómo se cumplirán los objetivos?
Ejemplo de razonamiento práctico
Trabajo particular
Ejemplo de razonamiento práctico
Intenciones
Persisten
Generate options
execute
filter
brf
action output
Estado agente BDI
(B, D, I), donde B Bel, D Des, I Int
Proceso de razonamiento práctico
en agentes BDI
sensor input
Generate options
execute
filter
brf
action output
brf :( Bel ) P ( Bel )
Proceso de razonamiento práctico
en agentes BDI
sensor input
Generate options
execute
filter
brf
Generate options
execute
filter
brf
Generate options
execute
filter
brf
action : P A
Función BDI action
1. function action(p:P):A
2. begin
3. B : brf B, p
4. D : optionsB, I
5. I : filterB, D, I
6. return executeI
7. end function action
Agenda
La materia
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Agentes personales
Interactúa con
Observa e imita
Aplicación Usuario
Agente
Agentes personales: aprendizaje
Interactúa con
Imitar
Aplicación Usuario
Feedback
Programación
por ejemplo
Agente
Agentes móviles
Movilidad de código:
capacidad de cambiar dinámicamente las
ligaduras entre fragmentos de código y la
ubicación donde son ejecutados.
Movilidad Fuerte:
los threads en ejecución migran de una
plataforma a otra y continúan su ejecución en
forma transparente.
Movilidad Débil
El código migra pero no su estado de ejecución.
RPC vs. Agentes móviles
Cliente Servidor
Proceso cliente Proceso servidor
Cliente Servidor
Proceso cliente Proceso servidor
Agente móvil
Agenda
La materia
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Sistemas multiagentes
No controladores
No organizadores
Auto-organización
Reglas simples
Mantener distancia
Ser sociables
Comportamiento
complejo
Ejemplo
Quiero vender Quiero comprar el
el producto A Vendo A! producto A como
como mínimo máximo a $10!
a $8!
Vendido en
Arreglamos
Te ofrezco
$12!
en$4!
$6!
No, mínimo
No,ofrezco
quiero
Te
$11!
$12!
$12!!!
URGENTE!!
NECESITO el
producto A!!
Ejemplo
Ejemplo
A B
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1 C
Arquitectura Táctica 3a
Táctica 3b
Actual Táctica 3c
E1 15ms
E2 25hs
Dbot - Performance
E3 25ms
Escenario 3
DesignBots
E1 E2
Táctica 1a 13ms Táctica 2a 30hs
Táctica 1b 12ms Táctica 2b 25hs
Táctica 1c 20ms Táctica 2c 20hs
A B
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1 C
E3
Arquitectura Táctica 3a 20ms
Táctica 3b 25ms
Actual Táctica 3c 22ms
E1 15ms
E2 25hs
Dbot - Performance
E3 25ms
Escenario 3
DesignBots
E1 E2
Táctica 1a 13ms Táctica 2a 30hs
Táctica 1b 12ms Táctica 2b 25hs
Táctica 1c 20ms Táctica 2c 20hs
A B
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1 C
E3
Arquitectura Táctica 3a 20ms
Táctica 3b 25ms
Actual Táctica 3c 22ms
E1 15ms
E2 25hs
Dbot - Performance
E3 25ms
Escenario 3
DesignBots
E1 E2
Táctica 1a 13ms Táctica 2a 30hs
Táctica 1b 12ms Táctica 2b 25hs
Táctica 1c 20ms Táctica 2c 20hs
A B
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1 C
E3
Arquitectura Táctica 3a 20ms
Táctica 3b 25ms
Actual T1b T2c T3a Táctica 3c 22ms
E1 15ms 12ms 20ms 14ms
E2 25hs 30hs 20hs 35hs
Dbot - Performance
E3 25ms 25ms 40ms 20ms
Escenario 3
DesignBots
E1 E2
Táctica 1a 13ms Táctica 2a 30hs
Táctica 1b 12ms Táctica 2b 25hs
Táctica 1c 20ms Táctica 2c 20hs
A B
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1 C
E3
Arquitectura Táctica 3a 20ms
Táctica 3b 25ms
Actual T1b T2c T3a T1a Táctica 3c 22ms
E1 15ms 12ms 20ms 14ms 13ms
E2 25hs 30hs 20hs 35hs 24hs
Dbot - Performance
E3 25ms 25ms 40ms 20ms 24ms
Escenario 3
DesignBots
Protocolo de Negociación
Dbot - Modificabilidad
Dbot - Performance
Escenario 2
Escenario 1
Dbot - Performance
Escenario 3
PUMAS-GR
Mejor una de
superheroes!
Si, la
última de ¿Miramos
Brad Pitt! Una de una peli?
dibus o
nada!
PUMAS-GR
Mascotas
Civil War
Frente al Mar
Forest Gump
Megamente
PUMAS-GR
Frente al
Mar
Frente al Mar 5 Civil War
Forest Gump 4 Civil War 5
Megamente 4 Megamente 4,5
Mascotas 3 Mascotas 3
Civil War 1 Frente al Mar 2
¿Quién empieza? Forest Gump 2
PUMAS-GR
Acepto si: u(mi_p) ≤ u(otra_p) Forest Gump 5
Mascotas 5 Frente al Mar 4
Megamente 4,5 Megamente 4
Civil War 4
u(mascotas) ≤ u(forestgump)? Mascotas 2
Forest Gump 2
Frente al Mar 1 5 ≤ 2? Civil War 1
u(mascotas) ≤ u(frentemar)?
5 ≤ 1?
u(mascotas) ≤ u(civilwar)?
5 ≤ 4?
Frente al Mar 5
Forest Gump 4 Civil War 5
Megamente 4 Megamente 4,5
Mascotas 3 Mascotas 3
Civil War 1 Frente al Mar 2
¿Cómo evalúo? Forest Gump 2
PUMAS-GR
Forest Gump 5
Mascotas 5 Frente al Mar 4
Megamente 4,5 Megamente 4
Civil War 4 NO! Mascotas 2
Forest Gump 2 Civil War 1
Frente al Mar 1 NO!
NO!
1 si ui ( xi ) 0
Zi ui ( xi ) min{ui ( xk ) k A}
ui ( xi )
Frente al Mar 5
Forest Gump 4 Z=(5-1)/5=0,8 Z=(5-2)/5=0,6 Civil War 5
Megamente 4 Megamente 4,5
Mascotas 3 Mascotas 3
Civil War 1 El agente con menor valor Zeuthen concede.
Frente al Mar 2
Forest Gump 2
PUMAS-GR
Forest Gump 5
Mascotas 5 ¿Cómo conceder? Frente al Mar 4
Megamente 4,5 Megamente 4
Civil War 4
u(megamente) ≤ u(megamente)? Mascotas 2
Forest Gump 2
Frente al Mar 1 4.5 ≤ 4.5? Civil War 1
u(frentemar) ≤ u(megamente)?
4 ≤ 4?
Agentes
Definición
Agentes inteligentes
Arquitecturas abstractas y concretas
Agentes personales – móviles
Sistemas multiagentes
Conceptos
Comunicación
Comunicación entre agentes
Percepción
Recibir mensajes
Acción
Enviar mensajes
Coordinación
Cooperación Competición
Planning Negociación
Agent Communication Languages
(ACL)
KIF
KQML
FIPA ACL
Ontologías
KSE: Knowledge Sharing Effort
Iniciado por DARPA hacia 1990, y apoyado
por organismos norteamericanos de
investigación (ASOFR, NSF, NRI)
Propósito:
Desarrollo de técnicas, metodologías y herramientas
software para compartir y utilizar el conocimiento
entre sistemas a lo largo de las etapas del ciclo de
vida del software.
KIF y KQML
KIF
No mensajes – Si contenido
Ejemplo
(= (temperature ml) (scalar 83 Celsius))
(defrelation bachelor (?x) :=
(and (man ?x)
(not (married ?x))))
KQML
KQML es un lenguaje y protocolo basado en
mansajes para comunicación entre agentes.
(ask-one
:content (PRICE IBM ?price)
:receiver -stock-server
:language LPROLOG
:ontology NYSE-TICKS)
Mensajes KQML
:content
Contenido del mensaje
:force
Si el agente quiere denegar el contenido de un mensaje
:reply-with
Identificador de la respuesta esperada por el agente
:in-reply-to
Referencia a :reply-with
:sender
Emisor del mensaje
:receiver
Receptor del mensaje
FIPA ACL
Lenguaje para intercambio de mensajes entre
agentes.
20 performativas
accept-proposal, agree, cancel, cfp, confirm,
inform, refuse, request, etc.
(inform
:sender agent1
:receiver agent2
:content (price good2 100)
:language sl
:ontology hpl-auction)
Ontologías para la comunicación
entre agentes
Necesidad de acordar terminología.
“El agente cometió un error.”
Ontologías para la comunicación
entre agentes
Necesidad de acordar terminología.
“El agente cometió un error.”
Ontologías para la comunicación
entre agentes
Necesidad de acordar terminología.
“El agente cometió un error.”
Web Semántica vs. Web Actual
Web actual representa la información utilizando
documentos en lenguaje natural con poca estructura
Fácil comprensión por humanos (html sólo define
presentación).
Difícil soportar el procesamiento automático.
Alternativas
Máquinas más inteligentes comprender el significado de la
información que hay en la web
Procesamiento de lenguaje natural, reconocimiento de imágenes,
etc.
Información más inteligente representar la información de
modo que sea sencilla de comprender a las máquinas
Expresar contenidos en un formato procesable automáticamente.
Uso de metainformación (metadatos = datos sobre los datos)
Definición
« Una especificación de una conceptualización… una descripción de los
conceptos y relaciones que pueden existir para un agente o una comunidad de
agentes. »
T.R. Gruber
esUn esUn
esUn
Agente Aplicación
esUn esUn
Error
Agente Agente Agente
Inteligente Personal
Resumen
Agentes inteligentes
Autonomía – Reactividad – Proactividad –
Habilidad social.
Ambientes multiagentes
Comunicación
Agentes heterogéneos
Cooperación – Competición
JADE – Comunicación
entre agentes
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
46
Comunicación entre agentes
Paradigma de intercambio de mensajes asincrónico.
Estándar FIPA
51
Comunicación entre agentes
Prepara el Toma el mensaje de la
mensaje para A2 cola de mensajes y lo
procesa
A1 A2
52
ACL (Agent Communication
Language)
Definido por FIPA
El mensaje ACL posee los campos:
sender: agente que envía el mensaje.
receivers: lista de receptores.
performative: tipo de mensaje. Indica la intención que el emisor
intenta lograr enviando el mensaje.
content: contenido principal del mensaje.
language: lenguaje usado en el contenido. P.e. la sintaxis
utilizada para expresar el contenido.
ontology: ontología usada en el contenido. P.e. el vocabulario
de símbolos usados en el contenido y su significado.
conversation-id, reply-with, in-replay-to, reply-by: para el
control de conversaciones concurrentes.
53
Performativas
Cada mensaje representa un “acto de habla”
Precondiciones de factibilidad
Efecto racional
54
ACL (Communicative Acts) I
Tipo de mensajes (performative)
ACCEPT_PROPOSAL: acepta una propuesta sobre la
ejecución de una acción.
AGREE: expresa el acuerdo sobre la ejecución futura de
una acción.
CANCEL: expresa desacuerdo del emisor sobre la
ejecución de una acción por parte del receptor.
CFP: (call for proposal) solicita una propuesta.
CONFIRM: el emisor confirma al receptor la validez de una
proposición.
DESCONFIRM: el emisor confirma al receptor que una
proposición es falsa.
FAILURE: comunica que una acción que intentaba ejecutar
falló.
55
ACL (Communicative Acts) II
INFORM: informa que una proposición es verdadera.
NOT UNDERSTOOD: el emisor E informa al receptor R que
percibió que R ejecutó alguna acción, pero que E no la
comprende.
PROPOSE: envía una propuesta para ejecutar cierta acción,
dada cierta precondición.
QUERY IF: consulta a otro agente si una proposición es
verdadera o no.
REFUSE: rechaza ejecutar una acción, y explica los
motivos del rechazo.
REJECT PROPOSAL: rechaza una propuesta durante una
negociación.
REQUEST: solicita la ejecución de una acción.
56
Envío de mensaje
Dentro de un comportamiento:
myAgent.send(msg);
57
Recepción de mensajes
Usando blockingReceive()
59
Conversaciones concurrentes
conversation-id: identifica la conversación
unívocamente.
reply-with: identificador de la respuesta
próxima.
in-replay-to: reply-with del mensaje anterior.
60
Seleccionar mensajes
específicos
Se pueden especificar template para procesar los
mensajes
clase MessageTemplate
AND, OR, NOT, MatchContent(string), MatchSender(AID),
MatchConversationID(string), MatchPerformative(int)
Se pasa como argumento de receive(MessageTemplate)
mt =
MessageTemplate.and(MessageTemplate.MatchConversationId(“123
"),MessageTemplate.MatchInReplyTo(req.getReplyWith()));
ACLMessage posee constantes por cada Performativa
63
Ejemplo
Agente A Agente B
Initiator Responder
REQUEST
A1 B1
AGREE
A2 B2
ACC
INFORM
A3 B3
CONFIRM
A4 B4
64
Ejemplo
Agente A Agente B
Initiator Responder
REQUEST
A1 B1
AGREE
A2 B2
ACC
INFORM
A3 B3
CONFIRM
A4 B4
65
Ejemplo
Agente A Agente B
ACLMessage REQUEST Initiator Responder
ACLMessage
MessageTemplate
sender: B sender: B receiver: A
AGREE
in-reply-to: A-001 A2 B2 reply-with: B-001
conversation-id: AB-1 in-reply-to: A-001
conversation-id: AB-1
ACLMessage MessageTemplate
sender: A receiver: B sender: A
INFORM
reply-with: A-002 A3 B3 in-reply-to: B-001
in-reply-to: B-001 conversation-id: AB-1
conversation-id: AB-1
ACLMessage
MessageTemplate
sender: B sender: B receiver: A
CONFIRM reply-with: B-002
in-reply-to: A-002 A4 B4
conversation-id: AB-1 in-reply-to: A-002 66
conversation-id: AB-1
Ejemplo
Agente A Agente B Agente C
Initiator Responder Initiator
REQUEST REQUEST
A1 B1 C1
AGREE
A2 B2
MessageTemplate
sender: A
A3 B3 in-reply-to: B-001
conversation-id: AB-1
Ejemplo
Agente A Agente B Agente C
Initiator Responder Initiator
CÍCLICO e INDEPENDIENTE
REQUEST REQUEST
A1 B1 C1
AGREE AGREE
A2 Xa1 Xb1 C2
if (msg != null) {
myAgent.addBehaviour(new
XBehaviour(msg));
}
else
block();
}
Ejemplo
Agente A Agente B Agente C
Initiator Responder Initiator
REQUEST REQUEST
A1 B1 C1
AGREE AGREE
A2 Xa1 Xb1 C2
INFORM INFORM
A3 Xa2 Xb2 C3
MessageTemplate Xa MessageTemplate Xb
sender: A sender: C
in-reply-to: B-001 in-reply-to: B-201
conversation-id: AB-1 conversation-id: CB-1
Ejemplo
Agente A
Initiator
ACLMessage req = new ACLMessage(ACLMessage.REQUEST);
// Setear datos del mensaje
A1 ...
// Configura MessageTemaplate
mt =
MessageTemplate.and(MessageTemplate.MatchConversationId(req.g
etConversationId()),
A2 MessageTemplate.MatchInReplyTo(req.getReplyWith()));
myAgent.send(req);
A3
A4
Ejemplo
Agente A
Initiator
A1
A3
A4
Ejemplo
Agente A
Initiator
A1
myAgent.send(reply);
A4
Ejemplo
Agente A
Initiator
A1
A2
A3
A1 public MyFSMBehaviour() {
DataStore ds = new DataStore();
A2 this.registerFirstState(a1,“a1”);
...
this.registerDefaultTransition(“a1”,“a2”);
...
A3
}
A4
Ejemplo
Agente A
Initiator
public InitiatorBehaviour(){
step = 0;
A1 }
A1 break;
A2
step = 1; case 3:
break; A4
case 1: step = 4;
A2 break;
step2 default:
A3 break; break;
}
}
public boolean done() {
return step == 4;
A4 }
Implementando
conversaciones
Comidas
Ok (ACCEPT_PROPOSAL) No
Respuesta
random No (REJECT_PROPOSAL)
Ok
LastState
1
Limitaciones observadas
¿Qué limitaciones encuentran al intentar
comunicarse con otro agente?
Debemos especificar el nombre del agente con el
cual nos queremos comunicar dentro del
comportamiento del agente
msg.addReceiver(new AID(“X1",
AID.ISLOCALNAME));
2
Agente DF
Provee el servicio de Paginas Amarillas
Permite a los agentes publicar y buscar servicios.
Existe un único DF por plataforma JADE.
Interacción mediante mensajes ACL.
Lenguaje: SL0
Ontología: FIPA-agent-management
3
Servicio de páginas amarillas
A1 A1: - servicioX A4
- servicioY
Buscar un
Publicar servicio
servicio A2: - servicioZ requerido
A2 A3: - servicioW A5
- servicioK
-servicioH
Servicio de páginas
amarillas
A3 A6
Explotar servicio requerido
4
Publicar un servicio
Para publicar un servicio el agente debe
proveer al DF:
AID
Lenguaje y ontología para interactuar con el
agente
Para cada servicio:
Nombre
Lenguaje y ontología para explotarlo
Propiedades del servicio
5
Clases relacionadas al DF
DFAgentDescription
ServiceDescription
DFService
6
DFAgentDescription
Representa la descripción de un agente en el
catálogo DF
setName(AID a)
addServices(ServiceDescription s)
addLenguages(String s)
addOntologies(String s)
addProtocols(String s)
A1: - servicioX
- servicioY
7
ServiceDescription
Modela un servicio de un agente
addLenguages(String s)
addOntologies(String s)
addProtocols(String s)
addProperties(Property p)
match(Property p)
setName(String s), setValue(Object o)
setName(String s)
setType(String s)
8
DFService
Provee un set de métodos estáticos para
comunicarse con los servicios del DF
register(Agent a, DFAgentDescription d)
Registra una nueva descripción en el DF.
FIPAException
deregister(Agent a)
search(Agent a, DFAgentDescription d)
Devuelve un array de DFAgentDescription.
d es utilizado con un template para la búsqueda.
Además
SearchContraints restringe el número de resultados.
Puede setearse un timeout de espera.
9
Publicar un servicio
protected void setup() {
...
// Registra el servicio en las paginas amarillas
DFAgentDescription dfd = new DFAgentDescription();
dfd.setName(getAID());
ServiceDescription sd = new ServiceDescription();
sd.setType(“negociacion”);
sd.setName(“comidas”);
dfd.addServices(sd);
try {
DFService.register(this, dfd);
}
catch (FIPAException fe) {
fe.printStackTrace();
}
...
}
10
Quitar un servicio
Deben ser eliminados cuando el agente es dado de baja:
11
Publicación de servicios
12
Buscar servicios
Un agente debe utilizar una descripción template
Resultado: lista de todas las descripciones que
concuerdan con el template.
14
DF Subscription Services
Un agente puede solicitar al DF un aviso
cuando un determinado servicio sea
registrado:
DFAgentDescription dfd = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType(....);
dfd.addServices(sd);
SearchConstraints sc = new SearchConstraints();
sc.setMaxResults(new Long(1));
send(DFService.createSubscriptionMessage(this,
getDefaultDF(), dfd, sc));
15
DF Subscription Services
DFAgentDescription template = // template de busqueda
addBehaviour( new SubscriptionInitiator( this,
DFService.createSubscriptionMessage( this, getDefaultDF(),
template, null))
{
protected void handleInform(ACLMessage inform) {
try {
DFAgentDescription[] dfds =
DFService.decodeNotification(inform.getContent());
// procesar dfds...
}
catch (FIPAException fe) {fe.printStackTrace(); }
}
});
18
JADE - Ontologías
Taller de sistemas multiagentes
Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
19
Contenido de los mensajes
ACL - Ejemplo
Utilizar Strings
ACLMessage.setContent(“Juan Pérez, 25, Tandil, 1919”)
Parser
Cliente “González, Emilio” Cliente
Parser
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil 20
Contenido de los mensajes
ACL - Ejemplo
Utilizar Objetos
ACLMessage.setContentObject(cliente)
class Cliente: getNombre(), getEdad(), getCiudad(). Persona
Cliente Cliente
Cliente Cliente
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil 21
Contenido de los mensajes
ACL - Ejemplo
Utilizar Ontologías
getContentManager().fillContent(msg, cliente));
Cliente Cliente
Cliente Cliente
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil
Contenido de los mensajes
ACL - Ejemplo
nombre vive en
Persona Ciudad
edad
es
nombre
Cliente numCliente
Cliente Cliente
Cliente Cliente
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil
Contenido de los mensajes
ACL
24
Componentes principales
Content manager
Transforma objetos en Strings (o secuencia de bytes), los
inserta en el contenido de un ACLMessage y viceversa.
jade.content.ContentManager
agent.getContentManager()
fillContent(ACLMessage, ContentElement)
ContentElement extractContent(ACLMessage)
Ontología
Valida la información a convertir desde un punto de vista
semántico.
jade.content.onto.Ontology
Content language codec
Ejecuta la translación a Strings (o secuencias de bytes) de
acuerdo a las reglas sintácticas de un lenguaje.
jade.content.lang.Codec (Interface)
25
Componentes principales
Parser Parser
Encoder Encoder
26
Modelo de referencia de
contenido
Clasificación de los elementos en el dominio
del discurso
Predicados o hechos (Predicate)
Expresiones que dicen algo sobre el estado del
mundo – Pueden ser verdaderas o falsas.
(Works-for (Person :name John) (Company
:name TILAB))
Términos o entidades (Term)
Expresiones que identifican entidades (abstractas o
concretas) que existen en el mundo y sobre las cuales
los agentes hablan y razonan.
27
Modelo de referencia de
contenido - Términos
Conceptos (Concept)
Expresiones que indican entidades con una
estructura compleja
(Person :name John :age 33)
Acciones de agente (Action)
Conceptos especiales que indican acciones que
pueden ser ejecutadas por cualquier agente.
(Sell (Book :title “The Lord of the
rings”) (Person :name John))
28
Modelo de referencia de
contenido - Términos
Primitivas (Primitive)
Expresiones que indican entidades atómicas tales como
Strings o Enteros.
Conjunto (Aggregate)
Expresiones indicando entidades que son grupos de otras
entidades.
(sequence (Person :name John) (Person :name Bill))
IRE (Identifying Referencial Expressions)
Expresiones que identifican las entidades para las que
un cierto predicado es verdadero.
(all ?x (Work-for ?x (Company :name TILAB))
Variables (Variable)
Expresiones que indican un elemento genérico apriori no
conocido.
29
Modelo de referencia de
contenido
Content language
Debería ser capaz de representar y distinguir
entre todos los tipos de elementos.
Ontología
Conjunto de esquemas que definen la estructura
de los predicados, acciones y conceptos
(básicamente sus nombres y campos) que son
pertinentes para un dominio.
30
Modelo de referencia de
contenido
31
Usando ontologías
1. Definir la ontología incluyendo predicados,
acciones y conceptos.
2. Desarrollar las clases Java para todos los tipos
de predicados, acciones y conceptos de la
ontología.
3. Seleccionar el content language.
4. Registrar la ontología definida y el lenguaje
seleccionado.
5. Crear y manejar los contenidos de los
mensajes ACL.
32
Ejemplo
nombre vive en
Persona Ciudad
edad
es
nombre
Cliente numCliente
Cliente Cliente
Cliente Cliente
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil
Usando ontologías
1. Definir la ontología incluyendo predicados,
acciones y conceptos.
2. Desarrollar las clases Java para todos los tipos
de predicados, acciones y conceptos de la
ontología.
3. Seleccionar el content language.
4. Registrar la ontología definida y el lenguaje
seleccionado.
5. Crear y manejar los contenidos de los
mensajes ACL.
34
Definiendo la ontología
Instancia de jade.content.onto.Ontology
35
Definiendo la ontología
Ejemplo
public class OntologiaCliente extends Ontology {
36
Definiendo la ontología
Ejemplo
private OntologiaCliente() {
super(ONTOLOGY_NAME, BasicOntology.getInstance());
try {
add(new ConceptSchema(PERSONA), Persona.class);
add(new ConceptSchema(CLIENTE), Cliente.class);
add(new ConceptSchema(CIUDAD), Ciudad.class);
add(new PredicateSchema(ES_CLIENTE), EsCliente.class);
...
Definiendo la ontología
Ejemplo
cs = (ConceptSchema) getSchema(CLIENTE);
cs.addSuperSchema((ConceptSchema)getSchema(PERSONA));
cs.add(CLIENTE_NUMERO,
(PrimitiveSchema)getSchema(BasicOntology.INTEGER),
ObjectSchema.MANDATORY);
cs = (ConceptSchema) getSchema(CIUDAD);
cs.add(CIUDAD_NOMBRE,
(PrimitiveSchema)getSchema(BasicOntology.STRING),
ObjectSchema.MANDATORY);
PredicateSchema ps = (PredicateSchema)getSchema(ES_CLIENTE);
ps.add(PCLIENTE, (ConceptSchema) getSchema(CLIENTE),
ObjectSchema.MANDATORY);
}
catch (OntologyException oe) { oe.printStackTrace();}
} 38
Usando ontologías
1. Definir la ontología incluyendo predicados,
acciones y conceptos.
2. Desarrollar las clases Java para todos los tipos
de predicados, acciones y conceptos de la
ontología.
3. Seleccionar el content language.
4. Registrar la ontología definida y el lenguaje
seleccionado.
5. Crear y manejar los contenidos de los
mensajes ACL.
39
Desarrollar clases Java
Estructura clases debe ser coherente con los
esquemas asociados
1. Implementar la interface correcta
(jade.content)
Si el esquema es un ConceptSchema la clase debe
implementar la interface Concept.
Si el esquema es un PredicateSchema la clase
debe implementar la interface Predicate .
Si el esquema es un AgentActionSchema la clase
debe implementar la interface AgentAction .
40
Desarrollar clases Java
41
Desarrollar clases Java
3. Respetar los campos y los métodos de acceso
Por cada slot en S1 con el nombre nnn y tipo S2 , la
clase C1 debe tener dos métodos:
public void setNnn(C2 c);
public C2 getNnn();
Correspondencia entre S2 y C2 según BasicOntology
STRING java.lang.String
INTEGER int, long, java.lang.Integer o java.lang.Long
BYTE_SEQUENCE byte[]
DATE java.util.Date
AID jade.core.AID
Cardinalidad > 1
public void setNnn(jade.util.leap.List l);
public jade.util.leap.List getNnn();
42
Desarrollar clases Java
Ejemplo
public class Cliente extends Persona {
private int numCliente;
public class Persona implements Concept {
public int getNumCliente()
private {String nombre;
return numCliente;
private Ciudad ciudad;
} private int edad;
…
public void setNumCliente(int numCliente) {
this.numCliente = numCliente;
}
47
Usando ontologías
1. Definir la ontología incluyendo predicados,
acciones y conceptos.
2. Desarrollar las clases Java para todos los tipos
de predicados, acciones y conceptos de la
ontología.
3. Seleccionar el content language.
4. Registrar la ontología definida y el lenguaje
seleccionado.
5. Crear y manejar los contenidos de los
mensajes ACL.
48
Definir contenido del mensaje
ACL
Cliente cliente = new Cliente();
...
try {
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(new AID("Receptor",AID.ISLOCALNAME));
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
getContentManager().fillContent(msg,
new EsCliente(cliente));
myAgent.send(msg);
}
catch (CodecException ce) { ce.printStackTrace();}
catch (OntologyException oe) {oe.printStackTrace();}
49
Extraer contenido del mensaje
ACL
ACLMessage msg = blockingReceive(mt);
try {
ContentElement ce;
if (msg.getPerformative() == ACLMessage.INFORM) {
ce = getContentManager().extractContent(msg);
EsCliente p = (EsCliente)ce;
Cliente c = p.getCliente();
System.out.println(c);
}
}
catch (CodecException ce) {ce.printStackTrace();}
catch (OntologyException oe) {oe.printStackTrace();}
50
Ejemplo
nombre vive en
Persona Ciudad
edad
es
nombre
Cliente numCliente
Cliente Cliente
Cliente Cliente
Información de clientes
Juan Pérez
Edad: 25 Cliente: Juan
Núm.: 1919 Pérez, 25
Ciudad: Tandil, 1919
Micosoft Inc. Pingui srl.
Tandil
Trabajo final
Ok (ACCEPT_PROPOSAL)
No (REJECT_PROPOSAL)
(Trabajo de CURSADA)
Monotonic Concession
Protocol Propuesta X
(Inicio al azar)
j
Acepto Rechazo
Ui ( X i ) Ui ( X j )
Zi Calc
Acuerdo Ui ( X i ) .Z
Propuesta
Ambos informan Z
Con
Menor Z
ced Conflicto
Concesión egocéntrica Cancelo
er 53
Trabajo final
Ok (ACCEPT_PROPOSAL)
No (REJECT_PROPOSAL)
Valor Zeuthen (INFORM)
Valor Zeuthen (INFORM)
Ok (ACCEPT_PROPOSAL)
No (REJECT_PROPOSAL)
Calcular y enviar
Zeuthen
cancel
Recibir Zeuthen
oponente
Z mayor reject
Esperar propuesta
60
JADE - Movilidad
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
Anuncios Sociales
Becas Doctorales CONICET
Becas en el marco de proyecto UE SmartCities
Becas CIN (Estímulo a la Vocaciones
Científicas)
Tesis de grado
https://www.exa.unicen.edu.ar/es/piexa/banco-tesis
Concursos auxiliares interinos
Movilidad desde RMA
Movilidad en JADE
Movilidad intra-plataforma
Ontología
jade-mobility-ontology
Conceptos y acciones necesarias para la movilidad.
move-agent, clone-agent, Mobile-agent-description…
Agent.doMove(Location l)
Agent.doClone(Location l, String name)
myAgent.getContentManager().fillContent(
req,
new Action(getAMS(),
new QueryPlatformLocationsAction()));
myAgent.send(req);
Recepción de mensaje del
AMS
ContentElement ce = getContentManager().extractContent(resp);
jade.util.leap.Iterator it = result.getItems().iterator();
while (it.hasNext()) {
loc = (Location)it.next();
}
...
myAgent.doMove(loc);
Agentes e inteligencia
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
Hasta ahora…
?
Beh1
Beh2
Beh3
Ambiente
Aprendizaje y razonamiento
KDD
Planning
Reinforcement learning
Programación
evolutiva
Mucho más..
Razonamiento
Razonamiento Motores de basado en reglas
argumentativo inferencia
Jess - Java Expert
System Shell
Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
Jess - Java Expert System Shell
Razonador basado en reglas para la
plataforma Java.
Basado en el lenguaje de programación CLIPS.
Reglas
Indican que acción debe realizarse cuando se cumple
cierta condición.
Preguntas
Realizan consultas sobre la base de conocimiento.
Elementos básicos
Literales
agente
Variables
?a
(bind ?x “hola”)
(bind $?estuche (create$ lapiz boli goma))
(defglobal ?*var* = primero)
Funciones
(nombreFuncion parámetro1 parámetro2 …)
(deffunction nombre_funcion (parámetros)
expresiones
)
(deffunction fact (?n)
(if (= ?n 0) then 1
else (* ?n (fact (- ?n 1)))
))
(fact 5)
Elementos básicos
Funciones predefinidas
(++ <variable>) (-- <variable>)
(assert <fact>+)
(assert-string <string-expression>)
(batch <filename>)
(bind <variable> <expression>*)
(eval <lexeme-expression>)
(facts [<module name>])
Estructuras:
if, while, for, try/catch
http://herzberg.ca.sandia.gov/jess/docs/70/functions.html
Motor de inferencia
pure facts
facts
shadow facts
Motor de Memoria
inferencia de trabajo
(facts)
(assert <fact>+)
(retract <expression>+) Clase Java
Ciclo de inferencia
1. Se buscan todas las posibles reglas aplicables, es decir, que son
compatibles con la memoria de trabajo. Algoritmo RETE (Algoritmo
de Redundancia Temporal)
2. Se selecciona una de las reglas según un orden de preferencia.
3. Se aplica la regla seleccionada y se actualiza la memoria.
Hechos
Hechos ordenados
Jess> (assert (vivienda ocupada))
<Fact-0>
Jess> (assert (puerta abierta)) <Fact-1>
Jess> (facts)
f-0 (MAIN:: ((vivienda ocupada))
f-1 (MAIN:: ((puerta abierta))
For a total of 2 facts in module MAIN.
Hechos no ordenados
Template que declara la estructura (slots) de los hechos
(deftemplate automobile "A specific car." (slot make)
(slot model) (slot year (type INTEGER)) (slot color
(default white)))
Shadow facts
public class Account implements Serializable {
// Atributos y métodos interesantes
}
(deftemplate Account (declare (from-class Account)))
(bind ?a (new Account))
Reglas
Estructura IF-THEN
(defrule nombreRegla (condición) => (acción))
(defrule apagarLuces
(and
(vivienda vacia)
(luz encendida))
=>
(printout t "La vivienda esta vacia. Las luces deben
estar apagadas." crlf)
(retract-string "(luz encendida)")
(assert (luz apagada))
)
(defrule important-day
(and (today (dd ?dd) (mm ?mm))
(important-date {dd == ?dd} {mm == ?mm} (description ?d) (name ?n)))
=>
(ActivateImportantDayBeh ?n)
)
Ejemplo CENA
ControlBehaviour
Responder
defrule important-day
Jess
UserFunction
JessActivateImportantD
ayBeh
InitiatorNegotiationBe
haviour
Ejemplo CENA
public class ControlBehaviour extends TickerBehaviour {
}
Ejemplo CENA
@Override
protected void onTick() {
try {
if (i < list.size()) {
// Actualiza la fecha
Calendar cal = Calendar.getInstance();
cal.setTime(list.get(i));
int mm = cal.get(Calendar.MONTH);
int dd = cal.get(Calendar.DAY_OF_MONTH);
}
Ejemplo CENA
public class JessActivateImportantDayBeh implements Userfunction {
private List<String> items;
public JessActivateImportantDayBeh(List<String> items) {
this.items = items;
}
Application Events
Handle Read/Write Dispatch
Events Facts (Sub-) Goals
Messages
Events
Condition Goal
Events Events
Goal
Beliefs Conditions Goals
Agent
Creencias
Representación orientada a objetos.
Dos tipos
Facts (Beliefs)
Sets of facts (Belief sets)
OQL – lenguaje para realizar operaciones
sobre la base de creencias
Parte activa – cambios en la creencia,
dispara eventos, crea/elimina objetivos.
Objetivos
Dirigen a acciones
Objetivo actual
Implícitamente disponible como causa de los
planes en ejecución.
No se requiere consistencia entre objetivos
Contexto de validez
Ciclo de vida
Option – Active - Suspended
Tipos de objetivos
Perform goal: especifica una acción que
debe ser realizada.
Achieve goal: especifica un estado del
mundo al cual se debe llegar.
Query goal: especifica un estado interno al
cual se desea llegar.
Maintain goal: especifica un estado deseado
que debe restablecerse cada vez que sea
modificado.
Planes
Representan el comportamiento del agente.
Service plan – Passive plan
Cabecera (head)
Especifica las circunstancias bajo las cuales el
plan puede ser seleccionado.
Cuerpo (body)
Provee un curso de acción predefinido que es
ejecutado cuando el plan es seleccionado.
Capabilities
Agrupan elementos de un agente BDI.
Permiten encapsular funcionalidad
Modelo de ejecución
Lenguaje
Enfoque híbrido
Agent Definition File (ADF)
Especifica creencias, objetivos, planes.
Especificación estática del agente.
XML
Plan (Body)
Parte procedural del agente
Java.
Accede a las características BDI del agente mediante
un API.
ADF
<agent
xmlns="http://jadex.sourceforge.net/jadex"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
xsi:schemaLocation="http://jadex.sourceforge
.net/jadex
http://jadex.sourceforge.net/jadex-
0.96.xsd"
name="TranslationE1"
package="jadex.tutorial">
<imports>
<import>java.util.*</import>
<import>jadex.bridge.fipa.*</import>
<import>jadex.commons.Tuple</import>
</imports>
…
</agents>
Beliefs
<beliefs>
<belief name="egwords" class="Map">
<fact>EnglishGermanTranslationPlanC1.getDictionary()</fact>
</belief>
….
<beliefset name="egwords" class="Tuple">
<fact>new Tuple("milk", "Milch")</fact>
<fact>new Tuple("cow", "Kuh")</fact>
<fact>new Tuple("cat", "Katze")</fact>
<fact>new Tuple("dog", "Hund")</fact>
</beliefset>
<beliefset name="efwords" class="Tuple">
<fact>new Tuple("milk", "lait")</fact>
<fact>new Tuple("cow", "vache")</fact>
<fact>new Tuple("cat", "chat")</fact>
<fact>new Tuple("dog", "chien")</fact>
</beliefset>
</beliefs>
Goals
<goals>
<achievegoal name="translate">
<parameter name="direction" class="String" />
<parameter name="word" class="String" />
<parameter name="result" class="String" direction="out" />
</achievegoal>
</goals>
Plans
Plans
<plans>
<plan name="process">
<body class="ProcessTranslationRequestPlanE1" />
<waitqueue> Service plan
<messageevent ref="request_translation" />
</waitqueue>
</plan>
<plan name="egtrans">
<parameter name="word" class="String">
<goalmapping ref="translate.word" /> Passive plan
</parameter>
<parameter name="result" class="String" direction="out">
<goalmapping ref="translate.result" />
</parameter>
<body class="EnglishGermanTranslationPlanE1" />
<trigger>
<goal ref="translate">
<match>"english_german".equals($goal.getParameter("direction").getValue())
</match>
</goal>
</trigger>
</plan>
Plan triggers
Cuerpo del plan
Clase Java
Heredan de jadex.bdi.runtime.Plan
Método body()
public class ProcessTranslationRequestPlanE1 extends Plan {
public ProcessTranslationRequestPlanE1() {
System.out.println(“Plan creado “ + this);
}
Internal-events
<events>
<internalevent name="gui_update">
<parameter name="content" class="String"/>
</internalevent>
</events>
event.getParameter("content").setValue(update_info);
dispatchInternalEvent(event);
...
}
Events
Message-event
<events>
<messageevent name="request_translation" direction="receive"
type="fipa">
<parameter name="performative" class="String" direction="fixed">
<value>SFipa.REQUEST</value>
</parameter>
</messageevent>
</events>
Expressions
Permiten definir elementos propios del
agente.
Hechos y creencias por defecto.
Consultas OQL.
<expressions>
<expression name="query_egword">
select one $wordpair.get(1)
from Tuple
$wordpair in $beliefbase.getBeliefSet("egwords").getFacts()
where
$wordpair.get(0).equals($eword)
</expression>
…
</expressions>
Configurations
Representa el estado inicial y final de un
agente
<configuration name="one">
<plans>
<initialplan ref="print_hello">
<parameter name="text">"Hello World!"</parameter>
</initialplan>
<endplan ref="print_goodbye">
<paramter name="text">"Goodbye World!"</parameter>
</endplan>
</plans>
</configuration>
Configurations
<configurations>
<configuration name="default">
<plans>
<initialplan ref="process" />
</plans>
</configuration>
</configurations>
<plans>
<plan name="process">
<body class="ProcessTranslationRequestPlanE1" />
<waitqueue>
<messageevent ref="request_translation" />
</waitqueue>
</plan>
Pasive plan
public class EnglishGermanTranslationPlanE1 extends Plan {
protected Iexpression queryword;
public EnglishGermanTranslationPlanE1() {
this.queryword= getExpression("query_egword");
}
public void body() {
String eword = (String)getParameter("word").getValue();
String gword = (String)queryword.execute("$eword", eword);
if(gword!=null) {
System.out.println("Translating from english to
german: "+eword+" - "+gword);
getParameter("result").setValue(gword);
}
else {
System.out.println("Sorry word is not in database:
"+eword);
}
}
}
JCC (Jadex Control Center)
jadex.base.Starter
JADEX
Taller de sistemas
multiagentes
Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
Planificando cómo
argumentar en un
proceso de negociación
Taller de sistemas multiagentes
Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina
Habilidad Social
Relaciones entre los agentes
Necesidad de interacción.
Tipos de interacción
Intercambio de información.
Coordinación.
Colaboración.
Negociación.
Negociación – Definición
Forma de interacción en la cual un grupo de
agentes, con intereses conflictivos y un deseo
de cooperar, intentan alcanzar un acuerdo
mutuamente aceptable en la división de
recursos escasos (Rahwan et al., 2003a).
Negociación
Esencia de la negociación → Intercambio de
propuestas
Dificultad para comparar cuantitativamente dos
propuestas.
Las propuestas no pueden influenciar la postura
de negociación del oponente.
Ejecuta la
Acción 1 Acción 1 Acción A Acción B
Comienza la
negociación
Acción 2 Acción 3 Acción 5 Acción 3
de la Acción 2
Falla la
Acción 4 negociación Acción 6
de la Acción 2
Final Final
Acciones bajo el control del agente (intend-to-do) Acciones que NO puede ejecutar (intend-that)
Solución propuesta
Un algoritmo de planning puede ser utilizado
para construir planes de argumentación que
determinen los argumentos que un agente
puede expresar durante una negociación.
Plan de argumentación.
Para la negociación autónoma (agente autónomo).
Para asistir a un usuario negociador (agente
personal).
Modelo argumentativo del usuario.
Enfoque planificando la
argumentación
Planificación
Plan inicial
Inicial Inicial
Plan de Plan de
argumen argumen
tación 2 Acción 3 tación 5
Acción 2
5 Acción 5 Acción 3
Plan de
argumen
tación 6
Acción 6
Final
Acciones bajo el control del agente (intend-to-do) Acciones que NO puede ejecutar (intend-that)
Plan de argumentación
Proceso de negociación
Conflicto Acuerdo
basado en argumentación
Generación Selección
de Argumentos de Argumentos
Tipos de argumentos
Recompensas.
Amenazas.
Generación de argumentos (2)
Reglas para la generación de argumentos
(Kraus et al., 1998; Ramchurn et al., 2003)
IF
solicita la ejecución de una acción a &
rechaza la propuesta porque niega su objetivo &
conoce que ha ejecutado una acción &
haciendo se negaba el mismo objetivo
THEN
solicita la ejecución de a con la siguiente justificación:
Realizá porque ya has ejecutado y negaba
Estado
Estado a1 a2 an Final
Inicial
Selección de
Acciones
Generación Selección
de Acciones - Argumentos de Acciones-Argumentos
Escenario de la negociación
Escenario de la
Recursos: negociación (Parsons y
• Pintura (p1) Jennings, 1996):
• Destornillador (sd1) Agentes deben ejecutar
• Tornillo (s1) tareas.
• Martillo (h1) Recursos limitados.
Creencias:
• Martillo + Clavo + Silla + Pintura => Pintura colgada
Picty • Destornillador + Tornillo + Espejo => Espejo colgado
Objetivos:
• Colgar pintura Recursos:
• Silla rota (bc1)
Recursos:
Creencias:
• Espejo (m1)
• Adhesivo + Silla rota => Silla reparada
• Clavo (n1)
• Adhesivo (g1)
Objetivos:
Creencias: Chairy
• Reparar silla
• Martillo + Clavo + Espejo => Espejo colgado
Objetivos:
Mirry • Colgar espejo
• Guardar el adhesivo
Conflictos
Conflicto entre Picty y Mirry: es el conflicto original
detallado en Parsons y Jennings (1996), Picty necesita el
clavo que posee Mirry, y Mirry necesita el martillo que
posee Picty.
Acciones incondicionales.
pArg1
Plan de argumentación 1
[pArg1 ]
createNIAppeal
[Arg1 ]
pArg2
Arg1
[Arg1 ]
pFix Has
acceptNIAppeal 6
[Do1 , B1 ]
B1
Plan de argumentación 2
Do1 Has5 [B1 , pArg2 ]
createReward
[Do1 , Has5 ] [Arg2 ]
giveResourceTo(mirry, picty, nail(n1)) Arg2
[Has1 ]
[Arg2 ]
acceptReward
pHang [Do2 ]
Do2
[Has6 , Do2 ]
giveResourceTo(mirry, chairy, glue(g1))
Has1 [Has2 ]
Has2
[pFix, Has2 ]
fixChairUnconditional(chairy, bc1, g1)
Planner
Acciones bajo el control
[Has3 ]
del agente (intend-to-do)
Acciones que NO puede
Has3
ejecutar (intend-that) [Has3 ]
giveResourceTo(chairy, picty, chair(bc1))
Planes de argumentación [Has4 ]
Has4
[Has1 , pHang, Has4 ]
hangAPicture(picty,p1,h1,n1,bc1)
[pictureHanging(p1)]
[pictureHanging(p1)]
final
Plan
Acciones
y
Hechos
FSMBehaviour
Escenario de la negociación
Re
Planning
Build Check
Ini Planning
Plan
Ejecutar
Goal
Final
FSMBehaviour
Plan general de Picty
Inicial
pArg1 , pArg2 , pHang, Has5 , Has6 , pFix
pArg1
Plan de argumentación 1
[pArg1 ]
createNIAppeal
[Arg1 ]
pArg2
Arg1
[Arg1 ]
pFix Has
acceptNIAppeal 6
[Do1 , B1 ]
B1
Plan de argumentación 2
Do1 Has5 [B1 , pArg2 ]
createReward
[Do1 , Has5 ] [Arg2 ]
giveResourceTo(mirry, picty, nail(n1)) Arg2
[Has1 ]
[Arg2 ]
acceptReward
pHang [Do2 ]
Do2
[Has6 , Do2 ]
giveResourceTo(mirry, chairy, glue(g1))
Has1 [Has2 ]
Has2
[pFix, Has2 ]
Has4
[Has1 , pHang, Has4 ]
hangAPicture(picty,p1,h1,n1,bc1)
[pictureHanging(p1)]
[pictureHanging(p1)]
final
Plan general de Picty
Inicial
pArg1 , pArg2 , pHang, Has5 , Has6 , pFix
pArg1
pArg1
Plan de argumentación 1
[pArg1 ]
Plan de argumentación 1
createNIAppeal
[Arg1 ]
pArg2
Arg1
[Arg1 ]
pFix Has [pArg1]
acceptNIAppeal 6
[Do1 , B1 ]
B1
createNIAppeal
[Arg1]
Plan de argumentación 2
Do1 Has5 [B1 , pArg2 ]
[Do1 , Has5 ]
giveResourceTo(mirry, picty, nail(n1))
createReward
[Arg2 ] Arg1
[Has1 ]
Arg2
[Arg2 ] [Arg1]
acceptReward
pHang [Do2 ] acceptNIAppeal
Do2 [Do1, B1]
[Has6 , Do2 ]
giveResourceTo(mirry, chairy, glue(g1))
Has1 [Has2 ]
Has2
Acciones bajo el control
[pFix, Has2 ]
fixChairUnconditional(chairy, bc1, g1) Do1
[Has3 ]
del agente (intend-to-do)
Acciones que NO puede
Has3 [Do1, Has5]
ejecutar (intend-that) [Has3 ]
Planes de argumentación
giveResourceTo(chairy, picty, chair(bc1))
Unconditional [Has4 ]
giveResourceTo(mirry, picty, nail(n1))
[Has1]
Has4
[Has1 , pHang, Has4 ]
hangAPicture(picty,p1,h1,n1,bc1)
[pictureHanging(p1)]
[pictureHanging(p1)]
final
Plan general de Picty
Inicial
pArg1 , pArg2 , pHang, Has5 , Has6 , pFix
pArg1
pArg2
Plan de argumentación 1
[pArg1 ]
createNIAppeal
pArg2
Plan de argumentación 2
[Arg1 ]
Arg1
[Arg1 ]
pFix Has [B1, pArg2]
acceptNIAppeal 6
[Do1 , B1 ]
B1
createReward
[Arg2]
Plan de argumentación 2
Do1 Has5 [B1 , pArg2 ]
[Do1 , Has5 ]
giveResourceTo(mirry, picty, nail(n1))
createReward
[Arg2 ] Arg2
[Has1 ]
Arg2
[Arg2 ] [Arg2]
acceptReward
pHang [Do2 ] acceptReward
Do2 [Do2]
[Has6 , Do2 ]
Has1
giveResourceTo(mirry, chairy, glue(g1))
[Has2 ]
Do2
Has2
[pFix, Has2 ]
Has4
[Has1 , pHang, Has4 ]
hangAPicture(picty,p1,h1,n1,bc1)
[pictureHanging(p1)]
[pictureHanging(p1)]
final
Plan general de Picty
Inicial
pArg1 , pArg2 , pHang, Has5 , Has6 , pFix
pArg1
Plan de argumentación 1
[pArg1 ]
createNIAppeal
[Arg1 ]
pArg2
Arg1
[Arg1 ]
pFix Has
acceptNIAppeal 6
[Do1 , B1 ]
B1 [pFix, Has2]
fixChairUnconditional(chairy, bc1, g1)
Plan de argumentación 2
Do1 Has5 [B1 , pArg2 ]
createReward [Has3]
[Do1 , Has5 ] [Arg2 ]
giveResourceTo(mirry, picty, nail(n1))
[Has1 ]
Arg2
[Arg2 ]
has(chairy, chair(bc1))
acceptReward [Has3]
pHang [Do2 ]
Has2
[pFix, Has2 ]
Has4
[Has1 , pHang, Has4 ]
hangAPicture(picty,p1,h1,n1,bc1)
[pictureHanging(p1)]
[pictureHanging(p1)]
final
Escenario de la negociación
appeal(Ue, Ur, do(Ur,Action),
appeal(Ue, Ur, do(Ur,
Action), [pastpromise(Ur,
Ue, do(Ur, Action))])):-
iam(Ue), isagent(Ur),
Javalog pastpromise(Ur, Ue,
do(Ur, Action)).
REQUEST
REFUSE
PROPOSE (Argumento)
ACCEPT-PROPOSAL
FSMBehaviour
Taller de Sistemas
Multiagentes
Taller de sistemas multiagentes
Dr. Ariel Monteserin
amontese@exa.unicen.edu.ar
ISISTAN –Fac. Cs. Exactas – UNICEN
Tandil, Argentina