universidad autonoma metropolitana148.206.53.84/tesiuami/uami10154.pdf · todos los procedimientos...

50
UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA LICENCIATURA EN COMPUTACION Juego de Damas Inglesas con Inteligencia Artificial AUTOR Josué Laguna Hernández ASESOR John Goddard Close 2002

Upload: doanminh

Post on 30-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

UNIVERSIDAD AUTONOMA METROPOLITANA

UNIDAD IZTAPALAPA

LICENCIATURA EN COMPUTACION

Juego de Damas Inglesas con Inteligencia Artificial

AUTOR Josué Laguna Hernández

ASESOR John Goddard Close

2002

Page 2: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

INDICE

OBJETIVOS............................................................................................................................2

INTRODUCCIÓN...................................................................................................................2

1 EL JUEGO DE DAMAS INGLESAS 1.1 Reglas del juego.............................................................................................................4 1.2 El trabajo de Fogel y Chellapilla..................................................................................5

2 EL MÉTODO MINIMAX......................................................................................................7

3 FUNCIÓN DE EVALUACIÓN ESTÁTICA.........................................................................8

4 REDES NEURONALES ARTIFICIALES.............................................................................94.1 Redes Neuronales de tipo Biológico............................................................................10

4.2 Funciones de Base y Activación...................................................................................11 4.3 Taxonomía de las Redes Neuronales...........................................................................12 4.4 Estructuras de las Redes Neuronales Artificiales........................................................13 4.5 Tamaño de las Redes Neuronales................................................................................14 4.6 Aplicaciones.................................................................................................................15 4.6.1 Asociación y Clasificación.....................................................................................15 4.6.2 Completar los patrones..........................................................................................16 4.6.3 Generalización.......................................................................................................16 4.6.4 Optimización..........................................................................................................17

5 ALGORITMOS GENÉTICOS.............................................................................................175.1 Extensiones y Modificaciones del Algoritmo Genético Simple....................................19

5.2 Población.....................................................................................................................19 5.3 Función objetivo..........................................................................................................20

5.4 Operadores Genéticos..................................................................................................21 5.4.1 Selección................................................................................................................21 5.4.2 Cruzamiento...........................................................................................................24 5.4.3 Mutación................................................................................................................27 5.4.4 Reducción...............................................................................................................28 5.5 Programación Evolutiva..............................................................................................29

6 LAS DOS VERSIONES (BASES)........................................................................................29 6.1Polinomio......................................................................................................................30 Observaciones durante el desarrollo..........................................................................31 6.2 Red Neuronal Artificial................................................................................................32 Observaciones durante el desarrollo..........................................................................35

RESULTADOS......................................................................................................................36

CONCLUSIONES.................................................................................................................46

Page 3: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

2

OBJETIVOS

- Implementar un juego de damas inglesas para experimentar el aprendizaje maquinalutilizando técnicas de inteligencia artificial.

- Aprender las bases tanto de orientación a objetos como las gráficas del lenguaje deprogramación Java, el cual es utilizado para crear el juego.

INTRODUCCIÓN

Los juegos provocan una inexplicable fascinación y, la idea de que las computadoraspuedan jugar existe desde que existen las computadoras:

o Siglo XIX, Babbage, arquitecto de computadoras, pensó en programar sumáquina analítica para que jugara al ajedrez.

o '50, Shannon describió los mecanismos que podían usarse en un programajugara al ajedrez

o '50, Turing describió un programa para jugar al ajedrez pero no lo construyó

o '60, Samuel construyó el primer programa de juegos importante y operativo,el cual jugaba a las damas y podía aprender de sus errores para mejorar sucomportamiento

Los juegos proporcionan una tarea estructurada en la que es muy fácil medir el éxito o elfracaso. En comparación con otras aplicaciones de inteligencia artificial, por ejemplocomprensión del lenguaje, los juegos no necesitan grandes cantidades de conocimiento.

En un primer momento se pensó que se podrían resolver por búsqueda exhaustiva en elárbol del juego, es decir, un árbol que contenga todos los movimientos posibles de ambosjugadores. Considerando por ejemplo el juego de ajedrez, en una partida cada jugadorrealiza una media de 50 movimientos, con un factor de ramificación medio de 35posibilidades, por lo tanto para examinar el árbol de juego completamente se tendrían queexaminar 35100 posibilidades. Resulta evidente que una simple búsqueda directa no esposible de realizar en la práctica, y por lo tanto es necesario algún tipo de procedimiento debúsqueda heurística.

Todos los procedimientos de búsqueda pueden verse como procedimientos de generación yprueba, en donde la comprobación se realiza después de distintas cantidades de trabajo delgenerador. En un extremo el generador proporciona una solución completa a evaluar por elcomprobador; en el otro extremo, el generador genera movimientos individuales cada unode los cuales se evalúa por el comprobador.

Page 4: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

3

Para mejorar la efectividad de un programa resolutor de problemas, en particular dejuegos,es importante:

§ Mejorar el procedimiento de generación de manera de que segeneren sólo movimientos buenos.

§ Mejorar el procedimiento de prueba para que sólo se reconozcanlos mejores movimientos.

Dado que estos dos procedimientos no son perfectos, se incorpora la búsqueda oexploración de distintos niveles del juego para ver que puede ocurrir una serie demovimientos más adelante. Resulta evidente que la elección del camino a seguir será másacertada cuántas más capas se exploren antes de tomar la decisión. Se utiliza una función deevaluación estática (heurística) para elegir el movimiento más prometedor.Por ejemplo,

o Turing usó la sencilla función B/N (piezas blancas / piezas negras) paraevaluar una posición dada de un tablero de ajedrez.

o Shanon utilizó una función lineal de funciones de evaluación simples paraevaluar un tablero de damas:

c1 * ventaja piezas + c2 * avance + c3 * amenzas dobles + ...

En la función anterior, con un mecanismo de aprendizaje, los pesos o ponderaciones ci seincrementan o disminuyen siempre que sus componentes sugieran movimientos queconducen a la victoria o al fracaso respectivamente. Este es un problema denominado deasignación de crédito, es decir, decidir de entre una serie de acciones cuál es la responsabledel resultado.

Siempre ha sido muy interesante diseñar algoritmos computacionales para jugar ciertosjuegos clásicos desde que la computadora digital tuvo gran avance. El ajedrez es el que hacaptado más la atención de todos los investigadores y en general de toda la gente, tomandoaún mayor fuerza desde que Deep Blue venció en una partida al campeón mundial GarryKasparov. Otros juegos también han sido tomados para este tipo de investigación, talescomo othello, backgammon (Tesauro 1992) y checkers (Damas Inglesas, Schafer 1996). Encada caso, la información relevante de cada juego fue programada en un algoritmo basadoen las posibilidades que tiene la computadora dependiendo de ciertos tableros que puedengenerarse durante una partida. Esto quiere decir que el programa debía ser estructurado porun experto en el juego y que la computadora estaba lista para jugar solo contra expertos.

La “complicidad” que tiene un experto con cualquier juego de estrategia puede no ser lamejor opción, la mayoría de estos métodos no incorporan ningún tipo de aprendizaje en elalgoritmo. Cada “item” de conocimiento es preprogramado. En algunos casos, losprogramas fueron creados para competir solo contra ciertos oponentes humanos. El factor

Page 5: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

4

que determina la competitividad de este tipo de programas en un juego particular es lacapacidad o experiencia que tiene el humano para jugar, lo cual marca limitaciones.

En contraste, el presente trabajo basado en la experimentación de Fogel(1995), cuentasolo con principios de evolución usados para generar redes neuronales y polinomioscapaces de jugar Damas Inglesas sin incorporar previamente información adquirida dealgún experto. Tanto las redes neuronales como los polinomios compitieron contra unmétodo que contenía una función de evaluación estática y solo se basa en perder, ganar oempatar. Para las redes neuronales no se da ningún tipo de información acerca del tablero.Los resultados indican que una metodología de este tipo puede generar estrategias parajugar sin la necesidad de incorporar previamente información acerca del juego.

Para mostrar un poco la idea principal que se utilizo en el juego, considere el problemade diseñar un algoritmo evolutivo que improvisa una estrategia para jugar Damas Inglesas,esta estrategia la obtiene jugando partidas sucesivas entre estrategias candidatas en unapoblación, seleccionando las que obtienen mejores resultados, haciendo pequeñasvariaciones a estas estrategias seleccionadas e iterando este proceso. La metodologíautilizada se muestra detalladamente en las siguientes páginas.

1 EL JUEGO DE DAMAS INGLESAS

El juego de las damas apareció en el s. XII, en Europa, cuando se fusionaron tres juegos:las fichas de las tablas, el tablero del ajedrez y los movimientos del alquerque. Antes de serbautizado como damas, se llamó fierges, derivado del término fers, que era ladenominación por la cual se conocía a la reina del ajedrez.

En sus orígenes, las reglas de juego eran muy diferentes; por ejemplo, capturar la pieza delcontrario era opcional; más adelante se introdujo la obligatoriedad como regla y, antes deconvertirla en estándar, se jugaba como una variante llamada jeu forcé (juego forzado).

Durante algunas épocas, el juego de las damas se vio desprestigiado por considerarlo demujeres (el de hombres era el ajedrez). Sin embargo, jugarlo bien implica una buenaestrategia; los grandes jugadores llegan a planificar entre 15 y 20 movimientos poradelantado. Entre ellos destaca por su propio peso una figura mundial, el gran campeón detodos los tiempos en juego de damas, el estadounidense Marion Tinsley, que fue el mejorjugador del mundo durante cuarenta años y que murió habiendo perdido únicamente sietejuegos.

1.1 Reglas de juego

El juego de damas inglesas generalmente se juega en un tablero de 8x8 cuadros decolores alternados. Los dos jugadores son denotados como “negro” y “blanco”regularmente. Cada jugador cuenta inicialmente con 12 fichas denominadas damas. Lasfichas negras se alinean sobre las casillas negras de las tres primeras filas, y las blancas, enlas tres primeras del contrincante; quedan vacías, por tanto, dos hileras centrales.

Page 6: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

5

Los jugadores deciden quién será el poseedor de las fichasnegras. El jugador "negro" comienza la partida moviendouna de sus fichas.Una ficha puede desplazarse solamente un cuadro a la vezy en diagonal; no puede moverse hacia atrás uhorizontalmente, ni a derecha o a izquierda.

Las capturasSi la casilla más próxima está ocupada por una fichacontraria, puede saltar por encima aterrizando en el cuadrovacío que viene inmediatamente. Esta es la regla de"comer" para retirar del tablero la ficha que se ha saltado.

La coronaciónSi una ficha consigue llegar hasta la última fila de su adversario, al otro extremo deltablero, es "coronada" como reina. La reina, aunque también avanza de casilla en casilla,puede moverse hacia adelante y hacia atrás y saltar en cualquier dirección. Sin embargo,también es susceptible de ser capturada, es decir, ¡no tiene inmunidad!

Sí en el proceso de una captura, una ficha llega hasta la última fila, debe detener su capturapara ser coronada.

Final del juegoUna partida termina:1. En victoria, cuando un jugador ha capturado todas las fichas del oponente o cuando elotro jugador no puede realizar ningún movimiento.2. En empate, si ningún jugador puede ganar.

Algunas veces sucede que ambos contrincantes tienen poquísimas fichas y son incapaces deatacar con éxito. Unas fichas rodean a las otras y asaltan sin tregua, pero sin posibilidad realde ganar. Es el momento de acabar la partida en tablas. Los empates son muy frecuentes enel juego de alto nivel.

A pesar de que el método de juego que acabamos de reseñar sea el más jugadouniversalmente, existe una irresoluble polémica sobre cuáles son las auténticas damas.Cada país conserva sus propios y genuinos juegos de damas con sus pequeñas diferencias

1.2 El trabajo de Fogel y Chellapilla

David Fogel, de la empresa Natural Selection, de La Jolla (California), y KumarChellapilla, de la Universidad de California San Diego, han hecho evolucionar un programainformático capaz de disputar una partida de damas inglesas de alto nivel. Tan sólointrodujeron en el ordenador las indicaciones que se dan a un jugador principiante y luegole dejaron crear diversos algoritmos (conjuntos de datos que permiten decidir el siguientemovimiento). Para ajustar estos algoritmos, procedentes de redes neuronales que imitan el

Page 7: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

6

funcionamiento del cerebro humano, hicieron que se enfrentasen en una lucha en la quesobrevivió el mejor.

El resultado es impresionante: tras 250 generaciones surgidas de una población inicial de15 redes neuronales, el mejor de estos programas jugó contra todos los adversarioshumanos deseosos de aceptar el desafío a través de Internet. En 80 partidas, la red neuronalse colocó en el nivel A de la clasificación estándar de los jugadores de damas, sólo pordetrás de los expertos y de los maestros. Mejor aún: consiguió derrotar a un adversarioexperimentado. Una victoria más notable todavía porque el conjunto del procesoevolucionista sólo requirió unos cuantos días de cálculos en un ordenador doméstico (de133 megahercios), con una potencia incomparablemente menor a la de lossupercalculadores a menudo utilizados en inteligencia artificial.

Pero el programa de Fogel y Chellapilla no derrotó a Chinook, puesto a punto en launiversidad de Alberta en Canadá. Desde el fallecimiento en 1995 de Marion Tinsley,considerado como el mejor jugador de todos los tiempos, no tiene rival. Sin embargo, sibien el juego de las damas inglesas tiene unas reglas más sencillas que el ajedrez, no dejade tener una complejidad sorprendente. El número de combinaciones de movimientosposibles es del orden de 500 millones de millones de millones, una cifra demasiado colosalpara que un ordenador sea capaz de hallar la mejor ficha a mover.

La primera máquina que jugaba al ajedrez fue ideada por el barón Van Kampelen, uningeniero austríaco. El jugador era un autómata con la apariencia de un turco, manipuladodesde el interior por un experto en el juego. Chinook, los mejores programas informáticosde ajedrez, funcionan siguiendo el mismo espíritu, en la medida en que están dirigidos porla habilidad y la experiencia humanas programadas en el algoritmo. Basados en lainteligencia artificial tradicional, en realidad no son más que un simple calco de lahabilidad humana que los creó, con unos mecanismos mentales más rápidos y un riesgo deerror menor. Por lo tanto, su capacidad mejora sobre todo gracias a la sofisticación de losmecanismos que realizan una criba de las opciones. Unos mecanismos que losprogramadores idearon y construyeron en los algoritmos.

Es precisamente lo que Chellapilla y Fogel quieren ahora evitar. Su método consiste endejar a unos algoritmos mediocres mejorar su capacidad únicamente a través de laexperiencia. Los dos investigadores se limitan a decir a sus programas que apliquen laestrategia de un jugador modesto (un sistema de alternativas elementales que losprogramadores conocen por el nombre de teoría Minimax). Sus programas son capaces deaprender porque están incorporados a unas redes neuronales que funcionan como el cerebrohumano. En vez de indicar paso a paso cómo lograr el resultado buscado, simplemente seproporcionan unos datos a estas redes que, a través de un proceso de aprendizaje, comparansu resultado con el buscado, para a continuación intentar acercarse a él lo más posible.

Este modo de funcionamiento es posible gracias a la estructura de las redes neuronales queestán unidas entre sí por varias capas de células, formando una telaraña. Esta red es capazde ajustar la fuerza de sus propias interconexiones, exactamente como ocurre con las de lasneuronas del cerebro humano en su juventud, durante su aprendizaje.De este modo, las redes neuronales pueden adquirir todo tipo de habilidades, comoreconocer las caras y las voces, las reglas de las damas o las del ajedrez. Chellapilla y Fogel

Page 8: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

7

les hicieron dar un paso decisivo poniéndolos a competir entre sí y seleccionando a los másdotados con el fin de mejorar su capacidad. En ello radica todo el atractivo del proceso: sinintroducir ningún dato especializado, el ordenador fabricó su propio jugador de primeracategoría.

El presente trabajo de investigación está basado en los fundamentos de Chellapilla y Fogelcon algunas pequeñas variaciones pero esencialmente tiene la misma estructura.

2 EL MÉTODO MINIMAX

En los juegos de tablero se utilizan regularmente árboles de decisión para elegir lajugada a realizar. En nuestro caso utilizamos el método minimax el cual es descritobrevemente a continuación:

Dada una posición del tablero, el mejor movimiento siguiente está determinado por laconsideración de todos los movimientos posibles y las posiciones resultantes. Elmovimiento seleccionado será aquel que resulte en la posición del tablero con mayorevaluación, a este tipo de selección se le llama evaluación estática.

Supóngase que se pueden prever varios movimientos. Entonces la elección de unmovimiento puede perfeccionarse en gran medida. Definimos el nivel de previsión como elnúmero de movimientos que se deben considerar en el futuro. Si se inicia en cualquierposición, se puede construir un árbol de todas las posiciones del tablero posibles quepueden resultar de cada movimiento. Tal árbol se llama árbol de juego. Observe que laprofundidad de los nodos de un árbol de este tipo es igual al nivel de previsión.

Desígnese al jugador que tiene que mover a partir de la posición de juego de la raíz comomás y a su oponente como menos. Trátese de encontrar el mejor movimiento para másdesde la posición de juego de la raíz. Los nodos restantes del árbol pueden designarse comonodos mas o menos, dependiendo de que jugador debe moverse desde esa posición delnodo.

Supóngase que las posiciones de juego de todos los hijos de un nodo más han sidoevaluadas por el jugador más. Es claro entonces que más debe escoger el movimiento queproduce la evaluación máxima. Así, el valor de un nodo más para el jugador más es elmáximo de los valores de sus hijos. Por otra parte, una vez que más realizó un movimiento,menos seleccionará el movimiento que produzca menor evaluación para el jugador más.Por lo tanto, el valor de un nodo menos para el jugador más es el mínimo de los valores desus hijos.

En consecuencia, para decidir el mejor movimiento para un jugador más desde la raíz, sedeben evaluar las posiciones de las hojas para el jugador más usando una función deevaluación estática. Después, se mueven esos valores hacia arriba, en el árbol de juego,asignando a cada nodo más el máximo de los valores de sus hijos, y a cada nodo menos, elmínimo de los valores de sus hijos, con la suposición de que menos va a elegir el

Page 9: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

8

movimiento que es peor para más. Adviértase que la designación de “más” y “menos”depende de a quien se le está determinando su movimiento. En la aplicación de la funciónde evaluación estática a una posición del tablero, se calcula el valor de la posición paracualquier jugador designado con más. Este método se llama el método minimax, ya que alsubir al árbol, las funciones máximo y mínimo se aplican de manera alterna.

El mejor movimiento para un jugador desde una posición dada, se puede determinarconstruyendo primero el árbol de juego y aplicando una función de evaluación estática a lashojas. Entonces esos valores se mueven hacia arriba aplicando el mínimo y el máximo enlos nodos menos y más, respectivamente.En la siguiente figura se presenta un ejemplo de aplicación de este algoritmo. Junto a cadanodo no terminal se representa su valor Minimax.

3 FUNCIÓN DE EVALUACIÓN ESTÁTICA

Hemos visto que no se puede evaluar o explorar todo el árbol, es por eso que con elmétodo minimax exploramos hasta cierta profundidad y usamos heurísticas (una función deevaluación estática)La calidad del programa depende fundamentalmente de la función de evaluación. Tiene queser:

- congruente con la función de utilidad de los nodos terminales,- rápida y- reflejar las posibilidades actuales de ganar .

Un valor de la función de evaluación en realidad cubre muchas posibles posiciones.

Page 10: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

9

Si fuera perfecta, no tendríamos que hacer búsqueda.El algoritmo minimax usa dos heurísticas:

- cálculo de la función de evaluación,- propagar valores hacia atrás pretendiendo que los valores en los nodos de frontera

son correctos.Si las estimaciones son burdas, también son los resultados.Se supone una función de evaluación estática que devuelve valores elevados para indicarbuenas situaciones y valores negativos para indicar buenas situaciones para el oponente.Visto de esta manera, la meta es maximizar el valor de la función estática de la siguienteposición de tablero.

La función de evaluación estática utilizada para el Juego de Damas que aquí se presentatiene la siguiente forma:

Evaluación = #fichas_mias(damas y reinas) / #fichas_oponente(damas y reinas).

Con la excepción de que cuando el divisor es cero se genera un valor máximo, en nuestrocaso definido en 24. Cuando se da el caso contrario, es decir, cuando el dividendo es cerose regresa un valor mínimo definido por nosotros en –1.0.Esta es la función de evaluación con la que funciona la primera versión del juego, la cual noutiliza ningún método de aprendizaje sino que solo se basa en la estrategia minimax. Estaprimera versión del juego funciona bien con una profundidad mayor o igual a cinco, sobretodo cuando no se tenia la condición de el tiro forzado si había una ficha contraria que sepudiera comer. Gracias a los buenos resultados que se obtuvieron con esta versión, se tomópara ser utilizada como la estrategia experta y que tanto los polinomios como las redesneuronales compitieran contra ella para ver si podían aproximarse a su calidad decompetencia.

4 REDES NEURONALES ARTIFICIALES

Las Redes Neuronales Artificiales (ANN’s de Artificial Neural Networks) fueronoriginalmente una simulación abstracta de los sistemas nerviosos biológicos, formados porun conjunto de unidades llamadas "neuronas" o "nodos" conectadas unas con otras. Estasconexiones tienen una gran semejanza con las dendritas y los axones en los sistemasnerviosos biológicos.

El primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts en términosde un modelo computacional de "actividad nerviosa". El modelo de McCulloch-Pitts es unmodelo binario, y cada neurona tiene un escalón o umbral prefijado. Este primer modelosirvió de ejemplo para los modelos posteriores de Jhon Von Neumann, Marvin Minsky,Frank Rosenblatt, y muchos otros.

Una primera clasificación de los modelos de ANN´s podría ser:

Page 11: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

10

1.Los modelos de tipo biológico. Este comprende las redes que tratan de simular lossistemas neuronales biológicos así como las funciones auditivas o algunas funcionesbásicas de la visión.

2.El modelo dirigido a aplicación. Estos modelos no tienen porque guardar similitud conlos sistemas biológicos. Sus arquitecturas están fuertemente ligadas a las necesidades de lasaplicaciones para las que son diseñados.

4.1 Redes Neuronales de tipo Biológico

Se estima que el cerebro humano contiene más de cien mil millones de neuronas ysinapsis en el sistema nervioso humano. Estudios sobre la anatomía del cerebro humanoconcluyen que hay más de 1000 sinapsis a la entrada y a la salida de cada neurona. Esimportante notar que aunque el tiempo de conmutación de la neurona (unos pocosmilisegundos) es casi un millón de veces menor que en los actuales elementos de lascomputadoras, ellas tienen una conectividad miles de veces superior que las actualessupercomputadoras.El objetivo principal de las redes neuronales de tipo biológico es desarrollar un elementosintético para verificar las hipótesis que conciernen a los sistemas biológicos.

Las neuronas y las conexiones entre ellas (sinapsis) constituyen la clave para el procesadode la información. Observe la figura:

La mayor parte de las neuronas poseen una estructura de árbol llamadas dendritas quereciben las señales de entrada que vienen de otras neuronas a través de las uniones llamadassinapsis. Algunas neuronas se comunican solo con las cercanas, mientras que otras seconectan con miles.

Hay tres partes en una neurona:

1.el cuerpo de la neurona,2.ramas de extensión llamadas dendritas para recibir las entradas,3.un axón que lleva la salida de la neurona a las dendritas de otras neuronas.

La forma que dos neuronas interactúan no está totalmente conocida, dependiendo ademásde cada neurona. En general, una neurona envía su salida a otras por su axón. El axón llevala información por medio de diferencias de potencial, u ondas de corriente, que depende del

Page 12: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

11

potencial de la neurona. Este proceso es a menudo modelado como una regla depropagación representada por la función de red u(.).La neurona recoge las señales por susinapsis sumando todas las influencias excitadoras e inhibidoras. Si las influenciasexcitadoras positivas dominan, entonces la neurona da una señal positiva y manda estemensaje a otras neuronas por sus sinapsis de salida. En este sentido la neurona puede sermodelada como una simple función escalón f(.). Como se muestra en la próxima figura, laneurona se activa si la fuerza combinada de la señal de entrada es superior a un cierto nivel,en el caso general el valor de activación de la neurona viene dado por una función deactivación f(.).

4.2 Funciones de Base y Activación

Una red neuronal típica se puede caracterizar por las descripciones funcionales de lared de conexión y la red de activación. Cada célula (unidad de proceso), suministra un valorai a su salida. Este valor se propaga a través de la red de conexiones unidireccionales haciaotras células de la red. Asociada a cada conexión hay un peso sináptico wij, que determinael efecto de la célula j-ésima sobre la célula i-ésima. Las entradas a la célula i-ésima queprovienen de las otras células son acumuladas junto con el umbral externo θi, para dar elvalor de red ui. La forma de hacerlo lo determina matemáticamente la función de base fpara dar un valor de activación ai. La salida final y se puede expresar como una función dela entrada y los pesos y=φ(x,W).

Función de Base (Función de Red)

Para un estudio analítico, las redes de conexión son matemáticamente representadas por lafunción de base u(w,x) donde w es la matriz de pesos, y x el vector de entrada. La funciónde base tiene dos formas típicas:• Función Lineal de Base (LBF) es una función de tipo hiperplano. Esto es, una función deprimer orden. El valor de red es una combinación lineal de las entradas,

Page 13: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

12

ui(w,x) = Σ(wijxj) , (1 ≤ j ≤ n)

La función de segundo orden se puede extender a otra más general llamada función de baseelíptica.

Función de Activación (Función de neurona)

El valor de red, expresado por la función de base, u(w,x), será inmediatamentetransformada por una función de activación no lineal. Por ejemplo, las funciones deactivación más comunes son la función paso, rampa o sigmoidal y gaussiana. En particular,

• Función sigmoidal

f(ui) = 1/(1+e-ui/σ)

• Función gaussiana

f(ui) = ce-(ui/σ)2

La función de activación que usaremos nosotros será la tangente hiperbólica expresada dela forma siguiente:f(ui) = tanh (ui)

4.3 Taxonomía de las Redes Neuronales

Existen dos fases en toda aplicación de las redes neuronales: la fase de aprendizaje oentrenamiento y la fase de prueba. En la fase de entrenamiento, se usa un conjunto de datoso patrones de entrenamiento para determinar los pesos (parámetros de diseño) que definenel modelo neuronal. Una vez entrenado este modelo, se usará en la llamada fase de prueba ofuncionamiento directo, en la que se procesan los patrones de prueba que constituyen laentrada habitual de la red, analizándose de esta manera las prestaciones definitivas de lared.

• Fase de Prueba: los parámetros de diseño de la red neuronal se han obtenido a partir deunos patrones representativos de las entradas que se denominan patrones de entrenamiento.Los resultados pueden ser tanto calculados de una vez como adaptados iterativamente,según el tipo de red neuronal, y en función de las ecuaciones dinámicas de prueba. Una vezcalculados los pesos de la red, los valores de las neuronas de la última capa, se comparancon la salida deseada para determinar la validez del diseño.

• Fase de Aprendizaje: una característica de las redes neuronales es su capacidad deaprender. Aprenden por la actualización o cambio de los pesos sinápticos que caracterizan alas conexiones. Los pesos son adaptados de acuerdo a la información extraída de los

Page 14: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

13

patrones de entrenamiento nuevos que se van presentando. Normalmente, los pesos óptimosse obtienen optimizando (minimizando o maximizando) alguna "función de energía". Porejemplo, un criterio popular en el entrenamiento supervisado es minimizar el least-square-error (error cuadrático medio) entre el valor del maestro y el valor de salida actual.

Las aplicaciones del mundo real deben acometer dos tipos diferentes de requisitos en elprocesado. En un caso, se requiere la prueba en tiempo real pero el entrenamiento ha derealizarse "fuera de línea". En otras ocasiones, se requieren los dos procesos, el de prueba yel de entrenamiento en tiempo real. Estos dos requisitos implican velocidades de procesomuy diferentes, que afectan a los algoritmos y hardware usados.

Atendiendo al tipo de entrenamiento, una posible taxonomía de las redes neuronales es:

Redes NeuronalesFijo No supervisado SupervisadoRed de Hamming PerceptronRed de Hopfield Mapa de características Basadas en decisión

Aprendizaje competitivo ADALINE (LMS)Perceptron MulticapaModelos Temporales DinámicosModelos Ocultos de Markov

4.4 Estructuras de las Redes Neuronales Artificiales

Los aspectos más característicos de las estructuras son la estructura de conexión, eltamaño de la red y la elección entre ACON (All-Class-in-On-Metwork) y OCON (One-Class-in-One-Network).

Una red neuronal se determina por la neurona y la matriz de pesos. El comportamiento dela red depende en gran medida del comportamiento de la matriz de pesos. Hay tres tipos decapas de neuronas: la de entrada, las ocultas y la de salida. Entre dos capas de neuronasexiste una red de pesos de conexión, que puede ser de los siguientes tipos: Hacia delante,hacia atrás, lateral y de retardo, tal como puede verse en la siguiente figura:

Page 15: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

14

1.Conexiones hacia delante: para todos los modelos neuronales, los datos de las neuronasde una capa inferior son propagados hacia las neuronas de la capa superior por medio de lasredes de conexiones hacia adelante. 2.Conexiones hacia atrás: estas conexiones llevan losdatos de las neuronas de una capa superior a otras de la capa inferior. 3.Conexioneslaterales. Un ejemplo típico de este tipo es el circuito "el ganador toma todo" (winner-takes-all), que cumple un papel importante en la elección del ganador. 4.Conexiones conretardo: los elementos de retardo se incorporan en las conexiones para implementarmodelos dinámicos y temporales, es decir, modelos que precisan de memoria.

Las conexiones sinápticas pueden ser total o parcialmente interconectadas, como muestra lafigura. También es posible que las redes sean de una capa con el modelo de pesos haciaatrás o bien el modelo multicapa hacia adelante. Es posible así mismo, el conectar variasredes de una sola capa para dar lugar a redes más grandes.

4.5 Tamaño de las Redes Neuronales

En una red multicapa de propagación hacia delante, puede haber una o más capasocultas entre las capas de entrada y salida. El tamaño de las redes depende del numero decapas y del número de neuronas ocultas por capa.

•Número de capas: en una red multicapa, hay una o más capas de neuronas ocultas entre laentrada y la salida. El número de capas se cuenta a menudo a partir del número de capas depesos (en vez de las capas de neuronas).

Page 16: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

15

•Número de unidades ocultas: El número de unidades ocultas está directamente relacionadocon las capacidades de la red. Para que el comportamiento de la red sea correcto (esto es,generalización), se tiene que determinar apropiadamente el número de neuronas de la capaoculta.

4.6 Aplicaciones

Con el fin de llegar al entendimiento global de ANN's, adoptamos la siguienteperspectiva, llamada top-down que empieza por la aplicación se pasa al algoritmo y de aquía la arquitectura:

Esta aproximación a las ANN's está motivada por la aplicación, basada en la teoría yorientada hacia la implementación. Las principales aplicaciones son para el procesado deseñal y el reconocimiento de patrones. La primera etapa algorítmica representa unacombinación de la teoría matemática y la fundamentación heurística por los modelosneuronales.

Desde el punto de vista de la aplicaciones, la ventaja de la ANN's reside en el procesadoparalelo, adaptativo y no lineal. Las ANN's han encontrado muchas aplicaciones con éxitoen la visión artificial, en el procesado de señales e imágenes, reconocimiento del habla y decaracteres, sistemas expertos, análisis de imágenes médicas, control remoto, control derobots, inspección industrial y exploración científica. El dominio de aplicación de lasANN's se puede clasificar de la siguiente forma: asociación y clasificación, regeneración depatrones, regresión y generalización, y optimización.

4.6.1 Asociación y Clasificación

En esta aplicación, los patrones de entrada estáticos o señales temporales deben serclasificadas o reconocidas. Idealmente, un clasificador debería ser entrenado para que

Page 17: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

16

cuando se le presente una versión distorsionada ligeramente del patrón, pueda serreconocida correctamente sin problemas. De la misma forma, la red debería presentar ciertainmunidad contra el ruido, esto es, debería ser capaz de recuperar una señal "limpia" deambientes o canales ruidosos. Esto es fundamental en las aplicaciones holográficas,asociativas o regenerativas.

•Asociación: de especial interés son las dos clases de asociación: autoasociación yheteroasociación. El problema de la autoasociación es recuperar un patrón enteramente,dada una información parcial del patrón deseado. La heteroasociación es recuperar unconjunto de patrones B, dado un patrón de ese conjunto. Los pesos en las redes asociativasson a menudo predeterminados basados en la regla de Hebb. Normalmente, laautocorrelación del conjunto de patrones almacenado determina los pesos en las redesautoasociativas. Por otro lado, la correlación cruzada de muchas parejas de patrones se usapara determinar los pesos de la red de heteroasociación.

•Clasificación no Supervisada: para esta aplicación, los pesos sinápticos de la red sonentrenados por la regla de aprendizaje no supervisado, esto es, la red adapta los pesos yverifica el resultado basándose únicamente en los patrones de entrada.

•Clasificación Supervisada: esta clasificación adopta algunas formas del criterio deinterpolación o aproximación. En muchas aplicaciones de clasificación, por ejemplo,reconocimiento de voz, los datos de entrenamiento consisten de pares de patrones deentrada y salida. En este caso, es conveniente adoptar las redes Supervisadas, como las bienconocidas y estudiadas redes de retropropagación. Este tipo de redes son apropiadas paralas aplicaciones que tienen una gran cantidad de clases con límites de separacióncomplejos.

4.6.2 Completar los patrones

En muchos problemas de clasificación, una cuestión a solucionar es la recuperación lainformación, esto es, recuperar el patrón original dada sola una información parcial. Haydos clases de problemas: temporales y estáticos. El uso apropiado de la informacióncontextual es la llave para tener éxito en el reconocimiento.

4.6.3 Generalización

Se puede extender a un problema de interpolación. El sistema es entrenado por un granconjunto de muestras de entrenamiento basados en un procedimiento de aprendizajesupervisado. Una red se considera que esta entrenada con éxito si puede aproximar losvalores de los patrones de entrenamiento y puede dar interpolaciones "suaves" para elespacio de datos no entrenado. El objetivo de la Generalización es dar una respuestacorrecta a la salida para un estímulo de entrada que no ha sido entrenado con anterioridad.El sistema debe inducir la característica saliente del estímulo a la entrada y detectar laregularidad. Tal habilidad para el descubrimiento de esa regularidad es crítica en muchasaplicaciones. Esto hace que el sistema funcione eficazmente en todo el espacio, incluso hasido entrenado por un conjunto limitado de ejemplos. Observe la siguiente figura:

Page 18: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

17

4.6.4 Optimización

Las ANN's son una herramientas interesantes para la optimización de aplicaciones, quenormalmente implican la búsqueda del mínimo absoluto de una función de energía:

Una vez que se define la función de energía, entonces la determinación de los pesossinápticos se hace rápidamente. Para algunas aplicaciones, la función de energía esfácilmente deducible. En otras, sin embargo, esta función de energía se obtiene de ciertoscriterios de coste y limitaciones especiales. El mayor problema asociado al problema deoptimización es la alta posibilidad de converger hacia un mínimo local, en vez de hacia elmínimo absoluto. Para combatir este problema se utilizan algunas propuestas estadísticas,como por ejemplo procedimientos estocásticos.

5 LOS ALGORITMOS GENÉTICOS

Los Algoritmos Genéticos (AG's) son métodos adaptativos que pueden usarsepara resolver problemas de búsqueda y optimización. Están basados en el proceso genéticode los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en lanaturaleza de acuerdo con los principios de la selección natural y la supervivencia de losmás fuertes, postulados por Darwin [1]. Por imitación de este proceso, los AlgoritmosGenéticos son capaces de ir creando soluciones para problemas del mundo real. Laevolución de dichas soluciones hacia valores óptimos del problema depende en buenamedida de una adecuada codificación de las mismas.

Page 19: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

18

Los principios básicos de los Algoritmos Genéticos fueron establecidos por Holland [2], yse encuentran bien descritos en varios textos – Goldberg [3], Davis [4], Michalewicz [5],Reeves [6] –.

En la naturaleza los individuos de una población compiten entre sí en la búsqueda derecursos tales como comida, agua y refugio. Incluso los miembros de una misma especiecompiten a menudo en la búsqueda de un compañero. Aquellos individuos que tienen máséxito en sobrevivir y en atraer compañeros tienen mayor probabilidad de generar un grannúmero de descendientes. Por el contrario individuos poco dotados producirán un menornúmero de descendientes. Esto significa que los genes de los individuos mejor adaptados sepropagarán en sucesivas generaciones hacia un número de individuos creciente. Lacombinación de buenas características provenientes de diferentes ancestros, puede a vecesproducir descendientes “súper individuos”, cuya adaptación es mucho mayor que la decualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unascaracterísticas cada vez mejor adaptadas al entorno en el que viven.

Los Algoritmos Genéticos usan una analogía directa con el comportamiento natural.Trabajan con una población de individuos, cada uno de los cuales representa una soluciónfactible a un problema dado. A cada individuo se le asigna un valor ó puntuación,relacionado con la bondad de dicha solución. En la naturaleza esto equivaldría al grado deefectividad de un organismo para competir por unos determinados recursos. Cuanto mayorsea la adaptación de un individuo al problema, mayor será la probabilidad de que el mismosea seleccionado para reproducirse, cruzando su material genético con otro individuoseleccionado de igual forma. Este cruce producirá nuevos individuos – descendientes de losanteriores – los cuales comparten algunas de las características de sus padres. Cuantomenor sea la adaptación de un individuo, menor será la probabilidad de que dicho individuosea seleccionado para la reproducción, y por tanto de que su material genético se propagueen sucesivas generaciones.

De esta manera se produce una nueva población de posibles soluciones, la cual reemplaza ala anterior y verifica la interesante propiedad de que contiene una mayor proporción debuenas características en comparación con la población anterior. Así a lo largo de lasgeneraciones las buenas características se propagan a través de la población. Favoreciendoel cruce de los individuos mejor adaptados, van siendo exploradas las áreas másprometedoras del espacio de búsqueda. Si el Algoritmo Genético ha sido bien diseñado, la,población convergerá hacia una solución óptima del problema.

El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnicarobusta, y pueden tratar con éxito una gran variedad de problemas provenientes dediferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Sibien no se garantiza que el Algoritmo Genético encuentre la solución óptima, del problema,existe evidencia empírica de que se encuentran soluciones de un nivel aceptable, en untiempo competitivo con el resto de algoritmos de optimización combinatoria. En el caso deque existan técnicas especializadas para resolver un determinado problema, lo más probablees que superen al Algoritmo Genético, tanto en rapidez como en eficacia. El gran campo deaplicación de los Algoritmos Genéticos se relaciona con aquellos problemas para los cuales

Page 20: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

19

no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, yfuncionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los AlgoritmosGenéticos.

5.1 Extensiones y Modificaciones del Algoritmo Genético Simple

En este apartado se introducirán algunas extensiones y modificaciones delAlgoritmo Genético Simple. Se comenzará dando un pseudocódigo para un AlgoritmoGenético Abstracto (AGA), para a continuación introducir algunas variantes que se han idoproponiendo en trabajos desarrollados en estos últimos años.

5.2 Población

Tamaño de la población

Una cuestión que uno puede plantearse es la relacionada con el tamaño idóneo de lapoblación. Parece intuitivo que las poblaciones pequeñas corren el riesgo de no cubriradecuadamente el espacio de búsqueda, mientras que el trabajar con poblaciones de grantamaño puede acarrear problemas relacionados con el excesivo costo computacional.

Goldberg [3] efectuó un estudio teórico, obteniendo como conclusión que el tamaño óptimode la población para cadenas de longitud I, con codificación binaria, creceexponencialmente con el tamaño de la cadena.

Este resultado traería como consecuencia que la aplicabilidad de los Algoritmos Genéticosen problemas reales sería muy limitada, ya que resultarían no competitivos con otrosmétodos de optimización combinatoria. Alander [7], basándose en evidencia empíricasugiere que un tamaño de población comprendida entre 1 y 21 es suficiente para atacar conéxito los problemas por él considerados.

Page 21: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

20

Población inicial

Habitualmente la población inicial se escoge generando cadenas al azar, pudiendo contenercada gen uno de los posibles valores del alfabeto con probabilidad uniforme. Nospodríamos preguntar que es lo que sucedería si los individuos de la población inicial seobtuviesen como resultado de alguna técnica heurística o de optimización local. En lospocos trabajos que existen sobre este aspecto, se constata que esta inicialización noaleatoria de la población inicial, puede acelerar la convergencia del Algoritmo Genético.Sin embargo en algunos casos la desventaja resulta ser la prematura convergencia delalgoritmo, queriendo indicar con esto la convergencia hacia óptimos locales.

5.3 Función objetivo

Dos aspectos que resultan cruciales en el comportamiento de los Algoritmos Genéticosson la determinación de una adecuada función de adaptación o función objetivo, así comola codificación utilizada.

Idealmente nos interesaría construir funciones objetivo con “ciertas regularidades”, es decirfunciones objetivo que verifiquen que para dos individuos que se encuentren cercanos en elespacio de búsqueda, sus respectivos valores en las funciones objetivo sean similares. Porotra parte una dificultad en el comportamiento del Algoritmo Genético puede ser laexistencia de gran cantidad de óptimos locales, así como el hecho de que el óptimo globalse encuentre muy aislado.

La regla general para construir una buena función objetivo es que ésta debe reflejar el valordel individuo de una manera “real”, pero en muchos problemas de optimizacióncombinatoria, donde existe una gran cantidad de restricciones, buena parte de los puntos delespacio de búsqueda representan individuos no válidos.

Para este planteamiento en el que los individuos están sometidos a restricciones, se hanpropuesto varias soluciones. La primera sería la que podríamos denominar absolutista, en laque aquellos individuos que no verifican las restricciones, no son considerados como tales,y se siguen efectuando cruces y mutaciones hasta obtener individuos válidos, o bien, adichos individuos se les asigna una función objetivo igual a cero.

Otra posibilidad consiste en reconstruir aquellos individuos que no verifican lasrestricciones. Dicha reconstrucción suele llevarse a cabo por medio de un nuevo operadorque se acostumbra a denominar reparador.

Otro enfoque está basado en la penalización de la función objetivo. La idea general consisteen dividir la función objetivo del individuo por una cantidad (la penalización) que guardarelación con las restricciones que dicho individuo viola. Dicha cantidad puede simplementetener en cuenta el número de restricciones violadas ó bien el denominado costo esperado dereconstrucción, es decir el coste asociado a la conversión de dicho individuo en otro que noviole ninguna restricción.

Page 22: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

21

Otra técnica que se ha venido utilizando en el caso en que la computación de la funciónobjetivo sea muy compleja es la denominada evaluación aproximada de la función objetivo.En algunos casos la obtención de n funciones objetivo aproximadas puede resultar mejorque la evaluación exacta de una única función objetivo (supuesto el caso de que laevaluación aproximada resulta como mínimo n veces más rápida que la, evaluación exacta).

Un problema habitual en las ejecuciones de los Algoritmos Genéticos surge debido a lavelocidad con la que el algoritmo converge. En algunos casos la convergencia es muyrápida, lo que suele denominarse convergencia prematura, en la cual el algoritmo convergehacia óptimos locales, mientras que en otros casos el problema es justo el contrario, es decirse produce una convergencia lenta del algoritmo. Una posible solución a estos problemaspasa por efectuar transformaciones en la función objetivo. El problema de la convergenciaprematura, surge a menudo cuando la selección de individuos se realiza de maneraproporcional a su función objetivo. En tal caso, pueden existir individuos con unaadaptación al problema muy superior al resto, que a medida que avanza el algoritmo“dominan” a la población. Por medio de una transformación de la función objetivo, en estecaso una comprensión del rango de variación de la función objetivo, se pretende que dichos“súper individuos” no lleguen a dominar a la población.

El problema de la lenta convergencia del algoritmo, se resolvería de manera análoga, peroen este caso efectuando una expansión del rango de la función objetivo.

La idea de especies de organismos, ha sido imitada en el diseño de los AlgoritmosGenéticos en un método propuesto por Goldberg y Richardson [8], utilizando unamodificación de la función objetivo de cada individuo, de tal manera que individuos queestén muy cercanos entre sí devalúen su función objetivo, con objeto de que la poblacióngane en diversidad.

5.4 Operadores Genéticos

5.4.1 Selección

La función de selección de padres más utilizada, es la denominada función de selecciónproporcional a la función objetivo, en la cual cada individuo tiene una probabilidad de serseleccionado como padre que es proporcional al valor de su función objetivo.

Page 23: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

22

Denotando por ppropj.t la probabilidad de que el individuo lj

t sea seleccionado como padre,

se tiene que:

Esta función de selección es invariante ante un cambio de escala, pero no ante unatraslación.

Una de las maneras de superar el problema relacionado con la rápida convergenciaproveniente de los súper individuos, que surge al aplicar la anterior función de selección, esel efectuar la selección proporcional al rango del individuo, con lo cual se produce unarepartición más uniforme de la probabilidad de selección, tal y como se ilustra en la figurasiguiente:

Si denotamos por rango g(ljt) el rango de la función objetivo del individuo lj

t es cuando losindividuos de la población han sido ordenados de menor a mayor (es decir el peor individuotiene rango 1, mientras que el individuo con mejor función objetivo tiene rango lambda), ysea prango

j,t la probabilidad de que el individuo ljt sea seleccionado como padre cuando la

selección se efectúa proporcionalmente al rango del individuo, se tiene que

Page 24: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

23

La suma de los rangos, lambda(lambda + 1)/2, constituye la constante de normalización.

La función de selección basada en el rango es invariante frente a la translación y al cambiode escala.

Otro posible refinamiento del modelo de selección proporcional, es el modelo de seleccióndel valor esperado, el cual actúa de la manera siguiente: para cada individuo I, se introduceun contador, inicializado en g(lj

t)/gt, donde gt denota la media de la función objetivo en lageneración t. Cada vez que el individuo lj

t es seleccionado para el cruce, dicho contadordecrece en una cantidad c (c pertenece a (0, 5;.1)). El individuo en cuestión dejará de poderser seleccionado en esa generación, cuando su contador sea negativo.

Un esquema de selección, introducido por Brindle [9], y que empíricamente haproporcionado buenos resultados, es el denominado muestreo estocástico conreemplazamiento del resto, en el cual cada individuo es seleccionado un número de vecesque coincide con la parte entera del número esperado de ocurrencias de dicho suceso,compitiendo los individuos por los restos. Es decir, si denotamos por n(lj

t) el número deveces que el individuo lj

t es seleccionado para el cruce, tenemos que:

Baker [10] introduce un método denominado muestreo universal estocástico, el cual utilizaun único giro de la ruleta siendo los sectores circulares proporcionales a la funciónobjetivo. Los individuos son seleccionados a partir de marcadores , igualmente espaciadosy con comienzo aleatorio como se muestra en la Figura siguiente.

Efectuando un paralelismo con los métodos de muestreo estadísticos, este último tipo deselección de padres se relaciona con el muestreo sistemático, mientras que la selecciónproporcional a la función objetivo está basada en el muestreo estratificado con finaciónproporcional al tamaño. También el procedimiento de selección que hemos denominado

Page 25: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

24

muestreo estocástico con reemplazamiento del resto, mantiene un paralelismo con elmuestreo estratificado con fijación de compromiso.

En el modelo de selección elitista se fuerza a que el mejor individuo de la población en eltiempo t, sea seleccionado como padre.

La selección por torneo, constituye un procedimiento de selección de padres muy extendidoy en el cual la idea consiste en escoger al azar un número de individuos de la población,tamaño del torneo, (con o sin reemplazamiento), seleccionar el mejor individuo de estegrupo, y repetir el proceso hasta que el número de individuos seleccionados coincida con eltamaño de la población. Habitualmente el tamaño del torneo es 2, y en tal caso se hautilizado una versión probabilística en la cual se permite la selección de individuos sin quenecesariamente sean los mejores.

Una posible clasificación de procedimientos de selección de padres consistirá en: métodosde selección dinámicos, en los cuales las probabilidades de selección varían de generación ageneración, (por ejemplo la selección proporcional a la función objetivo), frente a métodosde selección estáticos, en los cuales dichas probabilidades permanecen constantes (porejemplo la selección basada en rangos).

Si se asegura que todos los individuos tienen asignada una probabilidad de seleccióndistinta de cero el método de selección se denomina preservativo. En caso contrario seacostumbra a denominarlo extintivo.

5.4.2 Cruzamiento

El Algoritmo Genético Canónico descrito anteriormente utiliza el cruce basado en unpunto, en el cual los dos individuos seleccionados para jugar el papel de padres, sonrecombinados por medio de la selección de un punto de corte, para posteriormenteintercambiar las secciones que se encuentran a la derecha de dicho punto.

Se han investigado otros operadores de cruce, habitualmente teniendo en cuenta más de unpunto de cruce. De Jong [11] investigó el comportamiento del operador de cruce basado enmúltiples puntos, concluyendo que el cruce basado en dos puntos, representaba una mejoramientras que añadir más puntos de cruce no beneficiaba el comportamiento del algoritmo.La ventaja de tener más de un punto de cruce radica en que el espacio de búsqueda puedeser explorado más fácilmente, siendo la principal desventaja el hecho de aumentar laprobabilidad de ruptura de buenos esquemas (véase más adelante).

Page 26: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

25

En el operador de cruce basado en dos puntos, los cromosomas (individuos) puedencontemplarse como un circuito en el cual se efectúa la selección aleatoria de dos puntos, tal

y como se indica en la siguiente Figura .Desde este punto de vista, el cruce basado en un punto, puede verse como un casoparticular del cruce basado en dos puntos, en el cual uno de los puntos de corte se encuentrafijo al comienzo de la cadena que representa al individuo.

En el denominado operador de cruce uniforme (Syswerda [12]) cada gen en ladescendencia se crea copiando el correspondiente gen de uno de los dos padres, escogidode acuerdo a una “máscara de cruce” generada aleatoriamente. Cuando existe un 1 en la“máscara de cruce”, el gen es copiado del primer padre, mientras que cuando exista un 0 enla ”máscara de cruce”, el gen se copia del segundo padre, tal y como se muestra en lasiguiente figura.

Page 27: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

26

En la literatura, el término operador de cruce uniforme se relaciona con la obtención de la“máscara de cruce” uniforme, en el sentido que cualquiera de los elementos del alfabetotenga asociada la misma probabilidad. Hablando en términos de la teoría de la probabilidadla máscara de cruce está compuesta por una muestra aleatoria de tamaño A extraída de unadistribución de probabilidad de Bernouilli de parámetro 1/2.

Si tuviésemos en cuenta el valor de la función de adaptación de cada padre en el momentode generar la “máscara de cruce”, de tal manera que cuanto mayor sea la función deadaptación de un individuo, más probable sea heredar sus características, podríamos definir,véase Larrañaga y Poza [13], un operador de cruce basado en la función objetivo, en el cualla “máscara de cruce” se interpreta como una muestra aleatoria de tamaño l proveniente deuna distribución de Bernouilli de parámetro

donde ljt y lit denotan los padres seleccionados para ser cruzados.

El concepto de “máscara de cruce” puede también servir para representar los crucesbasados en un punto y basados en múltiples puntos, tal y como se muestra en la figurasiguiente.

Page 28: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

27

Existen otros operadores de cruce específicos para un determinado problema como son, porejemplo, los definidos para el problema del agente de comercio.

Por otra parte, la idea de que el cruce debería de ser más probable en algunas posiciones hasido descrita por varios autores (Schaffer y Morishima [14], Holland [2], Davis [4],Levenick [15]).

5.4.3 Mutación

La mutación se considera un operador básico, que proporciona un pequeño elemento dealeatoriedad en la vecindad (entorno) de los individuos de la población. Si bien se admiteque el operador de cruce es el responsable de efectuar la búsqueda a lo largo del espacio deposibles soluciones, también parece desprenderse de los experimentos efectuados porvarios investigadores que el operador de mutación va ganando en importancia a medida quela población de individuos va convergiendo (Davis [4]).

Schaffer y col. [16] encuentran que el efecto del cruce en la búsqueda es inferior al quepreviamente se esperaba. Utilizan la denominada evolución primitiva, en la cual, el procesoevolutivo consta tan sólo de selección y mutación. Encuentran que dicha evoluciónprimitiva supera con creces a una evolución basada exclusivamente en la selección y elcruce. Otra conclusión de su trabajo es que la determinación del valor óptimo de laprobabilidad de mutación es mucho más crucial que el relativo a la probabilidad de cruce.

La búsqueda del valor óptimo para la probabilidad de mutación, es una cuestión que ha sidomotivo de varios trabajos. Así, De Jong [11] recomienda la utilización de una probabilidadde mutación del bit de l-1, siendo l la longitud del string. Schaffer y col. [16] utilizanresultados experimentales para estimar la tasa óptima proporcional a l/(lambdao.9318)*(l0.4535), donde lambda denota el número de individuos en la población.

Si bien en la mayoría de las implementaciones de Algoritmos Genéticos se asume que tantola probabilidad de cruce como la de mutación permanecen constantes, algunos autores hanobtenido mejores resultados experimentales modificando la probabilidad de mutación a

Page 29: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

28

medida que aumenta el número de iteraciones. Pueden consultarse los trabajos de Ackley[17], Bramlette [18], Fogarty [19] y Michalewicz y Janikow [20].

5.4.4 Reducción

Una vez obtenidos los individuos descendientes de una determinada población en eltiempo t, el proceso de reducción al tamaño original, consiste en escoger lambda individuosde entre los Lambda individuos que forman parte de la población en el tiempo t, y loslambda individuos descendientes de los mismos. Dicho proceso se suele hacerfundamentalmente de dos formas distintas.

O bien los lambda individuos descendientes son los que forman parte de la población en eltiempo t + 1, es lo que se denomina reducción simple, o bien se escogen de entre los2lambra individuos, los lambda individuos más adaptados al problema, siguiendo lo quepodemos denominar un criterio de reducción elitista de grado lambda. Podemos tambiénconsiderar otros procedimientos de reducción que se colocan entre los anteriores, porejemplo, si escogemos los lambda1 mejores de entre padres y descendientes, escogiéndoselos lambda – lambda1 y restantes de entre los descendientes no seleccionados hasta elmomento.

El concepto de reducción está ligado con el de tasa de reemplazamiento generacional, (tgr)es decir en el porcentaje de hijos generados con respecto del tamaño de la, población.

Si bien en la idea primitiva de Holland [2] dicho reemplazamiento se efectuaba de 1 en 1,es decir tgr=lambda-1 , habitualmente dicho reemplazamiento se efectúa en bloque, tgr= 1.De Jong [11] introdujo el concepto de tasa de reemplazamiento generacional con elobjetivo de efectuar un solapamiento controlado entre padres e hijos. En su trabajo, en cadapaso una proporción, t~, de la población es seleccionada para ser cruzada. Los hijosresultantes podrán reemplazar a miembros de la población anterior. Este tipo de AlgoritmosGenéticos se conocen bajo el nombre de SSGA (Steady State Genetie Algorithm), unejemplo de los cuales lo constituye GENITOR (Whitley y Kauth [21], Whitley [22]).

Michalewicz [5] introduce un algoritmo que denomina Algoritmo Genético Modificado,(MODGA), en el cual para llevar a cabo el reemplazamiento generacional, selecciona al azarr1 individuos para la reproducción, así como r2 individuos (distintos de los anteriores)destinados a morir. Estas selecciones aleatorias tienen en consideración el valor de lafunción objetivo de cada individuo, de tal manera que cuanto mayor es la función objetivo,mayor es la probabilidad de que sea seleccionado para la reproducción, y menor es laprobabilidad de que dicho individuo fallezca. El resto de los lambda – (r1 + r2) individuosson considerados como neutros y pasan directamente a formar parte de la población en lasiguiente generación.

Page 30: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

29

5.5 Programación Evolutiva

La Programación Evolutiva, se fundamenta en las ideas expresadas por Fogel [23], [24],[25], y trata de resolver problemas de optimización combinatoria.

A grandes rasgos, la estructura de dichos algoritmos se asemeja a la de los AlgoritmosGenéticos, si bien la diferencia fundamental entre ambos radica en el hecho de que losnuevos individuos son creados utilizando tan sólo mutación, es decir no existen operadoresde cruzamiento. De esta forma la Programación Evolutiva puede verse como un AlgoritmoGenético asexual.

6 LAS DOS VERSIONES (BASES)

En esta sección describimos detalladamente las dos versiones que generamos.Primeramente damos las bases de ambas versiones y posteriormente nos enfocamos en cadauna de ellas explicando sus particularidades.

Ambas versiones están basadas en el modelo de algoritmo genético asexual, es decir queno se aplica cruzamiento. El algoritmo genético esta representado por la clase AG, donde seespecifica el tamaño de la población, el número de generaciones a evolucionar, cuantosjuegos debe jugar cada estrategia y el número máximo de movimientos antes de declarar unempate. Estos valores están definidos en la clase de la siguiente forma:

final static int TAMPOB = 15; //tamaño de la población final static int MAXGENS = 10; //número de generaciones final static int MAXMOV = 100; //número máximo de movimientos final static int JUEGOS = 5; // número de juegos por estrategia

Además existe una variable entera denominada generacion la cual va contando el númerode generaciones en las que va evolucionando el algoritmo genético. Básicamente elalgoritmo genético funciona de la forma siguiente:

- Se inicializa una población de tamaño TAMPOB. Cada una de las estrategias esgenerada con valores aleatorios entre [-0.2, 0.2] y ya que está definida se genera deella un hijo aplicándole mutación a cada uno de sus valores. Con esto finalmenteobtenemos una población del doble del tamaño predefinido.

- Para cada generación, hasta que se llega al número máximo de generaciones se hacelo siguiente:

- Se evalúan las estrategias. Cada una de las estrategias juega el número de juegospredefinido contra la estrategia que funciona con una función de evaluación estáticadescrita anteriormente. En cada juego hay tres posibilidades para la estrategia de lapoblación: gana, empata o pierde. Si gana se le asigna un punto, si empata cero y sipierde dos puntos menos. El empate se da cuando las dos estrategias superan el

Page 31: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

30

número máximo de movimientos permitidos. Con esto vamos a valorar susposibilidades de supervivencia (fitness). Esto sucede para todas y cada una de lasestrategias que se encuentran en la población, incluyendo a las que se generaron pormedio de la mutación.

- Posteriormente se aplica la selección. Para seleccionar las mejores estrategias decada generación, estas se ordenan según su valor fitness de la mayor a la menor. Pararealizar el ordenamiento se utiliza el algoritmo de QuickSort. Ya que se tienenordenadas se toman TAMPOB estrategias, obviamente las de mejor fitness y estasson las que van a formar parte de la siguiente generación.

- Se realiza la mutación. Cada una de las estrategias seleccionadas genera unaestrategia hija a partir de la variación de sus valores. Esta variación es pequeña yaleatoria.

- Finalmente se aplica elitismo, el cual consiste en lo siguiente: si la mejor estrategiade la generación actual tiene un mejor fitness que la estrategia que conservamoscomo la mejor historialmente entonces colocamos a la mejor de la generación actualcomo la mejor historialmente y la que estaba antes la ponemos en lugar de la peor dela generación actual.

La finalidad en ambas versiones es la de aproximarse a la “capacidad” de juego de lafunción de evaluación estática. La versión de los polinomios introduce información acercadel tablero lo cual puede llegar a ser una ayuda para obtener resultados favorables y de unaforma más rápida. La versión de las redes neuronales no introduce información acerca deltablero y esto podría ser desfavorable ya que no tienen forma de converger hacia unaestrategia definida, sino solo por las iteraciones y las mutaciones que van sufriendo.

6.1 Polinomio

Para manejar polinomios dentro de nuestro algoritmo genético definimos la clasePolinomio la cual contiene todas las características de cada uno de ellos. Primeramentediremos que cada polinomio esta dado de la siguiente forma:

w0 + w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6

donde : x1 = número de damas negras en el tablero. x2 = número de damas blancas en el tablero. x3 = número de reinas negras en el tablero. x4 = número de reinas blancas en el tablero. x5 = número de fichas negras amenazadas por una contraria (que se la comería en el siguiente movimiento).

x6 = número de fichas blancas amenazadas por una contraria (que se la comería en el siguiente movimiento). w0, ...., w6 = coeficientes que pueden variar durante las generaciones(mutación).

Para definir cada polinomio dentro de la clase se consideran las constantes:- NVAR la cual contiene el número de coeficientes existentes en el polinomio.- LIMITE_INF que marca una cota inferior a la que puede llegar cualesquiera de los

coeficientes.

Page 32: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

31

- LIMITE_SUP que marca una cota superior a la que puede llegar cualesquiera de loscoeficientes.

Cada polinomio contiene un arreglo denominado coef[] donde almacena los valores de sussiete coeficientes. Maneja, también, una variable fitness en la que se almacena la aptitud deel polinomio después de haber participado dentro de una generación, es decir, quepuntuación obtuvo después de haber jugado varias partidas contra algunos oponentes.

Inicialmente, cuando se crea la primera generación del algoritmo genético a cada uno de lospolinomios se le asignan valores aleatorios en sus coeficientes. Estos valores aleatoriosestán acotados por los dos límites señalados anteriormente.

Para mutar los coeficientes de un polinomio y con ello generar un hijo de este, lo que sehace es que para cada coeficiente del polinomio se genera un número aleatorio entre [–1, 1]y se le suma a dicho coeficiente. Ya que se mutaron todos los coeficientes, estos se asignancomo los coeficientes correspondientes al polinomio hijo. Como se puede ver la mutaciónes muy sencilla de realizar y esto puede beneficiar en la rapidez que puede adquirir elprograma para generar las evoluciones.

La evaluación que realiza un polinomio sobre un determinado tablero esta dada por unvalor el cual se obtiene a partir de la sustitución de los coeficientes del polinomio y definirlos valores de las variables los cuales dependen de dicho tablero. Ya que se tienen todas lassustituciones, se realizan las operaciones correspondientes y el resultado será el valor deevaluación. Debe tenerse claro que este no es el fitness sino que este valor es el que seocupa en los árboles de decisión del método minmax.

Observaciones durante el desarrollo Esta versión no estaba incluida en los planes del presente proyecto, sin embargo fuenecesaria para los fines que se deseaban alcanzar. Debido a los problemas que secomenzaron a presentar con las redes neuronales (los cuales se describen mas adelante), lanecesidad de tener una versión de algoritmos genéticos con paso de información a suscromosomas generó esta versión del proyecto. Se pensó que la falta de información acercadel tablero de juego podría ser factor importante en el desavance de las estrategiasparticipantes a lo largo de las generaciones del algoritmo genético.

Se introdujo una primera versión en la cual los polinomios solo contenían dos variables consus respectivos coeficientes. Esta primera versión sirvió como parámetro para observarcomo respondía el algoritmo con polinomios. Los resultados comenzaron a ser favorablesya que las estrategias participantes comenzaron a converger hacia situaciones en las quellegaban a vencer a la estrategia de la función de evaluación estática. Esto sirvió paraintroducir la versión del polinomio que describimos anteriormente y que fue la quefinalmente quedó para realizar las evoluciones y las pruebas finales.

Otro factor importante por el cual se introdujeron los polinomios fue el tiempo que senecesitaba para realizar la evolución. El tiempo necesario para cada generación esrelativamente corto y por lo tanto el proceso de pruebas y las evaluaciones fueron masrápidas de realizar. Esto fue algo importante debido al corto tiempo que se tiene para

Page 33: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

32

realizar este tipo de proyectos. Finalmente no se presentaron mayores problemas durante eldesarrollo de esta versión.

6.2 Red Neuronal Artificial

La estructura de cada red neuronal está definida en la clase Rna. Las redes que seutilizan en el algoritmo genético son redes de Hopfield clasificadas como de aprendizajecompetitivo y con conexiones hacia delante.

En el caso de las redes cada tablero está representado por un arreglo de 32 elementos,donde cada elemento del arreglo corresponde a una posición válida del tablero. Cadaelemento puede tomar alguno de los siguientes valores {-K, -1, 0 +1, +K} donde K es elvalor asignado a una reina, 1 es el valor para una dama y 0 representa una casilla vacía. Elsigno del valor representa si es una ficha del jugador actual (positivo) o de su oponente(negativo). Estos valores se utilizan como las entradas que se proporcionan a la red.

La red neuronal tiene conexiones totales hacia delante con una capa de entrada de 32 nodos(uno para cada posición válida del tablero), dos capas ocultas, la primera con 40 nodos y lasegunda con 10 nodos; finalmente tiene un solo nodo de salida.Cabe recordar que la función no lineal que se utiliza para modificar los nodos ocultos y elnodo de salida es la tanh. Todos los nodos de entrada fueron conectados directamente al nodo de salida, así comotambién existen sesgos para las dos capas ocultas y uno para los nodos de entrada. Larelación o conexión existente entre los nodos de entrada y el nodo de salida sirve como unafunción de la diferencia de piezas entre el jugador actual y su oponente. Esencialmente lasalida suma todas las entradas que ofrecen una ventaja o desventaja de piezas.El diseño de la red neuronal se muestra a continuación: Sesgo Capa Oc. #1Sesgo Capa Entrada Sesgo Capa Oc. #2

* * *

* * *

* * * Salida

Entradas Capa Oculta #1 Capa Oculta #2

Page 34: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

33

Para poder representar toda la información que contiene una red neuronal de esta forma senecesitaron varios elementos de composición. En la clase Rna se definen los siguientesarreglos representativos:

double val_nodos1[] //contiene los valores de los nodos de la primera capa oculta double val_nodos2[] //contiene los valores de los nodos de la segunda capa oculta double val_nodosalida[] //contiene los valores de los nodos de la capa de salida (que en realidad solo es un nodo). double sesgo_ce[] //contiene el valor de los pesos que van del sesgo de la capa de entrada hacia los nodos de la primera capa oculta. double sesgo_co1[]//contiene el valor de los pesos que van del sesgo de la primera capa oculta hacia los nodos de la segunda capa oculta double sesgo_co2[]//contiene el valor del peso que va del sesgo de la segunda capa oculta hacia el nodo de la capa de salidaExisten además vectores asociados con cada uno de los sesgos. Estos vectores contienen elmismo número de elementos de los que contiene su sesgo correspondiente. Cadacomponente del vector (que en nuestro caso lo representamos con un arreglo) sirve comobase para realizar la mutación al componente del sesgo que le corresponde. Los vectoresson declarados así:

double vector_sce[] //vector asociado al sesgo de la capa de entrada double vector_sco1[] //vector asociado al sesgo de la primer capa oculta double vector_sco2[] //vector asociado al sesgo de la segunda capa oculta

Hasta ahora solo tenemos las variables que guardarán los pesos que salen de los sesgos.Para guardar los demás pesos se generaron otras dos clases: la clase Capa_Oculta1 y laclase Capa_Salida. Cada objeto perteneciente a la clase Capa_Oculta1 representa un nodode esta capa y por lo tanto guarda información (valores) acerca de los pesos que le llegan delos nodos de entrada y de los pesos que salen de él hacia los nodos de la segunda capaoculta. Además contiene un vector asociado el cual es utilizado para la mutación de susvalores. Esta clase es declarada de la forma siguiente:

class Capa_Oculta1 {

final static int NENT = 32; final static int NODOCO2 = 10;

double pesos_co1[] = new double[NENT + NODOCO2]; double vector_pco1[] = new double[NENT + NODOCO2]; Capa_Oculta1 sig_nodo;}

Para la clase Capa_Salida, el objeto que se genera de ella representa al nodo de la capa desalida y contiene como información los valores de los pesos que llegan a él de los nodos dela segunda capa oculta y de los pesos que van de los nodos de entrada hacia él. Sudeclaración es :

Page 35: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

34

class Capa_Salida {

final static int NENT = 32; final static int NODOCO2 = 10;

double pesos_cs[] = new double[NENT + NODOCO2]; double vector_pcs[] = new double[NENT + NODOCO2]; Capa_Salida sig_nodo;}

Con esto ya podemos representar a cada una de nuestras redes neuronales que vamos aentrenar en nuestro algoritmo genético. Ahora pasemos a describir las particularidades quepresentan las redes durante la evolución.Para comenzar la evolución, se inicializa una población de 15 redes neuronales, donde paracada red se generan pesos y sesgos con valores aleatorios entre [-0.2, 0.2] y con el valor deK inicialmente a 2.0.

Inicialmente los componentes de los vectores asociados cada uno de los nodos y los sesgosson puestos en 0.05.

Estas primeras 15 redes neuronales son declaradas como los padres de la generación. Cadapadre genera un hijo variando o mutando todos los valores de los pesos y sesgos del padre,así como el valor de K. Específicamente para cada padrei, su hijoi’ fue creado de la formasiguiente:

- V’i = vector del hijo i asociado a los pesos de este último.- Vi = vector del padre i asociado a los pesos de éste último.- W’i = Peso componente de la red neuronal hijo i.- Wi = Peso componente de la red neuronal padre i.

V’i ( j ) = Vi ( j ) * exp (tau * Nj (0, 1) ), j = 1, ..., Nw // se mutan primero loscomponentes de los vectores que van a estar asociados a los nodos del hijo.

W’i ( j ) = Wi ( j ) * V’i ( j ) * Nj (0, 1), j = 1, ..., Nw // se mutan cada uno de lospesos de la red neuronal hijo utilizando los pesos del padre y el componentecorrespondiente del vector que influencia a la red neuronal hijo.

Nw es el número de pesos y sesgos en la red neuronal (1741 en total), tau = 0.1095 y Nj (0,1) es una aproximación Gaussiana , la cual es calculada para cada peso y cada sesgo.

El valor de K’ se obtiene de la forma siguiente:

K’i = Ki + 0.1Ui

donde Ui es un entero que obtiene su valor de alguno de los tres siguientes {-1, 0, 1} conesto el valor de las reinas incrementa o decrementa en 0.1 o bien se queda igual. Para nodisparar el valor de la reina, el valor de K’ se limita en el rango de [1.0, 3.0].

Page 36: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

35

En cada uno de los 5 juegos el jugador actual siempre juega con las fichas azules y suoponente siempre con las rojas. Cuando se completan todas las partidas, las 15 mejoresredes ( las que tienen mejor fitness) son seleccionadas como padres para la próximageneración. La selección se realiza ordenando por el método del Quicksort a las 30 redescandidatas para así tomar las 15 primeras. Después de realizar la selección se realiza elElitismo aprovechando que sabemos fácilmente cual es la mejor red de la generación actualdebido a que están ordenadas.

Finalmente como se aplica elitismo conservamos la mejor red de todas y esta es la que seutiliza para que juegue la computadora contra una persona.

En el Algoritmo Genético que utiliza estas redes neuronales tenemos un arreglo de dosveces el tamaño de la población mas uno el cual contiene las redes neuronales padre consus redes neuronales hijo y una red neuronal más que es la mejor de todas históricamente.

Observaciones durante el desarrollo

En las redes neuronales existen muchos factores que son determinantes en los resultadosque se obtienen después de entrenarlas. Si estos factores no son cuidados y realizados conla suficiente determinación los resultados que se llegan a obtener pueden serintrascendentes y hasta en algunas ocasiones desastrosos. En nuestro caso, utilizamos unaaproximación Gaussiana de la cual se basa la mutación de los pesos. Teníamos una funciónque nos regresaba valores dentro de los límites válidos en la campana de Gauss, sinembargo, esta función solo nos regresaba valores positivos debido a que no teníamos bienclaro como obtener los valores de Gauss. Este descuido se vio reflejado en el momento deaplicar las evoluciones debido a que no pasaba nada con las estrategias participantes,siempre perdían con la estrategia que se consideraba experta. Esta corrección se realizóutilizando la siguiente función que verdaderamente encontraba valores aproximados a laGaussiana:

val = u + v(R1 + ... + R12 – 6)donde u = media (en nuestro caso puesta a cero) v = desviación estándar (en nuestro caso puesta a dos) R1 ... R12 = valores aleatorios entre [0, 1] (distribución uniforme)

Con esto los resultados comenzaron a ser un poco mejores, pero aún existían deficienciasen la evolución de las redes. Por lo que se tomó la determinación de meter la regla del tiroforzado la cual consiste en que si se tiene una jugada en el tablero actual en donde se puedecomer a una o mas fichas contrarias, se debe de realizar sin necesidad de hacer unaexploración mas allá en el árbol de búsqueda. Se pensó que sin esta regla existía un límitede evolución para las redes neuronales porque durante las partidas que tenían frente a lafunción experta prácticamente solo se dedicaban a cuidarse de que no se comieran susfichas, además las amontonaban en el centro del tablero hasta llegar al punto en dondeninguna de las dos estrategias podía realizar un tiro y por lo tanto perdía la primera enllegar a esta situación. Al meter el tiro obligado se forzó a las redes a no solo defendersesino el atacar cuando tenían la oportunidad aunque esto no implicara la mejor elección. Con

Page 37: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

36

esto la evolución de las redes se logró mejorar en gran medida obteniendo mejoresresultados y de forma un poco mas rápida.

Algo importante en la metodología que se eligió para el aprendizaje de la máquina, queconsiste en algoritmos genéticos con redes neuronales sin paso de información, es que serequiere de poblaciones mas o menos grandes y con un número elevado de generaciones,porque como no se pasa ningún tipo de información el aprendizaje se puede decir que espor fuerza bruta. Esto implica tiempos de evolución muy elevados, del orden de los días yhasta semanas, desgraciadamente el tiempo de realización del proyecto no permite pruebastan costosas en ese ámbito por lo que nos tuvimos que ver limitados a hacer las evolucionescon un número mas o menos reducido de redes y durante un pequeño número degeneraciones. Esto como dijimos antes fue lo que generó la versión de los polinomios.

RESULTADOS

Las evoluciones tanto de los Polinomios como de las Redes Neuronales se realizaronestableciendo los siguientes parámetros:TAMPOB = 15MAXGENS = 10MAXMOV = 100JUEGOS = 5

Las variaciones tanto de los coeficientes de los polinomios como los pesos de las redesvarían dentro del rango [-2.0, 2.0].Se realizaron pruebas de la siguiente manera: La profundidad de la función de evaluaciónestática se vario de 1 a 3 y se hizo lo mismo con las profundidades de los polinomios y lasredes neuronales. Obtuvimos todas las combinaciones posibles con estas variaciones. Losresultados de cada versión se muestran a continuación.

Resultados de las evoluciones con polinomios

Para las pruebas en donde la función de evaluación estática tiene árboles de búsquedacon profundidad 1, los resultados son los siguientes.

Para polinomios con profundidad = 1, los resultados se dan de una forma muy rápida y defavorable hacia ellos como puede verse en la Figura1. Las barras del lado izquierdo indicanel número de generación y las barras del lado derecho indican el tiempo que tardo enevolucionar dicha generación. El tiempo total que tardo en evolucionar el algoritmogenético fue de 12.96 segundos y su mejor estrategia logro vencer los 5 juegos a la funciónde evaluación estática. Sin embargo, el mejor polinomio de esta evolución no escompetitivo debido a que realiza muchas jugadas de muy bajas posibilidades.

Page 38: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

37

Figura1

En la prueba realizada con polinomios de profundidad = 2, nuevamente desde la primerageneración el mejor polinomio logra vencer las 5 veces a la función de evaluación estática.Sin embargo, esta estrategia tampoco es competitiva por las mismas razones, esto se debeprincipalmente a que la función de evaluación estática no ofrece mayores dificultades conniveles de profundidad = 1. Los tiempos de evolución se muestran en la Figura2 y el tiempototal fue de 105.12 segundos.

Figura2

0123456789

10

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 1

XY

0

24

6

8

1012

14

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 2

XY

Page 39: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

38

En la prueba donde los polinomios tienen profundidad = 3, se comenzaron a visualizarmejores resultados. En esta ocasión también fue fácil vencer a la función de evaluaciónpero parece ser que la diferencia de resultados de estos polinomios con los anteriores es laprofundidad que se maneja. Obviamente que los tiempos de evaluación se comienzan aelevar precipitadamente y esto provoca evoluciones lentas, en esta ocasión la Figura3muestra este aspecto y el tiempo total fue de 1040.23 segundos.

Figura3

Para las pruebas en donde la función de evaluación estática tiene árboles de búsquedacon profundidad 2, los resultados son los siguientes.Realizando la evolución con polinomios de profundidad =1 los resultados no son nadafavorables debido a que no tienen la suficiente capacidad para competir contra una funciónde evaluación estática con profundidad 2. Los tiempos de evolución son rápidos y en totalel algoritmo genético tardó 124.113 segundos. La Figura4 muestra lo señalado.

0

20

40

60

80

100

120

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 3

XY

0

2

46

810

12

14

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 1

XY

Page 40: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

39

Figura4

Cuando se evoluciona con polinomios de profundidad = 2 la mejor estrategia resultanteofrece un poco mas de competitividad a pesar de que jamás logra vencer a la función deevaluación estática. Se puede decir que a partir de aquí los polinomios comienzan a tomarciertas características de la estrategia experta y esto es lo que hace que comiencen a tenercierta competitividad. Los tiempos de evaluación son relativamente cortos como se puedever en la Figura5 y el tiempo total es de 397.55 segundos.

Figura5

En el caso donde los polinomios tienen profundidad = 3, los resultados son favorables, sinembargo la estrategia resultante solo puede competir contra inexpertos debido a que suaprendizaje realmente es muy limitado. Los tempos de evolución se elevan en gran medidacomo podemos ver en la Figura6 y el tiempo total de ejecución en esta prueba fue de1546.86 segundos. La mejor estrategia resultante logró vencer las cinco veces a laestrategia experta.

05

1015202530354045

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 2

XY

Page 41: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

40

Figura6

Para las pruebas en donde la función de evaluación estática tiene árboles de búsquedacon profundidad 3, los resultados son los siguientes.

Cuando los polinomios tienen profundidad = 1 y se enfrentan con la estrategia experta, losresultados aparentemente no serían buenos pero sin embargo la estrategia ganadora secomporto mejor que muchas de las estrategias resultantes anteriores. La razón principal sedebe a que como la estrategia experta tiene una mayor profundidad en sus árboles dedecisión, los polinomios deben sacar mayor provecho de esta situación, es decir, aprendenmejor a pesar que la estrategia ganadora jamás logró vencer a la experta. Los tiempos deevolución se muestran a continuación en la Figura7 y el tiempo total fue de 546.41segundos.

020406080

100120140160180

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 3

XY

Page 42: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

41

Figura7

Cuando elevamos la profundidad de los polinomios a 2 los resultados son muy similares alos del caso anterior. Los tiempos no se elevan demasiado como podemos ver en la Figura8y el tiempo total de la evolución fue de 878.1 segundos. Su competitividad es algo mejoraunque en este caso tampoco se logró vencer a la estrategia experta.

Figura8

0

10

2030

4050

60

70

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 1

XY

0

20

40

60

80

100

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Gnenético con polinomios de profundidad2

XY

Page 43: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

42

El mejor caso y el que da indicios de que se pueden obtener mejores resultados enevoluciones más grandes y con mayores profundidades es cuando la profundidad de lospolinomios tiene valor 3. En este caso los resultados obtenidos son mejores ya que laestrategia resultante comienza a mostrar mejores cosas a la hora de jugar y además logravencer las cinco veces a la estrategia experta. Los tiempos de ejecución si puede observarseson menores que en el caso anterior donde los polinomios tienen profundidad 3 y laestrategia experta igual. Esto se debe a que desde la primera generación la mejor estrategiade los polinomios comienza a vencer a la experta, lo cual contribuye a reducir los tiemposen cada juego y finalmente se ve reflejado en el tiempo total que fue de 1253.89 segundos.La Figura9 muestra esta observación.

Figura9

Se puede observar que los tiempos de evolución son relativamente cortos, esto se debe a laspocas operaciones que se realizan para evaluar a cada polinomio. Finalmente podemosdecir que sería interesante poder aplicar mas pruebas con mayores parámetros y poner ajugar a las estrategias contra personas distintas a los desarrolladores los cuales tenemosmuy poca experiencia en el juego de damas.

Resultados de las evoluciones con redes neuronales.

El trabajo con las redes neuronales puede decirse que tiene mayor dificultad conrespecto a las evaluaciones debido a que el número de cálculos es mucho mayor comparadocon el que realizan los polinomios. Esto implica dos cosas, tiempos de evaluación muchomayores y el aprendizaje no es muy favorable en un número pequeño de generaciones. Lafalta de paso de información acerca de los tableros hacia las redes neuronales implica unaprendizaje mucho mas lento y que nos desfavorece en la entrega de resultados como podráverse a continuación.

0

20

4060

80100

120

140

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con polinomios de profundidad 3

XY

Page 44: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

43

Primeramente se presentan los resultados de las redes neuronales jugando contra la funciónde evaluación estática con árboles de profundidad = 1.

Las primeras redes neuronales que compitieron contra la estrategia experta manejabantambién profundidad = 1. Los tiempos de ejecución son bastante rápidos como puede verseen la Figura10, pero porque rápidamente ganaba la estrategia experta y lo mejor quelograron realizar las redes fue empatar contra ella. El tiempo total de evolución fue de546.41 segundos y la estrategia resultante no tiene competitividad.

Figura10

Se realizó la evolución con redes neuronales de profundidad 2 y sorpresivamente lostiempos se elevaron en gran medida como lo muestra la Figura11. Esta estrategia tampocoda mucho que decir y sinceramente no tiene mayor relevancia. El tiempo de evolución totalfue de 1934.09 segundos. Figura11

0

5

10

15

20

25

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 1

XY

0

50

100

150

200

250

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 2

XY

Page 45: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

44

Con redes neuronales de profundidad 3 los tiempos de evolución realmente son disparados.El promedio de tiempo por generación es de 30 minutos, lo que implica que para realizaruna evolución de 10 generaciones se necesitan aproximadamente unas 5 horas. Obviamentelos resultados son mejores que los mostrados hasta ahora.

Ahora se presentan los resultados de las redes neuronales jugando contra la función deevaluación estática con árboles de profundidad = 2.

Una de las pruebas que se realizaron con las redes neuronales de profundidad 1 fue bastantesatisfactoria debido a que inmediatamente convergió hacia valores estratégicos los cualeslograron vencer a la función de evaluación estática. Los tiempos de evolución se muestranen la Figura12 y el tiempo total fue 448.52 segundos. A la hora de jugar contra la mejorestrategia de la evolución no presento grandes argumentos pero no estaba del todo mal yaque lograba hacer movimientos relevantes.

Figura12

Los resultados con redes neuronales de profundidad 2 no fueron muy satisfactorias debidoprincipalmente a los tiempos de evolución ya que son algo grandes y la evolución es algotardada. Con respecto a la competitividad que logró mostrar la mejor estrategia de estaevolución podemos decir que fue buena, le ganó las cinco veces a la estrategia experta y alenfrentarse contra un ser humano tiene una buena respuesta, sin embargo no podemos decirque tiene una gran capacidad. La Figura13 muestra los tiempos de evolución, el tiempototal fue .

0

10

20

30

40

50

60

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 1

XY

Page 46: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

45

Figura13

Ahora se presentan los resultados de las redes neuronales jugando contra la función deevaluación estática con árboles de profundidad = 3.

La prueba con redes neuronales de profundidad 1 no fue nada satisfactoria debido a que lostiempos de evolución como se ve en la Figura14 son demasiado grandes para redesneuronales de esta profundidad. Lo mejor que pudo lograr la estrategia de mayoresaptitudes fue no perder con la estrategia experta. El tiempo total de evolución fue 3095.38.

Figura14

Las redes neuronales con profundidad = 2 tienen el problema de que su evolución es muytardada y además no logran tener buenos resultados contra la función de evaluación

0

50

100

150

200

250

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 2

XY

050

100150200250300350

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 1

XY

Page 47: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

46

estática. La Figura15 muestra los tiempos de cada generación y como podemos ver sondemasiado extensos. Po lo que podemos concluir que la evolución con esta combinación deprofundidades no es nada favorable.

Figura15

CONCLUSIONES

El diseño y construcción de juegos clásicos de tablero no resulta ser sencillo debido a lagran variedad de posibilidades que se tienen con respecto a los movimientos. Sin embargo,es un área interesante para aplicar las metodologías de la inteligencia artificial y laprogramación evolutiva.

Los resultados obtenidos en realidad no fueron los deseados, debido principalmente a laslimitaciones de tiempo para realizar las evoluciones ya que tal vez con un número mayor degeneraciones por evolución los resultados pueden ser mucho más satisfactorios. Otroaspecto que puede influir puede ser el código, lo que esto quiere decir es que al momentode ir implementando la estrategia también íbamos aprendiendo el lenguaje de programacióny esto no es lo mejor para el juego.

Algo interesante que podemos concluir es que la investigación en juegos de estrategia conredes neuronales se viene dando desde hace ya varios años y sin embargo hay muchotodavía por aprender y comprender. Por ejemplo tan solo en el presente proyecto existenmuchos parámetros o factores que determinan la evolución de los algoritmos genéticos ylos cuales no fueron modificados por sus autores. Esto es algo muy importante porque tansolo una pequeña variación en alguno de ellos puede llevarnos hacia resultados jamásimaginados.

0100200300400500600700

tiempo (s)

1 2 3 4 5 6 7 8 9 10

generación

Algoritmo Genético con redes neuronales deprofundidad 2

XY

Page 48: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

47

Finalmente podemos decir que el juego, en una versión interesante, puede implementarsede forma distribuida o paralela para lograr evoluciones de mas generaciones y en tiemposrelativamente cortos. Esta última opción se deja como propuesta para aquellas personasinteresadas en este tipo de investigación.

BIBLIOGRAFÍA

[1] Darwin, C. (1859) On the Origin of Species by Means of Natural Selection, Murray,London.

[2] Holland, J. (1975) Adaptatioa in Natural and Arti5cial Systems, University of MichiganPress, Ann Arbor.

[3] Goldberg, D.E. (1989) Genetic Algorithms in Search, Optimization and Machine Learn-ing, Addison-Wesley, Reading, MA.

[4] Davis, L. (ed.) (1991) Handbook of Genetic Algorithms, Van Nostrand Reinhold, NewYork.

[5] Michalewicz, Z. (1992) Genetic Algorithms + Data Structures = Evolution Programs,Springer-Verlag, Berlin Heidelberg.

[6] Reeves, C. (1993) Modern Heuristic Techniques for Combinatorial Problems,Blackwell Scientific Publications.

[7] Alander, J.T. (1992) On optimal population size of genetic algorithms, en ProceedingsCompEuro 1992, Computer Systems and Software Engineering, 6th Annual European‘Computer Conference, 65-70.

(8] Goldberg, D.E. y Richardson, J.T. j1987) Genetic algorithms with sharing for multi-modal function optimization, en Genetic Algorithms and their Applications: Proceedings ofthe Second International Conference on Genetic Algorithms and Their Applications, 41-49.

[9] Brindle, A. (1991) Genetic algorithms for function optimization, Tesis doctoral, Univer-sidad de Alberta, Canada.

[10] Baker, J.E. (1987) Reducing bias and inefficiency in the selection algorithm, en Pro-ceedings of the Second Enternational Coaference oa Genetic Algorithms and TheirApplications, 14-21.

[11] De Jong, K.A. (1975) An analysis of the behaviour of a class of genetic adaptivesystems,Tesis doctoral, University of Michigan.

[12] Syswerda, G. (1991) Schedule optimization using genetic algorithms, en Davis, L.(ed.)

Page 49: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

48

Handbook of Genetic Algorithms, Van Nostrand Reinhold, New York, 332-349.

[13] Larrañaga, P. y Poza, M. (1994) Structure learning of Bayesian network by geneticalgorithms, en Diday, E. (ed.) New Approaches in Classihcation and Data Analysis,Springer-Verlag, 300-307.

[14] Schaffer, J.D. y Morishima, A. (1987) An adaptive crossover distribution mechanismfor genetic algorithms, en Genetic Algorithms and their applications: Proceedings of theSecond lnternatioaal Conference on Genetic Algorithms and Their Applications, 36-40.

[15] Levenick, J.R. (1991) Inserting introns improves genetic algorithm success rate: Tak-ing cue from biology, en Proceedings of the Fourth International Conference on GeneticAlgorithms, 123-127.

[16] SchafFer, J.D., Caruna, R.A;, Eshelman, L.J, y Das, R. (1989) A study of controlparameters affecting onlin'e performance of genetic algorithms for function optimization,.en Schaffer, J.D. (ed.) Proceedings of the Third International Conference on GeneticAlgorithms, Morgan Kaufmann, 51-60.

[17] Ackley, D.H. (1987) A Connectionist Machiae for Genetic Hillclimbing, Kluwer Aca-demic Publishers.

[18] Bramlette, M.F. (1991) Initialization, mutation and selection methods in genetic algo-rithms for function optimization, en Proceedings of the Fourth International Conference onGenetic Algorithms, 100-107.

[19) Fogarty, T.C. (1989) Varying the probability of mutation in the genetic algorithm, enProceedings of the Third International Conference on Genetic Algorithms, 104-109.

[20] Michalewicz, Z. y Janikow C.Z. (1991) Handling constraints in genetic algorithms, enProceedings of the Fourth International Conference on Genetic Algorithms, 151-157.

[21] Whitley, D. y Kauth, J. (1988) GENITOR: A different genetic algorithm, en Proceed-ings of the Rocl;y Mountain Conference on Artihcial 1ntelligence, Denver, CO, ll8-130.

[22] Whitley, D. (1989) The GENITOR algorithm and selection pressure: Why rank-basedallocation of reproductive trials is best, en Proceedings on the Third International Con-ference on Genetic Algorithms, ll6-121.

[23] Fogel, L.J. (1962) Atonomous automata, End. Res., 4, 14-19.

[24] Fogel, L.J. (1964) On the organisation of the intellect, Tesis docforal, pCLA.

[25] Fogel, L.J.; Owens, A.J. y Walsh, M.J. (1966) Artificial Intelligence through Simu-lated Evolution, Wiley, New York.

Ceballos Sierra, Fco. Javier. Java 2 Curso de Programación, Alfaomega, México 2000.

Page 50: UNIVERSIDAD AUTONOMA METROPOLITANA148.206.53.84/tesiuami/UAMI10154.pdf · Todos los procedimientos de búsqueda pueden verse como procedimientos de generación y ... Para mejorar

49

Gulbransen, David. Applets para Web con Java, Prentice-Hall, México, 1996.

Tenenbaum, Aaron M. Estructuras de Datos en C, Prentice-Hall, México, 1993.

http://www.cs.caltech.edu/~vhuang/cs20/c/applet/more.html

http://www.control-automatico.net/recursos/articulos/art065.htm