cenidef - Cenidet

Anuncio
S.E.I.T.
S.E.P.
D.G.I.T.
CENTRO NACIONAL DE INVESTIGACI~N
Y DESARROLLO TECNOLÓGICO
cenidef
“UN MODELO DE COiWJNICACIÓN ENTRE MÚLTIPLES AGENTES
INTENCIONALES BASADOS EN LA ARQUITECTURA B I G
E
T
I
S
QUE PARA OBTENER
S
EL GRADO D E :
MAESTRO E N CIENCIAS
EN CIENCIAS COMPUTACIONALES
P
R
E
S
E
N
T
A :
NADIRARODRÍGUEZDAM&
DIRECTOR DE TESIS
DR. JOSÉ LUIS LIÑANGAR&
SEP CENIBET DGlT
CION
CENTRO DE INFORMA
1
\
\
\
CUERNAVACA, MORELOC
‘i.
’ /
ENERO 2000
Centro Nacional de Investigación y Desarrollo Tecnológico
FORMA C3
REVISION DE TESIS
M.C. Máximo López Sánchez
Presidente de la Academia de Ciencias Computacionales
Presente
Nos es grato comunicarle, que conforme a los iineamientos para la obtención del grado de
Maestro en Ciencias de este Centro, y después de haber sometido a revisión académica la
tesis denominada: UN MODELO DE COMUNICACIÓN ENTRE MÚLTIPLES AGENTES
INTENCIONALES BASADOS EN LA ARQUITECTURA BIG, realizada por la C. Nadira
Rodríguez Damíán, y habiendo cumplido con todas las correcciones que le fueron indicadas,
acordamos no tener objeción para que se le conceda la autorización de impresión de la tesis.
Sin otro particular, quedamos de usted.
Atentamente
La comisión de revisión de tesis
a
'$
\
ADS:
M.C Moisés González GarcíaJ::z;.,-.
...,.
..;, . .... :!. .
,.~
I
.
. .
^
i
;
:
1
'.
C.C.P.
Z
Lis L ; x
Dr. José Luis Liñan García
Director de tesis
Dr. Javier Ortiz Hernández/Jefe del Departamento d e Ciencias Computacionales
INTERIOR INTERNADO PALMIRA S N . CUERNAVACA. MOR. MgXICO
APARTADO POSTAL 5-164 CP 62050. CUERNAVACA.
TELS. (73)12 2314.12 7613 , l a 7741. FAX(73) 12 2434
EMAIL
0
[email protected]>
cenidef
Centro Nacional de Investigación y Desarrollo Tecnológico
FORMA C 4
AUTORIZACION DE IMPRESIÓN DE TESIS
C. Nadira Rodiíguez Darnián
Candidato al grado de Maestro en Ciencias
en Ciencias Computacionales
Presente
Después de haber atendido las indicaciones sugeridas por la misión Revisora de l a
Academia de Ciencias Computacionales en relación a su trabajo de tesis: UN MODELO DE
COMUNICACIÓN ENTRE MÚLTIPLES AGENTES INTENCIONALES BASADOS EN LA
ARQUITECTURA BIG, me es grato comunicarle, que conforme a los lineamientos
establecidos para la obtención del grado de Maestro en Ciencias en este Centro, se le
concede la autorización para que proceda con la impresión de su tesis.
.,,.,".,... <,,
.<, . ,:. ;: ... ...,.
7 ..
.. . .
~,~
.i
' '
Atentamede
Jefe del Depto./
/
i
Ciencias Computacionales
,/
INTERIOR IhTERNADO PALMIRA SIN CUERhAVACA MOR MEXICO
APARTADO POSTAL 5-1MCP 62050 CLERhAVACA
TELS (73112 2314 12 7613 18 7741 FAX 173, 12 24.M
EMAIL
[email protected]
~
~
cenídef
DE D I C A TORIA
A Dios por haberme darme la
fortaleza necesaria para cumplir
esta meta en mi camino
A los pilares de mi vida me
dieron la vida, me educaron con
amor, dedicación y disciplina. Por
todo los valores que me
inculcaron y por su continua
preocupación por mi bienestar,
gracias por todo los quiero:
Moisés Rodriguez Berna1
Y
Ma. Concepción Damián Robles
A mis hermanas por Sus
continuas muestras de cariño, SU
apoyo, sus consejos, SU
comprensión y confianza mil
gracias, no se olviden que
siempre están en mi pensamiento
las quiero:
Noemí
Gaby
Siboney
A una nueva personita en mi
familia mi sobrino Guillermo
(mueganito)
Por t u apoyo incondicional,
cariño, confianza y compañía
gracias, Juan Carlos t e quiero.
AGRADECIMIENTOS
A mi familia por SU apoyo incondicional, amor y compañía en los momentos
difíciles de mi estancia en Cuernavaca.
A mi asesor Dr. José Luis Liñan García por compartir conmigo sus
conocimientos y la confianza que me tuvo en el desarrollo de este trabajo.
AI comité de revisión por sus comentarios y sugerencias, para mejorar y
enriquecer este tema de investigación: M.C Moisés González García, M.C
Manuel Mejía Lavalle, M.C Matilde Velazco Soní.
A mis profesores por su amistad y apoyo durante mi formación académica.
A las personas que me brindan su amistad sinceramente: Sony González,
Ver0 Campos, Lucero María Ayala Lugo, Alejandra Kauffman Mireles,
Esmeralda Barba, Gaby Calderon, Juanita Canul, Elias Rodríguez, Jorge
Ibarra, Alberto Alvarado.
A mis compañeros de generación, a mis compañeros y amigos de electrónica
de está institución me faltaría lugar para nombrarlos, pero ustedes saben
que siempre cuentan conmigo y gracias por los momentos que compartimos.
A mis compañeros del Tecnológico de Celaya generación 1997 y 1998.
A todo el personal de está institucibn, y al apoyo económico de SEP.
CONTENIDO
LISTA DE FIGURAS............................
.......................................................................................... iv
LISTA DE TABLAS
...........................................................................
.......................................... v
CAPITULO 1
INTRODUCCI~N
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
INTRODUCCIÓN .................
.................................
RESUMEN DE LA TESIS .....................................................................................................
ANTECEDENTES ..............................................................................
DEFINICION DEL PROBLEMA .................................
OBJETIVO ..............
BENEFICIOS Y ALC
FUNDAMENTO FILOSOFICO
ORGANIZACIÓN DE LA TESl
...................
1
2
CAPITULO 2
MARCO TEÓRICO
2.1 INTRODUCCI~N..................................................................................................................
2.2 INTELIGENCIAARTIFICIAL
...........................
2.2.1 Inteligencia artificial
2.2.2 Divisiones de la inteligencia
artificial distribuida
.........................................
2.3 PARADIGMA DE PROGRAMACION
.................
...........................................................................................
2.3.4 Sistema multi
...........................
2.3.5 Problemas re
2.4 PROBLEMAS DE COMUNICACIÓN
8
9
9
9
10
I1
12
2.4.3 Actos del habla
....................................... 16
2.5 ARQUITECTURA BDI (Creencias, Deseos e Intenciones)
2.5.1 Introducción a arquitecturas ......................................................................................... 18
2.5.2 Arquitectura BDI (creencias, deseos, intenciones) ....................................................... 18
2.5.3 Modelos de comunicación basados enla arquitectura BDI ..................................... : .....20
IRMA
.................
20
PRS
................
21
COSY
.............................................................. 23
GRATE'. ..................................................................................................................... .26
2.5.4 Tabla de comparación entre los modelos bajo la arquitectura BDI ............................... 28
CAPITULO 3
MODELACIÓN DE AGENTES CON LÓGICAS MODALES
3.1 INTRODUCCI~N
.................................
3.2 PROTOCOLO DE COMUNICACI~N................
.................................
3.2.1 Definición de protocolo de comunicación
3.2.2Componentes de un protocolo de comun
3.2.3 protocolo de comunicación y los actos
3.3CLASIFICACIÓN DE LOS ACTOS DEL HABLA ..............
3.4 INTENCIONES EN COMUNICACI~N
...................................................
3.5LÓGICA MODAL
........................................................................
3.5.1Lógica Tempora
......................................................
36
37
3.7.2 Sintaxis ...
con la arquitectura BGI .......
..........................
..............................
53
CAPITULO 4
SIMULACIÓN CON AGENTES INTENCIONALES PARA
EQUILIBRAR EL TRÁFICO EN UNA RED DE ÁREA LOCAL
4.1 INTRODUCCI~N
.................................................................
4.2 PROBLEMA DE TRÁFICO EN REDES DE ARE LOCAL ..............................................
4.3 ELECCIÓN DEL ALGORITMO PARA EQUILIBRAR EL TRAFICO
EN UNA RED DE AREA LOCAL................................
4.4 JUSTIFICACIÓN DEL USO DE AGENTES ................
4.5 ESTAPAS DE SOLUCIÓN ............
4.5.1 Algoritmo de enrulamiento p
4.5.2Diseño del algoritmo con agentes intencionales
4.5.3Implantación del algoritmo con agentes intencionales
ii
56
4.5.4 Descubrir a sus nodos vecinos .................. ;................................................................
4.5.5 Medir el retarda para cada uno de los nodos
..............................................
........................................
4.5.6 Construir un paquete de estado....................
4.5.7 Enviar el paquete de estado .......................................................................
4.5.8 Calcular la trayedona más coria ............... .............................................
4.5.9 Descripción de la interfaz gráfica del simulador ..........................................................
4.5.10 Resultados obienidos en las corridas de prueba .......................................................
64
67
72
75
CAPITULO 5
CONCLUSIONES Y TRABAJOS FUTUROS
5.1 CONCLUSIONES
....................................................
5.2 TRAEAJOSF
........................................................................
5.3 PUBLICACIONES ........
....................................................
5.4 LECCIONES
.............................................................
5.5 APORTACIONES..............................................................
..............................
5.6 BENEFICIOS OBTENIDOS
...............................
APÉNDICE A ..........................................................
..............................................................
a3
a4
a4
..............................................................
.................................................
...
111
LISTA DE FIGURAS
Figura 2.1 Caracteristicas de un agente y su entorno.....................................
11
Figura 2.2 Un sistema multiagente ..................................................................
12
Figura 2.3 Cuadro de análisis y clasificación de
investigaciones de agentes ...........
14
Figura 2.4 Arquitectura IRMA
........................................
21
Figura 2.5 Arquitectura PRS
.....
.............................
23
Figura 2.6 Arquitectura del agente COSY ......
........................................
24
...........................
25
Figura 2.7 Estructura de un compon
Figura 2.8 Arquitectura funcional G
Figura 3.1 Arboi lógico de creencias
......
......................................
~.26
...........................
44
Figura 3.2 Modelo básico de comunicación....................................................
46
Figura 3.3 Representación del funcionamiento de un protocolo .....................
47
Figura 3.4 Un árbol de aplicación para las posibles opciones de un agente .... 52
Figura 3.5 Representación del funcionamiento interno del protocolo
de comunicación propuesto ........................................................
54
Figura 4.1 Modelo del agente para el algoritmo de enrutamiento
por estado de enlace .............................................................
60
Figura 4.2 Modelo de intercambio de información entre dos
agentes para el balanceo de tráfico ............................................
61
Figura 4.3 Un ejemplo de una red de área local .................................
Figura 4.4 Representación del funcionamiento del protocolo
de comunicación con la preformativa NA-HELLO ......................
.. 62
64
Figura 4.5 Interpretación matemática de NA-HELLO y NA-REHELLO........... 65
Figura 4.6 Ponderación de pesos dentro de una red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
iV
iv
LISTA DE TABLAS
Tabla 1.1 Características de los diferentes
modelos bajo la arquitectura BGI ...................................................
29
Tabla 4.1 Estructura de los vecinos para el nodo local.....................................
66
Tabla 4.2 Estructura para información de todos los nodos de la red ................ 68
Tabla 4.3 Estructura para vecinos de cada nodo de la red ...............................
68
'Y
Introducción.
CAPITULO 1
INTRODUCCION
1.2 Resumen de trabajo realizado en la tesis.
1.3 Antecedentes del problema
1.4 Definición del problema.
INTRODUCCION
1.5 Objetivo especifico.
1.6 Beneficios y alcances.
1.7 Fundamento filosófico.
Capitulo 2. Marco teórico.
1.6 Organización de la tesis
Capitulo 3. Modelación de agentes
con lógicas modales.
Capitulo 4. Simulación con agentes
intencionales para equilibrar'el
tráfico en una red de área local.
Capitulo 5. Conclusiones y trabajos
futuos.
I.I INTRODUCCI~N
En el presente capítulo se presenta un panorama general sobre el contexto en que
se realizó este trabajo de tesis, presentándose un resumen del tema investigado.
Especificando el problema y sus antecedentes, así como los alcances y limitaciones
del mismo. Se explica de forma breve los beneficios que' se obtienen al resolver este
problema.
/I
Por lo anterior es que este capítulo de introducción se contesta a las preguntas 'Qué
es el problema? ,¿De dónde surge el mismo?, ¿En qué área se ubica y bajo que
contexto?. También se presenta explica brevemente la forma en que se desarrollo la
solución, presentándose una introducción a cada uno de los capítulos que conforman
el presente trabajo y su organización.
1
I
,
Introducción.
1.2 RESUMEN DE LA TESIS
El paradigma orientado a agentes surge cuando un grupo de investigadores
comienza a estudiar el funcionamiento de sociedades compuestas por seres
humanos, con respecto a la forma en que un grupo de personas coopera para
trabajar y resolver problemas en forma conjunta. Lo anterior con el fin de
implementar este comportamiento en equipos compuestos por computadoras
[O’Hare 19961.
Este enfoque de sistemas multiagentes [Nwana 19961 se utiliza actualmente para la
solución de problemas de carácter distribuido, los cuales son difíciles de resolver
mediante un enfoque centralizado.
Dicha solución consiste en crear un grupo de agentes’, donde cada agente resuelve
parte de un problema dado e intercambia resultados parciales para la solución global
de un problema dado.
Una característica principal dentro de los sistemas multiagentes es la comunicación.
El intercambio de información acerca de resultados parciales sobre un problema, y la
forma en que dicha información afecta el desempeño de un agente se llama
comunicación de alto nivel.
La comunicación de alto nivel es una técnica de comunicación para sistemas de
computadoras, que va más allá del simple paso de mensajes, ya que trata de crear
una abstracción sobre la forma en que se presenta la comunicación en sociedades.
Involucra la teoria de intenciones en la comunicación, para crear sistemas lo más
dinámicos posibles, considerando que la información que se intercambia también es
muy variable dentro de estos sistemas.
En el presente trabajo se propone una solución al problema de comunicación en un
sistema mulfiagenfe. Por madi0 de un modelo de comunicación entre agentes de tipo
intencional, con el uso de la técnica de comunicación de alto nivel. lnvolucrando
intenciones y creencias en el proceso de comunicación, desarrollando una
arquitectura para el agente bajo la arquitectura BIG Belief, .Intention, Goals
(Creencias, Intenciones y Metas).
Lo anterior es sólo un modelo teórico, por lo que es necesario una prueba práctica
del mismo. Planteándose una solución al problema de balanceo de tráfico de redes
de área local, usando el algoritmo de enrutamiento por estado de enlace programado
bajo el modelo de comunicación propuesto con agentes intencionales.
’
Para este trabajo se entiende por agente un módulo de software y/o hardware con características de
autonomía, capaz de activar metas específicas y comunicarse con otros agentes. Cada agente es
experto como un sistema experto en un área dada.
2
Introducción.
El sistema consta de un agente que reside en cada enrutador dentro de la red, este
agente se encarga de crear rutas Óptimas para el envío de información dentro de la
red.
El envio de información es aleatorio, es decir, en cuanto el nodo requiera enviar
información se crea una ruta. La ruta indicará el camino a seguir para que la
información llegue a su destino de acuerdo al estado de tráfico en la red, así como
estar observando el estado general de la red, para tomar decisiones adecuadas
sobre la ruta más rápida para transportar información.
1.3 ANTECEDENTES
Un enfoque a la solución de problemas distribuidos dentro de la inteligencia artificial
distribuida está constituido por los sistemas multiagentes. Los cuales estudian cómo
un conjunto de agentes autónomos convive en un medio ambiente, es decir, se
comunican e interaccionan entre sí para alcanzar una meta común, creando así una
sociedad compuesta por agentes.
Para realizar lo anterior Shoham [Shoham 19931 propone un acercamiento para la ,
especificación de agentes, que llama programación oíientada a agentes, por hacer
una analogía con la programación orientada a objetos. Esto se explica más a fondo
en la sección 2.2.
Un sistema multiagente está constituido por un grupo de agentes, donde cada.agente
se constituye de componentes esenciales tales como: creencias sobre su medio
ambiente, capacidades de realizar acciones, y capacidad para generar varios planes
de solución a un problema dado, así como seleccionar la mejor opción.
La estructura en que se acomodan los componentes de un agente y la forma en
trabajan internamente estos componentes, para funcionar como sistema establece la
arquitectura para el sistema multiagente, la cual se explica en la sección 2.3
Dentro de un grupo de agentes la comunicación se vuelve esencial cuando se tiene
un objetivo común (compartido o adoptado), que desean alcanzar cooperativamente.
.Por lo que necesitan comunicar el momento en que las acciones empiezan, qué o
cuáles agentes las están ejecutando y cuándo termina una acción determinada.
Tomando en cuenta que dentro de un sistema mulfiagente un agente solamente tiene
un punto de vista parcial,de la situación del problema a resolver, surge la necesidad
de crear mecanismos de comunicación. Sección 3.2.
Los mecanismos mencionados deben mantener actual y consistente la base de
conocimiento (creencias) del agente, realizando revisiones constantes de la
información que llegue como nueva con la existente para evitar crear contradicciones
en la base de conocimiento [O'Hare 19961.
1
,,
''
,
:'
Introducción.
Por lo anterior los investigadores de sistemas multiagentes han realizado estudios
sobre intenciones en comunicación colectivas. Donde consideran la manera en que
los miembros de un grupo se comunican para lograr el éxito de sus acciones.
Doyle y De Kleer en O'Hare [O'Hare 19961 proponen un mecanismo, llamado belief
(creencia) el cual consiste en una revisión exhaustiva de las bases de conocimientos,
y una actualización continua de esta información. Esté es uno de los mecanismos
que utilizamos para crear el modelo de comunicación. Se explica en la sección 2.2.5.
1.4 DEFINICIÓN DEL PROBLEMA
Entre los aspectos más relevantes de la problemática asociada con la construcción
de sistemas basados en multiagentes, resalta la siguiente:
a) Los agentes de un sistema multiagente requieren poseer capacidad de
comunicación que permita a los diversos agentes tener conocimiento del
estado global del sistema para la toma de decisiones adecuada
b) Los procesos que trabajan juntos requieren coordinarse para la obtención
de resultados globales coherentes.
Por estos puntos específicamente se delimita el problema creando los siguientes
objetivos, que se solucionaran con este trabajo de investigación.
1.5 OBJETIVO
'I
Proponer un modelo de comunicación que permita a los agentes dentro de un
sistema multiagente poder compartir información de alto nivel, es decir, compartir
sólo la información necesaria para el funcionamiento del agente.
Con este modelo de comunicación se propone una herramienta de diseño para
sistemas multiagentes, que ayude en la generación de sistemas con agentes, y en la
selección de la información que les proporcione para el funcionamiento interno de
cada agente.
Desarrollar un prototipo que demuestre que el uso del modelo de comunicación entre
agentes es una alternativa factible, para la solución de problemas en sistemas
multiagentes.
4
Introducción.
1.6 BENEFICIOS Y ALCANCES
En este trabajo se considera esencial el diseño de mecanismos para comunicación:
basados en los actos esenciales de comunicación y la teoría de intenciones
conjuntas para facilitar la comunicacion de alto nivel entre los agentes.
~
Con el presente trabajo se pretende alcanzar los siguientes beneficios, al diseñar un
sistema multiagente:
A) Crear soluciones actuales con respecto al medio ambiente, manteniendo una
comunicación eficaz se asegura que la información utilizada en la toma de decisiones
es actual, por lo que las bases de datos se consideran consistentes con respecto al
medio ambiente en que están trabajando creando así sistemas dinámicos como su
medio ambiente lo requiera.
B) Una ventaja es el cambio de acciones de acuerdo como el medio ambiente lo
requiera, haciendo una herramienta de diseño versátil en el contexto en que se
aplique. Por esto se considera al tipo de agentes intencionales. La investigación se
enfoca a obtener las intenciones de los agentes como una medida de compromiso
[O'Hare 19961.
C) Aplicaciones diversas del modelo, dada la importancia de la comunicación
entre entidades que cooperan, para poder basarse en el concepto integral de
comunicación (intencionalidad, cambios de estados en los agentes y un marco
común) [Scott 19951 permitirá que el modelo de comunicación .sea más robusto y
funcional en una gran diversidad de contextos distribuidos, como redes, sistemas
operativos, etc.
D) Definición de dominios en donde se aplique el modelo, con el modelo de
comunicación que se propone también se debe delimitar el contexto del problema en
que se desee aplicar el modelo. Desarrollando un medio ambiente con un dominio
bien definido de acuerdo al problema que se desea resolver. Esto es importante
dentro de un ambiente colaborativo, donde los mecanismos de comunicación juegan
un papel importante.
I.
I
¡
.:
ii
Dentro de los beneficios y alcances que se pretenden con la aplicación del modelo
son los siguientes:
E) Reducción de tiempos en envíos de mensajes, al tener agentes que actualicen
el estado de la red, se cuenta con datos necesarios para crear una rutas rápidas.
F) Reducción de análisis para cambios de estado en la red, este otro beneficio es
por lo mismo al observar constantemente el estado de la red, se puede sab'kr en
cualquier momento si un nodo deja de funcionar o si un nodo se agrega a la red,
5
'!
Introducción.
1.7 FUNDAMENTO FlLOSOFlCO
Basándose en las ideas filosóficas de Bratman, en este trabajo se considera un
modelo diferente a los apoyados en la arquitectura BDI (Belief, Desire, Intentions) tal
como lo propone [Rao, 19911 [Cohen 19951. El modelo de agentes que se adoptará
se llama arquitectura BIG (Belief, Intentions, Goals), donde los estados mentales de
los deseos los hemos eliminado por las siguientes razones:
1. Contradicciones : mientras que las intenciones regulan la conducta de un
agente, los deseos pueden provocar estados conflictivos en el mismo.
Ejemplo : yo puedo desear ir a Canadá en invierno y deseo ahorrar para un
nuevo automóvil.
2. Razonamiento : una intención fuerza al agente a realizar razonamientos
para lograr un estado futuro, un deseo no necesariamente lo hace.
Así que en este modelo se parte de un conocimiento del agente (creencias) y
codificando las acciones que un agente puede adoptar (intenciones), éste alcanzará
sus metas u objetivos (metas). Se explica en la sección 3.3.
I.8 ORGANIZACIÓN DE LA TESIS
El presente trabajo está constituido por los siguientes capítulos:
Capitulo 2. Se proporciona una introducción general a ¡a inteligencia
artificial distribuida y sus vertientes de estudio; un panorama general
sobre la programación orientada a agentes; los tipos de agentes
existentes, haciendo énfasis en los problemas de comunicación y la
forma en que se interpreta la comunicación para nuestro estudio y el
estado del arte de este problema.
Capitulo 3. Se muestra una introducción a la lógica modal y lógica
temporal como los formalismos en que se basa el modelo a desarrollar,
y el desarrollo del modelo de comunicación propuesto.
Capitulo 4. Se explica el prototipo en que se prueba el modelo de
comunicación, el cual 'fue una simulación de balanceo de tráfico en una
red de área local, por medio de un algoritmo de enrutamiento por estado
de enlace.
Capitulo 5. Se explican las conclusiones a las que s e , llegó con el
presente trabajo y los posibles trabajos futuros.
6
Marco Teórico
CAPITULO 2
MARCO TEÓRICO
I
2.2.1 Inteligencia artificial distribuida.
2.2 Inteligencia Artificial
2.2.2 Divisiones de la inteligencia artificial
distribuida
agentes.
-f’
!I
2.3.1 Definición de agente.
2.3 Sistema multiagente
2.3.2 Características de los agentes.
2.3.3 Tipos de agentes.
I,
2.3.4 Problemas relacionados con los agentes -f
comunicación bajo una arquitectura
establecida para disefiar agentes.
2.4.1 Esquemas de comunicación
2.4 Problema de
Comunicación
2.4.2 Comunicación de alto nivel. Relacionada con
las intenciones de comunicar información -f
Arquitectura BDI
2.4.3 Actos del habla, explicando la filosofía diversos
estados
mentales
dentro
del
proceso
de
comunicación.
!/I
2.5.1 Introducción a arquitecturas, definición,y
componentes.
2.5 Arquitectura BDI
I
2.5.2 Introducción a la filosofia de intenciones
dentro de la comunicación, definiendo la arquitectura
BDI.
2.5.3 Modelos de comunicación basados en la
arquitectura BDI.
If
La flecha significa que el tema antes de ella -f deriva el siguiente lema después de la flecha.
,7
Marco Teórico
2.1 INTRODUCCI~N
Este capítulo se divide en cuatro puntos principales, 10s cuales nos sitúan en el
contexto en que se abordo este problema. Durante el desarrollo de estos cuatro
Puntos nos daremos cuenta de qué herramientas necesitamos para resolver nuestro
problema, así como las soluciones propuestas a la fecha.
El primer punto a tratar es la inteligencia artificial distribuida, presentándose una
definición del tipo de investigación que tiene a cargo esta área y las aplicaciones
asociadas a ella. Se definen las divisiones de esta área de investigación, enfocando
nuestro interés a los sistemas multiagentes.
Ubicados en el tipo de investigación de los sistemas multiagentes, continuamos
presentando cómo se construye, y las características que debe tener. Los métodos
de diseño e implantación establecidos a la fecha, así como los trabajos realizados
con relación a estos sistemas.
De esto surge la problemática que se tiene al definir un sistema multiagenfe, la falta
métodos válidos para implantarlos. Uno de los problemas que destaca es la
comunicación. Por esto se han desarrollado varios trabajos llamados técnicas o
esquemas de comunicación.
Dentro de estás técnicas encontramos una de interés para este trabajo, que es la
comunicación de alto nivel, Presentamos la composición de esta corriente filosófica
basada en la teoría de intenciones en comunicación, así como sus fundamentos y los
trabajos realizados en esta corriente.
AI investigar los
trabajos^ realizados dentro de la 'teoría de intenciones en
comunicación, observamos que se necesita establecer una arquitectura para diseñar
a los agentes, donde la arquitectura debe tener una técnica de comunicación, que
para nuestro trabajo será la comunicación de alto nivel.
Por lo que continuamos con saber qué es una arquitectura y de que se compone,
presentándose un estado de'arte de la arquitectura que se ha aplicado hasta el
momento sobre esta este tema, siendo la arquitectura BDI (Creencias, Deseos e
Intenciones).
Incluimos una introducción a la filosofía en se basa la arquitectura BDI, mostrando
los trabajos realizados sobre esta arquitectura, sus aplicaciones y una breve
descripción de ellos.
8
Marco Teórico
2.2 INTELIGENCIA ARTIFICIAL
El tipo de investigación que hace la inteligencia artificial es lograr la construcción de'
entidades inteligentes, mediante el estudio y comprensión del comportamiento
humano.
~
Una definición de inteligencia artificial como lo expresa Rich y Knight es: "El1estudio'
de cómo lograr que las computadoras realicen tareas que, por el momento, los
humanos hacen mejor". [Rich 19911 Está definición abarca una enorme cantidad de
subcampos, ya que tiene que ver con todo aquello en donde se aplique el intelecto
humano. Uno de estos subcampos es la inteligencia artificial distribuida, que se
describe a continuación.
2.2.1 INTELIGENCIA ARTIFICIAL DISTRIBUIDA
Actualmente los sistemas de computación requieren que la solución de un problema
sea proporcionada por una colección de procesos independientes, frecuentemente
distribuidos en múltiples computadoras autónomas, conectadas a través de redes de
comunicación, así como la colaboración de personas.
Esto ha impulsado el desarrollo de la inteligencia artificial distribuida como un área;
que desde hace poco más de una década, se ha dedicado a estudiar modelos de
comportamiento en sociedades humanas. Así como técnicas de comunicación y
razonamiento, utilizando diseiios basados en conocimiento. Integrando una amplia
gama de especializaciones necesarias para participar en sociedades compuestas por
computadoras y personas [Lander 19971 [Scott 19951.
2.2.2 DIVISIONES DE LA INTELIGENCIA ARTIFICIAL DISTRIBUIDA
Generalmente la comunidad de investigación en inteligencia artificial distribuida
distingue dos áreas principales dentro de ella [Nwana 19961, las cuales son:
Solución de problemas distribuidos (SPD). Que estudia cómo un problema
particular puede ser dividido en diversos módulos que cooperan
compartiendo conocimiento para resolver problemas En un sistema de
solución de problemas distribuidos puro, todas las estrategias de
interacción se incorporan como una parte integral del sistema [O'Hare
19961.
Sistemas multiaqentes (SMA). Estos se ocupan de la conducta de una
colección de agentes que resuelven un problema dado [Gamble 19981.
I
Marco Teórico
Un sistema muifiagenfe puede definirse como "una red de resolvedores
de problemas débilmente acoplados', que van más allá de sus
capacidades individuales" [Durfee 19891.
2.3 PARADIGMA DE PROGRAMACIÓN PARA SISTEMAS
MULTIAGENTES
2.3.1 DEFINICI~NDE AGENTE
En la actualidad existen varias definiciones de agente, sin tener una definición
establecida. Por eso para el contexto de este trabajo un agente es "un sistema capaz
de percibir y actuar en su medio ambiente" [Guerra 19971. En términos
computacionales un agente es considerado como una unidad de software con
características especiales para participar en sociedades compuestas por
computadoras y gente.
2.3.2 CARACTERkTlCAS DE UN AGENTE
Por la definición anterior el comportamiento general de un agente no es
necesariamente una composición lineal de los módulos que lo componen, puede
emerger de las interacciones del comportamiento generado por los módulos
individuales que lo forman. De acuerdo a Shoham se ha desarrollado una nueva
forma de programar, a l a que le llama programación orientada a agentes [Shoham
19901, donde cada agente cuenta con las siguientes características:
Conocimiento de su mundo por medio de una entidad, cuyo estado consiste
de componentes mentales tales como creencias o base de datos.
Obligaciones o función principal del agente.
Capacidades de razonamiento, es decir, generación de alternativas para
posibles soluciones a un problema dado. Y decisión al elegir la alternativa
para la solución del problema.
I
Enlazando las características de un agente inteligente y su definición, deducimos que
un agente para alcanzar una meta a futuro, considera el conocimiento que posee y la
información proporcionada por los otros agentes (creencias).
Además utiliza sus capacidades de razonamiento. y decisión, para evaluar un
conjunto de alternativas y seleccionar la mejor solución, (decisión) de esta manera
alcanza la meta previamente establecida [Scott 19951.
*
Con débilmente acoplados se interpreta que los procesos son independientes, y que no necesitan esperar algún tipo de
activación para ejecutar alguna acción.
..
10
Marco Teórico
Cuando un agente toma una decisión, determina un conjunto de acciones que debe
llevar a cabo. En la figura 2.1 se muestra la forma gráfica de representar las
características internas que constituyen a un agente.
I
CAPACIDADES
restringen
Métodos de solución de problemas
Figura 2.1 Características de un agente inteligente y su entorno.
2.3.3 TIPOS DE AGENTES
Existen diferentes tipos de agentes, agrupados en categorías de acuerdo a sus
capacidades de solución de problemas [O'Hare 19961. A continuación se muestra
una clasificación de acuerdo a las capacidades específicas de cada agente:
¡I
Aaente reactivo: este tipo de agente reacciona a cambios en su ambiente,
es decir, a mensajes de otros agentes. Este tipo de agentes no es capaz
de razonar sobre sus intenciones. Sus acciones son realizadas como
resultado de la ejecución de reglas previamente establecidas. Un claro
ejemplo de este tipo de agentes son los sistemas expertos de primera
generación.
Aaente intencional: tiene la habilidad de razonar sobre sus intenciones y
creencias, creación de planes para ejecutar acciones, así como ejecutar
estos planes, estos tipos de agentes pueden ser considerados como
sistemas planificadores, que pueden seleccionar sus metas y razonar sobre
ellas. En un sistema mulfiagenfe, con agentes intencionales se coordinan y
cambian información acerca de sus creencias, metas o acciones.
Aaente social: posee modelos explícitos de comportamiento acerca de
otros agentes, también debe tener la habilidad de actualizar estos modelos.
Razonar sobre el conocimiento incorporado a estos modelos, así como
tomar decisiones y crear planes con respecto a otros modelos de
agentespcott 19951.
l.
~
/I
;i
li
ii
;,
,
00-0002
1'1
Marco Teórico
En este trabajo el problema que se desea resolver es de comunicación y no de
coordinación explícitamente. Por esto se eligió trabajar con agentes intencionales, ya
que cumplen con la definición en general de agentes, sin ser ,tan complicados como
los sociales, en el aspecto de actualizar modelos de otros agentes.
2.3.4 SISTEMA MULTIAGENTE
Lo anterior nos expone las características generales de cualquier agente, lo
independiente que deben ser, además de autónomos, esto es un concepto
fundamental para nuestro estudio.
Ahora definimos que es un sistema multiagente, el cual está formado por más de un
agente cooperando en forma conjunta para la solución de un problema dado.
Un sistema multiagente lo podemos representar como en la figura 2.2, se muestran
dos agentes convivie,ndo en un ambiente común, donde cada agente tiene sus
características individuales e independientes del otro agente. La Única forma para
intercambio de información es por medio de un modelo de comunicación.
1
Ambiente
1
Bases de creencias, deseos,
intenciones
Bases de creencias,
deseos,
intenciones
1
I
COMUNICACI~N
+
+ +
h m
Módulos de Procesamiento
t
Canal
Figura 2 2 Un sistema multiagente
12
de
Canal de
Marco Teórico
2.3.5 PROBLEMAS RELACIONADOS CON SISTEMAS MULTIAGENTES
Esta forma de solucionar los problemas no es muy reciente data de finales de los
1970 cuando Carl Hewtti's de acuerdo a un' artículo den Nwana [Nwana 19961'
propone el concepto auto-contenido en programas llamándolos actores, que con el!
transcurso del tiempo fue evolucionando para convertirse en un nuevo paradigma de
programación e investigación orientado a agentes.
Las investigaciones realizadas para el establecimiento de alguna metodología en la
construcción de sistemas multiagentes continúan abiertas.
Cuando se crea un sistema mulfiagenfe, se debe hacer una abstracción de las
situaciones del mundo real en que se aplicaría el sistema, Primero se estudia el
comportamiento de los expertos que conforman el sistema, para simularlos con
agentes y poder crear una sociedad compuesta por agentes. AI hacer esto nos
enfrentamos con una serie de conflictos al establecer los conceptos que se aplicarían
al sistema mulfiagenfe.
Dichos conceptos causan cierta polémica en términos computacionales, el escuchar
palabras como autonomía, actos del habla, estados mentales del sistema, toma de
decisiones, y algunos otros conceptos que se manejan en esta área de sistemas
mulfiagenfes.
Además de los problemas que se presentan en la definición de conceptos en está
área, se tienen otros problemas al disenar la estructura interna que tenüra cada
agente propiamente.
O'Hare [O'Hare 19961 clasifica los problemas relacionados con la estructura intern'C,
de un agente y los problemas al crear un sistema mulfiagenfe como se muestra en el
cuadro figura 2.3, donde hace una abstracción del análisis relacionado con la's
investigaciones realizadas en este campo de sistemas mulfiagenfes.
Primero se presenta la perspectiva del agente, es decir, los puntos importantes qub
se contemplan al construir un agente internamente, tomándolo como un programa
independiente y autónomo.
Después en la perspectiva de grupo, destacan los puntos a considerar al tener un
grupo de agentes para construir un sistema multiagente. El agente debe saber como
esta ubicado en el sistema, con quienes puede intercambiar información y de que
tipo.
i
Se observa también con letras negritas el problema específico en que se enfoca esta
tesis, situada en el contexto de sistema mulfiagenfe.
143
Marco Teórico
Categoría del agente (que tipo de agente).
Estructuras para mantenimiento de conocimiento.
Habilidades de razonamiento (funciones).
Habilidades de adaptación y aprendizaje.
Arquitectura del agente (diseño interno de los módulos).
Comunicación + Primitivas de comunicación.
Planes ó Pase de mensajes.
Intercambio de información
usando pizarrones.
Comunicación de alto nivel.
Interacción máquina-persona.
Figura 2.3 Cuadro de aná1isis.y clasificación de investigaciones en agentes
(O’Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence Wiley;
1996, p. 7, traducción de la tesista )
AI construirse por más de un agente un sistema multiagente debe tener la habilidad
de compartir datos e intercambiar información entre las unidades de software que lo
componen, requiriendo un soporte de interoperabilidad en varios niveles de
abstracción como los observados en la figura 2.3.
También se debe considerar que un sistema constituido por agentes es demasiado
cambiante, por esto la solución al problema de comunicación debe utilizar un modelo
de comunicación que no sea tan dependiente de un lenguaje de programación.
El modelo de comunicación debe estar en un nivel de abstracción que indique cómo
se está llevando a cabo la comunicación, y cómo se interpretan las características
que conforman a un agente [Lander 19971. Esta inquietud se une a la expresada por
ofros investigadores del área de sistemas multiagentes como lo expresa Bond y
Gasser que habla sobre un enfoque de compartir información [Bond 19921.
14
Marco Teórico
::
2.4 PROBLEMA DE COMUNICACI~N
2.4.1 ESQUEMAS DE COMUNICACI~N
Entre las soluciones propuestas para el problema de comunicación e intwcambio de.'
mensajes se presentan las técnicas generales de comunicación, en que se basan losl
modelos de comunicación para el diseno de agentes [O'Hare 19961:
1. Sin comunicación. Se usa la teoría de juegos, utilizando matrices que
almacenan los posibles resultados de agentes para cada iteración, de esta
forma un agente solo infiere los planes de otros agentes sin necesidad de
pasarle información, exigiendo un conocimiento común de reglas en
información para realizar acciones.
~
2. Pasando planes y pase de mensajes. Este pase de mensajes es total o
parcial de la información entre los agentes involucrados, siendo costoso de
hacer en computación y difícil de realizar.
3. Intercambio de información a través de pizarrón. Es un modelo donde se
comparte memoria denominado repositorio, sobre el cual los agentes
escriben mensajes, colocan resultados parciales y obtienen información de
otros agentes. Los repositorios están divididos en niveles de abstracción
para un problema dado. Los agentes tienen diferentes tipos de acceso
dentro del pizarrón, cuya información puede ser actualizada o sólo
consultada.
4. Comunicación de alto nivel. Este tipo de técnica se basa en las
investigaciones hechas sobre la comunicación en el lenguaje natural.
Acerca de cómo es posible hacer intercambio de mensajes entre múltiples
agentes con distintas intenciones y posiblemente contradictorias, tomando
los estados como creencias, hechos e intenciones. Esta técnica examina la
transformación de los diálogos a creencias e intenciones en la
comunicación.
11
'
,
1:
'
1;
1;
4
11
5. Interacción máquina persona. Esta técnica define que todos los integrantes
de un sistema, soportan tareas intelectuales cooperativas. Aquí los agentes ,
computacionales, sólo asisten a las personas en diferentes caminos, para
coordinar las acciones que solucionen el problema dado.
;:
Las anteriores son técnicas generales para llevar a cabo una comunicación entre
agentes, las cuales se deben complementar con un modelo o metodología de
programación, que proporcione el comportamiento y estructura general de un agente,
la perspectiva del agente, así como una base formal que respalde el modelo [Scott
19951.
Marco Teórico
2.4.2 COMUNICACI~NDE ALTO NIVEL
Como se mostró en el punto anterior, existen varias técnicas de intercambio de
información, dichas técnicas van desde las que no involucran comunicación, hasta
los que involucran una sofisticada comunicación, como la comunicación de alto nivel
que es el punto central de este trabajo.
Dicha técnica de comunicación se basa en la teoría de comunicación propuesta por
Cohen y Levesque [Cohen, 19881 [Cohen 1990bl [Keith 19981 [Munindar 19911. Ellos
proponen tomar en cuenta estados mentales durante el proceso de comunicación,
derivados de una teoría formal de interacciones basada en compromisos e
intenciones que abarca la comunicación.
Varios autores entre ellos El-Fallah, [El-Fallah 19991, Nwana [Nwana 19961, Rao
[Rao 19911, y Scott [Scott 19951, se han unido a esta teoría definiendo el intercambio
de mensajes para los agentes, como los actos del habla que se presentan en la
comunicación entre humanos. Los cuales se interpretan como solicitudes, Órdenes o
promesas, manteniendo las capacidades de razonamiento por medio de estados
mentales. Las conversaciones pueden ser vistas como interacciones coordinadas
cooperativamente. Para comprender como es que se conforma este tipo
comunicación, definimos primero los actos del habla.
2.4.3 ACTOS DEL HABLA
En la teoría de los actos de/ habla las expresiones humanas son vistas como
acciones, en el mismo sentido que las acciones son ejecutadas en el mundo real. El
estudio de estás expresiones nos ayuda a encontrar la forma en que se'conformara
el modelo de comunicación basado en la comunicación entre humanos. Un ejemplo
de comprensión de actos del habla es el siguiente:
La expresión "favor de cerrar la puerta" dicha en forma general en una sala con un
grupo de personas, genera un proceso en el cual todas las personas presentes
atienden dicha expresión, pero solamente la persona que esté cerca de la puerta es
la que al escuchar la frase la toma como petición generando una acción, las otras
personas escuchan.la expresión la procesan y desechan al darse cuenta que no es
una acción que puedan ejecutar.
Esta teoría de los actos del habla considera tres efectos, en el .proceso para atender
una expresión que son los siguientes:
Locucionario, se refieren a la interpretación de las expresiones, por el
agente en un acto del habla. En otras palabras las expresiones que
acepta un agente, con respecto a su estructura, en algún lenguaje
propuesto.
16
Marco Teórico
En el ejemplo de "favor de cerrar la puerta", se estableció previamente
un alfabeto de símbolos {a ...z}, con respecto a este conjunto de
símbolos, las reglas para formar palabras válidas dentro de este
lenguaje {la, de, .cerrar....},y la forma en que dichas palabras se colocan
para formar una oración como sujeto verbo predicado.
QQQ
favor de
cerrar
la puerta
sujeto
verbo
predicado
J oración válida
Ilocucionario, se refiere al tipo de acción a ejecutar, que indica
explícitamente la expresión. La parte importante en las expresiones es
la acción a ejecutar, que nos indica el verbo denominado performativo
(performatives) algunos ejemplos de estos verbos son: "requerir",
"advertir", "informar", etc.
En el ejemplo de "favor de cerrar la puerta", se toma directamente el
significado de las partes que componen la expresión emitida, como no
se encuentra el sujeto explícitamente, se debe asignar un nombre por lo
que favor de se interpreta cómo, quien sea.
La base del aspecto ilocucionario es la acción que nos indica el verbo.
Dicha acción será realizada por el sujeto, complementándose por el
predicado que es el contexto sobre quien se realizará la acción
indicada, en este caso cerrar que es el verbo y de acuerdo al predicado
la puerta, que es sobre quien se tiene que realizar la acción de cerrar.
.O
'
,/
:
Perlocucionario, se refiere al efecto implícito que causa el escuchar una
expresión, cómo influenciará esta al receptor en el contexto de
aplicaciones basadas en agentes.
En el ejemplo el efecto que causará, es sobre el agente que esté cerca ,
de la puerta, porque al escuchar la expresión el sujeto cercano a la ,
puerta recibe el mensaje y asume ser el sujeto quien sea (como se
interpretó en el aspecto ilocucionario).
El efecto que causa sobre el agente cercano a la puerta es un cambio
de acciones inmediatas sobre la que este ejecutando, para tomar la
expresión como orden y ejecutar la acción que se pidió de "cerrar la
puerta". Este es el efecto perlocucionario, en este ejemplo.
r
Los verbos performativos corresponden a la fuerza de las expresiones para algún
lenguaje de comunicación, en el que existen suposiciones implícitas acerca de
acciones a realizar dentro de expresiones ilocucionarias, ya que al enviar un mensaje
(efecto iocucionario) los agentes comunican la necesidad de que se realice una
acción (efecto ilocucionario).
17
Marco Teóflco
Una acción se interpreta como intención inicialmente, para posteriormente ser
transforma a meta, pasando primero por las creencias y verificar su congruencia con
el medio ambiente actual (estado actual del sistema), para finalmente llegar a ser
meta (efecto per1ocucionario)que es la acción a ejecutar de algún hecho real.
En el proceso ilocucionario el agente espera que las expresiones sean entendidas
como intenciones, para la realización de alguna acción en el agente receptor.
Cuando el agente emisor no tiene control sobre la influencia que causen las
expresiones enviadas, la expresión no se considera perlocucionaria [Nwana 19991.
2.5 ARQUITECTURA BDI (Creencias, Deseos e Intenciones)
2.5.1 INTRODUCCION A ARQUITECTURAS
En los puntos anteriores de este capítulo se abordaron las características que debe
tener una unidad de software para considerarse agente, también se presentaron las
diferentes clases de agentes, y los problemas que se tienen cuando se desea crear
un sisfema multiagentes. En esta problemática resalta la comunicación, se mostró el
enfoque de este trabajo para solución de la comunicación. Por medio de actos del
habla, estados mentales, así como las creencias que tiene cada agente, falta
presentar la forma en se unen dichas características para comenzar a diseñar
sistemas multiagentes, con las técnicas de programación ya explicadas. '
La metodología a seguir para programar sistemas multiagentes, es por medio de
arquitecturas, que indican cómo se están interpretando cada una de las partes que
forman un sistema de este tipo, además de cómo diseñarlo una arquitectura
deacuerdo a su definición, "La arquitectura debe administrar una infraestructura de
comunicación para facilitar el intercambio de datos, en un lenguaje compartido y un protocolo
de comunicación, que asegure la ejecución de los agentes en tiempos adecuados" [Lander
19971.
2.5.2 ARQUITECTURA BDI (Belief, Desire, Intention)
Una arquitectura muy utilizada es la BDI (Belief, Desire, Intention) que corresponde a
creencias, deseos e intenciones. Cuyo autor principal es Bratman [Bratman 19871,
dicha arquitectura se basa en la definición general de un agente, por lo que les
atribuye actitudes mentales para cumplir con la autonomía que todo agente debe
tener, las actitudes mentales son: creencias, deseos e intenciones.
Kiss agrupa la estructura con actitudes mentales en las siguientes tres categorías
[Kiss 19921:
o
Congnoscitivo, como creencias y conocimiento mejor conocidos como
entradas de un sistema.
Marco Teórico 1
Connotativo, 'como intenciones, planes y compromisos, que están
relacionados con las acciones a realizar así como el control que se debe
::
aplicar sobre ellas. Esto es el proceso interno para crear una solución.
Afectivo, aquí interfieren deseos, metas y preferencias, ya en lenguaje
computacionai los llamamos salidas.
I
Las creencias que tiene un agente se toman del medio ambiente que lo rodea, es
decir la base de datos con la que van a contar y los método's para su constante
actualización. Los deseos e intenciones se refieren a las diversas soluciones que,
genera el agente con los métodos que tiene programados, antes de tomar una acción
a ejecutar, los deseos junto con las intenciones tienen el control sobre las diversas
propuestas de solución así como la elección de una de ellas.
!!
La .diferencia entre deseos e intenciones es que las intenciones son una medida de
obligación, asociadas con guías y controles que aseguran un comportamiento
consistente, para actividades futuras del agente. Mientras que un deseo, salirse de¡
límite de las capacidades del agente o crear inconsistencias [Cohen 19951.
AI requerir una acción que no tiene un grado de compromiso, no necesariamente se
fuerza a ser validada una acción, por la base de conocimientos que se tiene y de las
capacidades para que fue hecho el agente. Más adelante trataremos este tema a
detalle.
/I
Con respecto a las intenciones, que son tomadas como guías para determinar la
conducta de un agente, algunos autores como Cohen y Levesque [Cohen 19901
basaron sus desarrollos en esta arquitectura de Bratman [Bratman 19881, dicho
trabajo fue tomado como base para otros avances, los cuales procuran describir,
analizar y especificar el comportamiento de los agentes, por medio de relaciones
existentes entre creencias, deseos e intenciones.
Dentro de la arquitectura BDI se han desarrollado modelos de comunicación, para
programar orientado a agentes. Los modelos con la arquitectura BDI de agentes,
existen para una amplia variedad de aplicaciones, en particular para aplicaciones de
ambientes dinámicos y con acciones racionales para responder a cambios en tiempo
real, dado que el comportamiento general de un agente no es necesariamente un
Comportamiento lineal de los módulos que lo conforman.
Para establecer una idea más clara de lo que se pretende desarrollar con el'presente
trabajo, a continuación presentamos los modelos realizados a la fecha bajo la
arquitectura BDI. La estructura que fue definida para cada modelo, y la forma en que
se interpretaron los componentes que conforman cada modelo o protocolo db
comunicación. Así como el funcionamiento interno de los módulos que forman los
esquemas.
19
Marco Teórico
2.5.3MODELOS DE COMUNICACI~NBASADOS EN LA ARQUITECTURA BDI
IRMA
IRMA (intelligent resource-bounded machine architecture) por sus siglas en inglés, es
una arquitectura para una máquina inteligente con límite de recursos, donde los
recursos son referencias primarias de limitaciones con respecto al poder
computacional [Bratman 19881. Este diseño Utiliza una especie de razonador sobre
medios y fines para un problema planteado, al seleccionar la mejor alternativa
tomando en cuenta los límites que tienen sobre sus recursos. Este modelo hace una
representación indirecta de creencias, deseos e intenciones.
La figura 2.4 muestra que la estructura de IRMA almacena diferente información
(indicados con Óvalos) y procesos (indicados con rectángulos). Está información es
almacenada como creencias, deseos, librería de planes, intenciones estructuradas
en planes. Existe una diferencia entre planes los que son recibidos y los que son
adoptados para ejecutar [O'Hare 19961.
La librería de planes, contiene los planes que son vistos como un subconjunto de
creencias en los agentes, revisan cuales planes son aplicables para realizar ciertas
tareas y las circunstancias para su realización. Los planes posteriores son los que
están ejecutando actualmente, correspondiendo a intenciones que son almacenadas
en Estructuras de lntenciones dentro de Planes.
Los procesos razonamiento de medios y fines, e l analizador de oportunidad, los
mecanismos de filtros y la deliberación, son los que tienen acceso a deseos,
intenciones y planes en la información almacenada.
*:*
El razonador de medios y fines es invocado por cada plan parcial existente,
para hacer el subplan que lo complete. Puede proponer un número de
opciones para satisfacer el mismo significado.
*3 El analizador de. oportunidad es el componente que propone opciones
como resultado de cambios en el ambiente.
*:e
El fWro de compafibilidad verifica si una opción es compatible con las
intenciones de agentes existentes, de ser así pasa a deliberación de
procesos. Una opción que se estima incompatible puede pasar a traves del
mecanismo de filtros de rechazo los cuales corren en paralelo.
Q Mecanismo de filtros de rechazo,,el principal propósito es limitar' la cantidad
de requerimientos computacionales por la deliberación en razonamientos
prácticos.
03 La deliberación de procesos, procesa amplias opciones de competencia
contra otras y actualiza las estructuras de intenciones dentro de planes.
,. . .
20
..
.
Marco Teórico
I
intenciones
de medios y
fines
I ,
I
I ,
,I I '
Oportunidad
1Opciones
\opciones
.
a
Mecanismos de
Filtros de rechazo
Filtros
de Compatibilidad
I
I
r
I
opciones
de supervivencia
I
. I
I
I
'I:
'I I
I
I
Intenciones
/¡
Figura 2.4. Arquitectura IRMA (Bratman 1988)
(O'Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence, Wiley?
Interscience, 1996, p, 172, traducción de la tesista )
PRS
i
PRS (procedural reasoning system) por sus siglas en ingles sistema de razonamiento
procedural, cuyos autores son Goergeff y Lansky 1987, George e lngrand.1989 en
O'Hare [O-Hare 19961. Este sistema razona sobre las tareas ejecutadas en
ambientes dinámicos. En PRS las actitudes acerca de creencias, deseos e
intenciones están representadas explicitamente, y juntas determinan acciones para
:,
el sistema en cualquier instante dado [Rao 19911 [O'Hare 19961.
Marco Teórico
Los componentes que constituyen esta arquitectura son: bases de datos, metas,
librerías de áreas de conocimiento, estructura de intenciones e intérpretes.
Las bases de datos contienen hechos o creencias actuales acerca del mundo, El
conocimiento que contiene la base de datos es necesario para completar tareas, y
poder reaccionar bajo ciertas circunstancias encapsuladas en especificaciones de
procedimientos declarativos, llamados áreas de conocimiento (AC).
Cada área de conocimiento (AC) tiene un cuerpo, consistente de procedimientos por
pasos e invocación a condiciones que se describen dentro de las condiciones
aplicables a cada AC. La librería de /as areas de conocimiento hace una aplicación
de dominios por medio de meta-niveles, y de un conjunto de sistemas dependientes
por omisión. Un meta-nivel incluye el tipo de conocimiento que requiere para la
acción a ejecutar, además hace un razonamiento sobre la manipulación de
creencias, deseos e intenciones por el PRS mismo. La selección del meta-nivel
puede ser a través de otros meta-niveles dentro de las areas de conocimiento.
Las metas representan el comportamiento deseado del sistema, es decir el estado
estático del mundo a ser activado. Los autores distinguen dos tipos de metas:
intrínsecas-y operacionales.
e:*
0:.
Las metas intrínsecas no están relacionadas con alguna meta
existente y son consideradas como un resultado de la obtención de
nuevas creencias acerca del mundo.
Las metas operacionales tienen relación con alguna acción presente.
Las intenciones en PRS son tareas que el sistema ha elegido para ejecutar de
inmediato o en un tiempo cercano. Una simple intención consta de algunas áreas de
conocimiento iniciales para cumplir una tarea, junto con otras sub-áreas de
conocimiento involucrados para realizar dicha tarea. Las intenciones del sistema son
insertadas dentro de una estructura de intención, de acuerdo a su precedencia. Su
orden puede cambiar como resultado de la ejecución de algunos meta-niveles de las
áreas de conocimiento.
Una intención puede estar en uno de los tres estados posibles: activo (ejecutándose
actualmente), suspendido (no ha hecho una decisión para su ejecución) o
condicional suspendido (esta en espera hasta que se cumpla alguna condición de
activación).
1
La operación del intérprete PRS corre en el sistema por completo y puede ser
conceptualmente descrita como sigue: cuando el sistema tiene alguna meta,
mantiene algunos conocimientos en su base de datos. Estas metas y creencias
comienzan a ser aplicables para un subgrupo en áreas de conocimiento, donde si
una de estas áreas de conocimiento es elegida para ejecutarse, es situada dentro de
una estructura de intención. Durante la ejecución de una intención nuevas submetas
son producidas e introducidas en la pila de metas del sistema, para las cuales otros
ciclos de razonamientos finales tomarán su lugar.
22
Marco Teórico '
.Aunque algunas creencias o metas activas son nuevas en las áreas de conocimiento,
el sistema trata primero las intenciones que ya fueron decididas previamente. LO
anterior se hace para centrarse en la forma en que las metas directas serán
introducidas, por medio de un razonamiento análogo sobre las áreas de;
conocimiento, expandiendo la ejecución de subrutinas en el sistema de programación
procedural. PRS razonará sobre sus creencias e intenciones actuales y tal vez elija
trabajar con algunas otras metas.
Las áreas de conocimiento involucradas no son sólo resultado de metas propuestas,
son como una reacción a ciertas condiciones en el ambiente. En estas entradas el
agente no excede las intenciones y toma los cambios en el ambiente a considerar. La
figura 2.5 muestra gráficamente la arquitectura antes descrita.
(Razonador)
Figura 2.5. Arquitectura PRS (Goergeff e lngrand 1989 )
(O'Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence, Wiley
Interscience, 1996, p. 174, traducción de la tesista )
COSY
La puesta en marcha de COSY (cooperating knowledge-based systems) fue L
proyecto de investigación para aplicarlo a sistemas de cooperación basados en
conocimiento. Este modelo describe a un agente por sus intenciones,
comportamientos, acciones, percepciones, los recursos requeridos por intenciones
completadas'y ejecución de comportamientos. Distinguimos dos tipos de intenciones
llamadas:
intenciones estratégicas, se utilizan en términos de grandes metas, actitudes,
papeles, responsabilidades.
Menciones tácticas, las cuales son límites directos de las acciones de un
agente.
23
Marco Teórico
Utiliza protocolos de cooperación representados con estereotipos de diálogo, dentro
de un patrón específico de operación como contratación. Correspondiente al
componente del protocolo de ejecución (CPE), verifica y administra la ejecución de
protocolos de cooperación, preparando mensajes que van a ser enviados y
procesando mensajes recibidos con un protocolo en particular. En la figura 2.6 se
presenta la arquitectura COSY.
INTENCIONES
SENSORES
CRDR
............ ............. ....,
+
COGNOSCITIVO
I
Figura 2.6 Arquitectura del agente COSY
(O'Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence, Wiley
Interscience, 1996, p. 176, traducción de la tesista )
La arquitectura COSY es modular, compuesta por los siguientes módulos:
ejecutores, sensores, comunicación, intenciones y cognoscitivo.
El módulo cognoscitivo consiste de una base de conocimientos (BC), componente de
ejecución como guión (CEG), componente del protocolo de ejecución (CPE), y
componentes "razonando, decidiendo y reaccionando" (CRDR) figura 2.6.
El cognoscitivo trata el compromiso que tienen las intenciones tácticas para su
formación, revisión o abandono. Este módulo implementado como un sistema
basado en conocimiento, evalúa el conocimiento percibido y prepara la acción
apropiada para una situación dada por las consultas del módulo de intenciones.
La tripleta "creencias, deseos e intenciones" es directamente representada y
aprovechada en COSY como: su base de conocimientos que contiene las creencias,
los deseos están representados en el módulo de intenciones, los guiones elegidos, y
las intenciones codificadas en protocolos.
La solución de un problema es independiente del dominio, ya que se basa en
guiones y protocolos de cooperación. Un guión es un estereotipo de receta o plan de
activación en tareas especificas, este guión contiene llamadas a otros guiones,
protocolos, y comportamiento primitivo.
24
Marco Teórico :
Los comportamientos primitivos, son "planificadores" realizados por el proceso de:
ejecutores. El componente cognoscitivo de ejecución como guión (CEG), administra
la ejecución de los guiones, delegando la ejecución de comportamientos primitivos al
los ejecutores y la ejecución de protocolos de cooperación al componente del
!I
protocolo de ejecución (CPE).
7
Los componentes "razonando, decidiendo y reaccionando" son responsables de la
interpretación del medio ambiente, y reaccionan si la situación lo demanda,
deliberando cual es la mejor intención que pueda ser convertida en meta.
li
Los componentes "razonando, decidiendo y reaccionando" se componen de una
agenda, una estructura de intención y procedimientos para operación de esa
estructura de datos, que esta constituida por guiones, requeridos como entradas a
!!
procedimientos.
,I
Los guiones son puestos en las agendas como resultado de la percepción de otros
agentes en situaciones actuales por sensores y comunicación. En la figura 2.7 se
muestra un esquema de esta estructura
Guioi;ies aplicables
.~::
...........................
.....................................
.................................................................... Guiones de
.,
Filtros
I
!
+i
~
j
Componentes
+
Suspención
1
ComponenteE
......................................................................
Guiones uara
Ejecución
I
2,
I
,
I
1-
!
Intra - protocolos
de Decisión
Figura 2.7 Estructura de un componente RDRC
(O'Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence, Wiley
Interscience, 1996, p 174, traducción de la tesista )
j/
I
El módulo RDRC (razonando, decidiendo, y reaccionando) junto con sus
componentes se ejecuta en forma lineal, con procedimientos especiales llamado's
filtros, reacción y deliberación. Los componentes "razonando, decidiendo yI
reaccionando", utilizan primero al procedimiento filtro después el control es dividido
en dos direcciones, una para el procedimiento de deliberación y otra por el
procedimiento de reacción.
25
Marco Teórico
El filtro proporciona la prioridad a la segunda clase de guiones antes considerados,
éstos se refieren a los planes de agentes existentes en las. metas actuales. Los
guiones de la última categoría requieren deliberación, la cual es ejecutada por dicho
procedimiento refiriendo a intenciones estratégicamente dentro del módulo de
intenciones.
GRATE’
El agente de arquitectura funcional [Jennings 19931 reensambla IRMA adicionando
componentes que incorporan soluciones a problemas cooperativos. Utilizando el
concepto de unir intenciones con un grado de responsabilidad para establecer una
actividad de colaboración en grupo, y observar la ejecución de actividades unidas.
GRATE* ha sido implantado y probado en aplicaciones reales en administración del
suministro de electricidad. La figura 2.8 muestra un esquema de esta arquitectura.
Eventos Locales
Nuevos Objetivos
Objetivos Locales Nuevos
1
Comunidad de Eventos
Actos Relacionados
b Control de Ejecución
b Fallas de Compromisc
Análisis de
Significados Finales
Actos Sociales Nuevos
Verificador d
Habilidades
v
Participantes
Potenciales
intenciones
Inconsistentes
4
A
intencioneS
,Modificadas
Verificador d
Definidos
Figura 2.8 Arquitectura funcional GRATE*
(O‘Hare G.M.P. and N.R. Jennings Foundations of Distributed Artificial Intelligence, Whey
Interscience, 1996, p. 179, traducción de la tesista) !
.
26
Marco Teórico
L~~ eventos ocurren como resultado de problemas locales O cambios en e\ ambiente,:
manifestando una necesidad potencial para la realización de nUeVOS objetivos. Estos!
nuevos objetivos sirven WmO entradas al proceso de análisis para resultados finales,
tomando en .cuenta la existencia de un nuevo objetivo.
El analizador de resultados finales hace una consulta en las librerías existentes para
crear un -plan apropiado al nuevo objetivo, de esta forma el analizador de resultados
finales considera como afectan las intenciones actuales a los nuevos objetivos y:
verificar que las actividades actuales sean consistentes con la actividad futura.
Si el analizador de resultados finales resuelve que el agente tome la intención loca)
como nuevo objetivo, debe asegurarse de que este satisfaga al objetivo que existía
antes además de ser compatible con las intenciones existentes. Si los result.ados de
compatibilidad localizan una inconsistencia, entonces el proceso de solución de
inconsistencias intenta modificar los compromisos existentes o cambiar los objetivos
para remover el conflicto existente.
Los elementos de control en este proceso de solución para inconsistencias son sobre
las preferencias o deseos del agente. Comúnmente las tareas menos importantes
son expuestas a modificaciones, en la mayoría de los casos el resultado sobre el
proceso en conflicto requerirá de un análisis completo de resultados finales. 'I
.I
Cualquier solución hecha por el mecanismo de soluciones se refleja en la
representación de intenciones. Si el resultado del analizador de significados finales
toma la.decisiÓn de realizar objetivos colaborativos, entonces se debe establecer una
I
acción social.
El primer paso es identificar los agentes de la comunidad que están interesados en
formas parte de esta solución (miembros potenciales), una vez identificados los
miembros potenciales existen un esqueleto de intenciones unidas donde sus
participantes registran sus intenciones, pero no han hecho selección de grupo para
una solución en común, sólo se hace la formación del grupo de trabajo.
La segunda fase es la finalización fuera de línea de un objetivo y orientación de
acciones individuales a ejecutar para alcanzar el objetivo planteado.
Como resultado de la generación y selección del plan las funciones de asignación
son transferidas a otros miembros del grupo para ejecuciones locales, las cuales son
incluidas dentro del analizador de resultados finales donde las acciones principales
se adaptan a las obligaciones existentes, mientras se satisfacen las relaciones
asociadas a sus acciones.
Cada vez que una nueva acción individual o en conjunto es propuesta el verificador
de inconsistencias verifica la coherencia entre intenciones unidas e individuales.
27
Marco Teórico
En GRATE* las intenciones no sólo proveen significados de concordancia para
acciones,, también actúan como guía para tareas de ejecución y verificación. Los
problemas del nivel de dominio son presentados como tareas atómicas de
procesamiento cuando son vistas por las leyes de control y cooperación.
Los monitores de eventos, analizador de resultados finales, verificador de
compatibilidad, el proceso para solución de inconsistencias y verificador de
consistencia son orientados dentro del módulo contribución de situación.
El módulo de cooperación es responsable de identificar el potencial de los
participantes. La librería de recibidores, intenciones, unión de intenciones y deseos
se almacena en el mismo modelo, y las capacidades de otros son almacenadas en el
modelo.
2.5.4TABLA DE COMPARACIÓN ENTRE LOS MODELOS
ARQUITECTURA BDI (Creencias, Deseos, Intenciones)
!
BAJO
LA
Se presenta una tabla con un resumen de las características de cada modelo
presentado bajo la arquitectura .BDI, se establece cómo interpretan las nociones
básicas referentes a creencias, deseos e intenciones.
En la tabla 2.1 podemos observar que un deseo hace un proceso antes de ser
considerado como meta, este proceso pasa por una fase donde el deseo es
convertido en intención dentro de una estructura definida, ya que las intenciones se
consideran como metas futuras, porque pasan por un filtro de que verifica su
congruencia y realización.
Los deseos no tienen un grado de compromiso ni cuentan con una estructura para un
plan de ejecución. bien definido, Por lo que sería recomendable tener sólo
intenciones, es decir, planes que se consideren realizabÍes respecto a las
limitaciones del sistema, y con respecto al estado actual del sistema (creencias, base
de conocimiento).
Marco Teórico '
ARQUITECTURP
IRMA
PRS
COSY
GRATE*
CREENCIAS DES
DESEOS
I
INTENCIONES
Inicialmente los Dejan de ser
planes,
toma como
planes a corto convirtiéndose
o largo plazo. en estructuras
para planes
bien definidos.
Las representa Maneja las
como metas,
intenciones
determinadas para ejecutar
por el
los planes de
funcionamiento la librería
del sistema.
donde se
tienen áreas de
conocimiento.
METAS
Pasan por
Son tomadas
filtros de
por la
compatibilidad
percepción de
para ejecutar
su medio
alguna acción,
ambiente.
solicitada.
Son
Son su base
de datos.
representadas
por los
diferentes
estados de las
intenciones:
Activo
Suspendido
Suspendido
condicional.
Representado Se representan Se representan Son los
como sistema por el módulo con una
guiones para
de
de intenciones. agenda de
ejecución.
conocimiento.
estructura de
intenciones.
Los representa Los definen el Establecidos
Los contiene el
por medio de
resolvedor de por el checador monitor de
un monitor de inconsistencias de significados eventos.
eventos.
finales.
Tabla 2.1 Características de los diferentes modelos bajo la arquitectura BGI
29
Marco Teórico
30
Modelación de agentes con lógicas modales
CAPíTULO 3
MODELACION DE AGENTES CON
LÓGICAS MODALES
3.1 INTRODUCCI~N
3.2 PROTOCOLO DE COMUNICACIÓN
3.3 ACTOS DEL HABLA
3.2.1 Definición.
3.2.2 Componentes
3.2.3 Base filosófica+ 3.3 Actos
del habla
Definición de está teoría.
'
Forma de representación+ 3.4 Intenciones en
comunicación.
3.4 INTENCIONES EN COMUNICACI~N+ 3.5 LÓGICAL MODAL
'I
3.5 LÓGICA MODAL
3.6 FORMALIZACIONES
BÁSICAS PARA MODELOS
DE COMUNICACIÓN
3.5.1 Lógica Temporal
3.5.2 Bases axiomáticas de lógica temporal
3.5.3 Semántica de mundos posibles
3.5.4 Tiempos ramificados en lógicas
temporales
3.6.1 Protocolo abierto en un sistema
multiagente
I/
$1
,
.li
3.6.2 Problemas relacionados con los
modelos de comunicación
3.7 MODELO DE COMUNICACION
1
',
li
3.7.1 De estados mentales a los
actos de comunicación
3.7.2 Sintaxis
i
3.7.3 Sistema axiomático
3.7.4 Semántica
3.7.5 Arquitectura para un agente
bajo el modelo de comiinicación con
la arquitectura BGI
!
31
Modelación de agentes con lógicas modales
3.1 INTRODUCCI~N
Uno de los objetivos de este trabajo de tesis es proponer un modelo de
comunicación, que permita a los agentes dentro de un sistema multiagente poder
COmpaf?ir información de' alto .nivel. Asegurando que las aplicaciones que se
resuelvan bajo este enfoque, garanticen a los diseñadores crear agentes que
alcancen en un máximo posible las funciones para las que fueron creados bajo este
modelo.
Como se observó en el capítulo anterior para crear un sistema multiagenfe es
necesario tener una arquitectura que indique las funciones del sistema, así como el
modelo con un protocolo de comunicación bajo el cual se va a diseñar el sistema.
Para crear un modelo de comunicación que sea válido, es necesario tener sistemas
formales que permitan describir y razonar con elementos de diseño dentro de un
marco bien definido, que elimine ambigüedades en la interpretación de información y
conducta de los agentes ante un cambio en su medio ambiente.
Para establecer lo anterior se recurrió a investigar la lógica modal y lógica femporal
[Rao 19951, como herramientas que proveen elementos para representar conceptos
como las intenciones en los agentes, y las características temporales de los
programas que ejecutan funciones de comunicación en programas concurrentes,
estas son necesarias para crear el modelo de comunicación que necesitamos para
este trabajo de tesis.
En este capítulo se presenta una breve introducción a la sintaxis y, la semántica de
los operadores que utiliza la Lógica Modal.
Se comienza con una breve descripcibn de lo que es un protocolo de comunicación,
llamado así dentro del paradigma orientado a agentes para representar el modelo de
comunicación, después ., se presentarán las características que debe tener,
finalizando con los formalismos que sustentan este trabajo así como una introducción
a la lógica modal y lógica temporal.
3.2 PROTOCOLO DE COMUNICACIÓN
Existen reglas generales que determinan el comportamiento de un agente ante varias
situaciones. 'Abordando el tema de comunicación es necesario contar con un
lenguaje de inferacción, que debe responder a las siguientes preguntas:
¿ Qué lenguaje se debe utilizar para el intercambio de información?
¿ Cuáles son los términos adecuados que al unirse con el lenguaje,
garanticen una buena interpretación del agente receptor del mensaje
recibido?
32
Modelacfón de agentes con Iógicas modales
¿ Qué tan robusta debe ser la estructura y la sintaxis de los mensajes para
que ayuden a una rápida interpretación de los mismos?
¿ Cómo tratar las inconsistencias de información y los errores eventuales de
tipos que difieren sobre diferentes puntos de vista acerca del mundo?
¿ Qué protocolo debemos utilizar en el intercambio de diálogos?
Un protocolo forma parte de lenguaje de interacción, y un lenguaje de interacción
forma parte de un modelo de comunicación. Por lo que comenzaremos estableciendo
primero el protocolo, después el lenguaje y más adelante el modelo de
comunicación.
'
3.2.1 DEFINICIÓN DE PROTOCOLO DE COMUNICACIÓN
Un protocolo de comunicación establece un marco común de referencias en donde
los agentes intercambian información sin problemas, por medio de reglas que deben
seguir para hacer una buena interacción.
El protocolo no se preocupa por detalles de implantación como lo hace el lenguaje de
interacción, finalmente un protocolo es sólo una herramienta de diseño de
comunicación
3.2.2 COMPONENTES DE UN PROTOCOLO DE COMUNICACI~N
Dentro de un protocolo de comunicación se debe considerar la definición y estructura
de los aspectos que contestan a las preguntas: ¿Con que comunicar?, ¿Por que
comunicar?, ¿Cómo comunicar?, ¿Cuándo comunicar?, ¿Qué comunicar?, 'Qué
I
debe esperar el.que envía un mensaje después'del envio?.
Aparte d é esas preguntas también se debe establecer, la reacción que debe adoptar
el que envía un mensaje después de enviarlo [El-Fallah 19991.
Un protocolo se puede representar de la siguiente forma [El-Fallah 19991:
Una red de transiciones, que define un conjunto de posibles
transiciones las cuales deben ser relacionadas con un conjunto de
estados en que los agentes pueden acoplarse alternativamente para el
intercambio de actos interactivos.
$
/I
Una transición puede restringir algunos campos en los acLos de
interacción.
Las condiciones que un agente debe satisfacer para cambiar de
estado pueden ser etiquetadas antes de ser usadas.
j:
33
Mqdelación de agentes con lógicas modales
3.2.3 EL PROTOCOLO DE COMUNICACIÓN Y LA TEORIA DE LOS ACTOS DEL
HABLA
Para establecer formalismos sobre el protocolo de comunicación abordaremos
nuevamente los actos del habla, como se describió en el punto 2.2.7, cuando un
agente genera una expresión se dice que produce una acción, la cual está
constituida por tres aspectos siendo el más representativo el efecto ilocucionario,
donde se interpreta el significado implícito que lleva una expresión sobre alguna
acción [O’Hare 19961.
La fuerza de un acto del habla se produce cuando el locutor aplica una fuerza
ilocucionaria al contenido de una proposición, especificando la acción que se intenta
activar y a quién afecta dicha acción directamente, se puede representar
gráficamente como sigue:
Fuerza de un acto del habla
3.3 CLASIFICACIÓN DE LOS ACTOS DEL HABLA
En sistemas multiagentes se aplican los actos del habla en una teoría acerca de
performativas [DARPA 19931, la cual esta compuesta por acciones, conformadas de
sucesos con valores’verdaderos o falsos, y la ejecución de los denominados actos
del habla, de la misma forma que una lectura indirecta de un acto del habla se
obtiene de un acto ilocucionario directamente.
Las performativas se explican como verbos, basados en la fuerza de un acto
ilocucionario [Cohen 19951, las performativas indican acciones a ejecutar por un
agente y de acuerdo a Searle y Vanderveken [Keith 19981 se clasifican en 5
categorías como se muestra a continuación:
O
Representativos: aseguran un hecho acerca del mundo, algo que
existe en su base de datos como cierto por un largo tiempo.
Directos: mandan directivas al interlocutor, es decir, establece
comunicación con un grado de compromiso de obtener respuesta a
sus peticiones.
De compromiso: crean un compromiso en el locutor sobre algunos
actos para un futuro cercano.
Declarativos: comprometen un acto en el presente con un fuerte
esquema a diferencia del anterior que es para el futuro.
34
, . .
..
Modelación de agentes con lógicas modales
;Expresivos: proporcionan indicaciones al interlocutor acerca del estado
mental del locutor.
I
I
Los actos del habla son también vistos como acciones a ejecutar, pero de acuerdo al
tipo de expresión que los preceda es el tipo de compromiso que existe para realizar
.I
alguna acción en específico.
/I
Existen otras clasificaciones sobre estás acciones representadas como actos del
habla, una de ellas es la de Campbell [El-Fallah 19991 pero es demasiado general ya
que toma en cuenta actos aislados en condiciones de aplicación y efectos locales los
cuales pueden recaer en el interlocutor.
Otros tratan secuencias de interacciones las cuales pueden establecer por ellos
mismos entre el interlocutor durante una de sus comunicaciones. Moescherl, utiliza
una extensión sobre el trabajo de Searle [Keith 19981 acerca de los actos del habla.
Trognon y Brassac [El-Fallah 19991 intentan suplir los actos del habla con una teoría
de cadenas hacia estructuras de conversación entre múltiples agentes.
3.4 INTENCIONES EN COMUNICACI~N
Ji
En el punto anterior se explicaron los actos del habla y su función al emitir una
expresión por un agente, donde las expresiones se crean con diferentes. tipos de
intenciones, retornando el ejemplo del punto 2.2.7, donde se emite la expresión
"cerrar la puerta" lleva cierta intención implícita, la cual genera una acción de petición
o solicitud para algún agente que realice la acción que se está solicitando.
Otro ejemplo es la expresión "está lloviendo", la cual se puede contemplar como una
acción tie aviso'a otros agentes, que no necesariamente están esperando que se
ejecute alguna acción. Por lo que las intenciones que se manejan en la comunicación
también interfieren de forma importante en el desarrollo de un modelo de
comunicación.
Para el contexto en este trabajo las intenciones son vistas como comportamientos de
acuerdo a planes que permiten a los agentes expresar sus intenciones al c:omunicar!
Las intenciones son acciones que toma un agente al recibir una expresióri, junto con
el proceso que genera el recibir una expresión para crear algún cambio en el agente
receptor. Es decir, la interpretación que atribuye quien atiende la peticióri (receptor)
con su conocimiento previo, de acuerdo a lo anterior es como se activa alguna acción
en el receptor con base al significado contextual que infiere éste acerca del
enunciado recibido.
.i
Como un ejemplo práctico de lo anterior existe un modelo de cornunicacióq,
propuesto por Cohen y Levesque [Cohen 19951, el cual está basado en una teoría
racional de interacciones entre agentes.
35
c
Modelación de agentes con lógicas modales
Presentando una semántica basada en la lógica de primer orden y la utilización de
mundos posibles, que son descripciones simultáneas y de razonamiento acerca de
estados mentales de los agentes, se representan con 4 operadores modales
divididos en:
*3 Dos operadores de actitudes como proposiciones, be/ (proviene de su
palabra en ingles belief) para representar las creencias y goal (de SU
palabra en ingles goal) para representar las metas.
*:
Dos operadores temporales, done (de su palabra en ingles done) y
happens (de su palabra en ingles happens) que significan respectivamente
su significado de hecho, y qué es lo que está ocurriendo.
En este modelo no se tiene un operador directo para representar los deseos, éstos
son creados por medio de los operadores de act.itudes, al igual que en el punto 2.3.2
los modelos implementados bajo la arquitectura BDI no muestran claramente una
representación de los deseos, algunos los toman como una meta débil la cual debe
ser coherente y consistente para poder tomarse como meta.
En este trabajo se decide eliminar los deseos y solamente trabajar con creencias,
intenciones y metas bien definidas, que se puedan representar formalmente.
Los deseos son eliminados por que no generar un razonamiento acerca de los
planes para ejecutar acciones. Mientras que una intención se considera como una
meta persistente y consistente, en la que un agente se compromete a hacer un
acción en un estado mental en particular [Cohen 19951.
A continuación se presentan las bases lógicas que sustentan el enfoque que se toma
para crear el modelo de comunicación que se presenta al final del capítulo.
3.5 LÓGICA MODAL
Cuando se pretende desarrollar una arquitectura para un sistema de agentes, surge
el problema de cómo formular un modelo que incluya las actitudes mentales
descritas en párrafos anteriores.
e
Trabajos [Cohen 1990al [Munindar 19911 [Nwana 19961 previos han establecido que
las nociones intencionales son hechas usando una lógica modal o alguna variación
de está.
Tradicionalmente las lógicas han sido clasificadas como inductivas y deductivas. Las
inductivas utilizan métodos de inferencia que pueden quedarse cortos en cuanto al
mantenimiento de la verdad.
,!.
36
Modelación de agentes con lógicas modales
Normalmente se emplean para razonamiento en situaciones en donde existe
información incompleta. Por su parte las lógicas deductivas no necesariamente están
limitadas a los dos valores de verdad clásicos, ejemplos de estás lógicas ,son las'
siguientes: lógicas modal,es (de necesidad y posibilidad), lógicas epistémicas (de
conocimiento y creencia) y las lógicas deónticas (de obligación y compromiso), entre
otras.
4)
Como se describió en párrafos anteriores los sistemas multiagentes presentan una
naturaleza cambiante, estos cambios se ven reflejados en sus propiedades conforme
transcurre el tiempo o suceden eventos que impulsan algún cambio. De lo anterior
surge el interés por encontrar modelos formales que permitan representar cambios
usando un enfoque simbólico.
En demanda de una propuesta formal para representar ese tipo de comportamientos
en los sistemas, surge la lógica modal tradicional originalmente desarrollada por
filósofos que estudian diferentes modos de verdad. Tales modos incluyen además de
necesidad y posibilidad, obligación, conocimiento, creencia y percepción.
Un ejemplo representativo de esta herramienta de formalización es el siguiente, la
aserción P puede ser falsa en el mundo presente, pero existe la posibilidad de que la
aserción P pueda ser verdadera en un mundo alterno, llamado mundo posible.
.Este tipo de herramienta de formalización es Útil para representar creencias, metas, e
intenciones dentro de un sistema computacional, además del manejo de situaciones
diversas las cuales cambian constantemente sin un tiempo definido.
I:
En un artículo clásico de Amir Pnuelli al cual hace referencia Gotzhein [Gotzhein
19921, argumenta que la lógica temporal como una división de la lógica modal, y
puede ser un formalismo útil para especificar y verificar programas computacionales.
Esto es apropiado especialmente en programas concurrentes que utilizan
operaciones continuas en el tiempo, ejemplos de éstos programas concurrentes son
los sistemas operativos y los PrOtOCOlOs de comunicación en redes, que responden a
una petición solicitada dependiendo del estado actual del sistema,
3.5.1 L6GICA TEMPORAL
Como se mencionó en el párrafo anterior la lógica temporal es un tipo especial de
lógica modal, que provee un sistema formal para descripciones cualitativas y
razonaniientos acerca de la variación de los valores de verdad en los mundos
posibles, con una relación de accesibilidad correspondiente a la evolusión de un
sistema concurrente en el tiempo.
I!
La lógica temporal es de vital importancia en programas concurrentes
cornputmionales que se' utilizan actualmente, donde los sistemas deberi ser aptos
para percibir cambios del medio ambiente en el que se ejecuten [Emerson 19901.
37
Modelación de agentes con lógicas modales
En un programa secuencia1 ordinario, creamos precondiciones y postcondiciones
cuya la semántica fundamental puede ser vista como una transformación de un
estado inicial a un estado final. Sin embargo, esto no es funcional para operaciones
continuas dentro de un programa que no es terminal, por lo que será necesario
hacer uso otros de formalismos [Werner 19901.
Los formalismos mencionados en párrafo anterior los proporciona la lógica temporal
además de la lógica de primer orden para representar operaciones continuas en el
tiempo, o que cambian de acuerdo a diversas situaciones que se presentan en el
medio ambiente, tomando en cuenta el estado actual del sistema y las condiciones
en que se presenta algún suceso que active determinada acción. ,.
La lógica temporal utiliza dos operadores de la lógica modal para describir y razonar
acerca de valores de verdad en aserciones variantes con respecto al tiempo. Estos
operadores de necesidad y posibilidad son los siguientes:
O que representa algunas veces y se le llama "operador existencia1 modal",
O que representa siempre y se le llama "operador universal modal".
A continuación se presenta un ejemplo de la forma de aplicación e interpretación de
los operadores modales.
AI representar la siguiente proposición: La Luna está dentro de la órbita de la Tierra,
con Iógica formal solamente se puede representar en el tiempo presente, sin dar
opción a situaciones constantes en el tiempo como se observa gráficamente a
continuación:
La Luna está dentro de la órbita de la Tierra. La fecha representa el tiempo,
y la línea que la cruza representa un acontecimiento dado, que para este
ejemplo quiere decir que la proposición solo se ocurre una vez en el
, .
tiempo.
t-
Como se observa la lógica tradicional no toma en cuenta hechos permanentes en el
tiempo, por lo que hay que considerar que en ciertos programas los procesos no
están definidos en el tiempo, es decir, que algunos hechos o creencias son verdad
por siempre o al menos así parece.
Es aquí donde se hace uso de los operadores modales como sigue:
O(La Luna está dentro de la órbita de la Tierra). AI anteponer el operador
modal en la proposición indicamos que la proposición se mantiene
constante en el tiempo subrayando el tiempo como se ve en el dibujo.
t36
A
Modelación de agentes con lógicas modales
Estos operadores también ayudan a representar acciones futuras, como la siguiente
proposición: El cometa Halley está en un punto cercano al Sol, lo anterior tal vez en
este momento no sea válido pero tal vez en.un futuro lo será o tal vez alguna vez 101
'
fue:
O(€/ cometa Halley está en un punto cercano al Sol) la modificación que
representa anteponer el operador a la oración, es que en algún punto en el
tiempo va ocurrir que el cometa este en un punto cercano ai sol, sin especificar
un tiempo, solo el hecho de que este evento va ocurrir.
ii
.t
I
Usando los dos operadores también podemos hacer combinaciones, teniendo
cuidado en el orden que aparecen, ya que dependiendo de su orden es su
significado.
AI poner 00 se lee siempre eventualmente o muchas veces infinitamente, ya que e'l
tiempo es infinito, que significa que la proposición siempre eventualmente sera válida
y variante en el tiempo. Por ejemplo:
OO(Es luna llena) no siempre ocurre que la luna este llena, pero se sabe que
ocasionalmente sucede este hecho en forma constante en el tiempo y que no
va a cambiar.
1
1
1
1
1
.+t
.I!
AI invertir los operadores"O0 se lee casi siempre o casi en todas partes, significa que
en a partir de algún punto en el tiempo, la proposición sucederá y permanecerá
invariable en el tiempo. Por ejemplo:
II
\
'11
03(El Sol no emitirá luz) es posible que el Sol deje de emitir luz y cua,ndo esto
suceda se mantendrá de esta forma por un lapso grande en el tiempo o por
siempre, con los operadores modales se puede observar gráficamente de la
siguiente forma:
-.
n
.t
..
3.5.2 EASES AXIOMATICAS DE L ~ G I C ATEMPORAL
9
'!
!i
El método de diagramas semánticos es un procedimiento de decisiones por
procediinientos para lógica temporal tradicional, que puede ser implantada en
computadoras con operaciones continuas utilizando las definiciones de Gotzhein
[Gotzhein 19921, donde la lógica temporal tradicional se basa en la lógica
propositional. A continuación se presentan los principios en que se bass el modelo
de comiinicación que se propone.
39
Modelación de agentes con lógicas modales
AI utilizar los operadores de la lógica proposicional como son: bicondicionai ++,
implicación +, conjunción A , disyunción v, y negación 7 , se puede obtener una
lógica temporal proposicional.
Con un conjunto de reglas de formación que definen la construcción de fórmulas
sintácticamente correctas que pueden definirse de la siguiente manera:
Se comienza estableciendo que todas las reglas para las fórmulas bien formadas
(fbf) de la lógica proposicional clásica, son reglas de formación en la lógica
proposicional modal. Sí A es una fórmula bien'formada, entonces O A y O A son
fórmulas bien formadas.
DEFINICI~NI
Sea 4 un conjunto de proposiciones atómicas. Entonces las siguientes sentencias
son fórmulas de lógica temporal tradicional [Gotzhein 19921:
(1) Para todo p E 4 : p es una fórmula atómica.
(2) Sea I$ una fórmula, entonces
es una fórmula.
(3) Sea 41,4z fórmulas entonces (41 A 44, (41 v 421,
también son fórmulas.
(4) Sea 4 una fórmula, entonces U+, 04 son fórmulas.
+I
(41 3 4zh (41=
,
.
$2)
Mediante la aplicación repetitiva de estas reglas se pueden obtener fórmulas
correctas sintácticamente. La aplicación de estas fórmulas no nos dice lo que
estás fórmulas significan.
El significado dedichas fórmulas puede ser llevado a cabo mediante un modelo,
es decir, se debe proveer una interpretación no' solamente para las letras
proposicionales, sino también para la representación fundamental del tiempo.
DEFINICI~N2
Un modelo es una secuencia de estados o = <So,&, ...,S, ...> (posiblemente infinito),
donde cada estado está definido por un conjunto de proposiciones atómicas y que
contienen una interpretación completa de las letras proposicionales que aparecen en
la fórmula [Werner 19901.
Ejemplo. Sea 4 = {x>O, x = l , x=2} y o = ({x>O, x=1}, {x>O}, {x>O, x=2}, {}, . . . )
En este modelo O , las proposiciones atómicas "x>O y "x=l" están completas en el
estado So, "x>O es verdad en SI,en SJ ninguna de las proposiciones atómicas es
verdadera. Cada elemento de una proposición atómica puede ser verdadero o falso
en cada estado del modelo.
40
"
Modelación de agentes con lógicas modales
I
Con esto se puede dar un significado a las fórmulas de la lógica temporal mediante
un termino con relación al modelo, uno de sus estados y una fórmula que se
mantendrá si y sólo si la fórmula es verdad esta situación.
DEFINICI~N3
Sea o = <SO.Si ,..., S, ,...> un modelo, y +o,$i,$2 fórmulas arbitrarias p E 4. La relación
de satisfacción está definida por el ii-ésimo estado de o como sigue:
o,n\p
101..
SipESn
Si no o.n 1I$
o, n k14
o,n ~ I $ I A ~ z Sio,n.\I$iyo,n 1 6 2
Si o,m \ 4 para toda m 2 n
o, n 1 4
Si o,m \ $ para algún m 2 n
o , n \O$
s*
Basados en la verdad de! las fórmulas podemos determinar definiciones previas,
obteniendo varias nociones interesantes [Gotzhein 19921. Tales como:
Se dice que una fórmula 4 es satisfecha en un modelo o escrito o
si $ es verdad para algún estado de o.
~
II
1 4, si y sólo
Se dice que $ es válida (14) si y sólo si 6 es verdad para todos los estados del
modelo o.
DEFINICI~N4
. .
'1
El problema de encontrar un método efectivo para decidir sobre algún objeto
arbitrario pertenece o no,,a los miembros de cierta clase de objetos, es llamado
problema de decisión basado en el Teorema de Godel. Si este método existe
entonces el problema es llamado decidible. de otra forma es llamado indecidible
[Gotzhein 19921.
!I
1
Con está definición se puede enumerar todos los estados del modelo, y computar el
valor de verdad de 4 en cada estado. A primera vista se puede ver que no efectivo
porque un modelo puede"ser infinito. Pero existen métodos lógicos para probar lo
anterior con una serie de pasos establecidos.
1
c,l.
!
!,
Otra ventaja de esté método de diagramas semántico, es que una formula 4 es
válida, si y solo si es verdad para todos los estados S,, en CT. Para mostrar que 4 no
es válida, es suficiente encontrar un estado Sn en el niodelo o en el que 4 no sea .
II
válida. Si esto es imposible entonces I$ debe ser válida para el modelo.
DEFINICI~N5
,/I
Una fórmula 4 temporal puede ser derivada por aplicación de axiomas y reglas de
transformación llamadas teoremas, se escribe como t 4.
41
li
Modelación de agentes con Iógicas modales
DEFINICIÓN 6
I
Las bases axiomáticas para los sistemas de lógica consisten de un conjunto de
axiomas y un conjunto de reglas de transformación [Gotzhein 19921.
reflexiva
reflexiva
consecuente cerrado
transitividad
linearidad
discretes
regla de modus ponens
regla de generalización
DEFINICI~N7
Una fórmula temporal 4 es válida para el modelo O , si 6 es verdad en todos los
estados O E S,; 4 es inicialmente válida (representado en la fórmula con un subíndice
i en el símbolo de satisfacción 1, como h ) para el modelo O si cada estado IJ E S,
satisface inicialmente a 4.
S"
b6
Si cr.n 16 para todo Q
E
S,, y toda n 2 O
Si O h 41 para todo O E S,
S, h I$
Si 4 es válida para el modelo O entonces el programa se dice un programa P creado
bajo esté modelo O tiene la propiedad 4.
Un teorema importante dentro de la lógica temporal. se demuestra haciendo uso de
las teorias vistas antes, mostramos la siguiente comprobación [Emerson 19901.
Es válida de acuerdo con las siguientes bases asumiendo que s
de un modelo O,
E
S, es un estado
P
y suponiendo que
sb o-P
entonces debe existir un estado s'
E
S, en el que
42
.
Modelación de agentes con lógicas modales
Desde que
para s'.
SIp, para todos
SI
1
los estados accesibles desde s por p, en particular
P
De lo anterior suponemos que la siguiente proposición debe ser falsa:
I
Esto es decir:
SI 1 0 1 p
Puesto que O y s son arbitrarias se prueba que:
!/I
pa70,p
Es una fórmula válida en Iógica femporal proposicional.
I1
3.5.3 SEMANTICA DE MUNDOS POSIBLES
Para aplicar las reglas axiomáticas de los puntos anteriores es necesario tener una
estructura básica de representación. Una de ellas es la semántica de mundos
posibles introducida por Kripke, este concepto tiene la idea básica de evaluar una
fórmula modal dentro de un'conjunto de mundos posibles, el cual es provisto con una
cierta relación de accesibilidad.
,
"
Para construir el modelo semántico de las nociones intencionales es necesario
conocer la semántica de los mundos posibles utilizando una estructura de Kripke
[Hintikka 19721, que consiste de una tripleta cW, R. V> donde W es un conjunto de
mundos posibles o estados del sistema, como se usó en las definiciones anteriores
en este trabajo.
',
Donde R c W x W es una relación vista en este conjunto de mundos posibles, y V: 4
x W + {O,l) es un valor de asignación el cual determina el valor de verdad de cada
formula dentro del conjunto de mundos posibles.
J
Las estructuras Kripke se utilizan para representar propiedades satisfechas en algún ,,
mundo en particular, las h a l e s no logran mantenerse en el desempeiio de un ',
sistema, se introduce la notación estado inicial representado por o
4, la cual '
significa que la fórmula 4, es inicialmente satisfecha en el modelo o.
,I
El valor de verdad de una fórmula modal dependerá del mundo posible bajo
consideración. En otros términos, p es verdad en un mundo dado si y sólo si p es
verdad en al menos un muhdo posible accesible desde ese mundo.
43
"
Modelación de agentes con iógicas modales
Un mundo posible es una asignación de verdad o falsedad a cada fórmula bien
formada, como una interpretación en el mundo clásico. Un mundo posible (estado),w
es accesible desde otro mundo w’si todo lo que conoce en w es conocido en w’. Una
relación de accesibilidad determina si un mundo w;es accesible desde cualquier otro
w,, en el universo del discurso.
La relación de accesibilidad es la que permite conectar dos mundos posibles. Y
dependiendo del tipo de relación accesibilidad (transitiva. simétrica o reflexiva), se
obtienen diferentes teorías dando origen al sistema axiomático visto anteriormente.
3.5.4 TIEMPOS RAMIFICADOS EN LOGICAS TEMPORALES
La lógica teniporalse refiere a una colección de tiempos lineales, por otro lado existe
un enfoque diferente dentro de la iógica temporal con respecto al tiempo. En este
enfoque se reemplaza la secuencia lineal de estados por un árbol de estados
[Emerson 19901.
Originando la lógica tenipora/ de tiempos 1-arnificados, con este enfoque se puede
crear una serie de caminos alternos para la solución de un problema dado. La
principal ventaja es que el árbol mantiene información de los estados, que llevaron a
cabo decisiones no deterministas y divididas.
Suponiendo que un agente se encuentra en un estado SOen un tiempo to en el cual se
satisface p, tiene dos mundos posibles b l y b2. Su representación es por medio de
árboles lógicos CTL (Computational Tree Logic) [.Emerson 19901 se muestran en la
figura 3.1.
(bi, ti, p?)
(bzi 12. P)
Figura 3.1 Árbol Iogico de creencias
Las ramas representan opciones disponibles para el agente al momento de
seleccionar las acciones a realizar, en la figura 3.1 las ramas b, y b2 son dependientes
del tiempo reportado.
La ventaja de tener múltiples mundos accesibles (creencias), es permitir que
diferentes posibilidades sean modeladas, incluyendo varios casos en donde falte
’información o se tenga incertidumbre acerca de algún estado posible, como en la
figura 3.1 la rama b2 solamente sucederá si se mantiene la formula p.
44
.
Modelación de agentes con lógicas modales '
Cada una de las ramas mostradas en la figura 3.1, a SU Vez es también un árbol CTL
de tiempo, de esta forma el agente en Cualquier mOment0 puede cambiar sus
creencias acerca de las opciones disponibles dependiendo de las condiciones que S e
I
le presenten.
,
I/
Otra de las aplicacione6 de la lógica temporal es en la especificación de
requerimientos propiamente. Esto significa que los requerimientos comienzan como,
un conjunto de propiedades que caracterizan el entorno problema. Las propiedades
pueden ser consideradas y especificadas una para cada tiempo, tomándolas de la
especificación completa.
Cuando se modela el comportamiento de un agente con lógica temporal se puede
hacer distinción inusual, clasificando las propiedades temporales dentro dos que Son;
seguras y vivas (entiéndase por propiedades vivas acciones que se están ejecutando
actualmente, y acciones'lkeguras que se presentarán en un tiempo cercano), en
donde aplicamos los operadores modales ya vistos más sentencias propias para
cada problema. Ambas propiedades seguras y vivas pueden ser invariables en el
tiempo.
.I
Antes de concluir con este punto se muestra un ejemplo sobre las propiedades de las
lógicas mencionadas, y el uso de los operadores modales.
Primero se introduce un operador modal del pasado ( + ) el cual se aplica al ejemplo,
el significado del operador se describe a continuación [Gotzhein 19921.
+ p significa que p'es verdad ahora o fue verdad alguna vez en el pasado
o,n =
+ p: Si o,m O
p para todo Os m 5 n
'
'I
Con el ejemplo se presenta una visión de la forma de aplicación de algcinos de los
conceptos vistos, por medio instrucciones que son entendidas como expresiones
generauas por un sistema, que para este caso sería un sistema de comunicación
entre computadoras:
(,
. o ( send ( m ) 3 state
= connected )
Expresa que un mensaje puede
enviarse sólo si existe conexión.
o ( send-ack ( m )3+
receibe ( m ))
Para llegar al estado de acuse de
recibido de un mensaje, este',mensaje
debió de ser recibido previamente.
o ( B 'receive ( m )
a +A send ( m ) )
!I
I,'
lil
Exige que si B recibió un mc?nsaje éste
debió de ser enviado por A.
Modelación de agentes con lógicas modales
s
3.6 FORMALIZACIONES BÁSICAS PARA MODELOS DE
COMUNICACI~N
El formalismo de lógica temporal puede ser aplicado para crear modelos
principalmente de comunicación, ayudando a establecer formalismos dentro de un
marco común en comunicación Como ejemplo se muestran dos entidades que
interactuán en la figura 3 2
I
entidad A
I
entidad 6
Figura 3.2 Modelo básico de comunicación
I
Obteniendo las siguientes propiedades utilizando formalizaciones de la lógica
temporal con operadores de la lógica de primer orden (Y universal, 3 existencial),
creando la lógica temporal de primer orden con operadores de eventos de ocurrencia
[Gotzhein 19921:
OVx ( # [ ofrece ( x ) ] > # [ acepta ( x ) ] )
( # [ ofrece ] = # [ acepta ] )
O( [ ofrece ]
[ acepta ] )
-
Una propiedad es llamada consfructiva si la descripción para ese formalismo puede
ser ejecutable (como los formalismos de la lógica temporal), una ventaja es que las
especificaciones se pueden utilizar en prototipos rápidos o para la derivación de
implantaciones de referencias las cuales pueden ser usadas para propósitos de
prueba.
La desventaja es que las propiedades del sistema generalmente no son expresadas
con técnicas constructivas, por consecuencia éstas deben ser verificadas como
propiedades mediante descripciones implícitas. Sin embargo, pueden ser dificiles de
incorporar y solamente las propiedades esenciales, las cuales resultan de
especificaciones menos abstractas reducen las múltiples soluciones correctas, y
descubren propiedades esenciales cuando se leen como especificaciones.
Dentro de la lógica temporal las propiedades del sistema se expresan directamente.
Esto tiene la ventaja de que cada propiedad se considere por separado haciendo
fácil decidir si es esencial o no.
AI establecer los formalismos que tendrá algún sistema, se comienza a crear
establecer un modelo de comunicación, el cual necesitará de un protocolo que
delimite el marco de referencia para el intercambio de información del sistema, que
se muestra a continuación.
46
Modelación de agentes con lógicas modales
3.6.1 PROTOCOLO ABIERTO EN UN SISTEMA MULTIAGENTE
4
En un entorno de agentes que se comunican es importante definir las actividadesl
conforme a los estados mentales en que se encuentre el agente, por 10 "que Un
protocolo óptimo depende de las situaciones actuales de los agentes y puede ser
determinado solamente durante la ejecución [Werner 19901.
II
Algunas otras definiciones establecen a un protocolo como una colección de reglas
para intercambio de resultados, las cuales inicialmente no intercambian su
información abiertamente.ipero más adelante se ajustan alternativamente, Vreeswijk
de acuerdo con Ama1 [El-Fallah 19991.
Cuando se presenta una alteración de acciones por conflicto dentro del sistema,
significa cambios en las creencias de un agente, cuando esto sucede el protocolo es
quien confronta las nuevas creencias, para .aceptarlas o rechazarlas.
Cada de tipo de sistema multiagente tiene una actividad regulada por sus creencias,
un protocolo abierto cambiante de acuerdo a las actividades que demande el
sistema. Es el protocolo quién gobierna la disputa entre una cantidad de agentes, por
lo que regula también.la producción de nuevas creencias como se observa en la
siguiente figura 3.3:
14
I
n
1
I
I
I
.I'
Figura 3.3 Representación del funcionamiento de un protocolo.
Y¡.
i.
3.6.2 FROBLEMAS RELACIONADOS CON LOS MODELOS DE COMUNICACI6N
It
II
Existen varios problemas relacionados con el establecimiento de un modelo de
comunicación, uno de ellos es que debe tomar en cuenta las bases filosóficas que
sigue el paradigma orientado a agentes, como son las intenciones al emitir un
mensaje, los cambios de estado que debe generar en el agente al que se envía el
mensajf! así como del que envió dicho mensaje, y la forma en que se manejará el
paso de mensajes[Nwana 19991 [Keith 19981.
Otro problema importante que se debe tener en cuenta es que no existen estándares
para los modelos de com:unicaciÓn [Lander 19971, a los cuales se debe seguir para el
establecimiento de un modelo, lo único que se debe tener en cuenta es contar con
una forrnalización matemática que justifique el modelo a proponer como se mostró
antes, en este trabajo de tesis fueron las lógicas temporales, modales Jf de primer
orden.
'!
47
Modelación de agentes con Iógicas modales
Para los sistemas que utilizan intercambio de información con la técnica de alto nivel,
los agentes deben proveer simultáneamente la planeación y ejecución de reacciones
ante fallas de planes o acciones, además de un soporte dinámico con respecto a los
cambios del mundo. Y un protocolo de comunicación adecuado que delimite el marco
en que se presentará el problema a resolver.
3.7 MODELO DE COMUNICACIÓN PROPUESTO
Los agentes necesitan coordinarse y cooperar para la solución de un problema, para
llevar esto a cabo es necesaria una comunicación efectiva, que garantice la
ejecución de acciones de otros agentes en busca de la solución al problema [Werner
19901, por medio de un conjunto estándar de actos del habla el cual define las
acciones comunicativas para el universo del agente.
'I
Por lo que surge una idea principal de crear un modelo de comunicación que
contengan las ideas filosóficas de la comunicación propuestas por Bratman [Bratman
19871 acerca de los estados mentales e intenciones de comunicación, los cuales
surgen durante el proceso de razonamiento que realiza un agente para alcanzar
ciertos objetivos y resolver los problemas que se le plantean.
3.7.1 DE ESTADOS MENTALES A LOS ACTOS DE COMUNICACION
En está sección se expone el proceso de razonamiento que realiza un agente en un
sistema mulfiagenfe, dicho proceso se concentra en el razonamiento que realiza un
agente al elegir el método que utilizará para alcanzar cierto estado, o para lograr
alcanzar subobjetivos que le permitirán alcanzar el objetivo general [Werner 19901.
Ejemplos de tales subobjetivos son los actos de comunicación donde un agente
decide las acciones parciales a realizar para lograr objetivos de más alto nivel.
Recordando que un agente va formando una intención de actuar, sobre sus objetivos
propios o sobre un objetivo compartido, Por lo que se requiere especificar en que
condiciones aparece la necesidad de cooperar, es decir, en que momento del
proceso de razonamiento aparece la comunicación. Alguna de está condiciones se
exponen a continuación:
1. Cuando un agente detecta que no posee suficiente información y requiere
actualizarse con las creencias de otro agente (Preguntar).
2. AI solicitar la cooperación de un agente para alcanzar un objetivo (Solicitar)
este debe informar a otro agente de su estado, entonces él decide ejecutar
un subobjetivo de comunicar sus actitudes mentales (Informar).
46
'
Modelación de agentes con lógicas modales
'
3, Otra situación aparece cuando un agente tiene Una intención de actuar
sobre un objetivo adoptado y cree que e\ otro agente no está enterado de
su compromiso, así ei agente se formará el subobjetivo de informar su
intención (Informar).
I
4. También se presenta la necesidad de comunicar cuando a un agente Se le
solicita cooperar con respecto a un objetivo, y desea informar al otro
agente la acción o acciones que ejecutó para el logro de SU objetivo
(Ofrecer, Proponer).
.
Para llevar a cabo las diferentes acciones de comunicación, el'modelo debe
contemplar un conjunto mínimo de acciones que permitan al agente realizar los
subobjetivos de comunicación. Así surge la necesidad de definir primitivas de
comunicación (formando un protocolo de comunicación) que forman parte de las
interacciones más complejas entre agentes es decir, los modelos de comunicación.
Como fue presentado en secciones anteriores, para crear un modelo de
comunicación es necesario,conocer la filosofía bajo la que se rige y los formalismos
que lo sustentan en este trabajo la filosofía son las características que poseen los
agentes vistas como creencias, intenciones y metas. Y los formalismos como las
lógicas modales y temporales, continuamos estableciendo los componentes que
requiere un sistema formal [O'Hare 19961:
'/I
J
J
J
Una sintaxis, que indique la forma correcta de escribir las sentencias en un
sistema dado.
Un sistema axiomático que incluye un conjunto de fórmuias bien formadas,
con base en las definiciones vistas antes dentro de este capítulo, dichas
formulas deben respetar el conocimiento del universo del problema.
Una semántica ad,ecuada que se encarga de especificar lo que significan
iíis sentencias en un sistema dado.
',
3.7.2 SINTAXIS
!
.I
Para el modelo se utilizan los formalismos de la lógica modal, para representar
nociones 'intencionales. 'La sintaxis del modelo se obtiene con operadores de la
lógica modal más operadores de la lógica clásica, como se muestra a continuación:
Los operadores de la lógica de primer orden:
3 implicación,
A conjunción,
negación,
= igual,
3 cuantificador existencial.
I
v exclusión,
V cuantificador univer,sal,
!I
Los operadores modalesm(sección 3.5):
O de necesidad,
O de posibilidad
O satisfacción,
49
Modelación de agentes con lógicas modales
Los operadores temporales, representan el estado del sistema
Variables:
Predicados:
BEL
INT
GOAL
Creeencias
Intenciones
Metas
Para representar agentes:
Para representar acción:
x, Y> 2.
P, 4, a,P.
Para representar proposición: p, 4, a,p.
3.7.3 SISTEMA AXIOMÁTICO
La semántica de las fórmulas estará definida en términos de la estructura de Kripke
del modelo definido en la sección 3.5.3:
M = ( W, R, V )
Se agregan algunos operadores para representar los mundos posibles del sistema
como: el operador BEL para representar el conocimiento, así como el operador
GOAL para representar las metas de un agente, y el operador INT que representa las
intenciones de un agente. Los operadores anteriores conforman la arquitectura en
que se basa el modelo BIG (Belief, Intention, Goal), que significa creencias,
intenciones y metas.
Los operadores anteriores tienden a ser más expresivos que de acuerdo con las
teorías de Bratman [Bratman 19871. se puede modelar intenciones.Gon una medida
de compromiso que regulará la conducta del agente y forzará su coordinación interna
para el logro de sus objetivos en una sociedad de agentes.
La semántica de las creencias, intenciones y metas de un agente en término de los
posibles mundos se representa uniendo las estructuras de Kripke, y los operadores
de la sintaxis establecida como:
M=(W,R,V)
donde:
W ={BEL,INTE,GOAL}
R=Ix, Y, z)
V = b , h a>Dl
Las propiedades que se aplican a las fórmulas que se obtengan de la estructura
presentada, son las vistas en la sección 3.5.2. Tomando como fórmulas de las
proposiciones del conjunto V, que son vistas como acciones a efectuar en un
futuro para un agente determinado por R, en un mundo W.
50
Modelaciofi
de agefifescon Iógicas modales
En la seccione 3.5 se mostró el sistema axiomático para, escribir correctamente
las fórmulas con lógicas modales y teiiipoi-ales. Alioia iiiodelaiiios las creencias
[Cohen 19901 asociadas a un conjunto de estados accesibles de creencias para
cada situación. De manera similar las intenciones y los objetivos, se modelan
utilizando una relación de accesibilidad adecuada a cada estado mental.
Sea B un conjunto de posibles creencias accesibles de un agente x, desde un
estado s e n el tiempo t se denota por:
I1
BS,
I
(4
Bs.1 (x) = IS' I B(x, S , t,
donde
S')}
Similarmente se usa Is,, (xj y G,,, (x), para denotar el conjunto de los mundos
accesibles de intenciones y metas del agente x en el estado s en un tiempo f
respectivamente.
3.7.4 SEMÁNTICA
De acuerdo a los estados me,ntales de un agente, la semántica asociada a un modelo
M con respecto a una variable de asignación V y un mundo S en el tiempo f. está
dada como:
(M, V, St)
(M, V. SI)
b
(BEL x P)
Si
VS'E Bs, I (Xj, (M,V, SI)
(INT x p) si VS'E
&,I
(M,V, SI) 1 (GOAL x pj.si b's'c
(x), (M, V, SI)
1p
'
i
( 1)
1p
Gs,t (x), (M,V, SI) 1 p
(2)
(3)
La interpretación de la expresión 1 es comprobar la creencia que representa la
formula p para el agente x, es válida si para todo estado s que pertenezca a la base
de datos se satisface p, dentlo del conjunto B definido.
La expresión 2 indica que la intención (1 en el agente x se satisface si para todo
estado s dentro del conjunto de intenciones que tiene un conjunto I definido se
satisface. De igual forma la fórmula 3 representa una meta 13 para el agente x, y se
considera si es válida para todos los estados dentro del conjunto G definido.
Ahora se examinará el significado de los posibles mundos mediante un ejemplo
gráfico del uso de lógicas temporales ratnificadas, donde se crea un árbol con el
conjunto de creencias que el agente cree que son posibles.
Suponiendo que un agente estando en un estado SO en el tiempo to, en el cual se
satisface p, tiene dos posibles opciones b l y b2. Figura 3.4.
t
Modelación de agenfes con lógicas modales
Figura 3.4 Un árbol de aplicación para las posibles opciones de un agente.
Como la relación de creencias es independiente del tiempo, el mapeo de B,,,(x) en
algún tiempo t l es diferente en t2. De esta forma el agente puede cambiar sus
creencias (p?) acerca de las opciones disponibles como se ve en la figura 3.4.
Donde se observa que
BEL x p ) se cumple en b, y ( BEL x p )se cumple en b2, de
manera similar se representaron las posibles opciones para las intenciones y metas
de un agente.
Ahora definimos una intención a de un agente x como: (INT x, a ) ,un objetivo a de un
agente x como (GOAL x. a ) y finalmente una creencia a de un agente x como (BEL
x, a).
Y establecemos una relación de consistencia entre las intenciones y las metas con
su significado, es decir, un agente debe creer que sus intenciones planeadas sean
posibles o alcanzables en un futuro lo cual es representado por
(INT x, a ) 3 (GOAL x, u)
(4)
La condición de consistencia entre las creencias y objetivos establece que si un
agente adopta un objetivo, entonces debe creer que es posible dicho objetivo y se
presenta como:
(GOAL x, u) 3 (BEL x, u )
(5)
##.
Las creencias acerca de los objetivos, que se interpretan como si un agente tiene un
objetivo a alcanzar, éste debe creer en dicho objetivo:
(GOAL x. a ) = (BEL x. (GOAL x, a ) )
(6)
De creencias acerca de intenciones:
(INT x, u.)
(BEL x (INT x. v.))
(7)
Y así sucesivamente, cuidando que las intenciones no persistan por siempre. A
continuación se muestra el sistema axiomático que toma el modelo de
comunicación que se propone en este trabajo.
52
Modelación de agentes con lógicas modales
3.7.5
ARQUITECTURA PARA UN AGENTE BAJO EL MODELO DE
COMUNICACIÓN CON LA ARQUITECTURA BGI
I/(.
I:
.I!I
Presentado el modelo de comunicación con su forrnalización matemática,
pasamos a presentar la estructura gráfica en que se vería. un agente modelado
bajo está arquitectura BGI (creencias, intenciones, metas). Está estructura nos '
muestra la forma en se debe modelar un agente para el sistema multiagente que
se desea diseñar, con una serie de módulos que representan las características
de los agentes y la filosotía con la que se trabajo a lo largo del presente trabajo de .!
tesis, que es tratar a los $gentes como sistemas intencionales, y como entidades
autónomas. La arquitectura adoptada ya con el modelo de comunicación se
muestra en la figura 3.5.
~
Para esta arquitectura se conformara de por un monitor, que es un módulo que
está pendiente de los cambios que ocurren en el medio ambiente, es el proceso
de recepción de informahión inicialmente. Este pasa la información pertinente al
agente .hacia el filtro de información.
El filtro de información como su nombre lo indica hace una selección de la
información recolectada por el monitor, y sólo pasa la que este dentro del
protocolo valido para el sistema multiagente, y que el agente tiene activado.
El filtro de información a" su vez. reparte la información pertinente a la base de
datos o a la generación d e planes propiamente, de acuerdo a como corresponda.
La base de datos (creencias), es un proceso que se puede ver como una base de
datos, contendrá funciones internas para verificar la consistencia de la
información nueva con la existente, y funciones de búsqueda de información
conforme lo requiera el sistema a modelar. Es una parte fundamental en el
sistema ya que de acuerdo a la información que aquí se tenga, serán las
decisiories que tome el sistema ante una situación que se le presente.
Por otro lado esta la generación de planes, representa los procesos que tsndká un
agente para crear proyectos sobre la ejecución de una acción a ejecutar, es decir,
este proceso se encarga de verificar que una acción solicitada al agente sea
congrumte con las creencias, y basándose en ello poder crear un camino para
llegar a ejecutar dicha acción, con una estructura previamente establecida al
momenio de diseñar el programa, y un poco dinámica ya que depende de los
datos actuales el rumbo que tomará alguna acción solicitada.
El generador de planes, esta en constante intercambio con el verificador de
consistencias, encargado,,de verificar que los planes que se propongan estén
actuales con la información que se tiene propiamente, y también se encarga de
verificar cuales planes sd ejecutan en un momento dado, y cuales esperan un
poco ardes de ser ejecutados de acuerdo al estado del sistema en general.
~
I
'
~
'
53
Modelación de agentes con lógicas modales
Para que un plan se convierta en meta o acción a realizar debe pasar por el
generador de planes, después por el verificador de consistencias, y finalmente
pasar el módulo de nombrado, acciones a realizar. En este módulo se trata la
estructura de plan como acción, y comienzan a funcionar los procesos
correspondientes para realizar la acción establecida, y los resultados son pasados
al actuador.
El actuador, es el proceso del agente que deja los resultados de una acción
solicitada al sistema multiagente.
I
I
A Monitor I
U
Filtro de
I,
Actuador
t
Base de
datos
(Creencias)
Generación de
planes o acciones
(Intenciones)
t
IAccionesa
realizar
(Metas)
I
Figura 3.5 Representación del funcionamiento interno del protocolo de comunicación
propuesto.
En la figura 3.5 se muestran las características que debe tener cada agente del
sistema que se desee crear, se debe establecer un protocolo de comunicación que
está más ligado con el contexto del problema que se desea resolver, y de acuerdo al
problema se establecen una serie de reglas para su creación y manejo.
En el siguiente capítulo se muestra una aplicación del modelo a un problema de
redes de computadoras, donde se delimita el contexto en que se aplicaran los
agentes, mostrando de está manera un protocolo de comunicación y el modelo
presentado.
.
54
Simulación con agentes mfencionales pata equilibmr el tráfico en una red de área local
CAPITULO 4
SIMULACIÓN CON AGENTES
Y'
INTENCIONALES PARA EQQILIBRAR
EL TRÁFICO EN UNA RED DE ÁREA
LOCAL
II
4.1
INTRODUCCION
@
4 2 PROBLEMA DE TRÁFICO EN REDES DE ÁREA LOCAL
4 3 ELECCIÓN DEL ALGORITMO PARA EQUILIBRAR EL TRÁFICO EN UNA
RED DE Á REA LOCAL
4 4 JUSTIFICACION DEL USO DE AGENTES INTENCIONALES
I
4.5.1 Algoritmo de enrutamiento por estado
de enlace.
~
4.5.2
YI
4.5.3 Implantación del algoritmo con agentes
intencionales.
/.
SIMULACI~N
4.5 ETAP
Diseño del algoritmo con agentes
intencionales.
DE LA SOLU
ÓN
II
4.5.4
Descubrir a sus nodos vecinos.
4.5.5
.Medir el retardo para cada uno de
sus nodos vecinos.
4.5.6
Construir un paquete de estado.
4.5.7
Enviar este paquete por la red.
4.5.8
Calcular la trayectoria mús corta
4.5.9
Descripción de la interfaz gráfica del
simulador.
4.5.10 Resultados obtenidos eri las corridas
de prueba.
55;
Simulación con agentes intencionales para equilibrar el fráficoen una red de área local
4.1 INTRODUCCI~N
Tomando en cuenta que el uso de las redes se ha incrementado por los beneficios
que ofrecen de compartir información y recursos en sistemas computacionales.
Resulta esencial un buen desempeño de las redes, buena parte de dicho desempeño
recae en los algoritmos que utilicen para su funcionamiento, por esto resulta
interesante aportar nuevos métodos para un mayor aprovechamiento de los
algoritmos y mejoren el desempeño de las redes.
Un problema que se ha detectado en estudios sobre el desempeño de las redes, se
encuentra en el paso de información entre las computadoras que forman la red,
llamado tráfico en redes [Tanenbaum 19971.
Existe un modelo de referencia para construir arquitecturas de redes (contienen los
algoritmos para mejorar el desempeño de las redes), una arquitectura común es
presentada por OS1 (Open System Interconnection, interconexión de sistemas
abiertos), esta arquitectura esta divida en varias en capas encargadas de problemas
específicos en el funcionamiento de las redes.
Dentro la arquitectura OS1 existe la capa ,de red, encargada de asegurarse que se
lleve a cabo el intercambio de información de una máquina origen a la máquina
destino, por medio de la creación de rutas por donde circulara la información para
llegar a su destino, evitando la saturación de un canal en especifico en la red. Este
tema es de interés para resolver el problema de tráfico en redes.
La capa de red cuenta con diversos algoritmos encargados de establecer el envío de
mensajes, seleccionar rutas de envío y las estructuras de datos que contendrán los
mensajes que posteriormente usarán los nodos para el intercambio de información,
es esta parte la que debemos diseñar para balancear el intercambio de mensajes
entre computadoras y evitar largos tiempos de atrasos en la información o saturación
de un canal en especifico.
En la aplicación que se describe a lo largo de este capítulo, se hace énfasis sobre la
forma en que se diseñó el algoritmo bajo el paradigma orientado a agentes, y lo
importante sobre la aplicación de agentes en este problema.
4.2 PROBLEMA DE TRÁFICO EN REDES DE ÁREA LOCAL
Como se mencionó antes el problema con el que se prueba el modelo de
comunicación presentado en la sección 3.7, será el balancear el tráfico en una red de
área local.
El problema es que teniendo una serie de computadoras conectadas simulando una
red de área local, se comiencen a intercambiar información por una misma ruta hasta
saturar ciertos nodos que forman la red.
56
Simulación con aaenfes infencionales oara eauilibrar el frifico en una red de área local
Aminorando el desempeño de la red por aumento de tiempo en la recepción' de
información, por lo que es bueno tomar caminos alternos para evitar retrasos en el
!;
envío de información.
Para la creación de estos caminos alternos se debe tomar en consideración el estado
actual de la red, considetando los nodos.que se encuentran activos y hacer cálculos
sobre los tiempos actuales en el intercambio de información entre los nodos de la
red. Esto requiere de un programa con un algoritmo adecuado que de forma
automática tome decisiones para crear las rutas, y genere acciones a tomar de
acuerdo al estado de la red, para el envio de información.
4.3 ELECCIÓN DE ALGORITMO PARA EQUILIBRAR EL TRÁFICO EN
UNA RED DE ÁR'EA LOCAL
Para dar una solución a este problema se eligió un algoritmo adecuado, y 'después
se justifica la aplicación dB un sistema multiagente.
I¡
La estabilidad del tráfico 'tlentro de una red es una meta importante para la capa de
red, por lo que cuenta c08 algoritmos de enrutamiento encargados de elegir las .rutas
que recorrerá un mensaje para llegar a su destino por la ruta más corta y segura.
También se debe considerar la rápida adaptación a los diferentes cambios de
topología en la red, un buen algoritmo de enrutamiento debe seguir funcionando aún
cuando exista la caída de!talgunode los nodos de la red.
Analizando los diferentes algoritmos de enrutamiento se encontró que uno de los
algoritmos que contempla la mayoría de los problemas existentes en las redes, es el
algoritmo de enrutamiento por estado de enlace, y. se eligió por las siguientes
características [Tanenbau'm 19971:
A.naliza el estado de la red en forma constante, por medio de unas tablas
de estado con infoTmación de los nodos de la red, formando una base de
datos con informac"ión del estado actual de la red.
+Calcula las rutas para los paquetes en forma dinámica, esto lo hace con
base en las tablas' de estado las cuales contienen información sobre' los
nodos existentes eh la red así como un costo asociado a cada camino.
I1
+Mide el tiempo de1,retraso entre nodos, por medio de un mensaje de
prueba que envía a sus vecinos cada determinado tiempo. Este mensaje
tiene dos objetivos"uno es asegurar 'que todos los nodos estén activos y
otro es medir el tiempo de retraso, dicha información forma parte de la
base de datos.
57
Simulación con agentes intencionales para equilibrar el ftáfico en una red de área local
Una ventaja que presenta este algoritmo, es que asegura el paso de información
entre los diferentes nodos por el camino más seguro y rápido, en caso de que el
nodo destino este fuera de servicio se informa rápidamente a todos los nodos que
conforman la red, para que lo eliminen dentro de sus caminos alternos para el envío
de información, así como una rápida notificación a los nodos origen de mensajes que
estaban dirigidos hacia el nodo que ya no está en servicio dentro de la red.
El enfoque que se propone para modelar el algoritmo de enrutamiento por estado de
enlace, es con el uso de sistema mulfiagenfe.
4.4 JUSTIFICACIÓN DEL USO DE AGENTES INTENCIONALES
Una característica importante de este problema es la .interacciÓn constante con el
medio ambiente (el estado de la red), y que requieren una solución con un programa
autónomo.
Se requiere un programa que de forma automática actualice la información acerca de
los nodos activos en la red, y su tiempo en el envío de información. Lo anterior sirve
para establecer las rutas de los mensajes entre los nodos de la red.
Dicho programa simulara parte del trabajo de un administrador de la red, al examinar
el estado de la red y tomar decisiones sobre rutas de envío de mensajes.
Convirtiendo este problema en una aplicación ideal para agentes por sus
características de autonomía y generación de diversas soluciones de manera
dinámica al problema de tráfico en una red.
Se construirá un sistema multiagente teniendo un agente por cada nodo que participe
en la red, para aseguramos que el funcionamiento de red no recae en un solo nodo,
sino que cada nodo de forma independiente estará encargado de actualizar el estado
de la red como describe en la siguiente sección.
AI estar actualizando elestado de la red el agente genera su propio conocimiento
sobre su medio ambiente, y con está información creará las rutas para enviar
mensajes, evitando saturar nodoc en la red.
Se decidió trabajar con agentes de tipo intencional, porque un agente de tipo
intencional cumple con las características de un agente, de actualizar su información
y con base en esa información tomar sus decisiones que rigen su comportamiento.
El agenfe no tiene como principal objetivo conocer la estructura de otros agentes, por
lo que no seria conveniente un agente de tipo social u otro más complejo.
58
Simulación con agenfes infencionales para equilibrar el tráfico en una red de área local
En el sistema multiagente que se va a crear (un agente en cada nodo de la red),
cada agente va a tener(diversas intenciones, las cuales son: cuando actualice el
estado de la red, al enviar un mensaje por una ruta establecida, al medir un tiempo
de retraso en el paso de información entre los nodos de la red.
i
Por esto se trabajo con un modelo que tome en cuenta las intenciones y que facilite
la comunicación en un sistema multiagente, como lo es la arquitectura de intenciones
BIG (creencias, intenciones y metas), y el modelo de comunicación entre agentes
propuesto bajo las mismas consideraciones de intenciones y agentes del mismo tipo.
I1
4.5 ETAPAS DE LA SOLUCIÓN
,fi
Primero se describe ed'forma general los cinco pasos básicos de los que se
compone el algoritmo por estado de enlace y posteriormente se explica como fue la
implantación con el modelo de comunicación entre múltiples agentes intencionales
basados en la arquitectura BIG (creencias, deseos, intenciones).
4.5.1 ALGORITMO DE ENRUTAMIENTO POR ESTADO DE ENLACE
I
El algoritmo por estado de enlace consta de cinco pasos básicos que se presentan a'
continuación:
I/
1. Descubrir a sus nodos vecinos y conocer sus direcciones de red.
2. Medir el retardo o costo para cada uno de sus nodos vecinos.
I!
1
3. Construir un paquete de estado que indique todo lo que acaba de
aprender.
I1
4. Enviar este paquete a todos los demás nodos.
I
,I
5. Calcular la trayectoha más corta a los nodos que se necesite enviar
ir8formación.
4.5.2
DISENODEL ALGORITMO CON AGENTES INTENCIONALES
Para hacer la simulación se creará un agente el cual debe residir en cada nodo de la ,;
red. El agente cubre con las características descritas en la sección 2.3.2. Un
panorama general sobre el algoritmo de enrutamiento por estado de enlace y su 1
representación con agentes de tipo intencional se explica en la figura 4.1.
I/
Las creencias se representan con la información acerca del estado de la red,
clasificando la información ;recolectada en dos tipos: las tablas de estado (contiene
los nodos activos en toda 1.a red y los tiempos de retraso, asociados en el envío de
información), y el conocimiento descriptivo acerca de sus nodos vecinos que están
activos.
59
~
Simulación con agentes intencionalespara equilibrar el tráfico en una red de área local
Las intenciones surgen cuando un agente tiene un mensaje a enviar, que puede ser
de prueba (para medir el tiempo de retraso) o con información que requiera ser
enviada por la red. Cuando se requiera enviar información se comienzan a generar
una serie de posibles soluciones (rutas para el mensaje), generadas a partir de la
información que tienen las tablas de estado (creencias). Después se comparan las
rutas generadas y una intención es convertida a meta que debe ser la ruta Óptima
(tiempo mínimo de envío), para un nodo destino el cual debe ser factible dentro de la
red.
La meta de enviar información se considera externa ya que la acción de crear una
ruta para un mensaje, fue solicitada y no generada por el agente mismo. Las metas
internas del agente son: crear reportes (las tablas de estado) con fespecto al tiempo
de retraso entre ese nodo agente y su vecino, la otra meta es enviar mensajes de
prueba para calcular el tiempo asociado de un nodo agente a sus nodos vecinos.
Tablas de estado
Conocimiento sobre sus vecinos
Capacidades o Intenciones:
Generación de rutas
Generación de tiempos'de retraso
restricciones
I/
I
/ '
Decisiones o Metas:
Elección de la ruta Óptima
Reporte de tabla de estados
I
I
/
restricciones
acciones
Acciones :
Envío del mensaje
Envío de tabla de estados
Figura 4.1 Modelo del agente para el algoritmo de enrutamiento por estado de enlace
Como podemos observar, cada agente tiene metas particulares como son generar la
ruta de un mensaje que requiera ser enviado por la red, así como estar actualizando
su tabla de conocimiento de sus vecinos para saber las rutas actuales por donde
puede enviar la información.
Se justifica el llamarse agente porque tiene conocimiento propio que genera y
comparte con otros, dicho conocimiento es dinámico cambia de acuerdo como lo
requiera el medio. Tiene metas externas e internas 'que van combinando para
determinar que función sera ejecutada de acuerdo a como lo requiera en entorno de
red, las metas son resueltas por cada agente de forma independiente al estado de
otros agentes dentro de la red lo que hace autónomo.
60
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local
Haciendo un análisis se observa que un agente solo tiene información de una parte
de la red, y que para cubrir su meta general o global dentro del balanceo de tráfico
en una red, debe comunicarse con otros agentes que le proporcionen información
sobre. otra parte de la red'que no es factible directamente por el.
AI componerse el sistema por varios agentes, se crea información diversa que debe
compartirse en el sistema como se observa en la figura 4.2 y son:
+*:
0:.
0:.
I!
Las tablas de estado contienen información sobre partes parciales del
estado de la red. Estas son las que se comunican.
Envío de mensajes (información) por un canal adecuado.
Mensajes prueba para actualizar el estado (activo o inactivo) de un nodo
agente en la red, y ;medir su tiempo de retraso en el envío de información.
Agente B
Capacidades
.Tranimision de tabla de
eriador modificada
a
IU
CXC"CiaS
.Transmisión d e tabla d e
estados modificada
respecto
SUS Y E E i " 0 X i
a SUI
Capacidades
"SCi"0S.
.Envio del mcnsajc por el
canal adecuado.
. T i e m p o s dc r e t r a ~ o .
.Calcular l a trayectoria más coria con respacto
Io$ d c m á s enrutadarsi.
lor d e m i s enrutadorer.
a
Solicitud de
envio
envio
de mcnsajc
Figura 4.2 Modelo de intercambio de información entre dos agentes para el balanceo de
tráfico.
Un ejemplo de lo anterior, es cuando una red como la mostrada en la figura 4.3, tiene
un nodo agente A al cual se le solicita enviar un mensaje a un nodo agente J (meta
externaj, pero no existe un camino directo de A hacia J.
61
I
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local
La siguiente acción del nodo agente A es buscar en su base de datos (creencias) si
el nodo J es factible, y generar los caminos posibles (intenciones) por los que puede
alcanzar este nodo, para después elegir la ruta que contenga un menor tiempo, y
tomar ese camino estableciéndolo como ruta Óptima para el mensaje solicitado.
Cumpliendo la meta propuesta inicialmente, de enviar el mensaje de un origen a un
destino (meta particular), y equilibrar el tráfico en la red (meta global).
Figura 4.3 Un ejemplo de una red de área local
4.5.3 IMPLANTACIÓN DEL ALGORITMO CON AGENTES INTENCIONALES
La idea principal del modelo de comunicación surge de la necesidad de intercambio
de información que presentan los agentes dentro de cada nodo de la red para
balancear su tráfico. Dicha comunicación se presenta en el proceso de alcanzar las
metas globales y particulares explicadas.
Para el modelo propuesto los actos de comunicación son definidos en función de
estados o mundos posibles (sección 4.6.2 ) y un protocolo de comunicación que se
describen a continuación. Los mundos posibles pueden ser subobjetivos de otros
objetivos más complejos en los que un agente tiene una intención de actuar.
El sistema multiagente debe contar con un protocolo de comunicación, que indique.
las performativas válidas y el significado de ellas, para este algoritmo se detectaron 6
performativas que indican diferentes cosas y dependiendo del contexto en que se
manejen las interpretará el agente.
+
NA-HELLO, sirve para anunciar que un nodo se encuentra activo.
NA-REHELLO, sirve para responder a un nodo que anuncio que está
activo.
*:o
NA-ECHO, sirve para verificar que un nodo sigue activo, y medir el tiempo
de retraso para un mensaje.
$3 NA-REECHO, sirve para responder que sigue activo un nodo y reportar el
tiempo de retraso.
*:* MandaFile, sirve para enviar un mensaje con información.
*3 MandaFile, sirve para enviar paquetes que indiquen el estado-de la red.
e:*
62
B ~ ~ ~ u l aCOIcJ i ageiiles
ó ~ ~ infeiJcio/ialespara equilibrar el tráfico eii uiia red de área local
1
I1
Se interpretan como se describe en los siguientes párrafos dentro del sistema:
G NA-HELLO Se presenta al inicio del algoritnio, cuando un agente no posee
suficiente información aGerca de sus nodos vecinos o del estado en general,
de la red. El agente debe enviar iriensajec de prueba por priniera vez, para
conocer a cada uno de, sus nodos vecinos, quienes le contestarán con
NA-REHELLO, como se observa en 1a.figura 4.4.
,
':I
G NA-REHELLO
es una ,respuesta de confirniación que regresa un nodo,
habiendo recibido previamente un NA HELLO, contiene la dirección del
nodo que envia y del que recibe i a i k a r i d o los datos de conexión. Y
finalmente cuando se rgcibe el NA-REHELLO se establece la conexión,
figura 4.4.
Establecida previanierite la coiiiuiiicacioii. el age'iite debe observar
constanterriente el estado de la red. Entonces eiivia iiietisajes de prueba
NA-ECHO con el objeto d,e niedir el tieiiipo de respuesta de un nodo vecino
que le respondera con uh NA-REECHO, y as¡ crear las tablas de estado
para comunicarlas a otros agentes. Se puede ver igual que NA-HELLO Y
NA-REHELLO en la figura 4.4.
'
t7 La instrucción riiaiidaFile se usa para eiiviar las tablas de estado con
información correspondierite a una paitr r l , , J nstado actual de la red. Sólo es
para informar a sus vecinos sobre su estado. y con quien tiene conexión asi
como los tiempos asociados.
'
G La instrucción iiiaiidaFile taiiibieii se utiliza para envios de mensajes de un
nodo agente fuente a Iin nodo agente destino.
La sintaxis interna de los mensajes que circulati por la red es.la siguiente:
,(i
., . .
. '
Origen!Destino!Trayecto&k,!Meiisaje
"j'. :,;;
,,
,.
,
..
..
Donde:
. .
Origen = Destino: son los iioiiibres de los nodos ruteadores involucrados.
2
:
, ? . . , '
1(
Trayectoria: es la serie de iioriibies de los nodos ruteadores por los que el
paquete pasará, cada nombre seguido de una coma (J.
I
,/
Mensaje. consiste de peifoiiiiativa (14 protocolo de comunicación y la
información que se iiecesite, o la iiiforiiiacioti que el usuario desea mandar
por ejemplo un íragiiienio del arcliivo de prueba. etc
El signo de admiración ( ! ): es un deliiiiitador en el mensaje que circula
por la red.
,:
1
63
Simulación con agerifes iriiericionales para equilibrar el tráfico eri una red de área /oca/
Creencias
Meta (NA-REHELLO)
Enlace de comunicación
Met a (IJA-RE HELLO)
Enlace de comunicación.
8
Figura 4.4 Representación del funcioiiaiiiieiito del protocolo de comunicación con la
perforrnativa NA-HELLO Y NA-REHELLO
En esta sección se explicó la forma en que se interpretan, los componentes del
modelo de comunicación su significado para este sislema
También se mostró la estructuia qiie leiidrari los iiierisajes, lo cual es muy
importante en el funcionamiento de la siiiiulacioii eii que se prueba el modelo, a
continuación se explica como rueroii iiilerpieláiidoce cada uno de los pasos del
algoritmo de enrutaiiiierito por estado de eiilace. coil el protocolo y adaptandolo al
paradigma orientado a agentes
4 5 4 DESCUBRIR A SUS NODOS VECINOS Y CONOCER SUS DIRECCIONES DE
RED
Para hacer esto se diseño el agetile nodo coil tiiia estitictiira e i i doiide inicialmente
se dan de alta los nodos (direccioiies) coil quienes podia establecer conexion.
AI iniciar sus actividades uti agente nodo. debeiá ioriiar las diieccioiies que tenga
registradas como riodos vecinos. y eiiviailes la iiisti iiccioii NA--tiELLO. Esperar un
tiempo de 1 minuto como niaxiiiio para recibir la resptiesta NA-REHELLO; y
etiquetar a ese nodo como activo o de lo contrario etiquetarlo como inactivo.
64
Simulación con agentes Mencionalespara equilibrar el trrifico en una red de área local
,I/
..........................
i..........................
DNA-HELLO
( INT x, a )
i
Tablas de
Estado
Válidas
(Creencias)
información
T
I
r
NA-HELLO
I.
NA-ECHO
II
..........................
I
rutas
( Intenciones)
t
.
I
IVerificador de
MandaFile
..........................
!DNA-HELLO
(GOAL X, a )
( INT x, a )=(BEL x : a )
I
&alización de tablas de estado.
Selección de una ruta adecuada.
Meta
1
( GOAL x, a ) s( BEL x, ( GOAL x, a ) )
Figura 4.5 Interpretación matemática de NA-HELLO y NA-REHELLO
La figura 4.5 es una interpretación gráfica del funcionamiento interno del agente y de
la forma en que se aplica el modelo propuesto basado en creencias, intenciones y
metas BIG.
i!,
El módulo monitor debe tener un procesó para detectar que el nodo agente a ha
iniciado su funcionamiento !en la red, comienza revisando que nodos son vecinos,
para triitar de establecer comunicación con esos nodos vecinos formando la
intención x para agente a.
I.
Primero debe pasar por la verificación de creencias del agente, marcando que una
intención deber ser congruente con su base de conocimiento para poder ilegar a ser
meta. Por lo que el agente a debe creer que la dirección x está dada de alta como un
nodo vecino.
)!I
La intención x se transforma en meta al crear la estructura del mensaje, con la
dirección de un nodo vecino tomada de las creencias del agente y la performativa
NA-HELLO, para ser enviada y establecer comunicación con el nodo vecino.
65
'
Simulación con agentes intencionales para equilibrar el tráfico en una red de area local
NeighborName
(Nombre del nodo
vecino)
Carácter
NeighborAddr
(Dirección del
nodo vecino)
Numérico
NeighborActivo
(Indica que un
nodo está activo)
Booleano
statTime
(Tiempo de retraso
asociado a este
nodo,
milisegundos)
Time
La clase NetworkAgentGUl es el archivo ejecutable principal, es el agente
propiamente, quien hace las llamadas a clases y métodos para funcionar
apropiadamente.
- Está clase cuenta con el método HELLO que se encarga de 1lamar.a otra clase
para conocer a sus nodos vecinos.
La clase LocallnfoPanel es la inicial da de alta al nodo local donde se está
corriendo la simulación, introduciendo el nombre del nodo y su dirección.
La clase NeightborlnfoPanel genera las tablas de información sobre.los nodos
vecinos.
La clase AgentOutPort maneja el cliente que funciona como salida del agente,
corriendo en hilos para poder tener una conexión con cada servidor. Esta clase
es la encargada de hacer la función HELLO por medio de sockets con el
método connect.
La clase AgentlnPort maneja el servidor de sockets, para tener varios vecinos
tiene varias conexiones una por cada vecino, el nodo local tiene una parte de
servidor, que es el trabajo de la clase AgentlnPort. Encargada de manejar el
nodo local como servidor, corriendo un hilo para cada conexión, al tener conexión
con un nodo vecino se cumple la intención de establecer conexión. Esta clase
tiene los métodos saber que tipo de, mensaje se recibe y.tomar una acción
adecuada, ver apéndice A.
I
66
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local,
C m 0 se Puede observar Un nodo agente local hace funciones de servidor Y cliente
de acuerdo a COmO Sea solicitado, también debe tener métodos de actualización parai
10s datos que les envíen, dichos métodos deben verificar la información externa con
ia interna y mantenerla congruente, ver apéndice A.
4.5.5 MEDIR EL RETARDO O COSTO PARA CADA UNO DE LOS NODOS
Después de haber actualizado las creencias de un nodo agente acerca de sus
vecinos, es decir, al tener la base de datos los nodos vecinos activos, se tiene una
conexión hacia ellos (por medio de hilos) y la certeza sobre sus direcciones.
Para este momento ya se puede comenzar a enviar mensajes de prueba para
comenzar a crear el estado de la red. Por medio de la performativa NA-ECHO, que
crea un mensaje de prueba.
El mensaje de prueba funciona grabando el tiempo del sistema en milisegundos,
antes de enviarlo a al vecino correspondiente, el vecino al recibir en un mensaje la
performativa NA-ECHO deberá reenviar el mensaje pero con NA-REECHO.
Cuando se recibe NA-REdHO se vuelve a tomar el tiempo del sistema y se hace ''
una diferencia de tiempos, para establecer un peso asociado a al nodo vecino. Y con ,
esto crear un registro para formar una tabla de estado con información del nodo
actual, sus nodos vecinos yjel tiempo de retraso asociado a cada uno de ellos.
Se tiene la clase ECHO que mide el costo asociado a cada nodo vecino con quien se
tiene conexión, como en eli,proceso descrito anteriormente, se maneja una variable
startTime que sirve de conthdor de tiempo en milisegundos, que se inicia al enviar el
mensaje y se detiene al momento en que regresa el mensaje, ver apéndice A,' El
paquete se forma como sigue:
Msg= IocalName ! NeighborName ! IocalName , NeighborName ! NA-ECHO
'
AI manciar el mensaje se tiene la intención de medir el tiempo de retraso asociado a
un nodc vecino, cuando ilesa el mensaje la intención se convierte en meta al tener el
valor de la variable startTime.
Esto se hace por cada nodo vecino y se maneja por medio de hilos, la clase Echo
Timer es quien se encarga de generar estos tiempos haciendo uso de la clase Echo
para cada nodo vecino, ver apéndice A.
Estás son clases que contiene el nodo agente local como intenciones para
posteriormente generar tablas de estados y poder calcular rutas míriimas, que
ayudarán a cumplir con su meta general de balancear el tráfico en la red.
ij
67
~
Simulación con agentes intencionales para equilibrar el tráfico en una red de area local
4.5.6 CONSTRUIR UN PAQUETE DE ESTADO QUE INDIQUE TODOS LO QUE
. ACABA.DE APRENDER'.
'
,
Una vez que el agente ha terminado de establecer los tiempos de retraso asociados
a sus nodos vecinos activos, se continua con el algoritmo de enrutamiento por estado
de enlace.
El siguiente paso que es construir una tabla de estado (mensaje), se forma poniendo
como encabezado el nombre y dirección del nodo actual, después las direcciones de
los nodos vecinos seguidos del tiempo de retraso. La estructura se puede ver como
sigue:
Nombre,
Dirección, Número de envío
Dirección de vecino, tiempo de retraso
Mensaje
El tiempo de retraso es muy importante porque de acuerdo a este, más adelante se
pueden construir las rutas óptimas para enviar información.
La estructura que se utiliza para estos tipos de datos se declara en ¡a clase NetState
como una lista con cabecera, como la tabla 4.2, ver apéndice A.
allName
(Nombre del nodo)
AllAddr
(Dirección del nodo)
Neighbord
(Dirección del nodo
vecino)
Numérico
sec
(Número de envio,
milisegundos)
Tabla de
Vecinos
Delay
(Tiempo de retraso,
milisegundos)
Entero
4 5.7 ENVIAR ESTE PAQUETE A TODOS LOS NODOS
Creados los paquetes son enviados a los nodos vecinos de un nodo.agente a,y ellos
a su vez lo enviaran a sus nodos vecinos, este algoritmo se le llama inundación
68
Simulación con agentes infencionales pata equilibrar el tdfico en una red de área local
Una problema de este algbritmo es que cuando se tengan dos paquetes del mismo"
nodo.agente a,con nuevaiinformación a cerca de la red como sabrá el nodotagente
vecino que información desechar y cual tomar.
a
~
Por lo que se decidió ponerle un número que indique que paquete es, es decir el
primer paquete comienza en 1 y el segundo que se cree en 2, así si en un momento
dado le llegan dos paquetes de un nodo agente a,a un nodo agente p tomará el de
número mayor, ya que es el actual. Esto se hace con el objetivo de tener informados
a todos los nodos de la red,el estado actual de esta.
,
1
La clase LinkState es la <ue genera y manda la tabla de estado, con la información
acerca del nodo local y sus nodos vecinos reportando también el tiempo de tetraso
asociado a cada nodo. La'j'estructura que se usa es como la que se mostró en la
sección 4.5.6,
ver apéndice A.
'
Como se mencionó cada agente envía y recibe las tablas de estado de sus nodos
vecinos, por lo que el nodo!!agentelocal también cuenta con métodos encargados de
recibir las tablas de estado de sus nodos agentes vecinos.
La clase AgentlntPort esta encargada de actualizar estos datos en la base de
conocimientos (creencias);"por medio del método table que actualiza los datos de
NetState de la estructura cbrrespondiente a allName y alllndex, que del mismo tipo
de estructura mostrada en la sección 4.5.6, ver apéndice A
4.5.8 CALCULAR LA TRA~ECTORIA
!I.
MÁS CORTA
El agente a para este momento ya cuenta con información acerca de sus 'nodos
vecinos, además de la información
acerca de otros nodos manteniendo el estado
/I
general de la red.
Por lo que será capaz de crear rutas Óptimas para la información que requiera llegar
aun destino cualquiera factible dentro de la red. Para crear la ruta óptima se utiliza el
algoritmo de Dijkstra [Tanenbaum 19971, se explica a continuación:
"
ti
Cuando se le solicita al agente enviar información, primero se verifica que el destino
sea factible desde este oiigen. Después si es factible se pasa como intención
externa, es decir, se va a tener la intención de crear una ruta Óptima para la
infor,mación. Primero se crean todos los caminos posibles y después SI? elige con
.respecto ai menor tiempo cdai será la ruta óptima.
Inicialmente no se conocen las trayectorias, por lo que todos los nc,dos tienen
etiqueta infinito. A medida!/que avanza el algoritmo, se encuentran trayectorias
diferentes entonces pueden ser cambiada.s las etiquetas reflejando mejores
trayectorias.
69
,
,,
Simulación con agentes infencionales para equilibmr el tráfico en una red de área local
Una etiqueta puede ser tentativa o permanente; inicialmente todas las etiquetas son
tentativas; al descubrirse que una etiqueta representa la trayectoria mas corta posible
del origen a ese nodo, y se vuelve permanente para no cambiar mas (para la ruta
que se está calculando en ese momento).
Para ilustrar el funcionamiento de este algoritmo se realiza la siguiente figura 4.6
inciso a, donde las ponderaciones representan distancias. Se quiere encontrar la
trayectoria más corta posible de A a D.
Se comienza marcando como permanente el nodo A, indicando por un círculo
relleno. Se examina por turno entonces cada uno de los nodos .vecinos hacia A
reetiquetando a cada uno de los nodos con los tiempos encontrados desde A. Cada
vez que es reetiqueta un nodo también se reetiqueta el nodo desde el que se hizo la
prueba, para poder reconstruir la trayectoria final.
Examinados cada uno de los nodos vecinos hacia A, se examinan todos los nodos
etiquetados tentativamente en el grafo completo (B y G) y se hace permanente el
nodo de la etiqueta mas pequeña B, como se muestra en la figura 4.4 inciso b, donde
B se convierte en el nodo de trabajo.
Ahora se continúa examinándose todos los nodos vecinos al nodo B. Si la suma de la
etiqueta B y la distancia desde B al nodo vecino E es menor, que hacia cualquier otro
nodo vecino que B pudiera tener, tiene la trayectoria más?.corta por lo que
reetiquetamos ese nodo, para este caso fue E.
En este proceso de elección para un nodo de trabajo también entra el nodo G en la
selección porque sigue siendo una ruta posible (recordando que el' nodo G había
quedado eliminado al seleccionar B).
Este proceso se observa como un árbol de múltiples opciones, donde todas las
ramas siguen compitiendo durante todo el proceso de generación de la ruta, con esto
se asegura que se contemplaron todas las rutas .posibles de un nodo origen a un
nodo destino.
Tras inspeccionar todos los nodos adyacentes al nodo de trabajo y cambiar las
etiquetas tentativas se busca el nodo etiquetado con el menor valor tentativamente.
Este nodo se hace permanente y se convierte en el nodo de trabajo para la siguiente
ronda.
Para comprobar el funcionamiento del algoritmo se muestra el resultado en la figura
4.4 inciso c donde E se hace permanente. Suponiendo que hubiera una trayectoria
mas corta que ABE, por ejemplo AGE, entonces existen dos posibilidades:
70
*:*
El nodo G ya se hizo permanente, entonces E ya se probó por lo que la
trayectoria AGE no ha escapado a nuestra atención.
*:*
El nodo G no se ha hecho permanente.
Simulación con agentes infencionales para equilibrar el tráfico en una red de área local
Ahora se considera el caso en el que G aún está etiquetada tentativamente,
existiendo dos posibilidades:
*: Que la etiqueta de G es mayor o igual que la de E, en cuyo caso AGE no
puede ser una trayectoria más corta que ABE
-3 Que es .menor que la de E en cuyo caso G y no E se volverá permanente
primero, permitiendo probar E desde G.
i
Como se observa en el desarrollo de este algoritmo para encontrar la ruta Óptima,
siempre se toman en cuenta las otras posibilidades, asegurando que la ruta que
resulte será la óptima.
Se utilizan los tiempos asociados a los nodos vecinos, por lo que se incrementa el
valor de tener información actualizada acerca del estado general de la red. Y
observamos que en todo momento se involucran, las creencias o base de datos, las
intenciones o rutas generadas, y se elige una de ellas.
Figura 4.6 Ponderación de pesos dentro de una red
La clase Shortpath se encarga de encontrar la ruta más corta entre dos nodos dentro
de la red, utiliza el algoritmo de Dijastra implementado dentro del método findpath,
!I
ver apéndice A.
71
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local
Para la simulación que se realizó no había un mensaje de un nodo hacia otro que
fuera solicitado, por eso se decidió calcular ,las rutas hacia todos los nodos
alcanzables desde el nodo local.
Por medio del método update de la clase Shortpath, se van analizando uno a uno los
nodos registrados en.la tabla de estado de la red, para calcular un tiempo mínimo y
reportarlo. Se reportará un tiempo de infinito para indicar que un nodo no se alcanzó,
ver apéndice A.
Para simular el funcionamiento de la red se crearon archivos, los cuales son
enviados aleatoriamente por la red, dichos archivos se crean en la clase
Networmgent con el método writeFile se crea el archivo test.txt y se envía a los
nodos vecinos.
Teniendo diseñado e indicado el funcionamiento, se hizo una simulación de este
programa, haciendo un agente para cada nodo en la red, que se muestra en la
siguiente sección.
4.5.9 DESCRIPCIÓN DE LA INTERFAZ GRÁFICA DEL SIMULADOR
Explicado el diseño del modelo y la forma de implantarlo se presenta la simulación
que se efectuó. El simulador presenta inicialmente una ventana con diferentes
pestañas que son el menú al que podemos entrar y observar todas las pantallas de
entrada y salida de los datos.
AI arrancar el simulador se presenta la pantalla para introducir los datos sobre el
nodo local.
72
Simulación con agentes infencionales pam equilibrar el tráfico en una red de área local,
Para el caso de la pantalla, se solicita el nombre del nodo local para este caso es el
Los datos de las variables del nodo local..,
nodo "A" y su dirección e~'~132.254.41.74.
1
serían:
LocalName = A
.LocalAddr=l32.254.41.73
El siguiente panel que debe ser llenado con las direcciones IP de sus nodos vecinos
/I
A continuación se debe llenar el panel red, en el cual se pondrá el nombre de todos
los nodos de la red.
Y
Simulación con agenfes intencionales pam equilibrar el tráfico en una red de área local
Para finalizar se va al panel simulación donde se puede dibujar la topología de la red.
Esto no es necesario, dado que es sólo para presentar una imagen gráfica de la red
a los observadores.
En este paso se van llenando los datos de la estructura de los vecinos mostrada en
la sección 4.5.4 y sería:
NeighborName
(Nombre del
nodo vecino)
B
D
NeighborAddr
(Dirección del
nodo vecino)
141
132.25~.
. . . .74
..
132.254.41.77
NeighborActivo
statTime
(Indica que un nodo (Tiempo de retraso
está activo)
asociado a este
nodo.
IT
I '
IT
milisegundos)
-- .-
I7r115
I3396
En este Panel también se encuentra el botón de Inicio, el cual debe ser apretado sólo
cuando se ha introducido toda la información de la red y sólo si fue introducida
correctamente, para que mmiencen a trabajar los agentes.
Si se crearon errores al introducir los datos, esto repercutirá fuertemente en la corrida
del programa, como dejar nodos desconectados o bloquear uno de los nodos
agentes por completo.
En esta versión no se incluyen herramientas gráficas para corregir errores, aunque si
hay algunas herramientas en el código, pero no son accesibles desde las interfaces
creadas.
74
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local,
Si se cometen errores, se debe reiniciar al agente en la máquina en la que se"
cometió el error. El botón de unir dibuja una unión entre dos nodos ya dibujados.
Una vez que se inició la simulación el botón es reemplazado por el botón de mandar,
el cual sirve para mandar archivos a otros nodos.
En este momento se van illenando las estructuras faltantes al recibir las tablas de
estado de los nodos vecinos que van quedando de la siguiente forma:
allName
(Nombre del nodo)
B
D
C
E
A
' AllAddr
(Dirección del nodo)
132.254.41.74
132.254.41.77
132.254.41.80
132.254.41.85
137 754 41 90
allName
(Nombre del nodo)
A
A
B
B
D
C
C
E
E
E
sec
(Tiempo de retraso,
milisegundos)
O
O
1
1
1
Neighbord
j
(Dirección del nodo
:l.
vecino)
132.254.41.74 (B)
il32.254.41.77 (D)
i132.254.41.80(C)
132.254.41.85 (E)
(132.254.41.85(E)
,il32.254.41.74 (8)
'132.254.41.85 (E)
'432.254.41.74 (B)
\132.254.41.77(D)
132.254.41.80 (C)
Delay
(Tiempo de retraso,
milisegundos
1336
2476
1632
2032
2533
1022
1172
1923
1232
1863
'!I
4 5.10 F.ESULTADOS OBTENIDOS EN LAS CORRIDAS DE PRUEBA
El simulador fue corrido con varias topologías y diferentes números de nodos. Para
todos Icis resultados obtenidos fueron similares. Un ejemplo de los resultados se
presenta a continuación.
1
75
Simulación con agentes intencionales para equilibrar el tráfico en una red d e area local
Para esta prueba se utilizaron 5 nodos, conectados en la manera en que se muestra
en la pantalla anterior.
Se mandaron archivos del nodo C al nodo D para hacer las pruebas, con lo que se
tienen tres rutas para los paquetes, C-E-D, C-B-A-D y C-E-B-A-D.
Cuando iniciamos la prueba, el simulador encontró los siguientes pesos de las líneas:
76
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local
Esta pantalla es una foto inicial sobre los tiempos asociados a los nodos en la red,
antes de que comiencen trabajar los. agentes, dichos tiempos se explicaron en la
sección 4.3.5.
a
,
AI mandar los paquetes la. primera vez, la trayectoria seguida es C-E-D, dado que'
mide 2404. Los costos de i'as líneas están expresados con el origen en el eje vertical
y el destino en el horizontal.
Un peso de O indica que no hay conexión y para conexiones muertas, esto es, que
existe línea pero el costo no se pudo medir, se le da un valor de 1000000.
La trayectoria C-B-A-D mide 5081 y la trayectoria C-E-B-A-D mide 7154. En e'l panel
de trayectorias de puede ver la trayectoria que cada paquete de un archivo de
prueba mandado desde el nodo local tomó.
1
Para la simulación se enviaron archivos de prueba para saturar la red donde, cada
archivo de prueba tiene 100 paquetes.
Mandando
Mandando
Mandando
Mandando
Mandando
a D via: C E
3 D via: C E
a D via: C E
a D via: C E
a D via: C E
D
D
D
r
D
En la siguiente medición de las líneas, se encontró que el tráfico en algunas de ellas
subió ccinsiderablemente.
I/
I,,
77
,
Simulación con agentes intencionales para equilibrar el tráfico en una red de área local
Nuevamente mandamos el archivo de pruebas desde C a D, pero esta vez tomó otra
ruta, C-B-A-D, la cual medía 6740.
La ruta C-E-D medía 31525 y la ruta C-E-B-A-D medía 32127.
Mandando a D via: C B A D
Mandando e D via: C B A D
Mandando a D via: C B A D
Mandando a D via: C B A D
Mandando a D via: C B A D
Después de la siguiente actualización encontramos que las líneas que habían subido
de costo antes bajaron de costo y ahora otras subieron de costo.
78
Simulación con agentes intencionales para equilibrar el frrjfico en una red de área local
Con esto podemos ver que los agentes están, cambiando las .trayectorias de los
paquetes para que una línea no suba mucho de costo.
Con los resultados de la simulación observamos que si se van equilibrando los
pesos, existen varios comentarios en este sentido.
11
,!
Se decidió terminar hasta aquí el presente trabajo por las siguientes razones:
1. El objetivo de la simulación era probar el modelo de comunicación
presentado en el capítulo 3, teniendo bueno resultados en el sentido de que
se acoto el problema, al crear un agente por nodo se presenta una solución
dis.tribuida.
!.
~
Dicha solución no depende de los otros nodos que intervienen en la red, es
decir, cada nodo es independiente y unidos forman un sistema mulliagente,
que resuelve el problema de trafico en una red, sin importar que el estado de
la red cambie en forma constante.
Se aprecia también que se baja la complejidad de al diseñar un sistema de
esie tipo, porque solo nos preocupamos por tener un agente, con diversos
procesos, que se comporten en diversas situaciones.
2. No s.e reportaron tiempos porque es una simulación, que depende del equipo en
que sea probado, por lo que resulta muy variante.
Los resultados que podemos observar, serían que cuando un tiempo en un
nodo agente a no baja para ningún nodo vecino, es porque su velocidad es
baja y no tanto porque la red esté saturada.
.,
79
Simulación COR agentes intencionales para equilibrar el tráfico en una red de área local
ubrir los puntos propuestos al inicio del trabajo,
donde se hace un compromiso de crear un modelo y llevarlo a la práctica, mostrando
que simplifica los problemas de comunicación que presentan los agentes.
Se hizo la prueba en un sistema de redes donde la comunicación es vital para el
funcionamiento. del sistema, por lo cambiante que suelen ser y .se observó que
efectivamente el sistema cambia respecto a como lo hace su medio ambiente, y
cambia de actitudes para adaptarse.
De este modo damos por terminado la prueba del modelo, y presentamos las
conclusiones generadas del presente trabajo.
80
Conclusiones y Trabajos Futuros '
CAPITULO 5
.!/
CONCLUSIONES Y TRABAJOS
FUTUROS
5.1 CONCLUSIONES
Durante el desarrollo del presente trabajo se realizó una investigación sobre la
programación orientada a agentes como un nuevo enfoque para resolver problemas.
~
./I
AI investigar este nuevo enfoque se observa que todavía no se tiene un estándar
establecido como metodobgía de programación, como podríamos observar en la
programación orientada a objetos, siendo un área importante para investigar y
aportar nuevas ideas.
~
En el presente trabajo se desarrolló un modelo de comunicación con ,bases
matemáticas que justifican !:su comportamiento en diversas situaciones además de
tomarse como fundamento en aplicaciones posteriores para sistemas bajo este
enfoque, evitando incongruencias en la ejecución de acciones utilizando la
arquitectura que también se'propone en este trabajo para un sistema mulfiagente.
Como conclusiones de este trabajo se tienen las siguientes:
1, Podemos afirmar que la naturaleza distribuida de algunos problemas se
debe resolver con enfoques de características similares, por lo que la
programación orientada a agentes es un enfoque recomendable.
li
2. Como resultado del desarrollo de. la' simulación se pudo comprobar que
la comunicación entre agentes es un soporte para resolver el problema
de balanceo de tráfico en una red de área local, sin importar la topología
que tenga la red o lo cambiante que está pueda comportarse al tiempo
de ejecución.
5,'
,;
3. Se presentó la aplicación de una arquitectura para la construcción de
agentes, la cual ektá soportada en un modelo matemático.formal que es
la lógica modal,,, y una aplicación real del modelo matemático
desarrollado, por lo que podemos observar que las teorías mostradas a
lo largo de este trabajo son totalmente aplicables a la solución de
problemas distribuidos reales.
I!
!.
81
Conclusiones y Trabajos Futuros
4. El uso de agentes para formar un sistema mulfiagenfe con un protocoio
de comunicación adecuado es una buena solución al problema de
tráfico en redes, ya que para el balanceo total de la red se requiere un
sistema distribuido en el que todos los elementos que lo constituyan
aporten información necesaria para la solución al problema del tráfico.
5. Una aportación importante del modelo de comunicación, es observar
como se hace una abstracción real del comportamiento de personas
para resolver problemas en sociedades, lo anterior es con respecto en
la evolución de una intención desde que se toma como tal se hace su
verificación de congruencias hasta que finalmente se convierte en meta
generando una acción a ejecutar, lo que hace más sólido a un sistema a
tiempo de ejecución.
6. La simulación donde se aplicó el sistema mulfiagenfe nos demostró que
el grupo de agentes colaborando (comunicando información, para este
.caso el estado actual de la red) en un problema global (el tráfico de la
red) logran resolverlo, es decir en nuestro problema'se alcanzó un
balance equilibrado del tráfico de red.
7. Falta hacer pruebas más específicas de la simulación, en equipos con
diferentes características y en diversas condiciones, con el fin de
establecer en forma definitiva que la aplicación de agentes a sistemas
de redes es una solución óptima y eficaz.
e
5.2TRABAJOS FUTUROS
Como trabajos futuros se propone:
*
*
*
82
Que el problema de balanceo dentro del tráfico en una red de área local
sea llevado a una aplicación real, no solo en simulación sino como una
implantación con uso de ruteadores reales como los que,,se modelan con
inteligencia para tomar decisiones.
Crear una propuesta para agilizar le elección de rutas Óptimas para el
problema de'balanceo de tráfico en una red, es decir proponer un método
que no se tenga tablas de estados y sea más ágil, ya que cuando estas
crecen demasiado búsqueda de una ruta Óptima se retrasa.
También se podrían crear aplicaciones reales para la mejora de seguridad
en redes por medio del modelo de comunicación entre agentes
intencionales.
*
Conclusiones y Trabajos Futuros
Otro trabajo es crear un procedimiento de búsqueda inteligente el cual
podría ser implementado al presente algoritmo para enfrentar el problema
de redes demasiado grandes.
1
* Algunos
casos de experimentación podrían ser en equipos que cuenten
con estacion'es de trabajo, o diversos equipos con PC, estaciones de
trabajo, y ambientes)de trabajo diversos como son los sistemas operativos.
5.3 PUBLlCAClONES
Se obtuvieron logros con el desarrollo del presente trabajo de tesis como fue una
publicación en el 6to. Congreso Internacional de Investigación en Ciencias
Computacionales (CiiCC'99).
Se obtuvieron logros con el desarrollo del presente trabajo de tesis como fue una
publicación en Congreso Internacional de Computación (ClC'99).
,I
5.4 LECCIONES APRENDIDAS
Durante el desarrollo del presente trabajo de tesis, realice diversas actividades que
me han formado profesionalmente, entre las más importantes son las siguientes:
*:o
Desarrolle habilidad para recopilar información sobre un tema nuevo, ya
que el tema elegido ,en esta tesis, carecía de información sobre sus
métodos, usos, implahtaciones y manejo.
I
*:*
*e
:
Los agentes se deben estudiar tomando en cuenta al especialista que se
'intenta simular, esthdiar detenidamente cuales son los factores que
iritervienen en su toma de decisiones y que información es fundamental en
su desempeíio.
Los agentes son una buena herramienta para sistemas cambiantes en el
tiempo, al generar cdnstantes soluciones a sus problemas, los hacer 'ser
dinámicos.
'I(.
03 Se aporto material nuevo en la incursión de un área, como son los
sistemas multiagentes, que comienzan a tomar fuerza en aplicaciones, y
que no se había trabajado en este tema, aportando un estado del arte en
esta área de investigación.
'I
40 Un tema muy valioso y que en lo personal muy complicado, es el hacer un
modelo matemático,, porque se tienen que estudiar formalismos
matemáticos, entenderlos y después poder aplicarlos correctamente.
I1
83
,
Conclusiones y Trabajos Futuros
Además de entender la relación con sistemas
computadoras y como afectarán su comportamiento.
compuestos
por
03 Por último fue muy interesante estudiar la comunicación con un punto de
vista filosófico, y entender todos los factores que intervienen en ella, por
eso es que es una herramienta importante en toda sociedad.
5.5 A PO RTACIO NES
AI desarrollar el presente trabajo se aportaron varios aspectos importantes para el
área de sistemas multiagentes como:
,
.i
03 Se presenta una introducción al paradigma orientado a agentes, un estado
del arte sobre el tema de comunicación presentado en el capítulo 2, donde
se establece de manera especifica que él lo que se obtendrá con este
trabajo.
También se aporta una investigación hacia el estudio de lógicas para la
representación de sistemas continuos en el tiempo capítulo’3.
0:.
Una de las aportaciones más importantes es el desarrollo de un modelo
matemático que se presenta en el capítulo 3, presentando los formalismos
que avalan el presente modelo.
*
:
e
03 Con el presente trabajo no se buscaba presentar una teoría mas para
programar agentes, sino que se pretende comprobar que este nuevo
paradigma de programación funciona por lo que se hizo una simulación
donde se ve cómo pueden ser representados en términos computacionales
las características de los agentes. Se presenta la forma de abordar un
problema, diseñarlo e implantarlo de tal forma que cumpla con el concepto
de agente (autonomía).
*
:
e
1
AI crear la simulación se hicieron aportaciones también .presentado una
nueva alternativa para balancear el tráfico de redes, utilizando agentes. En
este trabajo sólo se presenta la simulación y por medio de los resultados se
observó que efectivamente, el programa trata de equilibrar los envíos de
información entre todos los nodos que conformen la red.
5.6 BENEFICIOS OBTENIDOS
AI inicio de este trabajo en la sección 1.6 se plantearon algunos beneficios y
alcances, que se pretendería alcanzar con el presente trabajo, por lo que en está
sección los retomamos para comentar como se lograron cada uno de ellos, y se
presentan a continuación:
84
Conclusiones y Trabajos Futuros
A) Crear soluciones actuales con respecto ai medio ambiente, dentro de la
sección 4.4, presentambs una aplicación del modelo propuesto y describimos
en que moment0 un sistema pasa de ser un simple algoritmo, a un algoritmo
se comporta de acuerdo a como su medio lo solicita.
~
AI agregar características de autonomía en un sistema multiagente, obliga a
programar al agente a tener control sobre sus acciones, y conocimiento acerca de
lo que están desarrollando, hace que los sistemas de este tipo estén cambiando
continuamente de acuerdo a como lo requiera el medio, y eso es lo que se explica
en este tema de tesis.
':
B) Otro beneficio es los cambios de acciones de acuerdo al medio en que
trabajen, esta tesis muestra cómo son tomados los datos y cómo va
cambiando para que el programa, llamado agentes, evolucione con el medio.
Es decir no va a cambiar su estructura de funcionamiento tal vez dependiendo
de los requerimientos cada agente tiene programas para responder
adecuadamente, y es algo nuevo en este tipo de trabajos. Sección 4.5
I1
C) Aplicaciones diversas 'bel modelo, para este trabajo solamente se presenta
una aplicación, ya que el tiempo para desarrollar un fundamento matemático
es extenso, pero al explicar el modelo y entender su funcionamiento, se puede
crear distintas aplicac/ones distribuidas en problemas semejantes de
comunicación que cambia continuamente.
''
D) Definición de dominios donde se aplique el modelo, con este punto se
pretende que el lector a l aplicar el modelo, comprenda cuáles son. los puntos
criticos de su aplicación, para de esta forma poder crear una semántica
adecuada a cada problema, y simplificar el trabajo descubriendo las funciones
que manipularán está información. Sección 3.7
!
E) Rediicción de análisis para cambios de estado en la red, en la sección
4.10 se muestran las pantallas de resultados y observamos que la primera
pantalla es como una foto del sistema un momento antes de que comiencen a
trabajar los agentes, en las pantallas posteriores se observa como los. tiempos
tienc;en a ser más uniformes, por lo que este se cubre con está prueba. Pero
faltan algunas pruebas más del sistema en diversas situaciones, para afirmar
que !os tiempos fueron reducidos.
~
F) Redwxión de tiempo en envíos de mensajes, este punto abarca algo muy
impcrtante y que a todos los desarrollares de software nos interesa, el ahorrar
tiempo tanto el desarrollo como para el mantenimiento. AI crear sistemas con
el paradigma orientado a agentes delimitamos el problema, de tal forma que
se debe desarrollar un sólo programa que conviva con otros programas
iguales pero no necesite de ellos para trabajar, tal esto suene iun poco
complicado pero no lo es tanto cuando uno se apega a una metodología, como
la presentada en este trabajo. Sección 4.5.10
'I
a5
Conclusiones y Trabajos Futuros
..
..
.i
.
86
.
.
1,
Apéndice A
APENDICE A
accept-all.setEounds(25 + insets.leR, 50 +
insets.top.1OO. 20);
clear-ali.setBounds(265+ insets.leR, 50 +
insets.top.1OO. 20);
allScrollPane.setBounds(95 + insets.left. 130 +
insets.top,lOO, 80);
COüiGO
FUENTE
public void actionPerformed(ActionEvent e) (
NetState netstate = new Netstate();
String command = e.getActionCommand0:
String name = new String();
String addr = new String();
String newline =
System.getProperiy("line.separator);
if (command == CLEAR-ALL) (
allNameField.setText(""):
FUNCIÓN ALLINFOPANEL.JAVA
import javax.swing.';
o
1
O
if (command == ENTER-ALL) (
try (
name =
allNameField.getText();
if(name.length(i 1 1 1
name.compareTo("OK) = = O 11
name.compareTorERR0R) == O)
(
llimport com.sun.java.swing.';
0
import javax.swing.JPane1;
o
import java.awt:;
o
import java.awi.event.';
o
allNameField.setTexi("ERROR);
o
I1 Esta clase genera el panel para agregar los nodos de la
red
else (
if(netState.getAlllndex(name) == -1) (
.ALL ="enter$
ALL = "clear al?;
static JButton accept-ail;
static JButton clear-all;
static JTexiField allNameField;
static JTexiArea allArea;
static JScrollPane allScrollPane;
public AiiinfoPanei() (
setLayout(nul1);
allNameLabel = new JLabel("N0mbre"t
I
1:
allScrollPane = new JScrollPane(allAre~);
allScrollPane.setVerticalScrollBarPol~cvfJScrollPane.VERT
CA._SCRO.LBAR-ALWAVS)
I
"
a lscrol Pane setPrefeneoS ze(ner D.mension(100.
80));
newline);
allArea.append(name +
netState.addAll(name);
SelectionPanel.nodeList.addElement(name);
SelectionPanel.linkOneList.addElement(name);
SelectionPanel.linkTwoList.addElement(name);
I
else (
add(allNameLabel);
I(
allNameField = new JTexiField(l5);
add(allNameField);
accept-ail = new JButton("Aceptai"); '
accept-all.setActionCommand(ENTER~ALL);
accept-all.addActionListener(this);
add(accept-all );
clear-all = new JButton("Limpia?);
clear-all.setActionCommand(CLEAR-ALL);
clear-all.addActionListener(this);
add(clear-all);
allArea = new JTexIAreaO:
aliArea.setEditable(false);
allNameField.setText("OIC');
add(allScroliPane);
allArea.setTexi(""):
Insets insets = getlnsets();
./I
allNameLabel.setBounds(l0 + insets.leR, 10 +
insets.top.100. 20);
aliNameFieId..set8ounds(l50 + insets.left. 10 +
insets.top.200, 20);
allNameField.setText~REPETlü0);
)
)
)
catch (NullPointerException npe) (
allNameField.setText("ERR0R NPE);
llimport javax.swing.';
O
import javax.swing.JPane1;
o
import com.sun.java.swing.';
o
import java.awt.';
o
import java.awt.event.*;
o
ii Esta clase genera el panel para presentar los datos no
o
ii graficamente. dado que no se logro imprimir los
//costos de cada linea en el dibujo
public class PathPanel extends JPanel (
static JLabel titulo;
static JTextArea pathArea;
87
Apéndice A
static JScrollPane pathScrollPane;
public Pathpanelo (
setLayout(nu1i);
titulo = new JLabel("Trayect0rias");
add(titul0); ' , '
pathArea =new JTextAreaO;
pathArea.setEditable(false);
pathScroilPane = new JScroiiPane(pathArea);
"
1
public void paintcomponent (Graphics g) (
super.paintComponent(g);
inti;
g.setFont(font);
g.setColor(Coior.biack);
for(¡ = O ; icindex; i++) (
if(shapes[i] == OVAL)
g.drawOvai(par1 [I], par2[i], par3[i], pargi]);
if(shapes[i] == LINE)
g.drawLine(parl[i], paR[i], par3[i], par4[i]);
if(shapes[i] == NAME)
g.drawString(names[i], parl [i], par2[i]);
. .
patnScroliPane setVerticalScro IBarPo icyi.Scroi Pane VE
RT CA-_SCRO--BAR-A.iNAYS).
painScro Pane setpreferreas ze(nen Dimens on(400
200)).
add(pathScrollPane),
DathArea setTextYi.
insets insets = g i t i k e t s o ;
titulo.setBounds(250 + insets.lefl. 1O + insets.top,l O0
20);
pathScroliPane.setBounds(l00 + insets.ieft, 40 +
insets.top.400, 200);
1
1
shapes[index] = NAME:
parl[index] = x:
paR[index] = y ;
names[index] =name;
index++;
I
1
I
import javax.swing.JPane1;
iiimport javax.swing.';
import java.awi::
import javax.swing.JPanel;
import java.awt.event.';
import com.sun.java.swing.';
iiimport javaxswing:;
import java.awi.';
import java.awt.event.';
//Esta clase genera el panel para dar la entrada de datos
I/ del dibujo de la red, y para mandar paquetes
public das5 SelectionPanel extends JPanel implements
ActionListener (
static final String DRAW = "draw;
static final String LINK = "IinK;
static final String START = "staf;
static final String SEND = "send";
Static JList node;
static DefaultListModel nodeList = new
DefaultListModel(); static JList linkone:
static DefaultListModel IinkOneList = new
DefauitListModel(),
static JList IinkTwo;
Static DefaultListModel iinkTwoList = new
DefaultListModel();
static JList xPosition;
static DefaultListModel xPositionList = new
DefaultListModel();
static JList yPosition;
static DefaultListModei yPositionList = new
DefaultListModel();
static JLabel nodelabel:
Static JLabel xLabel;
static JLabel yLabel;
static JLabel one;
static JLabel two;
static JButton draw;
static JButton link:
static JButton start;
static String[][] position = new String[4][4];
Static JScroliPane twoScrollPane;
public SelectionPanelO (
setLayout(nui1);
nodeLabel = new JLabelcNodo");
add(n0deLabei);
xLabel = new JLabel("Coiumna");
add(xLabei);
o
O
O
O
0.
~.
import com.sun.java.swing.';
ilEsta clase genera el dibujo grafico de la red
class Shapepanel extends JPanel(
final static Font font = new Font("Monospaced,
Font.PLAIN, 20);
final static String NAME ="name";
final static String OVAL = "ovalll;
final static String LINE ="line";
static String[] shapes = new String[lOO];
static String1 names = new String[iOO];
static int[] parl = new int[100];
static int[] par2 = new int[lOO];
static int[] par3 = new int[lOO];
static int[] par4 = new int[100];
static int index = O; . .
public ShapePanei()(
setBackground(Color.white);
.
1
setForeground(Color.black);
public void rendershape() (
repainto;
1
pJb..c void aodhoae(int p l , in1 p2 mt p3) (
snapes[inaex] = OVAL
parl [index] = p l ;
parí>[index] = p2;
par3[indexl = p3;
index++;
I
pub c .o d add- ne, ni p l nt p2 in1 p3 n i p4, (
snapes[index] = .NE
parl[index] = p l ;
pari[index] = p2;
par3IindexI = p3;
par4[index] = p4;
index++;
1
public void addName(String name, int Y, int y) (
aa
Apéndice A'
yLabel = new JLabel("Reng1on");
add(yLabe1);
node = new JList(n0deList);
I¡:
node.setSelectionMode(ListSelectionModel.SlNGLE-sELE
CTION);
node.setSelectedlndex(0);
JScrollPane nodeScrollPane = new
JScrollPane(node):
I/.
add(nodeScrollPane1:
xPosition = new JLisiixPositionList);
xPosition.setSelectionMode(LlstSelectionModel.
SINGLE-SELECTION):
xPosition.setSelectedlndex(0l:
JScrollPane xScrollPane = &J
JScrollPane(xPosition):
add(xScrol1Pane);
yPosition = new JList(yPos1tionList);
yPosition.setSelectionMode(ListSelectionM0del.
SINGLE-SELECTION);
yPosition.setSelectedIndex(0);
JScrollPane yScrollPane =new
JScrollPane(yP0sition);
add(yScr0llPane):
1)
draw = new Jüutton("Dibuja");
draw.setActionCommand(DRAW);
draw.addActionListener(this);
addidraw):
one = new JLabelrNodo 1");
add(one);
linkone = new JList(link0neList);
linkOne.setSelectionMode(ListSelectionModel.Sl
NGLE-SELECTION):
linkOne.setSelectedlndex(0); fl
JScrollPane oneScrollPane = new
JScrollPane(link0ne);
add(oneScr0llPane);
two = new JLabelrNodo 2");
add(two);
II
IinkTwo = new JList(linkTw0Listj;
linkTwo.setSelectionMode(ListSelectionModel.Sl
NGLE-SELECTION);
linkTwo.setSelectedlndex(0); ¡
iwoScrollPane = new JScrollPane(linkTw0);
add(twoScr0llPane);
iu
link = new JBuiton("Unii");
iink.setActionCommand(LlNK)
link.addActionListener(this);
add(link);
I,
stati = new Jüutton("lniciai");
start.setActionCommand(START):
start.addActionListener(this);
add(start);
Insets insets = getlnsetso;
nodeLabei.setüounds(l0 + insets.left, 10 +
insets.top.60, 20);
xLabel.setüounds(70 + insets.lefl, 10 +
insets.top,60. 20);
yLabel.selüounds(l30 + insels.left, 1O +
insets.top.60, 20);
nodeScrollPane.setüounds(l0 + insets.lefi, 40 +
insets.top.50, 80);
xScrollPane.setüounds(70 + insetdeft, 40 +
insets.top.50. 80):
#t.
yScrollPane.setüounds(130 + insets.len, 40 +
insets.top.50, 80);
1,
draw.setfiounds(l90 + insets.lefl, 50 + insets.top.75,
30);
one.setüounds(l0 + insets.left, 130 + insets.top,'lO,
20);
/I
:
!I
two.setBounds(90 + insets.left 130 + insets.top.70,
20);
oneScrollPane.setüounds(l0 + insets.left, 160 +
insets.top,50. 80);
twoScrollPane.setüounds(90 + insets.left. 160 +
insets.top.50, 80):
link.setüounds(170 + insets.left. 160 + insets.top.85,
~
30);
start.setüounds(l70 + insets.len, 200 + insets,top,85,
30);
inti, j;
for(i.0; ic4; lb+) (
for(j.0; j<4; j++) (
positionh][i] = null;
)
I
I
xPositionList.addElementr1");
xPosnionList.addElemenl("2");
xPositionList.addElement("3");
xPositionList.addElementr4);
yPositionList.addElementr1"):
yPositionList.addElement("2);
yPositionList.addElement("3");
yPositionList.addElementr4);
public void actionPerformed(ActionEvent e ) (
NetState netstate = new Netstate();
String command = e.getActionCommand();
String name = new String();
String addr = new String();
String first = new String();
String second = new String();
int x, y, x2. y2, a=O, b=O;
int size = 25;
inti, j;
Shape shape;
String newline = System.getPropettypw.separator");
if (command == DRAW) (
try (
i = node.getSelectedlndex();
name .= node.getSeiectedVaiue().toString():
x = xPosition.getSelectedIndex();
y = yPosition.getSelectedlndex();
if(position[y][x]==null) (
position[y][x]=name;
x=lO+(x'70);
y=10+(yf70);
NetworkAgentGUI.drawing.addNode(x, y, size);
x=x+7:
y = y + 20;
NetworkAgentGUI.drawing.addName(name, Y, y);
NetworkAgentGUI.drawing.renderShape();
nodeList.removeElemeniAt(i);
1
1
)catch (NullPointerException npe) ()
if (command == LINK) (
try (
first = linkOne.getSelectedValue().toString();
second = linkTwo.getSelectedValue().toString();
if(first.compareTo(second) != O) {
for(i.0; ic4; i++)
(
for(i=ü; jc4; I++)
(
if(position~](i]!= null) (
if(first.~ompareTo(position0l[il) == O) (
a=¡:
b=j'
1
1
1
89
I
Apéndice A
1
x = 1O + (a'70);
y = 10 + (b'70);
for(¡-0; ic4;'i++) (
for(i=o; jc4; j++) (
if(position0][i] I= null) {
if(second.compareTo(position~][i])==
a=¡;
b=j;
)
1
1
x2 = 10 + (a'70);
y2 = 10 + (b.70);
iflX > X2)
x2 = x2 + 25;
if(X c X2)
x = x + 25;
if(X == X2) (
x=x+13;
x2=x2+t3:
1
O
import com.sun.java.swing.';
o
import java.awt.';
import java.awt.event.';
O
/I Esta clase genera el panel para presentar los datos no
o
I/ graficamente, dado que no se logro imprimir los
o
Networl<AgentGUi.drawing.addLine(x,y, x2. y2);
Networl<AgentGUI.drawing.renderShape();
)catch (NullPointerException npe) ()
if (command == START) (
Networl<AgentGUl.selectionPanei.one.setTexi("Origen");
,
.
Networl<AgentGUl.selectionPanel.two.setText("Destino");
int fin = linkOneList.getSize();
for(i.0; icfin; i++)
{
if(netState.getLocalNameO.compareTo(link0neList.elemen
tAt(i).toString()) ! = O ) (
,
,
linkOneList.removeElementAt(i);
.
)
fin-;
fin = linkTwoList.getSize();
for(i.0; iciin: I++)(
.
if(netState.getLocaIName().compareTo(linkTwoList.eleBen
tAt(i).toString()) ==O) (
linkTwoList.removeElementAt(i);
I-;
1
fin--;
link.setText("Mandaf');
link.setActionCommand(SEND);
new Thread(new Networl<Agentlnput()).start();
//El hello representa una de las intenciones del Agente
Networl<AgentGUl.hello();
whiie(!netState.heiioDone()) ()
new Thread(new NetworkAgentOutput()).start();
11 Las siguientes dos llamadas tambien son intenciones,
una para medir
90
,.
o
'
.
1
import javax.swing.JPanel;
I
1
)
//import javax.swing:;
if& Y2)
y2 = y2 i25;
if(V c Y21
y = y + 25;
if(Y == y2) (
y = y + 13;
y 2 = y2 i13;
1
I1 el costo de la linea, el otro para mandar los paquetes de
estado
new Thread(new EchoTimer()).start();
new Thread(new LinkState()).start();
while(!netState.firstUpdate()) ()
)
if(command == SEND) (
try (
second = llnkTwo.getSelectedValue().toString();
NetworkAgentGUI.mandaFile(second);
)catch (NullPointerException npe) ()
il costos de cada linea en el dibujo
public class NoGraphPanel extends JPanel (
static JLabel titulo;
static JTextArea resultArea;
static JScroliPane resuiiScrollPane;
public NoGraphPanelO (
set Layout(nul1);
titulo =new JLabei("Resu1tados");
add(titul0);
resuRArea = new JTexiAreaO;
resultArea.setEditable(false);
resultScrollPane = new JScrollPane(resu1tArea);
resultScrollPane.setVerticalScrollBarPoiicy(JScrollPane.VE
RTICAL-SCROLLBAR-ALWAYS);
resultScrollPane.setPreferredSize(newDimension(400,
200));
add(resultScro1lPane);
resultArea .setTexi();
Insets insets = getlnsets();
titulo.setBounds(250 + insets.lefl, 10 + insets.top,lOO,
201'
-~,,
resultScrollPane.setBounds(lO0 + insets.iefl. 40 +
insets.top,400. 200);
public void updateResult() (,
NetState netstate = new Netstate();
inti, j;
String Salida = new String();
String source = new String();
String target = new String();
String newline =new
String(System.getProperly("line,sFparator));
String tab = new String("\t");
if(netState.getAIiMax() > O) (
salida =salida +tab;
fOr(i=O; icnetState.getAIIMax(); i++)
salida =salida + netState.getAIIName(i) +tab;
salida = salida + newline;
for(i=O; icnetState.getAIIMax(); i++)
(
source = netState.getAIIName(i):
Apéndice A
+tab;
1
Salida = salida +source + tab;
fOr(jZ0; jcnetState.getAiIMax(); j++) (
target = netState.getAIName(i):
salida = salida + ietState.get%e(source,
)
salida =salida + newiine;
resultArea.setText(salida);
public void windowCiosing(WindowEvent e) (
System.exit(0);
target)
/I
o
//import javax.swing.';
o
o
I
I\.
I,,
"
1
import javax.swing.JPane1;
import com.sun.java.swing.':
I
frame.getContentPane()add(new
NetworkAgentGUI(),BorderLayout.CENTER);
frame.setSize(600, 320);
frame.setVisible(true);
I/ Se inicia el hilo que presenta los resultados no graficos
new Thread(new ResultUpdate()).start();
I1
import java.awt.':
o
import java.awt.event.';
o
l
11 Esta clase es el archivo ejecutable, el cual crea la
I1 interfaz grafica e inicializa al agente
it Esta fUnCiOn genera el archivo de pruebas a mandar
public Static void wiReFile() (
inti, j;
try (
File outputFile = new File('Yest.txt");
Filewriter out = new FiieWriter(outputFi1e);
String testString =new String();
int c;
for(j=O; j400; j++) (
teststring = "Archivo de pruebas " + j + "\n"
for(i=O; ictestString.length(); i++) (
c = (int)testString.charAt(i);
out.write(c);
I
public class NetworkAgentGUI extends JPanel (
static LocallnfoPanel locallnfo;
static NeighborlnfoPanel neighborlnfo;
static AlllnfoPanel alllnfo;
static SelectionPanel selectionPanel; ' ,
static Shapepanel drawing;
static NoGraphPanel noGraph;
static Pathpanel pathpanel;
il
public NetworkAgentGUIO (
11 Se genera un panel con pestañas
JTabbedPane tabbedpane = new
JTabbedPaneO;
locallnfo = new LocalinfoPanel():
tabbedPane.addTab("Local", locallnfá);
tabbedPane.setSelectedlndex(0);
neighborlnfo = new NeighborlnfoPanel();
tabbedPane.addTab("Vecinos", neighborlnfo);
alllnfo = new AllinfoPanel();
tabbedPane.addTab("Red, aillnfo); '1
Component netinfo = netinfopanel();
tabbedPane.addTab("Simulacion", netlnfo);
noGraph = new NoGraphPanel();
tabbedPane.addTab("Resultados". noGraph):
pathpanel = new Pathpanel();
tabbedPane.addTab("Trayectorias", pathpanel);
setLayout(new GridLayout(1,I));
add(tabbedPane):
I/
l.
protected Component netlnfoPanel() (
JPanel panel = new JPanelO;
panel.setLayout(new GridLayout(l,Z))f
Comoonent selection:
seleCt on = new select onpanelo
pane a00,s.e ecr on).
drarving = new ShapePanelg
panel.add(drawing);
,I/
return panel;
)
public static void main(String[] args) (
writefile();
JFrame frame = new JFrame("NetworkAgenY');
frame.addWindowListener(new WindowAdapter() (
)
out.close();
!
catch (IOException ioe) (
System.err.println("Enor en la creacion del archivo
de prueba");
System.exit(9);
I
I1 Este metodo manda los paquetes HELLO a cada vecino
public static void hello0 (
NetState netstate = new Netstate();
int a;
String msg =new String();
String target = new String();
netState.freeAll();
for(a.0; acnetState.getNeighborMax(); a++)(
msg ='"A-HELLO;
target=netState.getNeighborAddr(a);
new Thread(new AgentOutPort(target, msg)).start();
1
I
11 Este metodo manda el archivo de pruebas
public Static void mandaFile(String target) (
NetState netstate = new Netstate();
Shortpath shortpath = new Shortpatho;
String msg = new String();
String mensaje = new String();
String tmp = new String();
String[] path = new stringpa];
String local = new String();
String printout = new String();
intj;
local = netState.getLocalName();
try (
FileReader input = new FileReader('Yest.txt");
BufferedReader in = new BufferedReader(input);
msg = in.readLine();
11 Se genera el paquete, con el formato
/I localldestinolpath(separado por comas),!datos
while(msg !=null) (
mensaje = new String();
path = shortPath.getPath(loca1,target);
,
il
I1
j=o'
printout = "Mandando a " + target + " via: ";
do (
91
Apéndice A
printout = printout + pathD] + " ";
mensaje = mensaje + pathu] + ",";
j++;
)while (pathu] I= null);
printout = printout + "W;
PathPanel.pathArea.append(printout);
msg = mensaje +"I" + msg;
msg = local + "I" +target + "I"+ msg;
netState.queue[netState.getNeighborlndex(path[l ])].addEl
ement(msg);
msg = in.readLine():
)
input.close();
)
catch (IOException ioe) (
System.err.println("l0Exception error\n");
1
1
1
//import javax.swing.';
U
import com.sun.java.swing.*;
G
import javax.swing.JPane1;
U
import java.awt:;
o
import java.awt.event:;
U
/I Esta clase genera el panel donde se agrega la
informacion
O
//sobre el nodo local
G
public class LocalinfoPanel extends JPanel implements
ActionListener (
static Rnal String ENTER-LOCAL =
"enter-local":
static final String VIEW-LOCAL = "view-local";
static final String CLEAR-LOCAL = "clear-local";
static JLabel IocalNameLabel;
static JLabel IocalAddrLabel;
Static JEuiton accept-local;
static JEutton view-local;
static JEuiion clear-local;
static JTextField IocalNameFieid;
static JTextField IocalAddrField;
public LocalinfoPanel() (
setLayout(null);
IocalNameLabel = new
JLabelrNombre");
addilocalNameLabeli:
IocalNameField = new JTextField(l5),
add(localNameField),
IocalAddrLabel = new
JLabeir Direccion");
add(localAddrL%bel);
IocalAddrField = new JTextField(l5);
add(l0calAddrField);
accept-local = new JüuttonrAceptar);
accept-locai.setActionCommand(ENTER-LOCA
LJ;
accept~iocai.addActionListener(this);
add(accept-local ):
view-local = new
Jüunon("Despiegar);
92
view-iocai.setActionCommand(ViEW-LOCAL);
view iocal.addActionListeneríthisi:
add(view-local ),
clear-local = new Jñuiton("Limpiar),
clear-locai.setActionCommand(CLEAR_ LOCAL)
clear-local.addActionListener(this):
add(clear-local);
Insets insets = getlnsets();
IocalNameLabel.SetEounds(l0 + insets.left 10 +
insets.top,
100, 20);
localNameField.setEoundsil50 + 'insets.leñ. 10 4
insets.top,
200, 20);
localAddrLabel.setüounds(l0 + insets.lefl. 50 + insets.top,
100, 20);
localAddrField.setüounds(l50 + insets.left. 50
+ insets.top,
200, 20);
accept-local.setñounds(25 + insets.left 90 + insets.top.
100, 20);
view-local.setEounds(145 + insets.lefi, 90 +
insets.top,
100, 20);
clear-local.setEounds(265 +
insets.leñ, 90 + insets.top,
100, 20); } public void
actionPerformed(Acti0nEvent e) {
NeiState
netstate = new Netstate():
String command =
e.getActionCommand();
String,name = new String();
String addr = new String();
String newline =
System.getProperty("line.separator);
if (command ==
CLEAR-LOCAL) (
localNameField.setText();
localAddrField.setTextYi:
i if [command ==
VIEW-LOCAL) (
localNameField.setTexi(netState.getLocalName()):
localAddrField.setText(netState.getLocalAddr());
}
if
(command == ENTER-LOCAL) {
try (
name =
iocalNameField.getTexi():
addr =
localAddrFieid.getText();
if(name.length() c 1 11
name.compareTo("0K) = = O
II
name.compareTo("ERR0R) = = O 11
addr.lengih() 1 11 addr.compareTo('OK) = = O
11 addr.compareTorERROR) ==O) (
localNameField.setText~ERROR);
localAddrField.setText('ERROR);
) else (
iocalNameField.setTextt("OK");
localAddrField.setText("OK);
netState.local(name. addr);
AlllnfoPanel.allArea.append(name + newline);
SelectionPanei.nodeList.addEiement(name);
SelectionPanel.linkOneList.addElement(name);
SelectionPanel.linkTwoList.addElement(name);
)
}catch (NullPointerException npe) (
iocalNameField.setTextrERROR NPE);
localAddrField.setTextrERROR NPE);
]
) ))
//import javax.swing:;
o
import javax.swing.JPane1;
a
import com.sun.java.swing.';
o
import java.awt.';
o
import java.awt.event.';
o
I/ Esta clase genera el panel de informacion sobre los
vecinos
public class NeighborlnfoPanel extends JPanel implements
ActionListener i
static'finai string ENTER-NEIGHBOR =
"enter-neighbor;
Static m a l String CCEAR NEIGHBOR =
"clear-neighbor;
Static JLabel neighborAddrLabel;
static JEunon accept-neighbor;
-
Apéndice A
static JButton clear-neighbor;)
Static JTextField neighborAddrField;
Static JTexiArea neighborArea;
static JScrollPane neighborScrollPane;
public NeighborlnfoPanel() [ I(!
~etLavoutlnulli:
,,
neighborAddrLabei = new
JLabel("Direccion"),
add(neighborAddrLabe1)
neighborAddrField ='new
JTextFieid(15).
add(neighb0rAddrField).
accept-neighbor = new
JButton("Aceptar),
I
I
accept-neighbor.setActionCommand(ENTER-N
EIGHBOR):
accept-neighbor.addActionListener(this):
add(accept-neighbor );
clear-neighbor = new
JButton("Limpiar");
GHBOR);
il
clear-neighbor.setActionCommand(CLEAR_"l
clear-neighbor.addActionListener(this);
add(ciear-neighbor);
neighborArea = new JTextAreaO;
neighborArea.setEddable(false);
neighborScrollPane = new,
JScrollPane(neighb0rArea);
neighborScrollPane.setVerticalScrollBarPolicy(
SI;
JScrollPane.VERTICAL-SCROLLBAR-ALWAY
neighborScrollPane.setPreferredSize(new
Dimension(200, 60));
add(neighborScr0iiPane);
neighborArea.setText("");
Insets insets = getlnsetso;
if(addr.length() < 1 11
addr.compareTo("OlC') == O11 addr.compareTo("ERR0R)
==o) (
neighborAddrField.setTextcERR0R);
) else (
if(netState.getNeighborindexByAddr(addr)
== -1) [
neighborAddrField.setTexicOK');
neighborArea.append(addr + newline);
netState.addNeighbor(addr);
) else (
neighborAddrField.setText("REPETlD0);
)
)
)catch (NuliPointerException npe) (
neighborAddrFieid.setText("ERROR NPE);
1
)
o
import java.io.';
O
O
I/ Esta clase abre el lector y el escritor para los sockets
o
o
public class SocketUtil(
o
O
public static BufferedReader getBufferedReader
u
(Sockets) throws IOException {
return(new BufferedReadN
neiahborAddrLabel.setBoundsll0 +
~~
)
import java.net.';
insets.left 10 + insets.tOp,
100,20);
neighborAddrField.setBounds(150 +
insets.ieli, 10 + insets.top,
200, 20);
acceDt neiqhbor.setBounds(25
+
insets.leii, 50 + insets.top,
100, 20);
clear-neighbor.setBounds(265+
insets.leii. 50 + insets.top,
100,20);
neighborScroliPane.setBounds(95 +
insets.left 130 + insets.top,
200,ao);
~~~~
~~
new InputStreamReader(
.-
s.getlnputStream()))),
)
public static Printwider getPrintWriter(S0cket
1
public void actionPerformed(ActionEvent e) (
NetState netstate = new NetStateO:
String command =
,I
e.getActionCommand();
String name = new String();
String addr = new String();
String newline =
System.getProperty("line.separator");
if (command == CLEAR-NEIGHBOR) (
neighborAddrField.setText();
1
11
if (command == ENTER-NEIGHBOR)
try (
addr = neighborAddrField.getText();
''
5)
throws IOException (
return(new PrintWriter(s.getOutputStream(). true));
)
import java.lang.';
O
import java.io::
o
93
Apéndice A
import java uti1 *,
max = netState.getAIIMax0;
U
for(¡=(]; iemax; I++)(
s = netState.getAIIName(i);
o
for(j=O; jcmax; j++) (
11 Esta clase encuentra la ruta mas corta entre dos
servidores
t = netState.getniiName(j);
O
delays[i][i] = netState.getTime(s, 1);
11 utilizando el algoritmo Dqkstra
O
1
O
public class ShortPath (
1
protected int[] hosts = new int[30];
protected String[] names =new String[30];
I1 Este metodo encuentra la ruta, utilizando el algoritmo
protected int[]U delays = new int[30][30];
11 del libro de Tannenbaum. pero escrito en java
protected void findPath(int s, int t) {
il Este metodo es el que funciona como interfaz de la clase
NetState netstate = new Netstate();
I1 para ser accezado por otros objetos
int[] predecessor = new int[8];
public String[] getPath(String src. String tgt) {
int[] length = new int[8]:
NetState netstate = new Netstate();
boolean[] label = new boolean[ü];
int s, t;
final int INF = 100000000;
this.update();
inti, k. min;
for@ = O; sc30; si+)
names[s] = null;
int n=netState.getAIIMax()+1 ;
s = netState.getAlllndex(src);
t = netState.geiAlllndex(tgt);
for (¡=O;
i<n; i++)(
this.findPath(s, 1);
predecessor[i]=-I ;
this.convert();
length[i]=INF;
return names;
label[i]=false;
1
I
1
iength[t]=o;
11 Este metodo obtiene la tabla de estado mas reciente
protected void update() (
label[t]=true;
k=t;
NetState netstate = new Netstate();
int max. i,j;
Strings = new String();
String t = new String();
do (
for (¡=O;icn; ¡++)
if (delays[kl[i]!=O 88 iabel[i]==faise)(
if (length[k]
94
+
delays[k][i]clength[i])(
Apéndice A
predecessor(i]=k;
length[i]=length[k] +
delays[k](i];
o
/I Esta clase actualiza los resultados no graficos
o
)
1
o
k=O;
public class ResuitUpdate implements Runnable (
private final long PERIODO = 100001;
min= INF;
for(i=O; i<n; i++)
private static long IastTime;
li
if (label[¡] == false 88 length[¡] < min)
min=lenglh[i];
public void run() (
IastTime = Syjtem.currentTimeMiilis();
k=p
whiie(true) (
I
if(lastTime+PERIODO < System.currentTimeMillis()){
label[k]=true;
NetworkAgentGUl.noGraph.updateResult();
)while (k!=s);
IastTime = System.currentTimeMiIlis();
k=s;
for(¡-0; ¡<IO;
I++)
hosts[¡] = -1 ;
,
i=0;
do I
II
hosts[i++]=k;
k=predecessor[k];
)while (kr=O);
import java.net.';
o
import java.io:;
o
import java.util:;
o
protected void convert0 (
NetState netstale = new NetStateO;
inti;
¡=O;
do (
names[i] = netState.getAIIName(hosts[i++]);
O
I/ Esta clase maneja 10s hilos de los clientes, que
funcionan
11 como salidas de io5 agentes
public class NetworkAgentOutput implements Runnable(
boolean endFlag =false;
)while (hosts[i]>=O);
1
import java.lang::
o
public void forward() (
NetState netstate = new Netstate();
inti = O;
95
Apéndice A
String tgt = new String().
Serversocket listener = null:
String msg = new string(),
NetState netstate = new NetStateO;
try (
listener = new ServerSocket(5555);
for(i=O icnetstate getNeighborMax(). I++) (
whiie(irue) (
if(netState.queue[i].isEmpty() == false) (
,
,
.
tgt = netState.getNeighborName(i);
msg = netState.queue[i].firstEiement().toString();
11 Por cada vecino se abre un servidor
netState.queue[i].removeElementAt(O);
if(msg.compareTorNA-HELLO) != O)
. .
while (netState.getLine(tgt) ==false) ()
new Thread(new AgentOutPort(tgt. msg)).start();
. .. .
if(netState.getCon() c netState.getNeighborMax()) (
netState.incCon();
new Thread(new
AgentlnPort(listener.accept())).start();
I
if(endFlag)
if(endFiag)
break;
break;
iistener.close();
) while(true);
)catch (IOException ioe) (
System.out.printin~lOException: + ioe);
'I
ioe.printStackTrace();
public void run() (
)
this.fonvard():
)
1
)
public void run() (
import java.net.*:
this.listen();
import java.io:;
import java.util:;
)
I/ Esta clase maneja los hilos de los servidores que
funcionan
11 como entradas del Agente
import java.iang:;
o
import java.net.';
import java.io.';
public class NetworkAgentlnput implements Runnabie(
boolean endFlag =false,
public void listen() (
96
import java.util::
public class NetworkAgent (
public static void main(String[] args) (
.
Apéndice A,
writeFile();
try (
localState();
System.out.println("\nConfiguracion del nodo locar);
pantallaMenu0;
System.out.printin("Nombre");
name = stdln.readLine();
System.out.println("Direccion");
public static void witeFile() (
addr = stdln.readLine();
inti, j:
netState.local(name, addr):
)catch (IOException ioe) (
try (
File outputFile = new File('test.txt");
System,err.printin("Error en la entrada de datos");
Filewriter out = new FileWriter(0utputFiie);
System.exit(1):
I
String teststring = new String();
1
int c;
II
public static void pantallaMenu0 (
for(j=O; jci00; j++) (
teststring = '"Archivo de pruebas '' + j + "\n";
String select = new string();
for(i=O; i<testString.length(); i++) (
BufferedReader stdln =
new BufferedReader(new
InputStreamReader(System.in));
c = (int)testString.charAt(i);
out.wriie(c);
I
try (
1
System.out.println("\n[N]odos");
out.close();
System.out.println("[Tjopologia"):
)catch (IOException ioe) (
System.out.println("[S]ali~);
System.err.println("Error en la creacion del archivo
de prueba");
select = stdhreadLine0;
)catch (IOException ioe) (
System.exit(9);
System.err.println("Error de entrada de datos\n"):
System.exit(1):
I
1
if(select.compareTo("N") == O)
public static void localState() {
pantallaVecinos0;
NetState netstate = new NetStateO;
Slring name = new String();
String addr = new String();
BufferedReader stdl? =
new BufferedReader(new
InputStreamReader(System.in));
I/
else if(select.compareTo("T") == O)
pantallaTopologia();
else if(select.compareTo("S) == O)
I1
System.exit(0);
else
97
Apéndice A
System.err.printlnrOpcion no valida");
name = stdln.readLine(); .
pantallaMenu0:
System.out.println("Nombrenuevo");
newName = stdln.readtine():
System.out.println("Direccion nueva");
newAddr = stdln.readLine();
public static void pantallaVecinos() (
NetState netstate = new Netstate();
netState.modNeighbor(name. newName,
newAddr);
String name = new String();
String addr = new String();
)else if(select.compareTo("S) ==O) (
String select = new String();
BufferedReader stdln =
) else (
new BufferedReader(new
InputStreamReader(System.in));
System.err.println("0pcion no validaw);
pantallaVecinos0;
1
try (
System.out.println("Vecinos");
System.out.printlnr[C]reaf);
pantallaMenu0;
System.out.println("[E]Iiminaf);
)catch (IOException ioe) (
System.out.println("[M]odificar);
System.err.printlnrError de entrada de datos\n");
System.out.println~[S]alif);
System.exit(1);
select = stdln.readLine();
1
if(seiect.compareTorC) == O) (
Cystem.out. println("Direccion");
public static void pantailaTopologia() (
addr = stdln.readLine();
String select = new String(),
netState.addNeighbor(addr);
BufferedReader stdln =
) else if(select.compareTorE) = = O ) (
new BufferedReader(new
InputStreamReader(System in)),
System.out.pnntln("Nombre");
name = stdln.readLine(); . ., .
.
netState.delNeighbor(name);
try (
System.out.println("Topoiogia");
System.out.printlnr[M]odificar");
) else if(select.compareTo("M") ==O) (
String newName = new String();
String newAddr = new String();
System.out.pnntln~Nombre"):
System.out.println("[l]niciaf);
System.out.println("[S]alif);
select = stdin.readLine();
if (selecl.compareTorM) == o) (
pantallaNodos();
98
.
Apéndice A
)else if (select.compareTo("") == O) (
)else if(select.cornpareTorE) ==O) (
inicio();
=:,O) {
) else if (select.cornpareTorS)
System.out.println("Nombre");
name = stdln.readLine0;
pantallaMenu();
netState.delAll(narne);
) else (
,I
Systern.err.println("0pcion no validah");
)else if(select.compareTorM) ==O) (
pantallaTopologia0;
String newName = new String():
I!
String newAddr = new String();
)catch (IOException ioe) (
System.err.printlnrError de entraüa de datosb");
System.out.printin("Nombre");
system.exit(1);
name = stdln.readLine();
1
System.out.printlnC"ambre nuevo");
)
newNarne = stdln.readLine();
II
netState.modAll(name, newName):
public static void pantallaNodos() ( I1
NetState netstate = new Netstate():
)else if(select.compareTorS) ==O) (
String name = new String();
String addr = new String();
) else (
String select = new String();
System.en.printlnrOpcion no validah");
BufferedReader stdln =
pantaliaNodos();
new BufferedReader(new
InpuiStreamReader(System.in));
.
)
I1
pantallaTopologia();
)catch (IOException ioe) (
try (
II
Systeni.oui.printin("Nodos");
System.err.printlnrError de entrada de datos\n");
System.exit(1);
Systero.out.printlnr[C]reaf);
System.out.println~[E]liminar);il
Syster~l.out.println~[M]odificaf);
Systern.out.printlnr[S]alif);
select = stdln.readLine();
:¡I
public static void inicio() (
NetState netstate = new Netstate();
¡I
if(select.compareTorC) == O) {
Syst~?m.out.println~Nombre");
name = stdln.readLine();
)
int a;
boolean flag = false;
String select = new String();
1)
netState.addAll(narne);
I!
BufferedReader stdln =
99
Apéndice A
I
new BufferedReader(new
lnputStreamReader(System.in));
new Thread(new NetworkAgentlnput()).start():
11 El hello representa una, de las intenciones del Agente
System.exit(0);
1
protected static void hello() (
NetState netstate = new Netstate();
hello();
int a;
while(!netState.helloDone()) {)
String msg = new String();
new Thread(new NeiworhAgentOutput()).start();
String target = new String();
//Las siguientes dos llamadas tambien son intenciones,
una para medir
netState.freeAllO:
11 el costo de la linea, el otro para mandar los paquetes de
estado
new Thread(new EchoTimerO) start(),
for(a=O: a<netState.getNeighborMax(); a++)(
new Thread(new Linkstate()) start().
whi!e(!netState.firstüpdate())
'I
msg ='"A-HELLO;
O
target=netState.getNeighborAddr(a);
new Thread(new AgentOutPort(target, msg)).start();
do (
1
try (
System.out.println("Simulacion");
system.out.printin('[M]anda~);
System.out.println("[S]ali~);
select = stdln.readLine0;
if (select,compareTorM) ==O) (
String name = new String();
System.out.printin("Destin0");
name = stdln.readLine0:
mandaFile(name):
)else if(select.compareTo('S) == O)
1
public static void mandaFile(String target) {
NetState netstate = new NetStateO;
,
Shortpath shortpath = new Shortpatho;
String msg = new String();
String mensaje = new StringO;
String tmp = new String();
String[] path = new String[30];
String local = new StringO;
int j;
flag =true;
else
System err println("0pcion no valida\n"),
)catch (IOException ioe) {
System err println('Error de entrada de datosin"),
System.exit(1);
1
}while (iflag);
1O0
local = netstate getLocalName0,
try i
FileReader input = new FileReaderrtest t c ) ,
BufferedReader in
= new BufferedReader(1nput).
msg = in readline().
.
Apéndice A
protected static String IocaiAddr = new String();
while(msg != null) (
protected static int iocalsec = O;
mensaje = new String();
path = shortPath.getPath(locai, target);
j = O;
ii.
protected static String[] neighborName = new String[30]:
protected static String[] neighborAddr = new String[301;
do (
mensaje = mensaje + path11 + ",";
public static Vector[] queue = new Vector[30];
jtt;
protected static booleanu IineFree = new boolean[30];
)while (path11 != null);
protected static long[] startTime = new iong[30];
msg = mensaje + "!" + msg;
protected static long[] endTime = new iong[30];
msg = local + "!" +target + ''Y + ,msg;
protected Static int neighborlndex = O;
netState.queue[netState.getNeighborlndex(path[i])l.addEl
ement(msg);
msg = in.readLine();
I
protected static int updated = 0 ;
protected static boolean first = false;
protected static int ackHello = O;
1
input.close();
protected static String[] allName = new String[30];
)catch (IOException ioe) {
protected static int[] secuencia = new int[30];
System.en.println("l0Exception error\n");
protected Static int allindex = O;
protected static int[][l costs = new int[30][30];
1
protected static int c o n k e d = o;
import java.iang.';
o
import java.io:;
ii Interfaces para accesar y modificar los conocimientos
o
public int getLocalSec()(
import java.iitil:;
iocalSec = IocalSec + 1:
O
return IocalSec;
0
it Esta clase tiene los conocimientos del Agente
0
Public Void setSec(int sec, String name) (
O
int index;
public class NetState {
o
)
.I
index = findNode(name. allName, alllndeu);
o
/I Conocimientos
G
if(index != -1)
secuencia[index] = sect
protected static String IocalName =new String();
return;
101
Apéndice A
public int getCec(String name) {
public int getupdatedo (
int index:
return updated;
I
index = findNode(name. allName, alllndex),
if(index
I= -i)
public boolean getLine(Ctring name) (
int index;
return secuenc~a[index].
return O;
index = findNode(name, neighborName.
neighborlndex),
1
if(lineFree(index] ==true) (
public void updatedOnce0 (
IineFree[index] =false,
first = true;
return true,
1
) else (
return false,
public boolean firstupdate0 (
return first;
1
1
I
public void freeLine(String name) (
public void incHello0 (
int index;
ackHello = ackHello +'I;
1
index = findNode(name, neighborName.
neighborlndex);
if(index != -1)
public boolean hellODone0 (
lineFree[index] =true:
if(ackHell0 >= getNeighborMax0)
return true,
1
return false;
public void freenil() (
1
int i;
for(i=O; ic30; I++)
public void resetupdated0 (
lineFree[i] = true;
updated = O ;
1
1
public void incUpdated0 (
public void setCon(int c) (
updated++;
1o2
conUsed = c;
Apéndice A
public boolean end(int index) (
if(endTime[index] != 01)
public int getcon() (
return true;
return conused;
1
return false;
)
public void incCon() (
public int getDelay(int index) (
conusedi+;
I
long result;
public void decCon() (
4
result = endTime(index1- startTirne[index];
!¡
return (intpesult;
conllsed-;
1
I
public void stopTimer(int index) (
public void local(String name, String áddr) (
endTime[index] = System.currentTimeMillis();
IocalName = name;
1
IocalAddr = addr;
I1
addAll(name);
public void addNeighbor(String addr) (
1
if(findNode(addr. neighborAddr, neighborlndex) == -1) (
neighborAddr[neighborlndex] = addr;
public String getLocalName() (
queue[neighborlndex] = new Vector();
return IocalName;
neighborlndex++;
1
11
)
11
.,
public String getLocalAddr() {
return IocalAddr;
(
)
public void addNeighborName(String name, String addr)
int index = O:
public void resetEnd(int index) (
index = findNode(addr, neighborAddr, neighborlndex);
endTimf[index] = 01,
)
if(index != -1)
11
public void startTimer(int index) (
neighborName[index] = name;
1
'I
startTime[index] = System.currentTimeMiilis();
1
public void de¡Neighbor(String name) {
f 03
Aoéndice A
int index = O;
return index;
1
index = findNode(name, neighborName,
neighborindex);
if(index != -1) (
if(index != neighborlndex
public int getNeighborlndexByAddr(String a) (
int index = -1;
- 1) (
index = findNode(a, neighborAddr. neighborlndex);
neighborName[index] =
neighborNarne[neighborlndex - 11;
neighborAddr[index] = neighborAddr[neighborlndex
- 11;
I
neighborName[neighborlndex - I ] =null,
return index;
)
public String getNeighborName(int index) (
if(index c neighborindex && index >= O )
neighborAddr[neighborindex - I ] = null,
return neighborName[index]:
neighborlndex--;
else
1
return null;
)
public void modNeighbor(String oldName.
String name, String addr) (
public String getNeighborAddr(int index) (
if(index c neighborlndex &8 index >=O)
return neighborAddr[index];
int index = O.
index = findNode(oldName, neighborName,
neighborlndex).
if(index
else
return null;
1
I= -i)
(
neighborName[index] = name,
neighborAddr[index] = addr.
)
public void addAIi(String name) {
if(findNode(name, allName, alllndex) == -1) (
ailName[alllndex] =name;
aillndexii;
public in1 getNeighborMax0 (
return neighborlndex,
public void delAII(String name) (
int index = O;
public int getNeighborlndex(String n) (
int index = -1,
index = findNode(name, allName. alllndex);
index = findNode(n, neighborName, neighborlndex),
if(index i=-1) (
104
Apéndice A
¡((index != neighborlndex - 1 ) {
allName[index] = allName[alllndqx
- I];
public void updateTime(String srcName, String tgtName,
int delay) {
)
allName[alllndex
- I]= null;
int src = O;
I1
int tgt = O;
alllndex--;
1
.,
)
src = findNode(srcName, allName, alllndex);
I!
tgt = findNode(tgtName, allName, alllndex);
¡I
public void modAll(String oldName,
costs[src][tgt] =delay;
String name) {
1
int index = O:
public int getTime(String srcName, String tgtName) {
int src = O;
index = findNode(oldName, allName, alllndex);
int tgt = O;
if(index I=-1) {
allName[index] =name;
1
src = findNode(srcNarne. allName, alilndex);
ik
tgt = findNode(tgtName, aliName, alllndex);
1
return costs[src][tgt];
public int getAIIMax() {
return alllndex;
)
public void print() (
int I,j;
public int getAiiindex(String n) (
for(i=O; icalllndex: I++){
II
int index = -1;
for(j=O; jcalilndex; j++) (
index = lindNode(n, allName. alllndex);
System.out.print(costs[i]tj] + " ");
return index;
System.out.pnnt("\n");
public String getAIIName(int index) (
11
if(index alllndex && index >= O)
System.out.print("W);
return allName[index];
else
return null;
.I
(
protected int findNode(Str1ng name, String lista[]. int last)
int ¡=o;
Apéndice A
boolean flag =false;
private void sendstate() (
while (¡clast && !flag) (
if(lista[i].compareTo(name) == O)
flag =true;
else
i++;
NetState netstate = new Netstate();
ShoriPath shortpath = new Shortpath():
int iJ;
String msg =new String();
String mensaje =new String();
I
String host = new String();
if (Iflag)
String loca! = new String();
[=.l.
return i;
String[] path = new String[30];
int delay.= O;
I
local = netState.getLocalName();
1
import java.lang.';
o
11 Se genera el paquete de estado
for(i=O; icnetState.getNeighborMax(); i++)(
o
host = netState.getNeighborName(1);
I1 Esta clase manda la tabla de estado de las lineas a
todos
delay = netState.getTime(loca1,host);
O
msg = host + "," + delay + '";' + msg;
I/ los nodos a traves de inundacion
)
0
public class LinkState implements Runnable (
o
O
msg = '"!NA-TABLE!" + netState.getLocalSec() + "!" +
msg;
for(i=O; icnetState.getNeighborMax(); i++)
(
mensaje = new string();
private void checkUpdatedO (
NetState netstate = new Netstate();
while(true) (
if(netState.getUpdated() >=
netState.getNeighborMax0) {
sendstate();
host = netState.getNeighborName(i);
path = shortPath.getPath(locai, host);
j
= o;
do (
mensaje = mensaje + patho] + ",";
j++;
netState.resetUpdated();
}while (pathlj] !=null);
netState.updatedOnce();
mensaje = local + "!" + host + "I"
+
mensaje + msg;
>
1
I
106
I1 Se encola el paquete
netState.queue[netState.getNeighborlndex(path[l])].addEl
ApéndiceA
~
for(a.0;
ement(mensa1e).
a<netState.getNeighborMaxO; a++)
new Thread(new Echo(aj).stait();
)
IastTime = System.currentTimeMiilis();
netstate resetupdatedo,
netState.print();
netstate print(),
1
I
I
public void run() (
)
>
thischeckUpdated0;
1
I
I
import java.lang.';
import lava iang I ,
o
o
o
U
/I Esta clase cuenta cada cuanto tiempo se debe medir el
costo de
o
I1 Esta clase manda un ECHO para medir el costo de la
linea,
I
11 en milisegundos
/I las hneas
o
public class Echo implements Runnable (
o
I
public class EchoTimer implements Runnabie (
II
private final long PERIODO = 1200001;
int index:
public Echo(int a) (
private static long IastTime;
this.index = a :
1
public void run() (
NetState netstate = new Netstate();
public static void echo(int index) (
NetState netstate = new Netstate();
int a;
!I
11 Se mide el costo ai iniciar el agente
String msg =new String();
String target = new String();
IastTime = System.currentTimeMillis() - PERIODO;
String IocalName = new String():
while(tNe) (
int delay;
boolean flag =false;
I1 Si ya pasc el periodo marcado de tiempo
if(iast1 imeiPERlOD0 c Syslem.currentTimeMiilis())(
long startTime = 01;
final long PERiODO = 1100001;
netState.resetUpdated();
11 Se forma el paquete
11 Se inicia un hilo para cada linea
,,
IocalName = netState.getLocalName();
1'07
Aoéndice A
target = netstate getNeighborName(index),
msg = "NA-ECHO.
import java.io.';
O
msg = IocaiName + '"I" +target + "I" + iocalName + ";' +
target + "," + "I.. + msg,
netstate resetEnd(index).
import java.util.';
o
O
//Esta clase maneja el servidor que funciona como
entrada del agente
o
I/ Se inicia el contador
netState.startTimer(index);
11 Se encola el paquete
netState.queue[index].addElement(msg);
startTime = System.currentTimeMillis();
whiie(netState.end(index) == false) (
if(startTimeiPERIOD0 <=
System.cunentTimeMillis()) (
/I Corre en un hilos para que se pueda aceptar mas de una
/I conexion a la vez
public class AgentlnPort implements Runnable (
private Socket server = null;
public AgentlnPort(S0cket server) (
flag =true;
this.seNer = SeNer;
break;
1
,
,
1
1
protected void handieConnectionServer() (
I1 Si el paquete regreso, se pone el resultado obtenido
if(fiag == false)
delay=netState.getDelay(index);
NetState netstate =new Netstate();
int nag = O, i, j;
String msg =new String();
11 Si el paquete no regreso en 110000 millisegundo, se le
String input = new String();
/I Done un costo a la linea de 1000000 miiiisegundos
String nextHost = new String();
else
int index = O,
delay=lOOOOOO,
netstate updateTime(l0calName. target, delay),
netstate incUpdated0,
1
I/ Se genera un lector y un escritor para mandar paquetes
por el
11 socket
try (
public void run() (
this.echo(index);
1
1
BufferedReader in =
socketUtii.getüufferedReader(seNer);
PrintWriter out =
SocketUtil.getPrintWriter(server):
import lava net *.
o
108
11 Se lee el paquete que se mando
Apéndice A
else if(flag == 40) (
input = in.readLine0:
out.println("NA-RETABLEAGAIN);
,
)
I1 Se interpreta el paquete para tomar la acclon apropiada
flag = interpret(input).
/I No se pudo identificar el paquete, existio un error
else (
11 Es un paquete de datos dirigido a este servido1
out.println("Erro?);
if(flag == O) (
out.println("Acknowledge");
I1
I1 Se sierra la conexion
I1 Es un paquete de datos dirigido a otro servido
server.ciose();
else if(flag == 1) (
nextHost = getNext(input);
I/ Se decrementa el contador de conexiones usadas
index = netState.getNeighborlndex(nextHost);
netState.decCon(),
i
netState.queue[index].addElement(input);
'?
I/ Es un paquete de control HELLO
.il
1 else if(flag == 2) (
out.println("NA-REHELLO!"
netState.getLocalName());
1catch (IOException ioe) (
I¡
out.println('Acknowledge");
ii
+
'
)
1
I1 Este metodo descompone el paquete e identifica que
tipo de
I1 paquete es
protected int interpret(String mensaje) (
/I ES un paqdete de control ECHO
NetState netstate = new Netstate();
else ififlag == 3) {
out.~!rintln("NA-REECHo);
Ih
)
inti;
String temp=mensaje;
String rest = new String();
int sec = O ;
/I Es un paquete de control TABLE nuevo
else ifíflag == 4) (
out.println("NA-RETABLE);
tablr(input);
I
if(mensaje.compareTo("NA-HELLO) == o)
return 2;
i = temp.indexOf("I");
if(¡ != -1) (
String source = temp.substring(0, i);
11 Es un paquete de control TABLE reclbido con
anterioridad
temp = temp.substring(i+l);
7
Apéndice A
i = temp.indexOf("!");
1
if(¡ != -1) (
return 5:
String target = temp.substring(0, i);
temp = temp.substring(i+l);
i = temp.indexOf("!");
/I Este metodo identifica el siguiente receptor en un
paquete
if(¡ I=-1) (
temp = temp.substring(i+l);
*
I = temp.indexOf("!");
if(¡ I= -1) (
I/ de datos
protected String getNext(String msg) {
NetState netstate = new Netstate();
rest = temp.substring(i+l);
inti;
temp = temp.substring(0, i);
0)(
String temp=msg;
String host = new String();
if(target.compareTo(netState.getLocalName()) !=
i = temp.indexOf("!");
return 1;
temp = temp.substring(ii1);
J else if (temp,compareTo("NA-ECHO) == O) (
i = temp.indexOf("!");
return 3;
temp = temp.substring(i+l);
)else if (temp.compareTo("NA-TABLE) ==O) (
do (
i = rest.indexOf("!");
I = temp.indexOf(".");
if(¡ != -1) (
host = temp.substring(0, i);
sec = new Integer(rest.substring(0,
i)).intValueO;
temp = temp.substring(i+l):
if(secmetState.getSec(source))
return 4;
) while(host.compareTo(netState.getLocalName()) !=
0);
i = temp.indexOfr.");
1
host = temp.substring(0, i);
return 40;
) else if
(target.compareTo(netState.getLocaiName()) == O ) (
System.out.println("Mensaje recibido de " +
return host;
J
source + ": "
+temp);
return O:
// Este metodo actualiza los valores de la tabla de estado
// utilizando los valores de ECHO recolectados por otro
servidor
J else (
return 5;
)
protected void tabie(String input) (
NetState netstate = new Netstate();
Shortpath shortpath = new ShortPathO;
110
Apéndice A ,
public void run() (
inti. delay, j, sec;
String temp=input;
this.handleConnectionServer();
String src, tgt;
return;
1
String target = new string();
1
String msg =new String();
o
i = temp.indexOf("!");
import java.io.*;
5rc = temp.substring(0, i);
G
import java.uti!:;
i = temp.lastlndexOf("!");
I
rnsg = temp.substring(0, i);
//Esta clase maneja e ! cliente que funciona como salida
del agente
temp = temp.substring(i+l);
i = msg.lastlndexOi("!");
sec = new Integer(msg.substring(i+l)).intValue();
netState.setSec(sec, src);
for(j=O; j<netState.getNeighborMax(); I++)
(
target = netState.getNeighborNameij);
ii(target !=nul!) (
li Corre en hilos para poder tener una conexion con cada
SeNidor
I/ vecino
public class AgentOutPort implements Runnabie (
protected String target:
protected String mensaje;
rnsg =temp;
msg = src + "!" + target + ' 1'
+ src + "," +
target + "," + "!" + "NA-TABLE!"
+ sec + "l" + msg;
netState.queue~].addElement(msg);
protected String name;
protected int error = o;
public AgentOutPort (String name, String mensaje) (
this.name =name;
)
thismensaje = mensaje;
1
11
do I
i = ten:p.indexOf(",");
tgt = tempsubstring(0, i);
temp = temp.substring(i+l);
1
public void connect() (
'I
i = tenip.indexOf(".");
delay
!
import java.net.*;
ll
\
new Integer(temp.substring(0,i)).intVaiue():
NetState netstate = new Netstate();
target = thismame;
:
:
netStaie.updateTime(src, tgt, delay);
temp i:temp.substring(i+l);
}while (temp.length() > 2);
ii(mensaje compareTo("NA-HELLO)
I= O)
target =
netstate getNeighborAddr(netState getNeighborlndex(nam
e)).
try (
1 11
ApéndiG A
ii Se pide la conexion con el servidor del otro agente
Socket client = new Socket(target, 5555);
String temp;
String com =new String();
handleConnectionClient(c1ient);
/ I AI establecer la conexion, se manda el paquete
I/ Si se mando un HELLO, no se necesita liberar la linea
if(mensaje.compareTorNA-HELLO) != O)
input = in.readLine();
netState.freeLine(name);
ciient.close();
else
I/ Se actualiza elcontador de HELLO, para saber cuando
se logro un
// HELLO con cada vecino
U Si hubo un error, se intenta 5 veces mas
if(input.compareTo("Errof) ==O) (
netState.incHello0;
error++;
) catch(UnknownHostExcepti0n uhe) (
System.out.println("Unknown host: " + target):
uhe.printStackTrace();
if(error > 5)
return;
connect();
) catch(ConnectExcepti0n ce) {
this.connect();
if(input == null 11 input.compareTorAcknowiedge") == O
) catch(l0Exception ioe) (
System.out.println('lOException:
out.println(mensaje);
"
+
ioe);
11 input.compareTo("NA-RETABLE)
==O)
return:
ioe.printStackTrace0;
return;
I/ Si fue un ECHO, se para el contador que mide el costo
de la linea
if(input.compareTo("NA-REECHO)==O) (
temp = mensaje;
// Este metodo maneja la conexion
i = temp.indexOl('!");
temp = temp.substring(i+l);
protected void handleConnectionClient(S0cket client)
throws IOException (
i = temp.indexOf("!");
temp = temp.substring(0.i);
Netstate netstate = new Netstate();
i = netState.getNeighborlndex(temp);
Printwriter out =
netState.stopTimer(i);
SocketUtil.getPrintWrRer(ciient);
/
return;
BufferedReader in =
SocketUtil.getBufferedReader(client);
String input = new String();
inti, a;
112
i/ Si fue un HELLO, se actualiza el nombre del vecino
temp = input;
Apéndice A
i = temp.indexOf("!");
if(¡ != -1) {
corn = temp.substring(0, i);
temp
= temp.substring(i+l);
ii.1'
if(com.compareTo(."A-REHELLO)
== O) (
for(a=O; a<netState.getNeighborMax(); a++) (
com = netCtate.getNeighborAddr(a);
if(com.cornpareTo(name)
I=
== O)
a;
)
if(ikl)(
netState.addNeighborName(temp,
netCtate.getNeighborAddr(i));
)
)
)
return;
1
public void run() (
this.conriect();
return;
)
1
.Aoéndice A
114
REFERENCIAS
[Bratman 1987)
“Intentions, Plans, and Practical Reasoning”
Bratman, M E
Harvard University Press, 1987
[Bond 19921
A subject-indexed bibliogrphy of distributed artificial
intilligence.
Bond A H , and Gasser, L
IEEE Trans Syst Man Cybernet SMC-22(6) 1260-1281,
1992
[Cohen, 19881
“Rational Interaction as Basis for Communication”
Cohen P. R. and Levesque H. J.
Tehnical Report, SRI International 1988.
[Cohen 1990al
“Performative in Rational Bases Speech Act Theory”
Cohen R. Philip and Levesque J. Hector
Proceedings of the 28‘h Annual Meeting of the Association
for Computational Linguistic, Pittsburgh, Pennsylvania.
Junio 1990.
[Cohen 1990bl
“Intention is Choice with Commitment”
Cohen R. Philip and Levesque J. Hector
Technical Report SRI International 1990.
[Cohen 19941
.:‘An Open Agent Arquitecture*”
Cohen Philip R., Adam Cheyer, Michelle Wang and S. C
Baeg
in AAAl Spring Symposium
pp. 1-8, Marchl994.
[Cohen 19951
,“CommunicativeActions for Artificial Agents”
Cohen R. Philip and Levesque J. Hector
First International Conference on Multi-Agent Systems
pp, 65. Junio 12-114, 1995
[DARPA 19931
Specification of the
KQML
AgentCommunication Language plus example agente
policies and architectures
The DARPA Knowledge Sharing Initiative External
Interfaces Working Group.
DRAFT.
115
’
Junio 15, 1993.
http://www.darpa.mil/
KQML-USER(íuISI.EDU
[email protected]
[email protected]
[Duerfee 19891
Duerfee, E.H .; Lesser, VR and Corkill
Cooperative Distributed problem solving.
Handbook of Artificial Intelligence., Vol 4.
Addisson Wesley 1989.
[El-Fallah 19991
Tutorial Multiagentes.
El-Fallah Amal, Demazeu Yves y Lemaitre.
Primeras Jornadas Franco-Mexicanas de Informática y
Atumática.
Marzo 15/18 1999
[Emerson 19901
Temporal and modal logic.
Handbook of Theorical Computer Science
Ed. J. Van Leeuwen.
pp 996-1072.
Elsevier, Amsterdan 1990.
[Gamble 19991
Gamble Rose; and Sen Sandip
Using Formal Specification to resolve Conflicts between
Contracting Agents
Department of Mathematical & Computer Scinces University
of Tulsa, 600 South Collage Avenue Tulsa, OK 74104-3189,
e-mail:[email protected],
[email protected]
[Gotzhein 19921
Temporal logic applications-a tutorial
Gotzhein Reinhard
pp. 203-218.
Elselvier Science Publishers B.V All rights revserved.,
1992
[Guerra 19971
'"Selección de Acción en Agentes Autónomos, una
aproximación basados en el comportamiento"
Guerra Hernandez Alejandro; García Vega Angelica
pp. 75-85.
Primer Simposio Internacional en Tecnologiac Inteligentes,
Junio 11-13.
Apizaco, Tlaxcala, México., 1997.
Knowledge and Belief
Hintikka, J.
.
[Hintikka 19721
Cornell University Press, 1972
116
_c---
[Keith 19981
.“Meaning and speech acts”
Keith Allan,
‘University.
Linguitistics
Department,
Monash
I
http://www.arts.monash.edu.auílinaíspeech acts allan.shtml
March 1, 1998.
[KISS19921
‘,‘Variable coupling of agents to their environment:
Combining situated and symbolic automata”
Kiss, G.
Descentralized Artificial lnteliqence 3
Ed. Werner and Demazeau
Pp. 231-248
Elsevier/North-Holland, Amsterdan.
[Lander 19971
“lssies in Multiagent Desing Systems”
[O’Hare 19961
Foundations of Distributed Artificial Intelligence
[Munindar 19911
[Nwana 19961
Lander Susan E.
Blackboard Technology
IEEE EXPERT, pp 18-26
March-April 1997.
O’lhare G.M.P. and N.R. Jennings
Wiley, 1996
“A semantics for Speech Acts”
Munindar P Singh and Austin TX 78754
Annals of Mathematics and Artificial lntelligencial
Volumen 8, pp 47-71.
Mayo 1991
“Software Agent: An Overview”
Nwana S. Hyacinth
Cambridge University Press,
Knowledge Engineering Review, Vol 11 No. 3
pp. 205-244
OctubrelNoviembrel996.
[Nwana 19991
[Rao 19911
“Software Agent Technologies”
Intelligent Systems Research
Nwana hyacinth (BT) and (QMW) Michael Wooldridge
Applied Research and Technology, BT Labs
Enero 1999.
h t t p i l l w .labs.bt.com/proiectslaaents/publ¡sh/papers/sat
report.htm
“Modeling Rational Agents within a BDI Architecture”
O ~ - O O U ~
I
SEP
CENBDET
117
DGlT
CENTRO DE INFORMACION
Descargar