Reunión DAMMAD
Diseño y Aplicación de Modelos Multiagente
para Ayuda a la Decisión
Arquitectura Software
(Demostrador Bilbao)
Grupo de Inteligencia Artificial
Dpto. de Ciencias Experimentales e Ingeniería
Universidad Rey Juan Carlos
DAMMAD
31/10/03
Arquitectura de referencia
C o n n e ctio n
A ge n ts
In te rfa ce
A ge n ts
M a n a ge m e n t A ge n ts
DA1
U IA 1
...
MA1
MA2
DAk
U IA 2
A IA 1
...
...
MAn
A IA i
P e rip h e ra l
A ge n ts
...
U IA m
AMS
DF
...
DAMMAD
PA1
...
PAj
31/10/03
Arquitectura Conceptual del prototipo
PDA
04
PDA
01
PDA
10
PDA
05
PDA
07
DA
PDA
08
CA
B rise i
de
CA
C a ss
andr
CA
A te n
a
PDA
11
CA
E le n
a
PDA
06
PDA
02
CA
Dem
e tra
PDA
12
AMS
U IA
PDA
03
PDA
09
DF
DAMMAD
31/10/03
Arquitectura Conceptual del prototipo
PDA
04
PDA
01
PDA
10
PDA
05
PDA
07
DA
PDA
08
CA
B rise i
de
CA
C a ss
andr
CA
A te n
a
PDA
11
CA
E le n
a
PDA
06
PDA
02
CA
Dem
e tra
PDA
12
AMS
U IA
PDA
03
PDA
09
DF
DAMMAD
31/10/03
Arquitectura Conceptual del prototipo
U IA
CA
A te n
a
DA
PDA
12
PDA
06
CA
Dem
e tra
PDA
02
AMS
PDA
11
PDA
07
DF
DAMMAD
31/10/03
Software SKADS
• Sobre plataforma (FIPA) de agentes JADE
• Agentes programados en JAVA
• Bases de Conocimiento
 Patrones (KSM) -> integración de KSM
 Jess
• Formatos de Ontologías
 KSM
 Jess
 JADE
DAMMAD
31/10/03
Integración de KSM
• Las primitivas se encapsulan en agentes JADE
 Integración de C++ y JAVA (JNI)
 Envoltorio de agente
• Las Bases de Conocimiento y Vocabularios Conceptuales
se mantienen internos a cada agente, pero “ocultos” a la
plataforma JADE.
• En la ontología JADE (para la comunicación entre
agentes) sí se definen los tipos de datos de KSM
• Comunicación mediante ACL y protocolos FIPA
DAMMAD
31/10/03
Primitivas KSM
• Programadas en C++ (Marcos, Reglas, ...)
• Métodos principales
 Cargar Base de Conocimiento
 Ejecutar una Tarea
 una misma primitiva puede propocionar varias tareas
 se pasan entradas + parámetros y devuelve salidas + estado de
control
• Tipos de datos intercambiados en KSM:
 Booleanos, enteros, reales, símbolos, listas, hechos discretos, ...
 ArgBool, ArgInt, ArgReal, ArgSymbol, ArgList, ArgDiscreteFact, ...
DAMMAD
31/10/03
Agentificación de KSM
Comunicación en FIPA ACL
Area de Conocimiento
Primitiva
(Reglas)
Agente 1
Area de Conocimiento
Primitiva
(Marcos)
Agente 2
DAMMAD
Area de Conocimiento
Primitiva
(Restricciones)
Agente 3
31/10/03
Protocolos de Comunicación
• Cargar BC
 Protocolo: FIPA-Request
 Request con acción “Cargar BC”
con fichero de BC y VC
 Si se carga sin errores =>
inform-done
 Si algún problema => failure/not-
understood
DAMMAD
31/10/03
Protocolos de Comunicación
• Ejecutar Tarea
 Protocolo: FIPA-Query
 Query-ref preguntando por valor
del resultado de ejecutar una
tarea
 Las entradas se admiten en
formato de datos y en modo
string
 Si no hay errores => inform con
el resultado + estado control
 Si algún problema =>
failure/not-understood
DAMMAD
31/10/03
Arquitectura Software del Prototipo
Com
A te n
Conf
A te n
A cc
A te n
Com
A te n
CA
A te n
a
DA
Conf
A te n
A cc
A te n
U IA
CA
Dem
e tra
PDA
12
PDA
06
PDA
02
PDA
11
PDA
07
KSM
12
KSM
06
KSM
02
KSM
11
KSM
07
AMS
DF
DAMMAD
31/10/03
Ontologías
• Ontologías de KSM
 Vocabularios conceptuales (Concel) para BCs
 Tipos de datos de las primitivas
• Ontologías de JADE
 La utilizada en la interacción entre agentes
• Ontologías de Jess
• Problemas resueltos
 Conversión de ontología JADE a tipos de datos KSM (C++) y
viceversa
 Conversión de ontología JADE a hechos JESS y viceversa
 BCs de KSM y JESS comparten ontología: traducción de Concel
(KSM) a JESS
DAMMAD
31/10/03
Arquitectura Software del Prototipo
Com
A te n
Conf
A te n
A cc
A te n
Com
A te n
CA
A te n
a
DA
Conf
A te n
A cc
A te n
U IA
CA
Dem
e tra
PDA
12
PDA
06
PDA
02
PDA
11
PDA
07
KSM
12
KSM
06
KSM
02
KSM
11
KSM
07
AMS
DF
DAMMAD
31/10/03
DA
• Informa de datos de sensores
• Protocolo FIPA-Query-ref
• Lee de fichero cada 5’ con formato
(deffacts sensores
(sensor(id "301001")(velocidad 74)(ocupacion 14.6)(saturacion 14.53)(vehiculos 87))
(sensor(id "301002")(velocidad 80)(ocupacion 10.7)(saturacion 11.59)(vehiculos 77))
(sensor(id "301003")(velocidad 75)(ocupacion 6.3)(saturacion 6.31)(vehiculos 38))
...)
• Posible conexión con simulador
 JADE corriendo en LABEIN con DA subscrito a la plataforma de
Madrid
 El simulador deja los ficheros en un directorio
 El DA con acceso a ese directorio
DAMMAD
31/10/03
PDAs
• BCs
 Abstracción (cálculo exceso, demanda) (JESS)
 En dos ficheros: uno genérico y uno de dominio (rangos veloc,...)
 Identificación de problemas (Marcos KSM)
 Cálculo de gravedad (JESS)
 Cálculo estado general (JESS)
• Protocolos
 FIPA-Subscribe: “inform” al CA cada vez que detecta un problema
 FIPA- Query-Ref: al DA para pedirle los datos de los sensores
 FIPA- Query-Ref: para informar al CA sobre estado general
DAMMAD
31/10/03
PDAs
• Ejecución






Se piden datos de los sensores (query-ref al DA)
Abstraer las medidas (BC Abstracción)
Obtener lista de problemas (BC Problemas)
Para cada problema (patrón), calcular su gravedad (BC Gravedad)
Seleccionar el problema más grave
Calcular el estado general del área (BC Estado general) y
guardarlo para cuando se solicite
 Informar a CA subscrito la información sobre el problema
DAMMAD
31/10/03
CAs
• Se subscribe a los PDAs
• BCs




Comunicación (Marcos KSM)
Propuestas de señalización (Marcos KSM)
Detección de Conflictos (Marcos KSM)
Resolución de conflictos (JESS): dos ficheros
• Protocolos
 FIPA- Subscribe: a los PDAs para que informen de problemas
detectados
 FIPA- Query-Ref: a los PDAs para preguntar el estado general
 FIPA- Inform: para intercambio de propuesta local con otros CAs
DAMMAD
31/10/03
CAs
• Cuando se recibe “inform” de un problema
 Guardarlo
 Obtener los PDAs con los que comunicarse (BC Comunicación)
 Solicitar el “estado general” a esos agentes
• Cada cierto tiempo (10’) se aplica lo siguiente:
 Para cada problema, calcular propuestas de señalización (BC
Propuestas)
 Calcular propuesta LOCAL sin conflictos (BC Resolución
Conflictos)
 Obtener CAs con los que comparte paneles (BC Conflictos)
 Intercambiar con esos CAs la propuesta local
 Modificar propuesta local para evitar conflictos (BC Resolución
Conflictos)
DAMMAD
31/10/03
UIA
• En desarrollo ...
• Muestra los problemas detectados en las distintas áreas
 Se subscribe a detección de problemas de todos los PDAs
• Muestra propuestas de señalización de cada agente
 Se subscribe a propuestas de señalización de los CAs
DAMMAD
31/10/03
Ejemplo de interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
Interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
PDA06 pide datos de sensores a DA
(deffacts sensores
(sensor(id "301001")(velocidad 74)(ocupacion 14.6)(saturacion 14.53)(vehiculos 87))
(sensor(id "301002")(velocidad 80)(ocupacion 10.7)(saturacion 11.59)(vehiculos 77))
(sensor(id "301003")(velocidad 75)(ocupacion 6.3)(saturacion 6.31)(vehiculos 38))
(sensor(id "301004")(velocidad 70)(ocupacion 15.3)(saturacion 15.96)(vehiculos 91))
(sensor(id "301005")(velocidad 74)(ocupacion 13.8)(saturacion 14.73)(vehiculos 88))
(sensor(id "301007")(velocidad 57)(ocupacion 14.6)(saturacion 13.84)(vehiculos 30))
(sensor(id "301008")(velocidad 54)(ocupacion 5.9)(saturacion 5.72)(vehiculos 52))
(sensor(id "301011")(velocidad 71)(ocupacion 12.8)(saturacion 12.81)(vehiculos 75))
...
)
DAMMAD
31/10/03
Interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
PDA06 pide a KSM06 detectar problemas
[d-fact('Rontegi tras Erandio','saturacion','alta'),
d-fact('Rontegi tras Erandio','ocupacion','alta'),
d-fact('Rontegi tras Erandio','velocidad','alta'),
d-fact('Rontegi antes Barakaldo','saturacion','alta'),
d-fact('Rontegi antes Barakaldo','ocupacion','alta'),
d-fact('Rontegi antes Barakaldo','velocidad','alta'),
d-fact('Rontegi tras Barakaldo','saturacion','alta'),
d-fact('Rontegi tras Barakaldo','ocupacion','alta'),
d-fact('Rontegi tras Barakaldo','velocidad','alta'),
d-fact('Salida a Barakaldo','saturacion','alta'),
d-fact('Salida a Barakaldo','ocupacion','alta'),
d-fact('Salida a Barakaldo','velocidad','alta')]
DAMMAD
31/10/03
KSM06 devuelve lista de problemas
[[d-fact('Rontegi_tras_Barakaldo','localizacion','Rontegi tras Barakaldo'),
P1
d-fact('Rontegi_tras_Barakaldo','estado','desbordamiento'),
d-fact('Rontegi_tras_Barakaldo','categoria','problema'),
d-fact('Rontegi sentido Cruces','estado','con problemas')],
[d-fact('Rontegi_antes_Barakaldo','localizacion','Rontegi antes Barakaldo'),
P2
d-fact('Rontegi_antes_Barakaldo','categoria','problema'),
d-fact('Rontegi_antes_Barakaldo','estado','desbordamiento'),
d-fact('Rontegi sentido Cruces','estado','con problemas')],
[d-fact('Rontegi_tras_Barakaldo','localizacion','Rontegi tras Barakaldo'),
P3
d-fact('Rontegi_tras_Barakaldo','estado','desbordamiento'),
d-fact('Rontegi_tras_Barakaldo','categoria','problema'),
d-fact('Rontegi sentido Cruces','estado','con problemas')],
[d-fact('Rontegi_tras_Erandio','localizacion','Rontegi tras Erandio'),
P4
d-fact('Rontegi_tras_Erandio','estado','desbordamiento'),
d-fact('Rontegi_tras_Erandio','categoria','problema'),
d-fact('Rontegi sentido Cruces','estado','con problemas')]]
DAMMAD
31/10/03
PDA06 informa a su CA (Atena)
[d-fact('Rontegi_tras_Erandio','localizacion','Rontegi tras Erandio'),
d-fact('Rontegi_tras_Erandio','estado','desbordamiento'),
d-fact('Rontegi_tras_Erandio','categoria','problema'),
d-fact('Rontegi sentido Cruces','estado','con problemas'),
d-fact('Rontegi sentido Cruces','gravedad','media')]
DAMMAD
31/10/03
Interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
Atena pide PDAs con los que comunicarse
• Query-ref a KSMComunicaciónAtena
d-fact('Rontegi_antes_Barakaldo','localizacion','Rontegi antes Barakaldo')
d-fact('Rontegi_antes_Barakaldo','categoria','problema')
d-fact('Rontegi_antes_Barakaldo','estado','desbordamiento')
d-fact('Rontegi sentido Cruces','estado','con problemas')
d-fact('Rontegi sentido Cruces','gravedad','media')
• Respuesta de KSMComunicaciónAtena
[d-fact('PDA02','comunicacion',si),
d-fact('PDA12','comunicacion',si)]
DAMMAD
31/10/03
Atena solicita el estado general a PDAs
• PDA02
d-fact('Avanzada sentido Entrada','estado_general','medio')
• PDA12
d-fact('Eje Norte sentido Bilbao','estado_general','libre')
DAMMAD
31/10/03
Interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
KSMAtena da propuestas de señalización
[[d-fact('Rontegi sentido Cruces','disminucion de trafico',27),
d-fact('panel Tuneles Avanzada','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN EJE NORTE'),
d-fact('panel Sondika','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN SUBFLUVIAL LAMIAKO‘),
d-fact('panel Artaza','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN SUBFLUVIAL LAMIAKO'),
d-fact('zona critica','problem area','Rontegi sentido Cruces'),
d-fact('Eje Norte sentido Bilbao','aumento de trafico',8),
d-fact('Lamiako sentido A8','aumento de trafico',19)],
[d-fact('Rontegi sentido Cruces','disminucion de trafico',23),
d-fact('Eje Norte sentido Bilbao','aumento de trafico',7),
d-fact('panel Tuneles Avanzada','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN EJE NORTE'),
d-fact('panel Artaza','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN SUBFLUVIAL LAMIAKO'),
d-fact('panel Sondika','estado','apagado'),
d-fact('zona critica','problem area','Rontegi sentido Cruces'),
d-fact('Lamiako sentido A8','aumento de trafico',16)],
[d-fact('Rontegi sentido Cruces','disminucion de trafico',8),
d-fact('Eje Norte sentido Bilbao','aumento de trafico',8),
d-fact('panel Tuneles Avanzada','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN EJE NORTE'),
d-fact('panel Artaza','estado','apagado'),
d-fact('panel Sondika','estado','apagado'),
d-fact('zona critica','problem area','Rontegi sentido Cruces')]
.... ]
DAMMAD
31/10/03
KSMConflictos da CAs que comparten
paneles
• Entrada
[d-fact('panel Tuneles Avanzada','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES
COJAN EJE NORTE'),
d-fact('panel Sondika','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
SUBFLUVIAL LAMIAKO'),
d-fact('panel Artaza','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
• Respuesta
SUBFLUVIAL LAMIAKO')]
[d-fact('Briseide',conflicto,si),
d-fact('Demetra',conflicto,si),
d-fact('Elena',conflicto,si),
d-fact('Atena',conflicto,si)]
DAMMAD
31/10/03
Atena intercambia propuesta local
• Atena envía propuesta local a Demetra
[d-fact('panel Tuneles Avanzada','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES
COJAN EJE NORTE'),
d-fact('panel Sondika','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
SUBFLUVIAL LAMIAKO'),
d-fact('panel Artaza','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
SUBFLUVIAL LAMIAKO')]
• Demetra envía propuesta local a Atena
[d_fact('panel Tuneles Avanzada','estado','PROBLEMAS EN EJE NORTE'),
d_fact('panel Santurtzi','estado','PROBLEMAS EN EJE NORTE COJAN SOLUCION
SUR PARA ACCEDER A BILBAO')]
DAMMAD
31/10/03
Interacción entre agentes
• PDA pide datos de sensores a DA
• PDA detecta problema e informa a su CA (y UIA)
 Pide a KSM detectar problemas
 KSM devuelve lista de problemas
• CA solicita el estado general a PDAs
 Pide a KSM obtener la lista de PDAs con los que comunicarse (BC
Comunicación)
• CA intercambia propuesta local
 Calcular propuestas de control (BC Propuestas)
 Pide a KSM los CAs con los que comparte paneles (BC Conflictos)
• CA envía propuesta a UIA
DAMMAD
31/10/03
Atena envía propuesta revisada a UIA
[d-fact('panel Sondika','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
SUBFLUVIAL LAMIAKO'),
d-fact('panel Artaza','estado','PROBLEMAS EN RONTEGI DIRECCION CRUCES COJAN
SUBFLUVIAL LAMIAKO')]
DAMMAD
31/10/03
Reunión DAMMAD
Diseño y Aplicación de Modelos Multiagente
para Ayuda a la Decisión
Arquitectura Software
(Demostrador Bilbao)
Grupo de Inteligencia Artificial
Dpto. de Ciencias Experimentales e Ingeniería
Universidad Rey Juan Carlos
DAMMAD
31/10/03
Descargar

URJC - Grupo de Inteligencia Artificial