Documente Academic
Documente Profesional
Documente Cultură
TESIS
Director:
Julio 2004
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO
INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA
CENTRO DE INVESTIGACIÓN EN TECNOLOGÍAS DE
INFORMACIÓN Y SISTEMAS
Por este conducto le comunico que el Jurado asignado para la revisión de trabajo de tesis titulado
"Ajuste genético basado en series de tiempo de modelos de Leslie", que para obtener el grado
de Maestro en ciencias Computacionales fue presentado por usted, ha tenido a bien en reunión de
sinodales, autorizarlo para impresión.
En principio deseo agradecer a Dios el Señor que me permitió obtener este objetivo en mi vida,
a él sea la gloria.
Quiero expresar mi agradecimiento especial a Ramón Soto C. por ayudarme a desarrollar esta
tesis y aguantarme todo este tiempo, ya que pensé que en algún momento me mandaría a
volar. Al Dr. Gustavo Núñez que siempre demostró un interés por este tema y que finalmente se
ve concretado con esta tesis. Quiero agradecer también a los profesores en general del CITIS
que aportaron gran parte de mi formación en este grado de maestría durante estos años. Mis
agradecimientos al tribunal por las observaciones hechas y que pulieron este trabajo. Al Dr.
Virgilio por sus correcciones que me ayudaron mucho, a Ornar Domínguez que desde que lo
conozco ha sido de apoyo y de ánimo para mi formación académica, a Julio Waisman que
siempre nos dio ánimo para terminar, y especialmente a Sherif por su tiempo, observaciones y
correcciones detalladas que me hicieron darme cuenta de cuan importante es este tipo de
documento de tesis. A Mariano Pozas por las pequeñas platicas ocasionales que me dieron
ánimo de terminar. A mis compañeros de generación por la compañía de todos estos años y el
apoyo mutuo que nos dimos. A don Maree que limpió mi lugar de trabajo estos años. Al
personal administrativo que facilitaron las cosas para llevar a cabo este trámite. Quiero
expresar además que mi vida se conforma del apoyo moral y que gran parte de ese apoyo se lo
debo a Genoveva mi mamá, que siempre estuvo apurándome a terminar y por recordame todas
las mañanas de mi compromiso. A Fernel mi papá que siempre fue de apoyo y sustento. A mi
esposa amada que ha estado todo este tiempo sintiendo lo mismo que yo cada día.
Especialmente a Noe por apoyarme en el momento que más lo necesite. A Euler por su
consejos que siempre me fueron de edificación.
3
Este trabajo está dedicado a mi esposa Lupita.
Su paciente comprensión ha permitido que llegue
al final de esta etapa de mi vida.
Resumen
4
Índice general
1. Introducción 1
1.1. Objetivos ................................................................................................................. 2
1.2. Justificación ............................................................................................................... 2
1.3. Antecedentes ......................................................................................................... 3
1.4. Estructura del trabajo................................................................................................. 5
2. Dinámica de poblaciones 7
2.1. Aproximaciones clásicas ........................................................................................ 7
2.2. Predicción de series de tiempo................................................................................. 10
2.3. La matriz de Leslie .................................................................................................... 11
2.4. Estructura del modelo de Leslie................................................................................ 12
2.4.1. Notación ........................................................................................................ 12
2.4.2. Representación matricial del modelo de Leslie ........................................... 13
2.4.2. Clasificación de la información para el modelo de Leslie ............................ 14
2.4.3. Ejemplos del modelo de Leslie..................................................................... 15
2.5. Extensiones del modelo de Leslie ........................................................................ 18
2.5.1. Extensiones de Hitz y Werthener................................................................. 18
2.5.2. Ilustración ..................................................................................................... 21
2.6. Extensión estocástica del modelo de Leslie ............................................................. 22
2.6.1. Efectos estocásticos..................................................................................... 22
2.6.2. Series de tiempo sintéticas .......................................................................... 23
2.7. Conclusiones ............................................................................................................. 25
I
3.2.1. Computación evolutiva ................................................................................. 30
3.2.2. Técnicas de computación evolutiva ............................................................. 31
3.3. Agentes ................................................................................................................... 36
3.3.1. Conceptos básicos........................................................................................ 36
3.3.2. Estandarización de agentes.......................................................................... 37
3.3.3. Arquitecturas principales ............................................................................... 38
3.3.4. Noción de agencia (agency) ...................................................................... 39
3.3.5. Ambientes de desarrollo ............................................................................... 40
4. Modelo predictor 45
4.1. Estructura del modelo ............................................................................................... 45
4.2. Algoritmo genético predictor ..................................................................................... 47
4.3. Codificación genética................................................................................................. 47
4.4. Evaluación de aptitud .............................................................................................. 48
4.5. Agentes predictores ................................................................................................... 51
4.6. Conclusiones.............................................................................................................. 52
II
6. Resultados 87
6.1. Predicción de series de tiempo sintéticas ................................................................ 87
6.2. Predicción de series de tiempo reales...................................................................... 93
6.3. Caso disfuncional...................................................................................................... 96
6.4. Conclusiones............................................................................................................. 97
7. Conclusiones y perspectivas 99
7.1. Conclusiones.............................................................................................................. 99
7.2. Publicaciones ............................................................................................................. 100
7.3. Limitaciones ............................................................................................................... 100
7.4. Perspectivas............................................................................................................... 101
Bibliografía 103
III
Índice de cuadros
2.1. Información censada anualmente de una población. Clasificación por edad .......... 14
2.2. Información acerca de una población clasificada por etapa ..................................... 15
2.3. Información para el modelo logístico del crecimiento del alimento .......................... 21
IV
Índice de figuras
V
5.11. Diagrama de secuencia del modelo Predictor.......................................................... 79
5.12. Diagrama de colaboración del sistema GECOLE.................................................... 80
5.13. Ambiente GECOLE................................................................................................... 82
5.14. Activación de los agentes predictores en el sitema GECOLE.................................. 83
5.15. Interfaz del agente Ayuda .......................................................................................... 84
VI
Capítulo 1
Introducción
1
El sistema tiene como componentes principales un algoritmo genético, codificación genética,
evaluación de aptitud y un equipo de agentes predictores. Los agentes utilizan modelos de Leslie
como mecanismo de razonamiento.
Finalmente los agentes realizan predicciones individuales del comportamiento del sistema, las
cuales son empleadas para obtener una solución global mediante un proceso simple de
agregación, mediante la media aritmética de los resultados de los agentes predictores.
1.1. Objetivos
Objetivo general
Desarrollar una técnica que permita ajustar por medio de un algoritmo genético diferentes
modelos de Leslie mediante series de tiempo, para emplearlos como mecanismo de predicción de
agentes en un sistema multiagentes.
Objetivos específicos
1.2. Justificación
2
Los algoritmos genéticos ofrecen un método de búsqueda subóptima en espacios de
soluciones grandes. Estos algoritmos son guiados evolutivamente hacia las mejores áreas en el
espacio de búsqueda y evalúan cada solución del conjunto de soluciones para determinar la mejor
solución.
En este trabajo se utiliza la aproximación de algoritmos genéticos, para ajustar los parámetros
sobre el conjunto de posibles soluciones representado por varios modelos de Leslie, y se busca
obtener modelos apropiados que se ajusten a un comportamiento observado en una serie de
tiempo.
Los Sistemas Multiagentes (SMA) presentan la característica de distribuir tareas que son
llevadas a cabo por agentes individuales. A estos agentes se les asignan procesos para obtener
soluciones individuales del problema, y de esta manera se evalúan modelos complejos por medio
de modelos parciales, esperando obtener un mejor resultado al obtener una solución global.
La aproximación que se presenta es una alternativa intermedia entre los modelos cualitativos
(como las ecuaciones de Lotka-Volterra o las matrices de Leslie convencionales) y los métodos
numéricos (como las redes neuronales, los algoritmos genéticos, o la solución numérica de
ecuaciones).
1.3. Antecedentes
3
Los agentes expertos tienen una base de conocimientos independientes, de acuerdo a su
área de experiencia. La base de conocimiento de cada agente experto se desarrolló en una
máquina de inferencia para aportar soluciones inteligentes.
¦ Sintonización Genética de un PID Predictivo Difuso. En este trabajo se busca fuzificar las
partes proporcional e integral del controlador fpPID.
La solución se obtiene como resultado de una discusión entre los especialistas. Los
expertos que no aportan información útil durante un cierto periodo de tiempo son
reemplazados por nuevos agentes. La aptitud de los individuos para obtener la solución de
un problema dado es evaluada en términos del impacto de cada agente individual en el
desempeño global del sistema, más que en su habilidad individual [Soto & Núñez, 2003].
1
Proyecto Conacyt 3827-A Simulación de Sistemas Dinámicos Basada en Sistemas Genéticos Multiagentes:
Aplicación a la Predicción de demanda de energía eléctrica.
4
1.4. Estructura del trabajo
El presente trabajo está estructurado de la siguiente manera:
¦ Capítulo 4. Modelo predictor. Consiste en una descripción detallada del modelo que se
propone basado en el modelo de Leslie. Para realizar el proceso genético, se describen las
partes que componen al algoritmo genético predictor que realiza el tratamiento de las
series de tiempo.
¦ Capítulo 5. Desarrollo del sistema. Describe el análisis y diseño de la aplicación
desarrollada, así como los principales componentes que la integran.
¦ Capítulo 6. Análisis de resultados. Se presentan y analizan los resultados obtenidos a
partir de las pruebas efectuadas del modelo predictor propuesto.
¦ Capítulo 7. Conclusiones y trabajo futuro. Se describen las conclusiones que se
obtuvieron en este trabajo de tesis y las posibles perspectivas.
5
Capítulo 2
Dinámica de poblaciones
En este capítulo se presenta un panorama sobre los trabajos realizados para la obtención de
solución de la dinámica de poblaciones. El estudio de la dinámica de un sistema se conoce por
presentar un comportamiento complejo, y la información con que se dispone se limita a un
conjunto de observaciones. Para la solución de estos sistemas, se mencionan las técnicas que
existen para la predicción de series de tiempo. En esta sección se aborda también el estudio
sobre el modelo de Leslie, iniciando en su estructura básica, y presentando ejemplos de su
funcionalidad.
Se abordan también las extensiones que existen sobre el modelo de Leslie, tomando en
cuenta las diferentes extensiones del modelo de Leslie, como las extensiones estocásticas. Se
presentan las simulaciones para el modelo de Leslie generadas de manera estocástica. El
resultado de estas simulaciones es generar series de tiempo de poblaciones hipotéticas, con
comportamientos de fluctuaciones ambientales.
6
Posteriormente Harry Smith (1935), propuso la distinción de factores de mortalidad
dependiente e independiente de la densidad. Los factores dependientes son de efecto facultativo,
es decir que los individuos dependen de sus aptitudes y capacidades para adaptarse al medio que
los rodea, estos individuos son los que tienen mayor probabilidad de sobre vivencia. Estos
factores también son llamados de mortalidad facultativa, donde en una población sobrevive el
"mejor adaptado", teoría propuesta primeramente por Charles Darwin (1859) en "El origen de las
especies".
Los factores independientes de la densidad son los que tienen efecto catastrófico o mortalidad
catastrófica, como el clima, insecticidas, etc. El estudio de estos factores son importantes, sin
embargo, dado que no se pueden predecir las catástrofes, estos factores no son tomados en
cuenta en el contexto del presente trabajo.
Un factor de mortalidad dependiente de la densidad es identificado como aquel que causa
grados de mortalidad variables en la población sujeto, y en la cual el grado de mortalidad causado
es una función relacionada con la densidad de la población afectada, y comúnmente puede
involucrar un efecto retardado. Un ejemplo se puede observar en la Figura 2.1.
Figura 2.1: Dinámica de poblaciones que representa a la liebre pata de nieve y su depredador el
lince canadiense [MacLulich, 1937].
En la Figura 2.1, se pueden apreciar los cambios que existen en la interacción de las dos
poblaciones, en donde por ejemplo la población de linces disminuye cuando a su vez disminuye
el número de presas (liebres), pero los efectos aparecen de manera retrasada.
A.J. Lotka (1925) y V. Volterra (1926), en el transcurso de la década de 1920, presentaron
7
una aproximación de modelos matemáticos que representa la interacción depredador/presa. Este
fue el primer intento de representar matemáticamente un modelo de población que llegara a un
balance cíclico con un promedio (característico) de la media de la densidad de la población en
estudio, aplicado a lograr un equilibrio dinámico [Lotka,1925].
Todas las aportaciones que inicialmente se hicieron sobre los estudios de poblaciones, fueron
de carácter teórico y desarrolladas de manera deductiva a partir de experimentos controlados en
laboratorio u observaciones de campo, resultando en una tendencia a la sobre simplificación.
Los estudios de estimaciones del crecimiento teórico global de una población basado en
estructuras de edades, fue una contribución hecha por Leslie, presentando, entre otros
resultados, su crecimiento interno, su descripción de la distribución de una población clasificado
por edades en el tiempo [Leslie, 1945].
8
2.2. Predicción de series de tiempo
9
Entre los trabajos que se han hecho sobre estas técnicas se encuentran los resultados que
han aportado las redes neuronales artificiales (RNAs), las cuales son modelos matemáticos
inspirados en la organización y el funcionamiento de las neuronas biológicas. Existen numerosas
variantes de RNAs que están relacionadas con la naturaleza de la tarea que se ha asignado. De la
misma manera existen también distintas variaciones sobre cómo modelar la neurona; en algunos
casos se asemeja mucho a las neuronas biológicas mientras que en otros, los modelos son muy
diferentes.
Los trabajos desarrollados enfocados a estas aproximaciones, se reconocen como nuevas
aplicaciones en el área de series de tiempo. Por mencionar algunos trabajos como el de Pino Diez
y Priore Moreno, que presentan la aplicación de RNAs al cálculo de previsiones a corto plazo en el
mercado eléctrico [Diez et. a/,1999], presentando resultados favorables y una comparación con
los métodos tradicionales. El trabajo realizado por Weigend y sus colaboradores, es aplicado a la
predicción de manchas solares; otro trabajo que realizaron fue la predicción de los cambios en el
mercado de divisas con RNAs conectadas [Weigend et. al, 1999].
Sobre la técnica de lógica difusa se encuentran aproximaciones realizadas, por mencionar
algunas, la de Min-Soo Kim y Seong-Gon Kong [Min-Soo & Seong-Gon, 2001], y el de Soto y
Núñez con el trabajo de conjuntos difusos dinámicos para predicción de series de tiempo [Soto &
Núñez, 2001].
Los estudios recientes de poblaciones estructurados por edades comenzaron con las
investigaciones de la "tabla de vida", realizados por Graunt y Halley en el siglo XVII.
La tabla de vida manifestaba un programa de mortalidad en cada cohorte (grupo de
determinada edad en la población o generación), esta representación aportaba más información,
debido a que se estructuraban las etapas de vida de la población e indicaban los cambios que
ocurrían principalmente en la densidad de la población afectada. Estas ideas fueron principios de
los modelos estructurados por edades [Cullen, 1985].
En el transcurso de los años 40's se descubrió que la dinámica de una población en rangos de
edades podría ser representada en forma tal que aportara resultados importantes, mostrando la
información en rangos vitales contenidos en una tabla de vida y representando esa información
por una matriz. En la actualidad, los modelos basados en esta representación son comúnmente
referidos como modelos de matriz de Leslie [Leslie, 1945].
10
El modelo de Leslie pertenece a la categoría de los modelos dependientes de la densidad, I el
modelo fue diseñado fundamentalmente para describir la distribución de individuos en una
población en rangos de edades [Cullen, 1985].
Se considera que la aportación de un modelo de población se presenta cuando hace una
estimación (generación tras generación) de los cambios en la abundancia o para explicar por qué
ocurren cambios cuando las poblaciones llegan a determinadas densidades.
El modelo de Leslie pretende describir los diversos procesos ecológicos que afectan a la
mayoría de las poblaciones, entre los cuales se pueden mencionar: el desarrollo o crecimiento de
la población a través de un ciclo de vida, la mortalidad y la reproducción en una edad específica.
Las variables y parámetros que se toman en cuenta para el modelo de Leslie son:
r n
r r
N o, t +1 = ∑ N x ,t m x
x =0 (2.2)
11
2.4.2. Representación matricial del modelo de Leslie
Al combinar la Ec.(2.1) con la Ec.(2.2) el modelo de Leslie es descrito mediante una matriz.
Esta representación describe el crecimiento, mortalidad y reproducción de los organismos
(individuos) de una población, estructurada por edades.
La estructura del modelo de Leslie de forma matricial esta dada por la Ec.(2.3):
donde
m0 m1 ... mn−1 mn
S0 0 ... 0 0
0 S1 ... 0 0 , Â∈
M ... ... ... ...
0 0 nxn
0 ... S n−1
R nxn (2.5)
donde cada coeficiente de la matriz de transición pertenece al conjunto R, de los números reales
y representan la contribución de cada clase en la población, el vector Nt , se define por contener
coeficientes que pertenecen al conjunto de los números reales R:
Ñt ∈ Rnxl (2.6)
12
2.4.3. Clasificación de la información para el modelo de Leslie
Para modelar el comportamiento de alguna población, la información en estudio es re
presentada generalmente en una tabla. Esta información debe ser estructurada en el modele De
acuerdo a la información de la población que se obtiene mediante observación, se clasifica en dos
categorías.
La primera categoría se presenta cuando la información se categoriza uniformemente. E
estado x de los individuos en la población esta clasificado por edad de la misma longitud (como se
muestra en la Cuadro 2.1).
Edad m x sT
0 OM
1 0,04 0,82
2 0,39 0,79
3 0,47 0,75
4 0,48 0,69
Cuadro 2.1: Información censada anualmente de una población. Clasificación por edad.
13
Edad mx Sx
0,7 0,84
1,5 0,64 0,22
1,9 0,89 0,69
2,3 1,47 0,25
4,7 0,78 0,19
Sin embargo se ha considerado en general que un modelo es clasificado por etapa, si los
elementos con valores diferentes de cero asignados en la matriz están en la primera fila, la
diagonal principal, y la primera subdiagonal [Caswell, 1989] como se muestra en la matriz C de la
Ec.(2.8) con la correspondiente estructura.
14
Para el caso de la matriz dada por (2.9), por ejemplo la segunda columna corresponde a la
edad a = 2, la hembra de edad 2 produce m 2 = 5,0 descendencia de edad a=1 (primera celda en la
columna), y tendría una transición a la clase 2, con una probabilidad S2=0,6 (celda de la
subdiagonal).
a= 1 2 3 4
En la realización de una segunda simulación, se define en la matriz dada por (2.10) la información
de otra población. Los datos para esta segunda simulación se tomaron arbitrariamente.
En la gráfica de la Figura 2.3 se observa el resultado obtenido. Se puede apreciar para este caso,
que la población crece exponencialmente, iniciando en t = 7 hasta t = 15. Esta gráfica nos
demuestra que con los valores definidos inicialmente, la población tendrá un crecimiento
15
Figura 2.3: Crecimiento de la población con la matriz de Leslie M 2
muy rápido, y una estabilización en el tiempo restante. Los valores críticos representan los
cambios importantes en la población, producidos por los datos definidos inicialmente en la
matriz, y que representan, por mencionar un ejemplo, factores internos como enfermedad que
afectan a la población.
En la realización de la simulación basada en la matriz dada (2.11), se definen valores
arbitrarios de una población. Los valores asignados para el factor de descendencia son más
pequeños que los valores de sobrevivencia para cada rango de edad, de esta manera las
hembras producen poca descendencia. Estos factores hacen denotar que la tendencia de la
población en estudio, para este caso, se extinga.
Figura 2.4: Simulación de una población con la matriz de Leslie con tendencia a la extinción
M3.
El modelo de Leslie describe los cambios que existen en la población, basándose sólo en
factores de supervivencia y fecundidad en una distribución interna de la población.
Sin embargo, existen otros factores que pueden afectar a las poblaciones tales como: la
temperatura ambiente, diversas características de su hábitat, depredadores naturales, comida,
etc. Para representar estas tendencias, los elementos del modelo de Leslie pueden ser
remplazados por parámetros que especifiquen rangos de supervivencia y reproducción en función
de varios factores.
En el trabajo de Hitz y Werthener se observa una modificación del modelo de Leslie. Este
trabajo presenta una extensión del modelo básico de Leslie. La principal característica de este
trabajo, es incluir factores externos que modifican el estado de la población [Hitz & Werthner,
1996].
Se observarán las modificaciones que se realizaron en el trabajo de Hitz, revisando
básicamente las extensiones que se hicieron al modelo de Leslie, incluyendo factores como
recolección o caza (describiendo el factor de mortalidad), y alimento como un factor de
sobrevivencia.
17
alimento representado por un crecimiento dinámico. Estos dos factores alimentan al modelo
poblacional dando mayor realismo al modelo de Leslie.
Estos factores implican cambios en la estructura de la matriz de transición del modelo. La
sustitución del porcentaje de supervivencia por rango de edad Sx , (que son los individuos que se
mueven al siguiente rango de edad), es sustituido ahora por dos parámetros bx y ax , donde bx es
el porcentaje de individuos que se mueven de un rango de edad x a otro x + 1 (de una clase de
edad a otra), y ax = 1 — bx es el porcentaje de individuos que se quedan en el rango de edad x.
Los factores representan el hecho de que no todos los miembros de un rango de edad pueden
moverse al siguiente rango, representando así una fragmentación más fina en el rango de edad.
Esta sustitución es representada en la matriz B de la Ec.(2.12):
a0 0 ... 0 0
b0 a1 ... 0 0
Bˆ = 0 b1 ... 0 0
(2.12)
M ... ... ... ...
0 0 ... bn−1 a0 = 1
h0 0 ... 0 0
0 h1 ... 0 0
Hˆ = ... ... ... ... ..
(2.14)
... ... ... ... ...
0 0 ... 0 hn
El modelo de crecimiento de alimento está basado en un modelo logístico de la forma:
18
z(t + 1) = z(t) + rz{t)(l - z(t)/K) (2.15)
v x = fx z (2.16)
f0 z 0 ... 0 0
0 f 1 z ... 0 0
Vˆ = 0 0 ... 0 0 0
... ... ... ... ...
f n z
0 0 ... 0
r r
N t +1 = ÂN t
Finalmente la extensión que se realiza al modelo de Leslie original , queda de la
siguiente manera:
N t +1 = ( Bˆ Vˆ [Iˆ − Hˆ ] + Mˆ [Iˆ − Hˆ ]) N t
v r
( n+1) x (n +1)
donde Iˆ ∈ R representa la matriz identidad.
De esta manera en cada paso de tiempo, después de que se lleve a cabo la fecundidad, la
población es menguada por la política de cosecha, los sobrevivientes son calculados de acuerdo
al alimento disponible, y finalmente la generación actual pasa al siguiente rango de edad. Sin
embargo contrario al modelo de Leslie, donde todos los miembros del último rango de edad
mueren, en este modelo los miembros de la población de un rango de edad x pueden sobrevivir
con un probabilidad fx .
De acuerdo a Hitz y Werthener, esto aporta más realismo al método de Leslie. Pero estos
trabajos realizados aún cuando extienden el modelo de Leslie, observan una limitación principal.
Para aplicar este método a una población en estudio, se tienen que elegir igualmente los
parámetros que rigen el comportamiento de la población para obtener los resultados deseados.
19
2.5.2. Ilustración
En el Cuadro 2.3 se muestran datos para obtener la gráfica logística de z(t + 1), de la Ec.
(2.15), que sirven para especificarlos en la matriz V de sobre vivencia de la matriz dada por (2.17).
La proporción de comida disponible comporta en un hábitat se representa en la gráfica de la
Figura 2.5.
z r K z(t+l)
12 0.5 95 17.24210526
25 34.21052632
38 49.4
45 56.84210526
56 67.49473684
69 78.44210526
78 84.97894737
86 90.07368421
92 93.45263158
131 106.1789474
151 106.4947368
Cuadro 2.3: Información para el modelo logístico del crecimiento del alimento.
20
2.6. Extensión estocástica del modelo de Leslie
En esta sección se analizará las extensiones estocásticas sobre el modelo de Leslie. El
estudio de estas aproximaciones consideran factores ambientales y demográficos con efectos
estocásticos, para presentar la simulación del comportamiento de una población en estudio. Se
presenta la forma de introducir factores estocásticos representados por factores ambientales en la
matriz de Leslie. Esto sirve de base para generar series de tiempo hipotéticas, que simulen un
comportamiento con variaciones temporales dinámicas en la población.
21
la secuencia de matrices es generada por un proceso estocástico, y este proceso es clasificado
en ambientes homogéneos y ambientes no homogéneos. Si la probabilidad de transición que
dirige los cambios en el ambiente son invariantes en el tiempo, se dice que el proceso estocástico
ambiental es homogéneo. El proceso estocástico clasificado como ambiente no homogéneo es
conocido si la probabilidad de transición cambia en el tiempo [Caswell, 1989]. Los ambientes
también son clasificados por la presencia o ausencia de auto correlación entre sucesivos
ambientes.
En base al planteamiento de la Ec.(2.19), se generaron las simulaciones de series de
tiempo hipotéticas, que representan el comportamiento de una población con factores
ambientales.
El tamaño de la población global en el tiempo t, se define por la Ec.(2.21):
n
r
P = ∑ N x,t (2.21)
x=0
r
N x, t
donde representa el vector de la distribución de edades en la población. La población
global denotada por P, se puede apreciar por las series de tiempo generadas de manera
hipotética. La secuencia de matrices fue generada por un proceso estocástico, que representa
básicamente un proceso ambiental [Nakaoka, 1993].
Figura 2.6: Serie de tiempo sintética, de una población con la matriz de Leslie.
22
En una primera simulación generada en la Figura 2.6, las variaciones temporales que se aprecian
en el esquema, presentan fluctuaciones dinámicas parecidas a ciertos tipos de especies de
animales, entre las que se pueden mencionar algunas como los insectos o los crustáceos, un
ejemplo del comportamiento de una población de estas especies se puede apreciar en la Figura
2.7, que muestra el comportamiento de una población de moscas de la fruta [Nerc, 1999]. Estas
especies en momentos de crecimiento acelerado se presentan como plagas, pero de la misma
forma tienden a la eliminación de ciertas porciones de la población en tiempos muy cortos.
Figura 2.7: Serie de tiempo de una población real: mosca de la fruta [Nerc, 1999]
Se presenta una serie de datos real en la Figura 2.8. Esta serie de tiempo proviene de
información recolectada de forma regular de la especie de las Nutrias [Nerc, 1999], aunque
esta serie de tiempo presenta un comportamiento más estable, y no tenga mucho parecido
con las series de tiempo generadas de manera sintética, se puede apreciar que en una
población real existen variaciones temporales con un comportamiento estocástico.
Figura 2.8: Serie de tiempo de una población real: mamíferos nutrias [Nerc, 1999]
23
Estas aproximaciones se observan en las gráficas de la Figura 2.9 y la gráfica de la Figura
2.10. Se pretende que al generar la simulación, se haga una comparación de los resultados
obtenidos del comportamiento de la población hipotética con el comportamiento de algunas
poblaciones que presentan fluctuaciones ambientales en la población [Nakaoka, 1993].
Estas series se tomaron como base para probar el modelo predictor que se propone. Es
importante mencionar que los resultados de las series de tiempo presentan un comportamiento
estacionario, pero con variaciones temporales que es característica de los sistemas poblacionales
reales.
Figura 2.10: Serie de tiempo sintética, de una población global basada en la matriz de Leslie.
2.7. Conclusiones
25
Capítulo 3
26
Enfoque procedural
El siguiente paso en el avance del campo de la programación consistió en el desarrollo de los
lenguajes de alto nivel. La principal característica de estos lenguajes es que son más
independientes de la computadora, específicamente del hardware. Uno de los aspectos que
caracteriza a este planteamiento al diseñar un programa, es visualizar su secuencia de ejecución,
con un organigrama o diagrama de flujo, que mostraba esquemáticamente el control de la
ejecución [Larousse, 1991].
Enfoque estructurado
A finales de los años sesenta, se propuso una forma de programar sin utilizar casi en ninguna
forma la instrucción goto, y se sustituyó por otra forma más comprensible; esta forma I estaba
basada en demostrar que todo programa se podía escribir utilizando únicamente tres
instrucciones de control: un bloque secuencial de instrucciones ejecutados sucesivamente, una I
instrucción condicional if-then-else, y un bucle condicional while-do, until-do, for-to, switch I y
case/break.
27
de conocimiento.
Los programas como agentes presentan un comportamiento autónomo, y una caracterís tica
que les permite interactuar de manera social con otros agentes. Los agentes pueden cooperar con
otros agentes a través de un lenguaje común para realizar tareas de manera cooperativa.
Los investigadores presentaron un nuevo esquema, que consiste en construir sistemas
computacionales como sociedades de agentes. Estos agentes deberían de contener ciertos
aspectos para que pudieran funcionar como tal, los cuales deben ser [Shoham, 1991]:
2
Aún sujeto a discusión por la comunidad.
28
lenguaje puede ser considerado como poco interesante. Existen ahora herramientas variadas que
han surgido paulatinamente, presentando formas diferentes de programar a los agentes.
Sistemas multiagentes
Un sistema multi-agentes es un conjunto de agentes que interactúan y cohabitan en su medio
para lograr los objetivos propuestos, mostrando características como: flexibilidad, escalabilidad y
capacidad de resolver en el mundo real una serie de problemas en diversos ámbitos actuando de
manera social y colaborativa [Shoham, 1993].
29
Estas técnicas permiten buscar y encontrar soluciones a diversos problemas de optimización
y de diseño mediante un enfoque análogo con los procesos evolutivos de la naturaleza.
En su funcionamiento, las técnicas evolutivas buscan la solución mediante la exploración de
espacios que son llenados de posibles soluciones, y un punto determinado en ese espacio es la
solución óptima [Bentley, 1999].
A partir de estas técnicas se desarrollan algoritmos que son guiados evolutivamente hacia las
mejores áreas en el espacio de búsqueda y evalúan cada solución del conjunto de soluciones
para determinar la mejor; de esta manera las soluciones pueden ser comparadas con estructuras
de cadenas como individuos (adaptados) representados en el espacio de búsqueda.
En estas técnicas existen operadores como el de mutación que transforma algún gen de la
estructura del ADN artificial. Otro operador es la selección de individuos.
La programación evolutiva fue creada originalmente por Lawrence J. Fogel, como una
estrategia de optimización estocástica similar a los algoritmos genéticos, pero en lugar de hacer
énfasis en la conexión del comportamiento de los padres y su descendencia, genera estrategias
que son soluciones candidatas para un problema dado, y son activadas a evolucionar para
encontrar la mejor estrategia.
Es asumido para la programación evolutiva, que un panorama de un problema puede ser
caracterizado en términos de variables, y que hay una solución, o en su caso una solución
múltiple, en términos de esas variables [Heitkótter & Beasley, 2000].
30
El método básico de programación evolutiva involucra tres pasos:
2. Cada posible solución (individuo) se reproduce en un nuevo individuo y cada uno de los
individuos es transformado de acuerdo al operador de mutación antes definido; después la
mutación es evaluada en base al cambio funcional impuesto por los padres.
INICIO
t=0; // comienza con un tiempo inicial
initpopulation P(t); // población generada aleatoriamente
evalúate P(t); // evalúa el valor de aptitud inicial
WHILE NOT done DO
31
P(t)= mutate P(t); //perturba la población estocásticamente
evalúate P(t); //evaluar la nueva aptitud
//selecciona estocásticamente
P(t+l)=survive P(t),P(t); // el sobreviviente
//del valor de aptitud actual
t=t+l; //incrementa el contador de tiempo
END
END
¦ Panmíticos: se elige un solo padre al azar, y se mantiene fijo mientras se elige al azar un
segundo padre.
Las estrategias evolutivas simulan el proceso evolutivo al nivel de los individuos, por lo que la
recombinación es posible.
c- Programación genética
Esta técnica añade una importante ventaja, al estructurar un ADN artificial, asignando en
cada gen una estructura de posibles soluciones representadas por árboles jerárquicos. Para
finalizar la técnica obtiene un individuo que comprende a la solución óptima [Koza, 1992].
Los objetos que constituyen el conjunto de soluciones, no son cadenas de caracteres de una
longitud ajustada, sino son programas. Cuando es ejecutado el algoritmo, los posibles candidatos
de solución para el problema son buscados. El cromosoma estructurado codifica las posibles
soluciones de un problema dado.
Estos programas son expresados en programación genética como árboles jerárquicos
analizados sintácticamente y gramaticalmente. Los programas en el conjunto de soluciones están
32
compuestos por los elementos: conjunto de función (function set) y conjunto terminal (terminal
set), estos son fijados por conjunto de símbolos seleccionados apropiadamente ala solución del
problema de interés.
En programación genética el operador de cruza (crossover) identificado como el operador de
reproducción, es implementado tomando aleatoriamente subárboles seleccionados como
individuos en la población de acuerdo a un operador de evaluación (fitness) [Heitkótter & Beasley,
2000].
33
Usando el operador de recombinación, el algoritmo genético combina genes de dos
cromosomas parientes para formar dos nuevos cromosomas (hijos) que tienen una alta
probabilidad de poseer mejores aptitudes que sus parientes antecesores. La mutación permite
nuevas áreas para ser exploradas en la región de soluciones. Estos algoritmos genéticos ofrecen
generaciones mejoradas basadas en la función de aptitud de los cromosomas.
Los conceptos que usualmente son atendidos por esta técnica son presentados en la parte
siguiente:
3. Cruzamiento (crossover): combina los genes o variables de los cromosomas para formar
dos nuevos cromosomas también llamados hijos.
6. Alelos (alíeles): estos son los valores que pueden tomar cada gen en la estructura del ADN
artificial, es decir los valores que toman las variables dentro de la estructura del cromosoma.
El procedimiento que efectúan los algoritmos genéticos es el siguiente: primero una población
de tamaño n es creada de una selección aleatoria de parámetros; cada conjunto de parámetros
representa un cromosoma de un individuo.
34
A cada individuo le es asignado un valor de aptitud. Este valor sirve para identificar a cada
cromosoma y representa al mejor individuo en su ambiente. Entonces se llevan a cabo las tres
operaciones internas para crear la próxima generación: a) selección, b) cruzamiento y c)
mutación.
Los individuos más aptos son seleccionados para cruzarse, mientras los individuos débiles
mueren. Al aplicar el operador de cruzamiento en los padres se genera un nuevo cromosoma
(hijo), este es incluido con el conjunto de cromosomas de la población.
Para mostrar el funcionamiento de los algoritmos genéticos a continuación se muestra un
programa básico en seudo código [Agudelo & Ríos, 1997]:
3.3. Agentes
3.3.1. Conceptos básicos
Como agente se puede expresar a todas aquellas aplicaciones de software que muestren un
comportamiento "inteligente". A través del desarrollo de esta área de investigación se encuentran
definiciones como las siguientes:
¦ Shoham define a un agente como una entidad autónoma de software la cual funciona
continuamente en un ambiente particular, a menudo habitada por otros agentes y procesos
[Shoham, 1993].
¦ Weiss define a un agente como una entidad computacional, como un programa de software
o un robot, que puede ser visto como un ente dotado de perceptores y actuadotes en un
ambiente y que es autónomo en su comportamiento [Weiss, 1999].
35
¦ Stuart Russel define a un agente como una entidad que percibe su entorno a través de
sensores y actúa sobre ese entorno a través de efectores. Un agente es racional cuando
realiza la mejor acción posible considerando sus objetivos y metas [Russell & Norvig, 1995].
¦ Maes define a un agente como un sistema que trata de completar unos objetivos en un
entorno complejo y dinámico. Un agente es un sistema computacional que tiene una larga
vida, tiene objetivos, sensores y efectores y decide autónomamente qué acciones realizar en
la situación actual para maximizar el avance hacia sus objetivos [Maes, 1997].
¦ Wooldrige define a un agente como un sistema de software que actúa en forma autónoma
para realizar sus objetivos, en un ambiente complejo y dinámico. Cada agente tiene
sensores propios y desempeña las tareas que le fueron asignadas [Wooldrige, 1995].
Los agentes tienen que tener características para ser percibidos como tales, y por lo menos
existen cuatro aspectos básicos que tienen que expresar [Wooldrige & Jennings, 1995]:
autónomos, cooperativos, perceptivos y pro-activos.
En el presente trabajo se adopta la definición de Russel y Maes, de acuerdo al sistema
multiagente desarrollado.
36
FIPA está organizado y estructurado en dos grupos: aquellos que están involucrados en la
producción y desarrollo de las normas, y los que están involucrados en el mecanismo de apoyo de
FIPA.
Las especificaciones de FIPA representan el primer paso hacia el estándar de agentes. Ellos
no pretenden describir la arquitectura interna o la forma de implementar los agentes, sino que
especifican la interfaz necesaria para soportar la interoperabilidad de los sistemas de agentes.
Cuatro áreas de estandarización han sido identificadas por FIPA:
¦ Administrador entre agentes: incluye las interfaces necesarias para soportar la creación y
localización de los agentes, la comunicación entre agentes así como facilitar la movilidad y
seguridad.
¦ Interacción de agente -hombre: los agentes pueden interactuar con usuarios humanos y/o
otros agentes.
Los agentes de software como aplicaciones tienen reacciones de acuerdo al entorno en donde
se encuentran. En ese entorno pueden actuar de una forma que les permitan alcanzar sus
objetivos planteados, para llevar a cabo sus metas que comúnmente son las tareas que el usuario
tendría que hacer.
Existe una clasificación que se puede tomar como un acercamiento de los agentes de
software, y que de forma general se toman como arquitecturas establecidas para la identificación
de los mismos.
Arquitecturas de agentes.
37
Agentes basados en lógica: la decisión tomada es realizada a través de deducción lógica.
El concepto de agencia 3 se define como el lugar en donde el agente vive, o como el lugar para
que el agente gestione ciertas tareas, presentando de cierto modo servicios al usuario.
Desde el punto de vista descriptivo, existen dos usos comunes para expresar el concepto de
agente: la noción blanda y la noción dura [Wooldrige, 1995]. Se describen a continuación las
características que muestran a cada una de las nociones mencionadas:
Agencia blanda: esta expresión presenta al agente con ciertas propiedades para poder actuar
de acuerdo a su entorno. La capacidad de comunicarse con otros agentes intercambiando
mensajes en un lenguaje de comunicación expresivo [Wooldrige, 1995]. Estas propiedades
son mencionadas a continuación:
¦ Autonomía: los agentes realizan sus actividades, tareas, etc., sin la intervención directa
del usuario y tienen cierto control sobre sus acciones y su estado interno.
¦ Habilidad social: los agentes tienen capacidad para interactuar con otros agentes,
mediante algún tipo de lenguaje de comunicación entre agentes, también tienen
capacidad de interactuar con el usuario.
3
Segun el diccionario Vox-Larousse. Oficina o despacho del agente; dedicada a gestionar asuntos o prestar
determinados servicios.
38
Agencia dura: para tener una apreciación sobre la noción de agencia dura, se han
implementado conceptos que son utilizados muy comunmente por los humanos. Un sistema
computacional tiene las características mencionadas anteriormente y además implementa
nociones como que los agentes tengan creencias, intenciones y obligaciones.
¦ Movilidad: esta característica capacita al agente para movilizarse dentro de una red
(LAN,WAM).
¦ Benevolencia: esta característica asume que el agente siempre actúa de una forma
benévola y que no realiza acciones que causen conflictos.
¦ Racionalidad: para este efecto se asume que el agente debe actuar de acuerdo a
alcanzar sus objetivos, en la medida que sus creencias lo permitan.
Después de tener una apreciación más completa sobre los sistemas multiagentes, es
importante conocer ahora los ambientes que existen para observar sus características.
Actualmente existe una diversidad de ambientes de trabajo que sirven de soporte como
herramientas y que permiten desarrollar aplicaciones basadas en agentes. Todas estas
herramientas tienen características propias que mantienen un interés específico en común que es
la comunicación entre agentes dentro de su medio. Esta comunicación debe ser empleada
mediante un lenguaje expresivo enfocado a agentes, donde se desarrolle la habilidad social.
A continuación se mencionan los ambientes de trabajo de mayor importancia.
El ambiente de trabajo Zeus presenta un ambiente integrado para la construcción de
aplicaciones de agentes cooperativos en forma rápida. Esta herramienta pone énfasis en el
aspecto metodológico de Zeus que se basa en su portabilidad y el soporte de multihilo. Esta
metodología usa una descomposición de cuatro partes para el desarrollo de agentes: análisis
diseño, desarrollo y soporte [Collis & Ndumu, 1999].
Existen tres grupos de clases en Zeus, una librería de los componentes de un agente un
conjunto de herramientas visuales, y el software para construir agentes. Un agente Zeui
39
está compuesto por tres capas: una capa de definición, una capa organizacional y la capa de
coordinación.
El ambiente de desarrollo fue hecho por Agent Research Programme of the British Telecom
Intelligent System Research Laboratory.
El ambiente Agent Builder incorpora en su funcionamiento principal el desarrollo de sistemas
multiagentes basándose en el modelo Agento y la arquitectura BDI. Esta herramienta proporciona
interfaces gráficas para el diseño y desarrollo de sistemas multiagentes y es conocida por su alta
calidad de software. Está fundamentada en el lenguaje Java y una de sus principales ventajas con
respecto a la comunicación es el uso de KQML (Knowledge Query and Manipulation Language),
que es uno de los principales estándares de comunicación en agentes.
Proporciona además librerías para el análisis del dominio del problema, herramientas para
definir una agencia (colección de agentes inteligentes), integra y esta capacitado para usar
librerías de Java, C y C++. [AgentBuilder, 1999].
El ambiente de trabajo Jack tiene como parte fundamental una metodología para el desarrollo
de sistemas multiagentes que consiste en realizar un análisis y diseño del sistema. Este ambiente
se fundamenta en el empleo del modelo BDI y dMARS y el uso del lenguaje Java. Es conocido
por presentar una herramienta visual para construir de manera rápida sistemas multiagentes. Fue
desarrollado por Agent Oriented Software Pty. Ltd., en una compañía comercial de Australia,
Australian Artificial Intelligence Institute(AAII) [Bussetta et. al, 1999].
El ambiente de trabajo JADE (Java Agent Development Framework) cumple con las
características que exigen los estándares internacionales tanto en desarrollo como en
comunicación. Este ambiente de trabajo (framework) fue implementado en java y tiene como
principal ventaja desarrollar los sistemas multiagentes de acuerdo a las especificaciones que ha
establecido FIPA (Foundation for Intelligent Physical Agents). JADE usa el lenguaje de
comunicación de agentes de FIPA y fundamenta el desarrollo de agentes al utilizar una
combinación de sockets, RMI, y CORBA, que son características básicas del lenguaje Java
[Bellifemine, 2001].
40
El ambiente MadKit se fundamenta sobre el modelo organizacional llamado Aalaadin, este
modelo presenta la conceptualización de grupo, rol, y agente. Una de sus principales ventajas es
que no toma una estructura rígida para construir los agentes. Otra de sus ventajas es que se
pueden desarrollar sistemas multi-multiagentes debido a su estructura organizacional en la cual se
puede dividir a los agentes en grupos, regidos por un rol, y sus actividades de I acuerdo a sus
objetivos interactúan en diferentes grupos [Gutknecht & Ferber, 1998].
Contrariamente a otras plataformas, MadKit es principalmente una máquina en línea de MAS
(Multi Agent System), al usar un agente micro-kernel [Ferber & Gutknecht, 1998], Sin embargo
una de sus principales desventajas es que la plataforma de desarrollo tiene que estar en línea
para que los sistemas funcionen, cosa que no es muy útil si pensamos en un sistema multiagente
que administre los correos electrónicos, puesto que si no están activos los agentes no pueden
funcionar. Madkit se presenta como una plataforma que es flexible en su I desarrollo. Fue
desarrollado por Oliver Gutnecht y Jacques Ferber en LIRMM (Laboratoire d'Informatique de
Robotique et de Microélectronique de Montpellier I).
El ambiente JaTeLite: presenta una característica interesante, que es el desarrollo de agentes
que se comunican robustamente a través de Internet. También proporciona una infraestructura
básica basada en un agente planificador (ruteador de mensajes) el cual se encarga de actividades
como administrador al realizar entre otras cosas: enviar y recibir mensajes, transferencia de
archivos, invocación a otros programas entre computadoras.
Esta herramienta mantiene una plantilla para la construcción de agentes que utilizan un
protocolo y un lenguaje común de alto nivel, es decir que es entendible entre los usuarios. Esta
plantilla proporciona al usuario numerosas clases de Java predefinidas que facilitan la
construcción de un sistema multi-agente. Las clases se proporcionan en paquetes, para que el
desarrollador pueda decidir que clases se necesitan para el desarrollo de un sistema.
41
Los agentes evolucionan al operar sobre la población incluyendo los mecanismos de cambios
genéticos que ocurren en los agentes sobre las generaciones [Pereira & Costa, 2001].
Los trabajos que se han realizado sobre esta nueva área de investigación destaca el que
realizó Sinclair llamado Evolving Simple Software Agents: Comparing Genetic Algorithm and
Genetic Programming Performance [Sinclair &: Shami, 1997].
Sinclair presenta la eficiencia relativa de los algoritmos genéticos y la programación genética
aplicada en los agentes de software. El dominio del problema consiste en un agente recolector de
comida colocado en un área de cientos de células con unidades de comida extendidas
uniformemente. En este trabajo se realiza una comparación del desempeño de la programación
genética y los algoritmos genéticos.
Cada agente se representa por un genotipo en su estructura interna. Esta estructura determina
su comportamiento. Parte de los recursos de conocimiento de un agente son genéticamente
heredados de sus padres. Esto tiene como consecuencia que los agentes a través de su
funcionamiento aprendan, mejorando cada vez su comportamiento inicial.
El trabajo de Grefenstette llamado Predictive Models Using Fitness Distributions of Genetic
Algorithms, expone la construcción de modelos predictivos basada en las capacidades de los
algoritmos genéticos. A los modelos se les asigna una representación, una función de aptitud y un
conjunto de operadores genéticos [Grefenstette, 1995].
Una aproximación desarrollada de agentes evolutivos se realizó con el trabajo de Soto y
Nuñez llamado simulación de sistemas débilmente estructurados basada en sistemas genéticos
multiagentes. En este trabajo se expone una característica que hace que los agentes evolucionen
tanto su estructura interna que determina su comportamiento como su estructura externa basada
en la población de los diferentes agentes como predictores [Soto & Núñez, 2002].
3.5. Conclusiones
Se presentó inicialmente un esbozo sobre las técnicas de programación clásicas y se hizo una
introducción a las nuevas áreas de programación. Se abordó un panorama amplio en los
diferentes paradigmas evolutivos y sus características. Se hizo énfasis en el funcionamiento de
los algoritmos genéticos.
Fue necesario incluir el estudio sobre agentes, siendo el tema principal para el desarrollo del
sistema GECOLE en el presente trabajo. Se mencionó las características de los sistemas
multiagentes, los alcances y las diferentes plataformas que existen para desarrollar sistemas
basados en agentes. Se finaliza esta unidad con una introducción a los agentes evolutivos.
42
Capítulo 4
Modelo predictor
En este capítulo se presenta el modelo de agente predictor desarrollado en este trabajo. Así
mismo, se presenta el algoritmo genético empleado por el agente encargado de ajustar los
parámetros en los modelos de Leslie.
Los datos disponibles acerca del estudio de una población pueden dar lugar a grandes
conjuntos de modelos, dependiendo de las variables de entrada y salida consideradas. Encontrar
los mejores modelos para un sistema dinámico, donde la información disponible es incompleta, es
una tarea difícil de llevar a cabo. Entonces, es pertinente tomar en cuenta la técnica de los
algoritmos genéticos [Michalewicz, 1992], que resuelve el problema de explosión combinatoria en
la búsqueda de tales modelos.
En este trabajo se utiliza un algoritmo genético para encontrar los mejores modelos de Leslie
de una serie de tiempo. Estos modelos estructurados generados por el proceso evolutivo
describen el comportamiento parcial del sistema.
43
El modelo de Leslie tiene la siguiente estructura:
r r
N t +1 = ÂN (4.1)
t
Ñt = (N 0,uN1,u-,iNn,t )T (4.2)
Ñx ,t = fWt (4.3)
donde f es una variable que representa un número fraccionario entre cero y uno, también
demuestra una fracción de la población en algún rango de edad y W t representa el número total
de individuos en la población al tiempo t de la serie. Entonces Nx ¿, es la fracción de individuos en
el rango de edad n, de tal manera que
n
r
∑ (N W t +1 )
x , t +1
X =0 (4.4)
A fin de evaluar el error producido por algún modelo de Leslie individual Mi se calcula el total
de individuos en la población
n
χ̂ = ∑ ( N x ,t +1Wt +1 )
x=0 (4.
y se compara con el valor correspondiente en la serie de tiempo.
Este modelo carga la base de datos de la serie. Los datos de la serie de tiempo son
procesados en la estructura mencionada. El modelo en la Ec.(4.1) tiene una etapa de
entrenamiento.
Este entrenamiento presenta un tipo de aprendizaje supervisado [Hernández, 1998], debido a
que los datos en la matriz de transición serán ajustados a los datos observados del sistema,
mediante el proceso evolutivo. Se espera que con este proceso de corrección y ajuste los
resultados tiendan hacia un pequeño margen de error, tomando en cuenta la función de ajuste.
44
Se tiene por consiguiente un proceso de prueba y error, donde los datos obtenidos son
probados por el modelo. Los valores finales, que son generados por los modelos con menor error
son tomados para generar la serie de tiempo que se ajustará a los datos observados.
Una parte fundamental del trabajo se presenta en esta sección. Como se mencionó en la
sección 3.2.1, los algoritmos genéticos han sido desarrollados para realizar búsquedas grandes y
extensas. Estos algoritmos realizan una búsqueda heurística y utilizan una función de ajuste para
validar la calidad de las posibles soluciones.
De acuerdo al funcionamiento de los algoritmos genéticos es indispensable que exista una
función objetivo que sirva para evaluar los cromosomas o cadena codificada y produzca un valor
de bondad, también llamado valor de ajuste. Este valor es usado para jerarquizar un conjunto de
cadenas (también llamados individuos en la población de posibles soluciones 4), siendo las
mejores posibles soluciones aquellas cadenas con mejor valor de ajuste. Como es conocido, las
mejores soluciones serán seleccionadas para pasar a la siguiente generación seguido de un
nuevo entrenamiento y reproducción, de esta manera mejorar la solución buscada.
Las nuevas soluciones son generadas mediante diversas operaciones que emulan los
mecanismos de la naturaleza y se aplican al proceso de producir nuevas cadenas en el conjunto
de cadenas, siendo las operaciones más frecuentes la mutación y la cruza.
Estas operaciones son usadas para modificar las cadenas seleccionadas, en un esfuerzo para
mejorar el resultado de ajuste y acercarse mucho más al objetivo o la solución óptima [Goldberg,
1999].
La representación del cromosoma (posible solución) se presenta cuando cada posible solución
es codificada por los parámetros representativos de la matriz de Leslie; esto es, los parámetros de
supervivencia y fertilidad. Estos parámetros desempeñan el papel de los genes en un cromosoma,
es decir la cadena estructurada con los valores correspondientes. El cromosoma está compuesto
en la primera parte por los factores de supervivencia y en la
4
En este trabajo, se emplea el término cadena en lugar de individuo, y el de conjunto de cadenas, en vez de
población, a fin de no confundir con individuo y población del modelo poblacional.
45
segunda parte por los factores de fertilidad (descendencia), como se muestra en la Figura 4.1.
Los genes son referenciados por tener los valores que codifican al factor de sobrevivencia y
son representados por S0…Sn, Si e [0,1]. Los valores de fertilidad son representados por m0…m n,m i
G [0,1]. Es importante mencionar que existen varias formas para representa! los valores (alelos)
de las variables y de la estructura del cromosoma (genotipo). En este caso se tomó un alfabeto
binario.
La codificación adoptada del cromosoma se presenta por una longitud fija, la cual es
segmentada para cada parámetro dentro de la estructura. Se tomó una longitud de veinticuatro
bits para los parámetros de supervivencia. Cada segmento de seis bits representa cada uno de
los parámetros de supervivencia, es decir se asigna al modelo cuatro variables.
La otra parte de la codificación consiste en tomar una longitud de veinticuatro bits para
representar los parámetros de fertilidad, cada segmento se representa por seis bits para cada
parámetro y se define también cuatro variables para representar los parámetros de fertilidad.
La decodificación del cromosoma para cada parámetro del modelo de la matriz de Leslie
consiste en realizar la conversión a valores decimales. Los valores que se asignan a las variables
pueden ser las combinaciones posibles binarias producidas por el proceso genético.
46
∑(x )
i
Eˆ =
(4.6)
donde n es el conjunto de valores, x la media aritmética de n, x¿ el valor de la serie en t = i, x i la
predicción de xi.
En el proceso de evaluación se calculan los nuevos valores de x i: con el modelo propuesto, se
valida el valor resultante de la predicción con el valor propuesto por la serie de tiempo (el valor
observado), en base al error generado. Esta evaluación se hace sobre el tamaño de la serie que
se estimará, para cada cadena estructurada del conjunto de cadenas.
La aptitud es medida para cada uno de los modelos tomando en cuenta al final de cada
generación los modelos con mayor error, esto es, los menos adecuados de acuerdo al valor de
ajuste serán remplazados por nuevos modelos.
La construcción de los nuevos modelos parciales se realiza teniendo en cuenta los siguientes
aspectos: el tamaño total del conjunto de soluciones posibles es de 1000 individuos. El tamaño
representa 1000 codificaciones de cromosomas y cada cromosoma es evaluado con la función de
aptitud en cada generación. Los nuevos modelos son generados mediante operaciones de cruza y
mutación. En cada generación se reemplazan la mitad de la población por los mejores modelos
resultantes.
La generación de las nuevas posibles soluciones se hará de acuerdo a los siguientes pasos:
1 Se seleccionan al azar dos cadenas del conjunto completo de soluciones posibles (ver
Figura 4.2)
4 Se decide, para cada cadena, si se realiza una mutación en uno de sus genes
seleccionado aleatoriamente (ver Figura 4.3).
47
Figura 4.2: Selección de soluciones parciales
Este proceso se repite hasta que los modelos con mayor ajuste son obtenidos después de un
número de generaciones predeterminado.
Las series de tiempo son de mucha importancia en el funcionamiento total del modelo
presentado. Los modelos parciales generados para ser evaluados son conducidos por la serie de
tiempo asignada como patrón de comportamiento. Cada modelo parcial se presenta como
48
posible solución y los resultados son evaluados con la serie de tiempo propuesta. Al final se
presentan los mejores resultados con los de menor error generado. Y se realiza la predicción de la
serie propuesta.
Los sistemas multiagentes presentan características apropiadas para el desarrollo del sistema
en estudio. Es adecuado pensar que agentes individuales realizan el trabajo de manera
independiente, distribuyendo el trabajo, de esta manera cada agente aporta una solución
particular e independiente para resolver el problema de manera colectiva.
En este trabajo, el agente Genetic Collective Scheduler es el agente principal que administra
los agentes predictores. Cada agente tiene un mecanismo de predicción, consistiendo en un
modelo parcial de Leslie, obtenido mediante el proceso de ajuste genético.
El esquema de la Figura 4.4 muestra de manera general el funcionamiento del Sistema
GECOLE. En el siguiente capítulo se verá el funcionamiento con detalle y se describirá la
distribución de las tareas de manera específica.
49
4.6. Conclusiones
Se presentó la estructura modificada del modelo Leslie. Este modelo toma en cuenta las series
de tiempo que conducirán al ajuste de los modelos generados genéticamente. Se presentó
también las partes del algoritmo genético que es utilizado en este trabajo.
Se presentó el procedimiento que realiza el algoritmo genético para la generación, evaluación,
cruza y mutación de las soluciones parciales. Se mostró el esquema del funcionamiento general
de los agentes predictores en el sistema multiagente.
50
Capítulo 5
En el presente capítulo se describen las fases del análisis y el diseño del sistema Genetic
Collective Leslie (GECOLE). Se presenta también el esquema desarrollado para el diseño del
presente sistema multiagente. La aportación principal de este trabajo de tesis es el desarrollo del
sistema GECOLE y los agentes predictores. De la misma forma se desarrolló una interfaz de
usuario para la interacción con el sistema. En este capítulo se ve a detalle este sistema, además
de remarcar la importancia de la plataforma de desarrollo Madkit, en la cual fue desarrollado el
sistema multiagente (SMA).
5.1. Metodología
La representación del modelo del sistema nos proporciona una perspectiva de la sociedad de
agentes.
Los diagramas de UML(Unified Modelling Language) [UML, 1999] inicialmente fueron
proyectados para soportar la descripción de los diferentes aspectos de los sistemas orientados a
objetos [Rumbaugh et. al, 1999]. Sin embargo, como se ha mencionado anteriormente, el
concepto de agente se presenta como la extensión de la programación orientada, a objetos. Estas
características nos permiten explorar ciertos lenguajes orientados a objetos con el objetivo de
adaptarlos a las características que presenta el paradigma orientado a agentes. En la actualidad
existan plataformas que nos permitan aplicar todos los aspectos que son referidos a los agentes.
El modelado de sistemas basados en agentes se suele realizar mediante el lenguaje de
modelado unificado (UML), este modelado propone extensiones propias cubriendo los requisitos
51
más importantes para el modelado de agentes y SMA (Sistemas Multi-Agentes), de esta I manera
se presenta AUML (Agent UML), como una solución para el modelado de sistemas basado en
agentes.
Un propósito inicial de AUML es representar protocolos de interacción de agentes AIP 5. Los
diagramas de AUML y los flujos de control e información son considerados actos de comunicación
(mensajes). El protocolo es representado como entidad colocando un diagrama que represente el
flujo de mensajes entre los agentes. Los mensajes son representados por los diagramas de
secuencia, de colaboración, de actividad y de estados. Estos diagramas son agrupados en
paquetes, constituidos como una agregación conceptual de secuencias e interacción [Juchem &
Bastos, 2001].
Los diagramas de interacción son representados como modelos estructurales de interacción
entre los agentes. Los diagramas de secuencia y los diagramas de colaboración son subtipos de
diagramas de interacción, siendo semánticamente equivalentes. La disposición de los elementos
gráficos de los diagramas de secuencia enfatiza una secuencia cronológica de comunicación. En
cuanto a los diagramas de colaboración, estos demuestran las asociaciones entre agentes, donde
una secuencia de interacción es representada a través de numeraciones de los mensajes.
Los diagramas de actividad y los diagramas de estado dan enfoque al flujo de proceso. Los
diagramas de actividad representan las operaciones y los eventos que activan estos. La
diferencia con los diagramas de interacción es la representación de una manera explícita líneas
de ejecución de flujos de control, lo que es particularmente útil para los protocolos de interacción,
compuesto por un proceso paralelo. Los diagramas de estado se centran principalmente en los
estados. Este tipo de diagramas tiene una mejor aplicación como un mecanismo de restricciones
para los protocolos, siendo incorporados a los agentes con las restricciones conocidas.
La arquitectura del sistema multiagente que se presenta en este trabajo, está basada en el
modelo de sistemas multiagentes Aalaadin [Gutknecht & Ferber, 1997]. El modelo Aalaadin
considera un modelo organizacional que presenta los conceptos de Grupo, Agente, y Rol. De
esta manera, el agente se conceptualiza como una entidad capaz de comunicarse con otros
5
AIP (Agent Interaction Protocol) describe un patrón de comunicación, el cual propone una secuencia de mensajes
permitida entre agentes así como sus restricciones sobre el contenido de estos mensajes.
52
agentes en el medio ambiente y desempeñar roles específicos, de acuerdo a sus objetivos dentro
de los grupos. Los agentes que tienen un interés común o con características comunes, forman
los grupos.
La plataforma de desarrollo implementada a partir del modelo Aalaadin es Madkit (Multi Agent
Development Kit)[Gutknecht & Ferber,1998]. Esta plataforma aporta las caracterís ticas necesarias
para el desarrollo de los agentes, y es el ambiente en el cual se desarrolló el sistema que se
presenta y en donde se desempeñará el Sistema GECOLE.
¦ Agente
Un agente es especificado solamente como una entidad comunicativa activa que tiene roles
dentro de los grupos existentes, sin adoptar alguna arquitectura específica.
¦ Grupo
Los grupos son definidos como conjuntos atómicos de agregación de agentes. Cada agente
puede ser parte de uno o más grupos. En su forma más básica, el grupo es sólo una forma
de etiquetar a un conjunto de agentes, y en una forma más desarrollada, en conjunción con
la definición del rol, el grupo permite representar cualquier sistema multi-agente.
¦ Rol
El rol es una representación abstracta de la función, servicio o identificación de un agente
dentro de un grupo. Cada agente puede manejar uno o más roles, y cada rol puede ser
manejado por un agente local o un grupo.
53
La importancia de establecer una categorización establecida por el modelo organizacional de
Aalaadin, coloca a los agentes en su lugar predeterminado, estableciendo los grupos adecuados
para cada uno de los agentes que en particular se desarrollaron para el Sistema GECOLE. Por lo
tanto se mostrará la función de cada uno de los agentes que componen al sistema y su estructura
organizacional dentro del ambiente general.
¦ Pgi: proceso genético que se lleva a cabo en cada uno de los agentes predictores.
¦ Api. conjunto de agentes que tiene asignado la tarea de predicción del modelo en estudio.
Los agentes activados en su dominio tienen asignado un Pgi que buscará el ajuste del
modelo de Leslie en el conjunto de soluciones.
¦ Aín: agente interfaz que tiene la tarea de mantener la comunicación entre el usuario y los
demás elementos del sistema.
¦ Aad: agente principal que tiene la tarea de activar al conjunto de Api, y de mantener la
comunicación entre ellos.
¦ Una vez que el agente Au ha inicializado al agente Ain, se tienen tres partes principales. La
primera parte es el control del conjunto de Api; llevada a cabo por el agente Aad, que es
responsable de la activación de los agentes.
54
Figura 5.2: Modelo de GECOLE
¦ En la activación inicia la segunda parte. La distribución de las tareas a cada agente del
equipo la cual consiste en activar a cada Api con el correspondiente Pgi, para el ajuste los
modelos de Leslie generados como conjunto de posibles soluciones. El Pgi, toma de la base
de conocimientos que es la serie de datos que sirve para conducir al modelo predictor al
ajuste de los modelos parciales.
¦ Cada uno de los agentes Api obtendrá su conclusión individual con base en la predicción de
cada uno de ellos. Los resultados individuales son mostrados al usuario en la interfaz de los
Api.
¦ La tercera parte consiste en conjuntar los resultados del equipo de Api, para obtener la
media aritmética de los resultados individuales y presentar una solución global.
En esta sección se hace una descripción del escenario general, identificando los dominios de
cada agente, así como los actores y roles. Es importante mencionar que el sistema GECOLE
desarrollado en este trabajo de tesis, presenta como principal aportación el estudio sobre el
comportamiento de poblaciones en sistemas multiagentes.
55
En esta fase de análisis, se abordan los siguientes puntos:
2. Representar las interacciones del sistema con su entorno de acuerdo a los actores y sus
respectivos roles, también la funcionalidad que ofrece el sistema por medio de diagramas de
caso de uso.
Escenario general
El funcionamiento sobre el escenario entre el usuario y los agentes del sistema GECOLE es el
siguiente:
Al inicializar el agente principal, el usuario tiene varias opciones que le permite ejecutar, a los
diferentes agentes que se clasifican de acuerdo a su funcionamiento en el sistema (ver Figura
5.3).
A continuación se explica el funcionamiento del diagrama:
1. El usuario tiene las opciones de elegir al agente que funge como la interfaz principal.
a) Agentes Predictores.
b) Agente Editor.
c) Agente Help.
56
Figura 5.3: Dominio general de la aplicación
4. El usuario elige la opción de activar los agentes predictores, del Agente Interfaz.
5. El Agente Interfaz inicializa a los agentes predictores para conformar el equipo y realizar el
proceso evolutivo. Internamente cargan la serie de tiempo y comienza el proceso.
7. Los agentes predictores muestran los resultados que se van obteniendo a través del
procedimiento genético y los resultados parciales de los modelos.
Identificación de dominios
¦ Dominio del usuario, que se encarga de tener interacción directa con los agentes.
57
¦ Dominio de los agentes, que está conformado por un ambiente de agentes con role
diversos, es decir, tienen una función específica dentro del área de trabajo para lleva a cabo
sus objetivos.
Usuario
¦ Función principal
¦ Comunicación
La interfaz visual proporciona la comunicación entre el agente principal y el usuario.
¦ Capacidades
• Iniciar la aplicación
• Inicializar a los agentes para procesar la información y obtener resultados.
• Puede interactuar con los agentes generados.
Los actores que se consideran en el dominio de los agentes son los siguientes.
Agente de interfaz
¦ Función principal
Este agente es el responsable de manejar el enlace entre todos los componentes de la
aplicación.
¦ Comunicación
Este agente tiene una comunicación estrecha entre el sistema, el usuario y el resto de I los
agentes, el agente Help y el agente predictor.
58
¦ Capacidades
Controla el panel principal de la aplicación a través del cual se inicializa la Interfaz de Usuario.
La parte principal es la activación de los agentes.
Agente predictor
¦ Función principal
El agente predictor después ser lanzado activa el proceso evolutivo que ajusta al modelo parcial
de Leslie, después carga la serie de tiempo que tiene la función de conducir el ajuste. El agente
realiza la predicción de la serie que es propuesta como patrón del comportamiento de la
población en estudio.
¦ Comunicación
Este agente tiene comunicación con el agente principal geneticCollectiveScheduler a través del
paso de mensajes entre ellos.
¦ Capacidades
Agente editor
¦ Función principal
Proporciona una interfaz cuyo propósito es visualizar el contenido de archivos, así como
generar archivos nuevos. En esencia se utiliza este agente para observar los archivos
generados que contienen los resultados del agente predictor.
¦ Comunicación
Este agente se comunica con el agente principal geneticCollectiveScheduler a través de
mensajes.
¦ Capacidades
Mostrar, visualizar y construir archivos, presenta la posibilidad de generar archivos y editar los
archivos creados. Tiene las propiedades básicas de un editor de texto como: copiar texto,
pegarlo y cortarlo.
59
Agente Help
¦ Función principal
El objetivo principal es proporcionar una ayuda al usuario para conocer el funcionamiento
general del sistema, así como el funcionamiento específico de cada uno de los agentes. En
términos generales provee una ayuda al usuario.
¦ Comunicación
Este agente mantiene una comunicación con el agente principal genetic Collectivt
Scheduler.
¦ Capacidades
Mostrar de manera activa una ayuda al usuario así como un panorama general del
funcionamiento de la aplicación.
Todos los elementos establecidos en ésta sección se consideraron para el desarrollo del
sistema GECOLE.
1. El agente usuario inicia la interacción mediante el agente interfaz que en este caso es
geneticCollectiveScheduler.
60
Figura 5.4: Diagrama de Casos de Uso del sistema
61
2. A través del agente geneticCollectiveScheduler se generarán los agentes correspondientes
dependiendo la elección del agente usuario. Se puede inicializar el agente predictor, el
agente editor o el agent help.
El diagrama de clases muestra la estructura funcional del sistema de forma general. Este
proporciona información acerca de las relaciones que existen en el sistema entre las diferentes
partes. Un diagrama de clases es una colección de elementos estáticos de un modelo, como son
clases, interfaces y sus respectivas relaciones, estos diagramas son conectados como un grafo
entre sí y sus contenidos [Rendón, 2000]. De la misma manera presenta una estructura de la
organización de los agentes con sus relaciones entre sí y el agente principal.
En el diagrama de la Figura 5.5 se presentan las clases que componen al sistema GECOLE
de manera general. En este diagrama se observan las relaciones entre clases como la asociación,
la herencia y la dependencia.
En el diagrama de clases de la Figura 5.6 se expone la descripción detallada del
comportamiento de las diferentes clases. Por mencionar algunas existen a
l clase del agente
principal y la clase del agente predictor.
Abstract Agent
Esta clase es propia de las libr-erías de MadKit. Es la clase principal en Madkit. Esta clase
aporta el soporte necesario para que un agente presente un ciclo de vida, pase mensajes entre
otros agentes y para otros agentes, además de administrar los grupos y los roles en el dominio de
agentes, también puede disponer una interfaz gráfica para los agentes.
Los agentes que heredan el comportamiento de esta clase se identifica por definir a los
agentes con una interfaz. El agente principal genetic Collective Scheduler proporciona una
interfaz visual para interactuar con el usuario.
62
Fig. 5.5: Diagrama de clase genético del sistema GECOLE
63
Figura 5.6: Diagrama de clases del modelo predictor
64
Agent Predictor
Esta clase fue desarrollada para generar el comportamiento de cada uno de los agentes
predictores. En esta clase se disponen de métodos que permiten tener comunicación con el
agente principal a través de mensajes. Se desarrolló métodos para interactuar con las clases que
desarrollan el proceso genético.
Operaciones:
¦ InitGUl(): Inicializa las operaciones de interfaz e inicializa los componentes del panel del
agente.
¦ Live(): En este método se envia un mensaje para mostrar el estado del agente, activa todo
su comportamiento y se pone activo para recibir mensajes.
¦ setTargetGroup(String group): Este método se generó para establecer el estado del grupo al
que pertenece el agente.
¦ setTargetRole(String role): Este método establece un estado del rol que juega el agente en
ese momento.
65
¦ stderr(): Expone al usuario un mensaje de error cuando éste llega a existir.
GeneticSearchObject
Esta clase define la abstracción del comportamiento genético y define métodos que son
genéricos heredados por la clase GeneticSearch. GeneticSearch
Esta clase contiene todo el funcionamiento del proceso genético. La clase permitirá generar el
conjunto de posibles soluciones y generar en cada generación los modelos parciales de solución.
Obtiene los modelos finales que se ajusten a la población en estudio.
Operaciones:
66
¦ getAvgFitness(): Toma el valor de un promedio de ajuste para procesar los valores y
evaluarlos.
¦ lesliepredictor(): Recibe los modelos parciales que son enviados del método
modeloLesliePredictor() de la clase de evaluación que es EvaluateSearch.
¦ setPopulationSize(int size): Activa el tamaño total de la población, este valor será tomado
en cuenta cuando se generan los cromosomas en la población de las soluciones parciales.
67
¦ insertIntoPopulation(GeneticSearchObject member, Vector list): Después de procesar la
cruza y en su debido caso alguna mutación, este método se encarga de anexarlo al
conjunto de soluciones que es la población activa.
EvaluateSearch
Esta clase tiene como función principal evaluar los modelos parciales que son generados, en
el conjuto de soluciones por el proceso genético de la clase GeneticSearch. En cada generación
se evalúan cada uno de los modelos parciales que se prueban para el ajuste de la serie de
tiempo. Todos los modelos resultantes de cada generación son evaluados en esta clase y
enviados a la clase GeneticSearch. El modelo final es enviado al agente predictor.
Operaciones:
¦ getFitness: Toma el valor de ajuste para cada modelo parcial, este es referido a la clase de
GeneticSearch.
¦ evalúa A juste (): Esta operación retoma el modelo parcial que es evaluado para el ajuste de
la serie. Se utiliza como función de evaluación (fitness) del proceso genético el cálculo del
error cuadrático medio normalizado.
Scheduler
Esta clase que proporciona las librerías de Madkit es de tipo abstracta. Tiene como principal
función el de proporcionar las bases para la generación y activación de los agentes. Estos
agentes siempre son activados dentro del ambiente multiagente.
68
Esta clase define al agente geneticCollectiveScheduler como un agente genérico que
administra a todos los agentes. Sostiene una colección de activadores. Estos activadores usan los
funcionamientos y operaciones privadas del agente para conseguir acceso a las referencias de las
entidades que es la activación de los agentes.
GeneticCollectiveScheduler
Esta clase se define como el agente principal que tiene interacción con los agentes en el
ambiente de los agentes. Como esta clase hereda de Scheduler tiene el comportamiento de ser el
agente genérico que activa a los agentes. Presenta la característica de ser el agente
administrador. Este agente permite generar y activar a los agentes predictores que formarán el
equipo de trabajo.
Operaciones:
¦ agentePredictor(): Inicializa a los agentes predictores que formarán el equipo de trabajo para
el ajuste de la serie de tiempo.
¦ agente We6Browser(): Inicializa al agente Help que presenta una ayuda en línea del
sistema.
69
¦ Live(): Activa la operación principal de inicio y activación del agente Scheduler en el Kernel
de Madkit.
¦ end(): Termina y libera la memoria para cada uno de los agentes, es decir elimina los
procesos.
AbstractGUIPredictor
En esta clase se definen los métodos que son abstractos para proporcionar el comportamiento
de la interfaz en un agente predictor.
Operaciones:
¦ Init(): Inicializa todos los componentes que contiene la interfaz del agente predictor.
70
¦ Close(): Cierra la ventana del agente.
GUIPredictor
Esta clase proporciona una interfaz gráfica para los agentes predictores. En esta clase se
observan los resultados que se van generando por el proceso de cada agente. Estos resultados
son mostrados para cada generación del proceso genético, además esta clase muestra los
modelos parciales y los resultados finales de cada uno de los agentes.
Constructor:
GuiPredictor(AgentPredictor ag): se utiliza para recibir el comportamiento que tiene el agente
predictor y para hacer referencia a esta clase. En esta parte se envía también un mensaje de
activación.
Operaciones:
¦ showCurrentRole(String role): Expone también el rol que esta jugando este agente.
Interfaz
Esta clase genera la interfaz principal del agente geneticCollectiveScheduler y muestra un
panel que presenta las opciones para activar a los agentes, opciones para salir y para mostrar
una ayuda.
71
Nombre Atributos Tipo Descripción
ag geneticCollective Se referencia a esta clase para utilizar sus
Scheduler métodos y atributos
currentTargetLabel JLabel Monitorea el estado del agente principal
Scheduler en una etiqueta de la interfaz.
outputArea JTextArea Visualiza los resultados en el área de texto.
out PrintWriter Crea y establece el conducto para el flujo e
impresión de los datos
err PrintWriter Tiene el mismo comportamiento del atributo
anterior.
Constructor:
Interfaz (GeneticCollectiveScheduler _ag): se utiliza para recibir el comportamiento del agente
principal. Esta clase hace referencia al agente Scheduler. De esta manera todo el
comportamiento de los componentes los maneja el agente principal.
Operaciones:
¦ setRecipientLabel(String s): Muestra en una etiqueta el estado del agente en ese momento.
Los estados son mostrados como mensajes entre los cuales son: activado, enviando
mensaje.
¦ println(String s): Despliega los mensajes en el área de texto principal del agente Scheduler.
72
¦ processWindowEvent(WindowEvent e): Procesa los eventos que ocurren dentro de la
interfaz.
Este diagrama muestra una secuencia de eventos es decir cambios y estados que ocurren en
cada uno de los agentes (clases) que participan en el sistema. En seguida se presentan los
diagramas de estados de las clases del sistema.
73
Figura 5.7: Diagrama de estados de la clase Interfaz
Esta clase obtiene el funcionamiento evolutivo de la clase GeneticSearch y en conjunto con los
demás agentes predictores llevan a cabo la evaluación de los modelos parciales generados.
También mantiene la comunicación con el agente principal y finalmente los resultados son
mostrados en el área de monitoreo que son procesados por los mensajes.
74
Figura 5.9: Diagrama de estados de la clase GeneticSearch
2. Se activan los agentes predictores que formarán al equipo de agentes. Estos realizarán las
tareas de ajuste genético. Los agentes predictores muestran una pequeña interfaz. En esta
interfaz son mostrados los resultados que generan. Esta interfaz se activa al través del
método init() de la clase GuiPredictor. Esta clase tiene relación directa con I la clase
AgentPredictor la cual activa el método initGUl() y el método live().
3. Cada agente activa el proceso genético dentro del cual es generado el conjunto de posibles
soluciones. Estas soluciones son los modelos parciales del modelo de Leslie para su ajuste.
Este procedimiento es realizado por el método generateRandomChromosome(). El proceso
genético lo realiza la clase GeneticSearch.
4. Los modelos generados son evaluados por la clase llamada EvaluateSearch. Esta clase
evalúa cada uno de los modelos parciales generados mediante el método evaluaAjuste(). En
esta etapa es tomada la base de conocimiento que es la serie de datos propuesta en el
comportamiento del método modeloLesliePredictor(). La lectura de la base de conocimientos
es realizada por el método LeeFiles().
6. Los resultados que se van generando como son los modelos parciales son mostrados en la
interfaz de cada agente para que finalmente los observe el usuario. Esto se hace a través de
mensajes entre los agentes en la clase AgentPredictor mediante el método mensaje().
76
Figura 5.11: Diagrama de secuencia del modelo Predictor
77
entre las clases. En el diagrama de colaboración [Rendón, 2000] muestra su énfasis en la
estructura complementada por los agentes y sus relaciones. En la Figura 5.12 se muestra el
diagrama de colaboración del sistema en estudio.
Los mensajes entre los agentes se observa con una numeración llevada secuencialmente, lo que
permite visualizar la interacción general de todos los agentes. La descripción de los mensajes se
explican en seguida:
¦ El agente interfaz mediante el método 2:init() activa la interfaz de los agentes predictores
mediante GuiPredictor, el equipo de agentes predictores es activado mediante el
78
método 3:activate(), sucesivamente por 12:activate(), y por 21:activate(), para inicializar a los
agentes.
¦ Cada agente generado tiene un enlace directo con la clase GeneticSearch donde los agentes
establecen su tarea de búsqueda y ajuste. Este enlace lo hace el método 4 GeneticSearch () para
el primer agente predictor. Este enlace lo hace cada uno de los agentes con: 13:GeneticSearch(),
y 22:GeneticSearch().
¦ En la clase GeneticSearch se inicia todo el proceso genético pero también es cargada la base de
conocimientos con el método 5:LeeFiles() identificada por la serie de datos que se necesita para
conducir al modelo predictor.
¦ En la clase EvaluateSearch son evaluados cada uno de los modelos parciales que son generados
con el método 6:modeloLesliePredictor() que es el que permite el enlace con la clase mencionada.
¦ Los resultados de los modelos que se evalúan son regresados a la clase GeneticSearch mediante
el método 7:evaluatePopulation(). Cada proceso es realizado por cada uno de los agentes y los
resultados son enviados a cada agente por medio del método 8:handleMessage().
¦ Los agentes presentan sus resultados al usuario a través de su interfaz. Cada resultado es
mostrado por el método 9:GuiPredictor() También es enviado un dato de estado al agente
principal con el método 10:println(). Los agentes guardan los resultados generados de las
estimaciones del modelo a través de la clase GeneticSearch.
El sistema GECOLE se activa dentro del ambiente Madkit. Este ambiente es presentado por la
interfaz gráfica principal G-Box que funciona como un agente administrador de conjuntos de
agentes. El sistema GECOLE desarrolla todas sus actividades en G-Box. GECOLE presenta una
interfaz gráfica que sirve de enlace para el usuario. El usuario interactua con GECOLE y activa a
los agentes.
Además se muestran las opciones para activar a los agentes entre los cuales está el agente
predictor.
79
Cabe mencionar que de acuerdo a las características de heterogeneidad, modularidad, entre
otras, el lenguaje de programación Java es la plataforma fundamental para la arquitectura en la
cual se desarrolló la aplicación.
A continuación se presenta en la Figura 5.13 el ambiente multiagente representado por la
interfaz gráfica de G-Box. Se puede observar al sistema GECOLE dentro de este ambiente junto
con todos sus componentes. Esta imagen muestra el panel principal del sistema GECOLE con las
siguientes opciones:
80
2. Barra de activación de agentes: Esta opción permite al usuario la posibilidad de activar
cualquiera de los agentes que están disponibles entre los cuales está el agente predictor.
3. Área de presentación: Esta área muestra el monitoreo y los resultados que proporcionan los
agentes.
4. Ambiente G-Box: Contiene al agente principal que se encuentra dentro de lo que es Madkit
que es el medio donde se desarrolla.
En la Figura 5.14 se presenta el sistema principal junto con los agentes predictores, se
observa los agentes predictores son activados e inicializados. Cada agente predictor expone una
interfaz gráfica individual que sirve para exponer mensajes y resultados.
81
1. Agente principal: inicializa la activación de los agentes a través de la elección sobre el panel
de botones.
2. Agentes predictores: son representados cada uno de ellos por una pequeña ventana, la cual
muestran los mensajes que se obtienen sobre los resultados y monitorea en el área de
texto.
En la Figura 5.15 se observa al agente que juega el rol de ayuda. Este agente muestra una
página web la cual contiene información sobre el funcionamiento básico del sistema así como
información sobre la plataforma de Madkit y opciones de soporte.
5.7. Conclusiones
82
que hacen referencia a la metodología UML para el diseño del sistema. Se detalló el
funcionamiento de cada clase que participa en el sistema. Al finalizar se presentó la interfaz
gráfica de usuario, basada en la plataforma Madkit. Se describieron sus partes y la función que
realiza cada una de ellas.
83
Capítulo 6
Resultados
En este capítulo se exponen los resultados obtenidos en el desarrollo del proceso genético
y la predicción del equipo de agentes en el sistema GECOLE. La validación de la técnica
propuesta se realizó mediante la predicción de series de tiempo sintéticas y reales. En esta
sección se presentan los resultados obtenidos en las pruebas.
Para el proceso genético se designó que trabaje durante 100 generaciones, los modelos
que se observan son obtenidos a partir de la generación 95 y para cada generación se
obtiene el mejor modelo. El desarrollo del proceso de predicción se realiza al obtener los
modelos que mejor se ajusten de acuerdo a la función de aptitud, entonces los modelos son
84
utilizado para predicción. La aptitud es evaluada por el error NMSE que se genera en cada
modelo.
85
El proceso genético presenta los mejores modelos parciales generados. En esta prueba se
tomaron 600 datos para entrenamiento y 110 para predicción. La función de aptitud arroja
un valor de NMSE para cada modelo parcial evaluado como la posible solución, dentro del
conjunto de soluciones.
El NMSE nos indica el margen de error y con este margen proporciona al mejor modelo
en cada generación. De esta manera los mejores modelos se toman para la predicción.
En la Figura 6.2 se muestran los errores NMSE generados al evaluar los modelos parciales.
Se muestran errores resultantes para las últimas generaciones, estos modelos son empleados
para predecir la serie de tiempo evaluada como primera prueba.
86
El modelo con el cual se generó la serie sintética tomada como patrón es el
modelo de la matriz dada por (6.7). Cada uno de los modelos obtenidos presentan
un margen de error aceptable, al ser evaluados con la función de ap titud en el
algoritmo genético.
Los resultados que se muestran en esta segunda evaluación, fueron obtenidos al tomar
los modelos finales a partir de la generación 95.
87
Se observa por ejemplo en la gráfica de la Figura 6.3, los resultados que se obtuvieron al
predecir esta segunda serie de tiempo, generada mediante la matriz dada por (6.7). En esta
evaluación se tomó el ochenta por ciento de los datos de la serie para entrenamiento y el veinte
por ciento para predicción.
Los errores arrojados mediante la función de aptitud de los modelos obtenidos para esta serie
son mostrados en la Figura 6.4.
Las matrices con las que se generan las series sintéticas son presentadas com o procesos
ambientales estocásticos, sin embargo los modelos que se generan con el proceso genético,
arrojan valores con errores pequeños.
88
1 .59720933 1. 6922444 2 .8232385 4. 45523065
0. 18771183 0 .0 0. 0 0. 0
M p1 =
0. 0 0 .1638844 0. 0 0. 0 (6.14)
0. 0 0 .0 0 .735812 0. 0
La gráfica resultante de la Figura 6.5 muestra los resultados obtenidos de una tercera
evaluación.
Se puede observar la serie que muestra la predicción con una línea con diamantes (?). Al
inicio no presenta un ajuste preciso, pero al finalizar, se observa como los valores estimados
son cercanos a los de la serie propuesta como patrón a seguir.
En la Figura 6.6, se muestra los errores arrojados para ésta última serie de tiempo
89
Figura 6.6: Errores generados en el algoritmo genético a evaluar los modelos parciales.
Los datos usados en las pruebas con series de tiempo reales fueron tomados del sitio web del
CPB/NCEAS 6, específicamente de la base de datos GPDD7. Estos datos se refieren a la especie
animal de Salmones, muestreados cada año durante 110 años y medida su población en
toneladas estimadas usando estadisticas de captura, conteo de trampas y marcado y recaptura.
La especie de salmón tomada en cuenta es Salmosalar (Salmón Atlántico). Esta base de datos
contiene 110 registros y comprende del periodo de 1876 a 1986, estos datos se obtuvieron del rio
Drammenselv de la provincia de Buskerud, Noruega.
La Figura 6.7 muestra la serie de datos que representa el comportamiento de la especie de
Salmones. Esta serie se tomó como patrón para ser evaluado por el sistema GECOLE y se
realice el procedimiento adecuado y los agentes hagan la predicción.
Se toma una parte de los datos de la serie para el entrenamiento y ajuste de los modelos
parciales en los agentes. Particularmente se utilizan 60 datos para entrenamiento y ajuste. La
predicción se realiza con 50 datos.
Los resultados obtenidos de la predicción se muestran en la gráfica de la Figura 6.9. La línea
marcada con diamantes representan los valores estimados y la línea continua los valores
objetivos. Los datos que se utilizaron para entrenamiento y ajuste de los modelos parciales para
este caso fueron 60 datos. Durante este proceso los agentes predictores obtuvieron
6
CPB/NCEAS - Center for Population Biology Imperial College / National Center for Ecological Analysis and Synthesis
7
GPDD - The Global Population Dynamics Database(1999)
90
Figura 6.7: Serie de tiempo de información de Salmones.
un modelo de Leslie ajustado y que ha sido conducido por la serie de tiempo propuesta. En
la gráfica de la Figura 6.8 se observan los comportamientos de los agentes predictores en el
proceso de entrenamiento. La gráfica de la Figura 6.8 muestra el entrenamiento del agente
predictor Ag1 representado por la línea (—), Ag2 representado por la línea (?), Ag2
representado por la línea (+).
Figura 6.8: Datos de entrenamiento con los modelos de Leslie obtenidos por los agentes Api
91
Como se puede observar en la gráfica de la Figura 6.9 presentada la predicción que se
hace sigue el comportamiento de la serie real
Figura 6.9: Resultados de predicción hechas por el modelo predictor en series de tiempo de
Salmones.
Figura 6.10: Comparación con el método clásico (ARIMA) y el método predictor propuesto.
Los resultados comparativos de la predicción de la serie de Salmones con el método del
92
sistem GECOLE y el sistema Autobox se muestran en la gráfica de la Figura 6.10. Se puede
observar las predicciones generada por ambos sistemas.
En la gráfica de la Figura 6.10 se muestra una ventana que es parte de la serie de predicción
representada desde el tiempo t = 100 al tiempo t = 110 que el numero total de datos en la serie de
Salmones. Se puede apreciar la predicción que resulta con el sistema Autobox, esta predicción se
muestra con la línea de diamantes (o), el resultado de la predicción del sistema GECOLE se
puede observar con la línea punteada de cruz (+) y la serie propuesta se aprecia con la línea
continua(—).
Figura 6.11: Resultados no favorables de la predicción de una serie de tiempo con valores
grandes
93
6.4. Conclusiones
Se presentaron los resultados que se obtuvieron al realizar la evaluación de tres modelos de
poblaciones hipotéticas, representadas por las series de tiempo sintéticas. Se presentó también
los resultados de las pruebas hechas con una serie de tiempo real, representada por el
comportamiento de una población de Salmones.
Los resultados se observan en el ajuste de las series de tiempo representadas por la línea con
diamantes. Los errores generados al evaluar los modelos parciales se representan en los cuadros
de NMSE. Con respecto a los errores producidos por el proceso genético, se aprecia que el
NMSE disminuye conforme pasan las generaciones, y los modelos parciales encuentran los
valores que más se acercan a la serie de tiempo propuesta.
94
Capítulo 7
Conclusiones y perspectivas
7.1. Conclusiones
En este trabajo se desarrolló un sistema multiagente llamado sistema Genetic Collective Leslie
(GECOLE), para la predicción de sistemas poblacionales. Los sistemas poblacionales son un área
importante de estudio, en sistemas dinámicos.
El sistema (GECOLE) genera un equipo de agentes que obtienen la predicción colectiva, de
una serie de tiempo de una población en estudio, mediante modelos de Leslie.
Los agentes generados utilizan modelos de Leslie como una forma de razonamiento. El
modelo de Leslie describe el comportamiento de una población. Un problema importante al utilizar
los modelos de Leslie es la elección de los parámetros en las matrices que describen el
crecimiento, mortalidad y reproducción de los organismos.
En este trabajo, se desarrolló una técnica que utiliza un algoritmo genético conducido por
series de tiempo de una población, para obtener los parámetros de un conjunto de matrices de
Leslie.
Se espera que este conjunto de matrices modelen adecuadamente la población en estudio de
manera colectiva. Las mejores matrices, obtenidas por el algoritmo genético, son empleadas
como mecanismo de razonamiento en los agentes. Estos modelos se obtienen para observar el
ajuste que se obtiene en la predicción de la serie de tiempo.
Una vez realizado lo anterior, los agentes realizan predicciones individuales del
comportamiento del sistema, las cuales son empleadas para obtener una solución global
mediante un proceso simple de media aritmética.
Para el sistema desarrollado se empleó una metodología para el desarrollo de SMA, y la
plataforma MultiAgent Development Kit (MadKit).Esta plataforma presenta características
adecuadas para el desarrollo del sistema como son:
95
¦ Esta plataforma está basada en el modelo organizacional Aalaadin, que presenta a un
agente como una entidad que juega un rol y pertenece a un grupo específico.
La principal aportación de este trabajo fue presentar una técnica propuesta para buscar los
modelos apropiados de matrices de Leslie que se ajusten a un modelo en estudio de una
población global. Estos modelos son buscados mediante un algoritmo genético que es conducido
por una serie de tiempo que se propone como patrón de una población en estudio. Un sistema
multiagente se desarrolla para generar un equipo de agentes predictores independientes y
encontrar una solución global.
7.2. Publicaciones
Otros resultados obtenidos en este trabajo fueron las siguientes publicaciones:
7.3. Limitaciones
96
primer caso se tomaron series de tiempo sintéticas específicamente series distintas para probar el
planteamiento propuesto. Como segundo caso se considero una serie de tiempo real tomada
originalmente de CPB/NCEAS, para observar también en este caso como se comporta el modelo
propuesto.
Sin embargo cabe mencionar que existen limitaciones para todo sistema desarrollado, en este
trabajo el sistema multiagente GECOLE presenta la limitación de no ser un sistema genérico que
sirva para predecir cualquier base de conocimiento o serie de datos, sino que se realizaron todas
las pruebas correspondientes para los ejemplos planteados tomando en cuenta algunas series
reales.
Las pruebas realizadas se hicieron con series de tiempo que contenían valores pequeños, que
representaban un tamaño a escala de la población, en estas pruebas los resultados son
aceptables. En algunas series de tiempo los datos de las observaciones son representadas por
valores grandes, el sistema GECOLE en este tipo de series de tiempo proporciona resultados que
no son favorables para un buen ajuste y predicción.
Esta consideración pretende plantear que el modelo propuesto tiene limitaciones y que
funciona bien para los casos planteados y casos similares, pero para los casos de series de
tiempo con valores grandes funciona no tan aceptablemente como se puede apreciar en la gráfica
de la Figura 6.11 mostrada en el capitulo 6 Resultados. Esto es bien conocido por mencionar
algún ejemplo las redes neuronales artificiales y por eso la diversidad de las diferentes tipos de
redes [Diez et. al, 1999].
7.4. Perspectivas
Con este trabajo, se inicia una línea de investigación, y una plataforma de desarrollo para
poder seguir realizando diferentes pruebas en el área de otras técnicas de modelado de Dinámica
de Poblaciones, y una forma de utilizar los sistemas Multiagente.
Como perspectivas se presentan los siguientes apartados:
¦ La realización de pruebas con otras series de tiempo, para evaluar la capacidad del
modelo.
97
¦ Aplicación a un problema real, pensando en sistemas pesqueros con algunas instituciones de
ciencias marinas (UABC-Universidad Autónoma de Baja California, CICESE-Centro de
Investigación Científica y de Educación Superior de Ensenada).
98
Bibliografía
[Abramson & Zanette, 1998] Abramson, G., & Zanette D. H., Statistics of extinction and survival in
LotkaVolterra systems. Phys. Rev. E,57,4572.(1998).
[AgentBuilder, 1999] AgentBuilder User 's guide. Reticular Systems, external documentation,
http://www.agentbuilder.com/, August 1999.
[Agudelo & Ríos, 1997] Agudelo, J., & Rios A., Sem. Inteligencia Artificial. Medellin. Universidad
de Antioquia 1997.
[Báck et. al, 1996] Báck, T., Schwefel, Hans-Paul, An Overview of Evolutionary Algorithmé for
Parameter Optimization, University of Dortmund.
[Bellifemine, 2001] Bellifemine, Fabio, Java Agent Development Framework. What it is and what it
is next. Telecom Italia Lab - Torino (Italy). ETAPS 2001, 7th Apr. 2001.
[Bentley, 1999] Bentley, P. J., Evolutionary Design by Computers. Morgan Kaufmann Publishers
Inc., San Francisco, CA. [BEEB1]. (Contributing Editor) (1999).
[Berryman, 1981] Berryman, A. A., 1981. Population Systems: A General Introduction. Plenum
Press.
[Box & Jenkins, 1976] Box, G. E. P., Jenkins, G. M., Time Series Analysis: Forecasting and
Control. Holden Day. (1976).
[Brenner et. al, 1998] Brenner, W., Zamekiq, R., and Wittig H., Intelligent Agents: Foundations and
Applications, Berlin: Springer-Verlag, 1998.
99
[Bussetta et. al, 1999] Busetta, P., Rónnquist, R., Hodgson A., Lucas A., "JACK Intelligent Agents-
Components for Intelligent Agents in Java", updated from AgentLink Newsletter,
http://www.agent-software.com.au/ , October 1999.
[Caswell, 1989] Caswell, H., Matrix Population Models: Construction, Analysis, and Interpretation.
Sunderland, MA: Snauer Associates, 1989.
[Collis & Ndumu, 1999] Collis, J.; Ndumu, D., "The ZEUS Technical Manual", external
documentation, http://labs.bt.com/projects/agents/zeux/, September 1999.
[Cullen, 1985] Cullen, M. R., Linear Models in Biology, Ellis Horwood Series Mathematics and Its
Applications. Ellis Horwood, Chichester, 1985.
[Cristea et. a/, 2000] Cristea, P., Arsene, A., and Nitulescu B., Evolutionary Intelligent Agents,
Proceedings of the Congress on Evolutionary Cornputation (CEC-2000), San Diego, USA, p.
1320-1328.(2000).
[DeJong, 1975] De Jong, K. A., An analysis of the behavior of a class of genetic adaptive systems.
Estados Unidos, Tese (doutorado), - University of Michigan 1975.
[Diez et. oZ, 1999] Diez, R. P., Moreno, P. P., Fernández J. P., Fernández N. G., Aplicación de
Redes Neuronales Artificiales al Cálculo de Previsiones a Corto Plazo en el Mercado
Eléctrico Español. Technical Report. ETSII e II de Gijón. Universidad de Oviedo.
[Ferber & Gutknecht, 1998] Ferber, J., y Gutknecht, O., A meta-model for analysis and design of
multi-agent systems, Proceedings of the 3rd International Conference on Multi-Agent
Systems, (ICMAS'98), IEEE, pp. 155-176, August 1998.
[Finklestein & Carson, 1985] Finklestein, L., y Carson, E. R., Mathematical Modelling of Dynamic
Biological Systems. John Wiley & Sons. 355pp. 1985.
[Fogel et. a/, 1966] Fogel, L.J., Owens, A.J., & Walsh M.J., Artificial Intelligence through Simulated
Evolution, New York: Wiley, (1966).
[Goldberg, 1999] David, E. Goldberg. Genetic Algorithms in Search, Optimization and Machine
Learning. (1999). Addison Wesley.
[Goodman & In Soule, 1987] Goodman, D., In Soule M., Viable Populations for Conservation.
Cambridge; Cambridge University Press, 1987.
100
[Grefenstette, 1995] Grefenstette, John J., Predictive Models Using Fitness Distributions of Genetic
Algorithms. In Foundations of Genetic Algorithms 3, L. Darrell Whitley and Michael D. Vose,
editors, pp. 139-162. San Mateo, CA: Morgan Kaufmann, 1995.
[Guessoum & Briot, 1999] Guessoum, Z., Briot, J.P., From Active Objects to Autonomous Agents,
IEEE Concurrency, July-September, 1999, pp.68-76
[Gutknecht & Ferber, 1997] Gutknecht, O., y Ferber, J., Madkit: Organizing heterogeneity with
groups in a plataform for múltiple multi-agents systems. December 1997. Technical Report.
97188, LIRMM, 161, rué Ada-Montpellier-France.
[Gutknecht & Ferber, 1998] Gutknecht, O., Ferber, J., The MADKIT Agent Plataform Architecture.
Agents WorkShop on Infrastructure for Multi-Agent Systems, 1998.
[Hernández, 1998] Hernández, A. A., Introducción a las Redes Neuronales Artificiales. Soluciones
Avanzadas; pags 25-34. Noviembre 1998.
[Heitkótter & Beasley, 2000] Heitkótter, J., y Beasley, D., The Hitch-Hiker's Guide to Evolutionary
Computation: A list of Frequently Asked Questions (FAQ), usenet: comp.ai.genetic. Eds.
(2000)
[Hitz k Werthner, 1996] Hitz, M., & Werthner, H., Earning Benefits of the Object-Oriented Paradigm
in Dynamic System Simulation. Copyright 1996 IEEE. Published in the Pro-ceedings of the
30th Annual Hawaií, U.S.A.
[Holland, 1992] Holland, J. H., Adaptation in Natural and Artificial Systems, 2da edition.
Cambridge: MIT Press/Bradford Books, 1992.
[Juchem & Bastos, 2001] Juchem, M., y Bastos, R. M., Engenieria de Sistemas Multiagentes: Urna
Investigacao sobre o Estado da Arte. Facultad de Informática. PUCRS-Brazil; April-2001.
[Koza, 1992] Koza, J., (1992) : Genetic Programming. Cambridge : M.I.T. Press.
[Larousse, 1991] Ramón, G. P., Gross M., Enciclopedia científ ica larousse. Segunda edición
actualizada. Ed.Larousse, 1991.
[Leslie, 1945] Leslie, P. H., On the Use of Matrices in Certain Population Mathematics, Biometrika
37, 1945, pp. 183-212.
101
[Lotka, 1925] Lotka, A. J., Elements of physical biology. Baltimore: Williams & Wilkins Co. (1925).
-Volterra, Two Species Model http://www.stolaf.edu/people-/mckelvey/envision.dir/lotka-
volt.html
[Maes, 1997] Maes, P., Software Agents Tutorial, Conference on Human Factors in Computing
Systems, MIT Media Laboratory, 1997. CHI97.
[Makridakis et. al, 1983] Makridakis, S., Wheelwright S.C., and Hyndman R.J., Forecasting:
methods and applications, New York: John Wiley & Sons. (1998).
[Malthus, 1798] Malthus, T., An Ensay on the Principie of Population, London, Printed For J.
Johnson, In St. Paula Church-Yard, 1798.
http://www.ac.wwu.edu/stephan/malthus/malthus.0.html
[McLulich, 1937] McLulich, D. A., Fluctuations in the numbers of the varying haré (Lepus
americanus). University of Toronto Studies, Series No. 43. University of Toronto Press,
Toronto. 1937.
[Min-Soo & Seong-Gon, 2001] Min-Soo, K., & Seong-Gon, K., Parallel-Structure Fuzzy Systems
for Time Series Prediction, International Journal of Fuzzy Systems, Vol.3, No.l, March 2001.
[Morrison, 1991] Morrison, F., Forecasting for Chaos, Randomness, & Determinism. Multi-science
Press, Inc., 1991.
[Nakaoka, 1993] Nakaoka, M., Yearly variation in recruitment and its efects on population
dynamics in yoldia notabilis (mollusca:bivalvia), analyzed using proyection matriz model. Res.
Popul. Ecol., 35:199-213, 1993.
[Nerc, 1999] NERC Centre for Population Biology, Imperial College (1999) The Global Population
Dynamics Datábase, http://www.sw.ic.ac.uk/cpb/cpb/gpdd.html
[Nicholson & Bailey, 1935] Nicholson, A. J. y Bailey, V. A., The balance of animal populations.
Proccedings of the Zoological Society of London, 3, 551-598. (1935).
102
[Odum, 1983] Odum, H. T., Systems Ecology: an Introduction. John Wiley & Sons. 644 pp. 1983.
[Palacios et. a/, 2002] Palacios, C. A., Soto, C. R., Núñez, E. G., Cooperación en Equipos de
Agentes Expertos, Publicación en extenso de las memorias: XXIV Congreso Internacional de
Ingeniería Electrónica, Instituto Tecnológico de Chihuahua, Chih. México. Vol. XXIV, ISSN:
1405-2172, pp. 333-338.
[Pereira & Costa, 2001] Pereira, F., Costa E., How Learning Improves the Performance of
Evolutionary Agents: a Case Study with an Information Retrieval System for a Distributed
Environment (2001).
[Piñero, 1998] Pinero, D., De Las Bacterias al Hombre: La Evolución.,México 1998. FCE.
[Priestley, 1981] Priestley, M. B., Analyisis and Time Series. Vol.l. Univariate Series. Academic
Press Inc. 1981.
[Rendón, 2000] Rendon, G. A., El Lenguaje Unificado de Modelado (UML), Universidad del
Cauca, Facultad de Ingeniería Electrónica y Telecomunicaciones Departamento de
Computación. Popoyán, http://www.inf.udec.cl/intartif/porque.htm, 2000.
[Russell & Norvig, 1995] Russell, S., Norvig, P., Artificial Intelligence A Modern Approach. New
Jersey, Pretice-Hall, 1995.
[Rumbaugh et. a/, 1999] Rumbaugh, J., Jacobson, I., Booch, G., The unified modeling language
reference manual. Workingham, Inglaterra: Addison Wesley Longman, 1999.
[Sathyan, 2000] Sathyan, N. S. R,. and Chellapilla, K., Evolving Recurrent Bilinear Perceptrons for
Time Series Prediction. Departament of Electrical and Computer Engineering. Villanova
University. Villanova. PA, U.S.A 19085
[Shoham, 1993] Shoham, Y., Agent Oriented Programming, Artificial Intelligence, 6:pp. 51-92,
1993.
[Simón, 2002] Simón, E., Forecasting foreing Excahnge Rates with Neural Networks. EPFL
(March 2002).
103
[Sinclair & Shami, 1997] Sinclair, M. C., Shami, S. H., Evolving Simple Software Agents:
Comparing Genetic Algorithm and Genetic Programming Performance. In: Proc. of the 2nd
Intl. Conf. on Genetic Algorithms in Engineering Systems: Innovations and Applications. IEE
Press, London 1997 421426
[Soto & Núñez, 2001] Ramón, S. C, & Núñez, E. G., Conjuntos Difusos Dinámicos para Predicción
de Series de Tiempo. Centro de Investigación en Tecnologías de Información y Sistemas
(CITIS). Universidad Autónoma del Estado de Hidalgo. 2001.
[Soto &: Núñez,2002] Soto, C. R., Núñez, E. G., Simulación de Sistemas Débilmente
Estructurados Basada en Sistemas Genéticos Multiagentes. Publicación en extenso de las
memorias: XXIV Congreso Internacional de Ingeniería Electrónica, Instituto Tecnológico de
Chihuahua, Chih. México. Vol. XXIV, ISSN: 1405-2172, pp. 333-338.
[Soto & Núñez, 2003] Soto, C. R., Núñez, E. G., Soft Modelling of Financial Time Series. A
Publication of the International Association of Science and Technology for Development -
IASTED. February 24-26, 2003. Palm Springs, California, USA. ISBN: 0-88 986-337-7. ISSN:
1021-818 1. Anabeim. Calgary. Zurich
[Thompson, 1956] Thompson, Introduction a The Origin of Species. Londres, J.M. Dent & Co.,
1956.
[Tong, 1990] Tong, H., Non Linear Time Series. A dynamical system approach. Oxford Science
Publications. (1990).
[Tuljapurkar, 1986] Tuljapurkar Shripad, Demographic applications of random matriz producís, pp.
319-326, In Random Matrices and their applications, J.E. Cohén, H. Kesten, C.M. Newman
(Eds.), American Mathematical Society, Providence, RI. 1986.
[UML, 1999] UML Notation Guide. Disponible por WWW en http://www.rational.com/uml (jun
1999).
[Weigend et. a/, 1999] Weigend, S. A., Hubberman, B. A., k Rumelhart D. E., Prediciendo
manchas solares y cambios con redes conectadas. (1999).
[Weiss, 1999] Weiss, G., Multiagent Systems - A moderm Approach to Distributed Artificial
Intelligence (ed.) Gerhard Weiss. The MIT Press Cambridge, Massachussetts London,
England, 1999.
104
[Wooldrige, 1995] Wooldridge, M.J., Intelligent Agents: Theory and Practice. Departament of
Computing, Manchester Metropolitan University. Jennings, Nicholas. Departament of
Electronic Engineering. Queen Mary & Westfield College, 1995.
[Wooldrige & Jennings, 1995] Wooldridge, M., & Jennings N., 1995. Intelligent Agents: Theory and
Practice. Knowledge Engineering Review, 10(2): 115-152.
[Wooldrige, 1997] Wooldridge, M., Agent-based software engineering, IEE Proc. Software
Engineering 144 (1) (1997) 26- 37.
[Yule, 1927] Yule, G. U., An Introduction to the Theory of Statistics, 8th Edition. C. Griffin and Co.,
London. 1927.
105
Apéndice A
Código de GECOLE
package geneticCollectiveGame;
import madkit.kernel.*;
import madkit.lib.reactive.*;
import madkit.lib.simulation.*;
import madkit.lib.messages.StringMessage;
import java.io.*;
import java.útil.*;
import java.lang.*;
int delay=100,nump=3;
Interfaz display;
AgentPredictor[] p;
int[] RolPresa= new int[l];
106
int[] AgentesRol= new int [4] ;
StringD rolIT={"prey","smartpredator","predator","Dumbprey"};
int[] AgentesGrupo= new int[4];
StringG groupIT=-["productorl","predatorl","predator2","productor2"};
Prey [] preytabi;
Predator[] predatortab;
Predator[] spredatortab;
DumpPreyD preytab;
public geneticCollectiveScheduler(){}
107
preynumber=_paramet[0];
predatornumber=_parainet [1] ;
System.out.println("Estoy en el for de CollectiveScheduler...");
for (int i=0; i<_paxamet.length;i++)
System.out.println("Resultado del for "+_paramet[i]);
}
protected void actívate (){
println('S. D. Poblaciones SMA. ");
println("Agente geneticCollectiveScheduler");
println("Agente Interacción Presa-Depredador.");
println("Agente LVolterra");
println("Agente MLeslie");
println("Agente Editor.");
println("Agente Help.");
}
foundGroup("ambiente");
println("Yeah¡ Encontré el grupo ambiente");
108
joinGroup("ambiente");
requestRoleCambiente", "interfaz gráfica");
presas();
DumbDepredador();
SmartDepredador();
Presasi() ;
obsvr = new AgentObsever(AgentesRol);
agentes();
setActive(true);
ev.update();
ev.onScreen.repaint();
}
public void agenteEdit(){
ed = new EditorAgent();
launchAgent(ed,"AgentEdit",true);
}
public void agenteWebBrowser(){
web = new WebBrowserAgent() ;
launchAgent(web,"AgentWebBrowser",true);
}
public void agentePredictor(){
println("Lanzando Agentes predictores:");
p = new AgentPredictor[nump] ;
for (int i = 0; i < nump; i++){
AgentPredictor pred = new AgentPredictor();
launchAgent(p[i] = pred,"AgentPredictor-"+i,true);
println("AgentePredictor-"+i);
}
}
public void agentes (){
for(int i=0; i<4; i++){
AgentesRol[i] =(getAgentsWithRole("productorl",rolIT[i])).length;
System.out.println("Rol["+i+"]:"+AgentesRol[i]);
}
109
}
public void live(){
println('live");
ciclolifeO;
}
public void ciclolife(){
AnimalActivator al = new AnimalActivator("productorl","prey");
AnimalActivator a3 = new AnimalActivator("predatorl"."smartpredator");
AnimalActivator a4 = new AnimalActivator("predator2","predator");
AnimalActivator a2 = new AnimalActivator("productor2","Dumbprey");
SingleMethodActivator a5 = new
SingleMethodActivator("observe","ambiente"."observervador");
ComunicacionActivator a6 = new
ComunicacionActivator("ambiente"."SmartPredator");
addActivator(a5);
addActivator(a1);
addActivator(a3);
addActivator(a4);
addActivator(a2);
addActivator(a6);
a6.execute();
update();
println("Inicia");
int j=0;
while(true){
try {
if (delay==0)
Thread.yield() ;
else
pause(delay);
if (active){
update();
a1.execute();
a3.execute();
110
a4.execute();
a2.execute();
a5.execute();
} j++;
factorincrement() ;
incremento (); behaviorinteraction();
if (j==170){
efectenvironment() ;
}
if (j==310){
efectHarvesting();
}
}
catch(Exception w){}
} //while
}
public void factorincrement(){
we++;
RolPres=RolPres+((getAgentsWithRole("productorl", "prey")).length);
RolPres = (-1)*RolPres;
System.out.println("SegundoRol"+RolPres);
obsvr.ploter.addPointii(RolPres);
}
public void increment(){
RolPres=RolPres+((getAgentsWithRole("productor2", "Dumbprey")).length);
RolPres = (int)(Math.round(Math.pow(conteo,we)))*RolPres;
obsvr.ploter.addPointiii(RolPres);
}
public void efectenvironment(){
for (int i = 0; i <=predatornumber; i++){
int fa = (int)(Math.round(Math.random()*(i+20)));
obsvr.ploter.addPointi(fa);
killAgent(predatortab[i] );
111
remove(predatortab[i]);
update() ;
}
}
public void efectHarvesting(){
for (int i = 0; i <= 90; i++){
killAgent(spredatortab[i]);
remove(spredatortab[i]);
update( ) ;
}
}
public void uncertainly(){
for (int i=l; i<=5;i++){
faa = (int)(Math.round(Math.random()*Math.exp(i)));}
System.out.println("Faa"+faa);
obsvr.ploter.addPointii(faa);
}
public void behaviorinteraction(){
for(int jj=0; jj<4; jj++){
for(int i=0; i<4; i++){
laux = laux+ (getAgentsWithRole(groupIT[jj] ,rolIT[i])).length;
AgentesRol [i] = (getAgentsWithRole ("ambiente",rolIT [i])). length;
}
AgentesRol[jj]= laux;
laux =0;
}
obsvr.ploter.addPoint(AgentesRol);
}
public void presas(){
println("Lanzando Agentes presas");
for (int i = 0; i < preynumber; i++) {
println("Creando Prey:"+i);
Prey p2 = new Prey();
p2.setEnvironment(e);
112
launchAgent(preytabi[i] =p2,"prey "+i, false);
}
}
public void presasi(){
println("Lanzando Agentes presas tontas");
for (int i = 0; i < preynumber2; i++){
println("Creando Dumbprey:"+i);
DumpPrey p = new DumpPrey();
p.setEnvironment(e);
launchAgent(preytab[i] = p,"prey-"+i, false);
}
}
public void DumbDepredador(){
println("Lanzando Agentes depredadores tontos");
for (int i = 0; i < predatornumber2; i++){
println(Creando predator:"+i);
DumbPredator p = new DumbPredator();
p.setrandom();
p.setEnvironment(e);
launchAgent(predatortab[i] = p, "predator"+i, false);
}
}
public void SmartDepredador(){
println("Lanzando Agentes depredadores listos");
for (int i = 0; i < predatornumber; i++){
printlnC"Creando Smart predator :"+i);
SmartPredator pl = new SmartPredator();
p1.setrandomC);
p1.setEnvironment(e);
launchAgent(spredatortab[i] = pl, "smartpredator"+i,false);
}
}
public void remove(Animal e){
killAgent(e);
113
update();
ev.update();
}
public void presasmuertas1(){
int len=preytab.length;
if(len>0)
for (int i = 0; i <= preynumber; i++){
killAgent(preytab[i] );
println("Presa muerta:"+preytab[i]);}
}
public void presasmuertas2(){
int len=preytabi.length;
if(len>0)
for (int i = 0; i <= preynumber2; i++){
killAgent(preytabi[i]);
println("Presa muerta:"+preytabi[i]);}
}
public void predatormuertos1(){
int len=predatortab.length;
if(len>0)
for (int i = 0; i <= predatornumber; i++){
killAgent(predatortab[i]);
println("Por depredador Dump: "+predatortab[i]);}
}
public void predatormuertos2(){
int len=spredatortab.length;
if(len>0)
for (int i = 0; i <= predatornumber; i++){
killAgent(spredatortab[i]);
println("Por depredador Smart:"+predatortab[i]);} }
}
public void end(){
println("Muerte de geneticCollectiveScheduler");
presasmuertas1();
114
presasmuertas2();
predatormuertos1();
predatormuertos2();
}
public int getDelay() {return delay;}
public void setDelay(int v) {this.delay = v;}
public void setActive(boolean b){ active=b; }
public boolean getActive(){
return active;
}
boolean active;
}
package geneticCollectiveGame;
importmadkit.lib.graphics.*;
import madkit.lib.agents.*;
import madkit.kernel.*;
import java.awt.*; import java.io.*;
import j ava.util.*;
import j ava.awt.event.*;
import madkit.lib.messages.*;
116
}
public void end()-C
println("Proceso Terminado¡¡¡ ¡");
}
}
import javax.swing.event.*;
import madkit.kernel.*;
ActionListener {
JTextArea outputArea;
JTextAreaWriter jtaOut;
PrintWriter out, err;
JLabel currentTargetLabe1;
AgentPredictor _ag;
GeneticSearch geneticSearch;
int pl=0, p2=0, p3=0;
public JTextField Field_l, Field_2, Field_3;
public GuiPredictor(){
super() ;
117
}
118
JOptionPanel.showMessageDialog(null,”Error en el archivo,
“Error”, JOptionPanel.ERROR_MESSAGE);
}
}
public void abrir(){
JFileChooser fileChooser = new JfileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int resulta fileChooser.showOpenDialog(this); int 1=0; float num=0,r=0;
String cabeza; int corte=0;
if (result== JFileChooser.CANCEL_OPTION) return;
File name= fileChooser.getSelectedFile();
if(name.exists()) {
try {
DatalnputStream datos = new
DataInputStream(new FilelnputStream(name));
String text = new String();
text=datos .readLine();
corte = text.indexOf(" ");
cabeza= text.substring(O, corte);
num = Float.valueOf(cabeza).floatValué();
println(“Registros:>”+num;)
1=(int)num;
float[] timE =new float[1+1];
float[] prba = new float[1+1];
println("L:0 "+1);
TrainningPorc(l);
geneticSearch.setMaxNumRecs(l);
System.out.println("Envié valores??");
for(int i=lj i<=l; i++){
try { text = datos .readLine() ;
}catch (Exception e)
{System.out.println("Error al leer el archivo:"+e); }
corte = text.indexOf(" ");
cabeza= text.substring(O, corte);
119
r=timE[l] = Float.valueOf(cabeza).floatValue();
printlnO1:- "+i+" : "+timE[l]) ;
prba[1]=r;
}
System.out.println("Envió r :< "+r);
System.out.println("Envió timeE :( "+timE[l]);
System.out.println("Envió prba[] :( "+prba[l]);
System.out.println("Envió prba :( "+prba);
geneticSearch.setNumRecs(prba);
println(“No. Registros:< "+1);
}
catch (IOException ioException)
{JOptionPane.showMessageDialog(null,"Error en el archivo",
"Error",JOptionPane.ERROR.MESSAGE);}
}
else JOptionPane.showMessageDialog(null," El archivo no existe ",
" Error ".JOptionPane.ERROR.MESSAGE);
}
public void setParametros(){
Field_l = getFieldO;
P1 = Integer.valueOf (Field.l.getText()) .intValue() ;
geneticSearch.setMaxNumPasses(pl); //100 //120 //110
println("Numero de generaciones activado");
p2 = Integer.valueOf(Field2.getText()).intValué ();
geneticSearch.setPopulationSize(p2);
println("Tamaño de población activado");
p3 = Integer.valueOf(Field3.getText()).intValue();
geneticSearch.setReplacementSize(p3);
println("Tamaño de remplazo activado");
//Umbral:Primer paso o entrada
geneticSearch.setFitnessThreshold(10.0);
}
publie void TrainningPorc(int numrec){
int porc=0,send=0;
120
porc = numrec;
System.out.println("Ya entre :o");
send =(int)(porc * .70);
System.out.println("Tran:S ="+send);
println("Tran:S ="+send);
geneticSearch.setMaxTraining(send);
}
public void actionPerformed(ActionEvent e){
command(e.getActionCommand());
}
protected void command(String c){
if (c.equalsC"Guardar Pred...")){
guardar();
println("Almacenado¡ ¡");
}
else if (c.equals("Activación")){
geneticSearch.start() ;
try {
geneticSearch.sleep(200);
} catch (InterruptedException e){ }
println("Activación Lista¡¡");
}
else if (c.equalsC"Activar Parámetros")){
setParametros();
}
else if (c.equals("Cargar serie")){
abrir(); }
if (c.equals("Cerrar"))
close() ;
else if (c.equalsí"Salir"))
quit(true);
}
}
121
A.4. Clase Interfaz
package geneticCollectiveGame;
import java.awt.*; import java.awt.event.*; import javax.swing.*;
import java.io.*; import java.útil.*; import javax.swing.event.*;
122
JMenu jMenuAgentes = new JMenu() ;
JMenuItem jMenuItemJEdit = new JMenuItem();
JMenuItem jMenuItemLVolterra = new JMenuItem();
JMenuItem jMenuItemPredictor = new JMenuItem();
JMenuItem jMenuItemMLeslie = new JMenuItem();
JMenuItem jMenuItemSMA = new JMenuItem();
JButton jButtonJEdit;
Imagelcon eda = new ImageIcon("geneticLifeGame/inicia.gif");
jToolBar.add(jButtonJEdit = new JButtonC'AgenteEditor",eda));
JButton jButtonPredictor = new JButtonO'Predictor");
JButton jButtonLVolterra = new JButtonC'LotkaVolterra");
JButton jButtonMLeslie = new JButton("Matriz Leslie");
JButton jButtonSMA = new Jbutton(“S. MultiAgente");
JButton jButtonHelp = new JButtonC" Agente Help ");
jToolBar.add(jButtonPredictor);
//jToolBar.add(jButtonLVolterra);
//jToolBar.add(jButtonMLeslie);
//jToolBar.add(jButtonSMA);
jToolBar.add(jButtonJEdit);
jToolBar.add(jButtonHelp);
jMenuFile.add(jMenuFileExit);
jMenuAcciones.add(JMenuItemCompilar);
jMenuAgentes.add(JMenuItemJEdit);
jMenuAgentes.add(jMenuItemPredictor);
jMenuAgentes.add(jMenuItemLVolterra);
jMenuAgentes.add(jMenuItemMLeslie);
jMenuAgentes.add(jMenuItemSMA);
123
jMenuHelp.add(jMenuItemHelp);
jMenuHelp.add(jMenuHelpAbout);
jMenuBaxl.add(jMenuFile);
jMenuBarl.add(jMenuAcciones);
jMenuBarl.add(jMenuAgentes);
jMenuBarl.add(jMenuHelp);
/*********************************************/
jMenuFile.setText("File");
jMenuFileExit.setTextC'Exit");
jMenuFileExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jMenuFileExit_actionPerformed(e) ;
}
} );
/*********************************************/
jMenuAcciones.setText("Acciones");
jMenuItemCompilar.setText("Compilar");
/*********************************************/
jMenuAgentes.setText("Agentes");
jMenuItemJEdit.setText("A. JEdit");
jMenuItemJEdit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
jMenuItemJEdit_actionPerformed(e);
}
});
jMenuItemPredictor.setText("M. Predictor"); jMenuItemPredictor.addActionListener(new
ActionListener() {
public void actionPerformed(ActionEvent e){
jMenuItemPredictor_actionPerformed(e);
}
});
/*********************************************/
jMenuHelp.setText("Agente Help");
jMenuItemHelp.setText("Agente Help");
124
jMenuItemHelp.addAc tionListener(new ActionListener() {
public void actionPerformedCActionEvent e) {
jMenuItemHelp_actionPerformed(e);
}
});
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuHelpAbout_actionPerformed(e);
}
});
/*********************************************/
jButtonJEdit_actionPerformed(e);
}
});
jButtonJEdit.setToolTipTextC"Editor Agente");
/*********************************************/
jButtonPredictor.addActionListenerCnew java.awt.event.ActionListener() {
public void actionPerformedCActionEvent e) {
jButtonPredictor_actionPerformed(e);
}
;
jButtonPredictor.setToolTipText("Agente Predictor");
jButtonLVolterra.addActionListener(new java.awt.event.ActionListener() {
125
jButtonSMA_actionPerformed(e); }
}
});
jButtonSMA.setToolTipText("Sistema Multiagente");
jButtonHelp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButtonHelp_actionPerformed(e);
}
});
JButtonSMA.setToolTipText("Ayuda en Linea");
panel.add(jMenuBarl, BorderLayout.NORTH); //this.
panel.add(jToolBar, BorderLayout.CENTER); //this.
setSize(new Dimensión(600, 400));
add(panel,"North");
126
currentTargetLabel.setText("Event: "+s);}
public void println(String sMout .println(s) ;}
/**File | Exit action performed*/
public void jMenuFileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
/**Help I About action performed*/
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
Interfaz.AboutBox dlg = new Interfaz_AboutBox(this);
Dimensión dlgSize = dlg.getPreferredSize();
Dimensión frmSize = getSize();
Point loe = getLocation() ;
dlg.setLocation((frmSize.width - dlgSize.width)
/ 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loe.y);
dlg.setModal(true);
dlg.show();
}
public void jMenuItemHelp_actionPerformed(ActionEvent e){
ag.agenteWebBrowser() ;
}
public void jMenuItemJEdit_actionPerformed(ActionEvent e){
ag.agenteEditO ;
}
public void jMenuItemLVolterra_actionPerformed(ActionEvent e){
GuiLotkaVolterra panel = new GuiLotkaVolterra(this);
panel.show();
}
public void jMenuItemPredictor_actionPerformed(ActionEvent e){
ag.agentePredictor() ;
}
public void jMenuItemMLeslie_actionPerformed(ActionEvent e){
GuiMatrizLeslie panel3 = new GuiMatrizLeslie(this);
panel3.show();
127
public void jMenuItemSMA_actionPerformed(ActionEvent e){
geneticGamePanel panel2 = new geneticGamePanel(this);
panel2.show();
}
protected void processWindowEvent(WindowEvent e) {
this.processWindowEvent(e);
if (e.getIDO — WindowEvent.WINDOW.CLOSING) {
jMenuFileExit_actionPerformed(null);
}
}
void jButtonSMA_actionPerformed(ActionEvent e) {
geneticGamePanel panel2 = new geneticGamePanel(this);
panel2.show();
}
void jButtonJEdit_actionPerformed(ActionEvent e) {
ag.agenteEdit() ;
}
void jButtonHelp_actionPerformed(ActionEvent e) {
ag.agenteWebBrowser();
}
void jButtonPredictor_actionPerformed(ActionEvent e) {
ag.agentePredictor() ;
}
}
class geneticGamePanel extends JDialog implements ActionListener {
JTextArea outputArea;
JLabel currentTargetLabel;
protected JPanel commandPanel;
JTextAreaWriter jtaOut;
PrintWriter out, err;
Gráfica grafical=null;
128
AgentObsever agentgraf=null;
ParamsLotka param;
Double[] parame;
GetParams paramsWin;
Interfaz in;
geneticCollectiveScheduler ag;
geneticGamePaneKgeneticCollectiveScheduler _ag){
ag = _ag;
}
geneticGamePanel (Interfaz _in){
in = _in;
setTitle("Modelo Sistemas MultiAgentes");
setSize(350,250);
getContentPane().setLayout(new BorderLayout(10,10));
JPanel buttonPanel = new JPanel(new GridLayout(4,4));
jMenuAcciones.add(jMenuItemParametros);
jMenuAcciones.add(JMenuItemActivacion);
jMenuAcciones.add(jMenuItemOpciones);
jMenuAcciones.add(JMenuItemSalir);
jMenuAcciones.setTextC'Acciones");
jMenuItemParametros.setText("Parámetros Gamescheduler");
jMenuItemActivacion.setText("Activación de Ambiente");
129
jMenuItemOpciones.setText(”Opciones”);
jMenuItemSalir.setText(“Salir”);
jMenuBarl.add(jMenuAcciones);
buttonPanel.add(jMenuBar1);
buttonPanel. add(jMenuBar2) ;
JButton buttoni = new JButton("Parámetros Gamescheduler");
buttoni.addActionListener(this);
JButton buttonii = new JButton("Activación de Ambiente");
buttonii.addActionListener(this);
JButton buttonv = new JButton("Opciones");
buttonv.addActionListener(this);
JButton buttonvi = new Jbutton(“Salir");
buttonvi.addActionListener(this);
buttonPanel.add(buttoni);
buttonPanel.add(buttonii);
buttonPanel.add(buttonv);
buttonPanel.add(buttonvi);
getContentPane() . add (buttonPanel, "North");
outputArea = new JTextArea("",10,40);
JScrollPane outscroller = new JscrollPane();
outscroller.setSize(300,200);
outscroller.getViewport().add(outputArea);
getContentPane().add(outscroller,"Center");
jtaOut = new JTextAreaWriter(outputArea);
out = new PrintWriter(jtaOut, true);
err = out;
JPanel displayLabelPanel = new JPaneKnew BorderLayout());
getContentPaneO.add(displayLabelPanel,"South");
currentTargetLabel=new JLabel("Panel principal. ");
displayLabelPanel.add(currentTargetLabel,"West");
printl(“- Agente Activado");
}
130
void setRecipientLabel(String s){
currentTargetLabel.setTextC'Event: "+s);
}
public void println(String sMout .println(s) ;}
public void actionPerformed(ActionEvent e) {
String c = e .getActionCommand() ;
if(c.equals("Parámetros Gamescheduler"))
{
int params [] =new int [2] ;
params[0]=160; params[1]=130; // 160 130
final GetParams paramsWin = new GetParams(params,this);
in.ag.setHuntParams(params);
WindowListener 1 = new WindowAdapter() {
public void windowClosing(WindowEvent e) -CparamsWin.setVisible(false);}};
paramsWin.addWindowListener(l);
paramsWin.pack();
paramsWin.setVisible(true);
println("Activado ->");
setRecipientLabeK"Enviando parámetros... ");
String sv="Valores:";
for(int tec=O; tec<params.length; tec++)
sv+=params[tec]+" ";
println(sv);
}
else if (c.equals("Activación de Ambiente"))-{
in.ag.huntGame();
in.ag.update() ;
println("Activando parámetros -> ");
setRecipientLabeK"Ambiente activo") ;
}
else if (c.equals("Opciones")){
println("Opciones cargadas ->"); }
else if (c.equals(“Salir”)) System.exit(0);
131
}
Frame getFrameParent(){
Component c = this;
while (!(c instanceof Frame))
if (c == nuil)
return(null);
else
c = c.getParent();
return((Frame) c);
}
}
class GetParams extends JFrame {
int [] paramet;
JTextField Fieldl,Field2;
geneticGamePanel _m;
132
fieldPanel.setLayout(new GridLayout(0, 1));
fieldPanel.add(Fieldl);
fieldPanel.add(Field2);
JButton OkButton;
JPanel buttPanel = new JPanel();
buttPanel.setLayout(new GridLayout(1, 0));
buttPanel.setBorder(BorderFactory.createEmptyBorder(20, 80, 20, 80));
buttPanel.add(OkButton = new Jbutton(“OK"));
OkButton.setMnemonic('o');
OkButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent evt) •{
okPressedO ;
}
});
JPanel contentPane = new Jpanel();
contentPane.setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 20));
contentPane.setLayout(new BorderLayout());
contentPane.add(“North".labelPanel1);
contentPane.add(labelPanel);
contentPane.add(fieldPanel, "East");
contentPane.add(buttPanel, "South");
setContentPane(contentPane);
}
public void okPressed() {
paramet[0] = Integer.valueOf(Fieldl.getText ()).intValue();
paramet[1] = Integer.valueOf(Field2.getText ()).intValue ();
String sv="enviados:";
for(int tec=0; tec<paramet.length; tec++){
sv+="Param ->"+paramet[tec]+" ";
}
_m.println(sv);
133
for (int i=0; i<paramet.length;i++)
System.out.println(paramet[i]);
}
} // Fin de la clase
134