You are on page 1of 46

ALGORITMOS GENETICOS NDICE

1. Introduccin 1.1 Antecedentes 1.2 Definicin 1.3 Problemtica 1.4 Ventajas y Desventajas 1.5 Limitaciones 1.6 Como saber si es posible usar un Algoritmo Gentico 1.7 Marco de Desarrollo 1.8 Comparacin con otros Mtodos de Optimizacin

2. El Algoritmo Gentico Simple 2.1. Codificacin 2.2. Ejemplo 3. Extensiones y Modificaciones del Algoritmo Gentico Simple 3.1. Poblacin 3.1.1. Tamao de la poblacin 3.1.2. Poblacin inicial 3.2. Funcin objetivo 3.3. Seleccin 3.4. Cruce 3.5. Mutacin

3.6. Reduccin 3.7. Algoritmos Genticos Paralelos 4. Lgica Borrosa (fuzzy logic) y Algoritmos Genticos 4.1. Funciones Borrosas 4.2. Algoritmos Genticos basados en Lgica Borrosa 5. Ejemplos de Aplicacin 5.1 Ejemplo 1 5.2 Ejemplo 2 6. Conclusiones 7. Referencias (Bibliografa)

1. Introduccin
1.1. Antecedentes El algoritmo gentico es una tcnica de bsqueda basada en la teora de la evolucin de Darwin, que ha cobrado tremenda popularidad en todo el mundo durante los ltimos aos. Se presentarn aqu los conceptos bsicos que se requieren para abordarla, as como unos sencillos ejemplos que permitan a los lectores comprender cmo aplicarla al problema de su eleccin. En los ltimos aos, la comunidad cientfica internacional ha mostrado un creciente inters en una nueva tcnica de bsqueda basada en la teora de la evolucin y que se conoce como el algoritmo gentico. Esta tcnica se basa en los mecanismos de seleccin que utiliza la naturaleza, de acuerdo a los cuales los individuos ms aptos de una poblacin son los que sobreviven, al adaptarse ms fcilmente a los cambios que se producen en su entorno. Hoy en da se sabe que estos cambios se efectan en los genes de un individuo (unidad bsica de codificacin de cada uno de los atributos de un ser vivo), y que sus atributos ms deseables (i.e., los que le permiten adaptarse mejor a su entorno) se transmiten a sus descendientes cuando ste se reproduce sexualmente. Un investigador de la Universidad de Michigan llamado John Holland era consciente de la importancia de la seleccin natural, y a fines de los 60s desarroll una tcnica que permiti incorporarla a un programa. Su objetivo era lograr que las computadoras aprendieran por s mismas. A la tcnica que invent Holland se le llam originalmente "planes reproductivos", pero se

hizo popular bajo el nombre "algoritmo gentico" tras la publicacin de su libro en 1975. Una definicin bastante completa de un algoritmo gentico es la propuesta por John Koza: "Es un algoritmo matemtico altamente paralelo que transforma un conjunto de objetos matemticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproduccin y supervivencia del ms apto, y tras haberse presentado de forma natural una serie de operaciones genticas de entre las que destaca la recombinacin sexual. Cada uno de estos objetos matemticos suele ser una cadena de caracteres (letras o nmeros) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta funcin matemtica que refleja su aptitud. "

1.2. Definicin Los Algoritmos Genticos (AGs) son mtodos adaptativos que pueden usarse para resolver problemas de bsqueda y optimizacin. Estn basados en el proceso gentico de los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la seleccin natural y la supervivencia de los ms fuertes, postulados por Darwin. Por imitacin de este proceso, los Algoritmos Genticos son capaces de ir creando soluciones para problemas del mundo real. La evolucin de dichas soluciones hacia valores ptimos del problema depende en buena medida de una adecuada codificacin de las mismas. Un algoritmo gentico consiste en una funcin matemtica o una rutina de software que toma como entradas a los ejemplares y retorna como salidas cuales de ellos deben generar descendencia para la nueva generacin. Versiones ms complejas de algoritmos genticos generan un ciclo iterativo que directamente toma a la especie (el total de los ejemplares) y crea una nueva generacin que reemplaza a la antigua una cantidad de veces determinada por su propio diseo. Una de sus caractersticas principales es la de ir perfeccionando su propia heurstica en el proceso de ejecucin, por lo que no requiere largos perodos de entrenamiento especializado por parte del ser humano, principal defecto de otros mtodos para solucionar problemas, como los Sistemas Expertos. 1.3. Problemtica

Los principios bsicos de los Algoritmos Genticos fueron establecidos por Holland, y se encuentran bien descritos en varios textos . Goldberg, Davis, Michalewicz, Reeves. En la naturaleza los individuos de una poblacin compiten entre s en la bsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de una misma especie compiten a menudo en la bsqueda de un compaero. Aquellos individuos que tienen ms xito en sobrevivir y en atraer compaeros tienen mayor probabilidad de generar un gran nmero de descendientes. Por el contrario individuos poco dotados producirn un menor nmero de descendientes. Esto significa que los genes de los individuos mejor adaptados se propagarn en sucesivas generaciones hacia un nmero de individuos creciente. La combinacin de buenas caractersticas provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptacin es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unas caractersticas cada vez mejor adaptadas al entorno en el que viven. Los Algoritmos Genticos usan una analoga directa con el comportamiento natural. Trabajan con una poblacin de individuos, cada uno de los cuales representa una solucin factible a un problema dado. A cada individuo se le asigna un valor puntuacin, relacionado con la bondad de dicha solucin. En la naturaleza esto equivaldra al grado de efectividad de un organismo para competir por unos determinados recursos. Cuanto mayor sea la adaptacin de un individuo al problema, mayor ser la probabilidad de que el mismo sea seleccionado para reproducirse, cruzando su material gentico con otro individuo seleccionado de igual forma. Este cruce producir nuevos individuos . descendientes de los anteriores . los cuales comparten algunas de las caractersticas de sus padres. Cuanto menor sea la adaptacin de un individuo, menor ser la probabilidad de que dicho individuo sea seleccionado para la reproduccin, y por tanto de que su material gentico se propague en sucesivas generaciones. De esta manera se produce una nueva poblacin de posibles soluciones, la cual reemplaza a la anterior y verifica la interesante propiedad de que contiene una mayor proporcin de buenas caractersticas en comparacin con la poblacin anterior. As a lo largo de las generaciones las buenas caractersticas se propagan a travs de la poblacin. Favoreciendo el cruce de los individuos mejor adaptados, van siendo exploradas las reas ms prometedoras del espacio de bsqueda. Si el Algoritmo Gentico ha sido bien diseado, la, poblacin converger hacia una solucin ptima del problema. 1.4. Ventajas y Desventajas

No necesitan conocimientos especficos sobre el problema que intentan resolver.


Operan de forma simultnea con varias soluciones, en vez de trabajar de forma secuencial como las tcnicas tradicionales. Cuando se usan para problemas de optimizacin maximizar una funcin objetivo- resultan menos afectados por los mximos locales (falsas soluciones) que las tcnicas tradicionales. Resulta sumamente fcil ejecutarlos en las modernas arquitecturas masivamente paralelas. Usan operadores probabilsticos, en vez de los tpicos operadores determinsticos de las otras tcnicas. Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los parmetros que se utilicen tamao de la poblacin, nmero de generaciones, etc.-. Pueden converger prematuramente debido a una serie de problemas de diversa ndole.

1.5. Limitaciones El poder de los Algoritmos Genticos proviene del hecho de que se trata de una tcnica robusta, y pueden tratar con xito una gran variedad de problemas provenientes de diferentes reas, incluyendo aquellos en los que otros mtodos encuentran dificultades. Si bien no se garantiza que el Algoritmo Gentico encuentre la solucin ptima, del problema, existe evidencia emprica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimizacin combinatoria. En el caso de que existan tcnicas especializadas para resolver un determinado problema, lo ms probable es que superen al Algoritmo Gentico, tanto en rapidez como en eficacia. El gran campo de aplicacin de los Algoritmos Genticos se relaciona con aquellos problemas para los cuales no existen tcnicas especializadas. Incluso en el caso en que dichas tcnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridndolas con los Algoritmos Genticos. 1.6. Como Saber si es Posible usar un Algoritmo Gentico La aplicacin ms comn de los algoritmos genticos ha sido la solucin de problemas de optimizacin, en donde han mostrado ser muy eficientes y confiables. Sin embargo, no todos los problemas pudieran ser apropiados para la tcnica, y se recomienda en general tomar en cuenta las siguientes caractersticas del mismo antes de intentar usarla:

Su espacio de bsqueda (i.e., sus posibles soluciones) debe estar delimitado dentro de un cierto rango.

Debe poderse definir una funcin de aptitud que nos indique qu tan buena o mala es una cierta respuesta. Las soluciones deben codificarse de una forma que resulte relativamente fcil de implementar en la computadora.

El primer punto es muy importante, y lo ms recomendable es intentar resolver problemas que tengan espacios de bsqueda discretos aunque stos sean muy grandes. Sin embargo, tambin podr intentarse usar la tcnica con espacios de bsqueda continuos, pero preferentemente cuando exista un rango de soluciones relativamente pequeo. La funcin de aptitud no es ms que la funcin objetivo de nuestro problema de optimizacin. El algoritmo gentico nicamente maximiza, pero la minimizacin puede realizarse fcilmente utilizando el recproco de la funcin maximizante (debe cuidarse, por supuesto, que el recproco de la funcin no genere una divisin por cero). Una caracterstica que debe tener esta funcin es que tiene ser capaz de "castigar" a las malas soluciones, y de "premiar" a las buenas, de forma que sean estas ltimas las que se propaguen con mayor rapidez. La codificacin ms comn de las soluciones es a travs de cadenas binarias, aunque se han utilizado tambin nmeros reales y letras. El primero de estos esquemas ha gozado de mucha popularidad debido a que es el que propuso originalmente Holland, y adems porque resulta muy sencillo de implementar. 1.7. Marco de Desarrollo Antes de continuar ahondando en la tcnica de los Algoritmos Genticos sera interesante dejarla situada dentro de un marco ms amplio. Nos referimos a la rama de la Inteligencia Artificial que se ha denominado Computacin Evolutiva. El trmino Computacin Evolutiva se refiere al estudio de los fundamentos y aplicaciones de ciertas tcnicas heursticas de bsqueda basadas en los principios naturales de la evolucin. Una gran variedad de algoritmos evolutivos han sido propuestos pero principalmente pueden clasificarse en: Algoritmos Genticos, Programacin Evolutiva, Estrategias Evolutivas, Sistemas Clasificadores y Programacin Gentica. Esta clasificacin se basa sobre todo en detalles de desarrollo histrico ms que en el hecho de un funcionamiento realmente diferente, de hecho las bases biolgicas en las que se apoyan son esencialmente las mismas. Las diferencias entre ellos se centra en los operadores que se usan en cada caso y en general en la forma de implementar la seleccin, reproduccin y sustitucin de individuos en una poblacin.

Aunque los detalles de la evolucin no han sido completamente comprendidos, incluso hoy en da, existen algunos puntos en los que se fundamentan:

La evolucin es un proceso que opera a nivel de cromosomas, y no a nivel de individuos. Cada individuo es codificado como un conjunto de cromosomas. La seleccin natural es el mecanismo mediante el cual los individuos mejor adaptados son los que tienen mayores posibilidades de reproducirse. El proceso evolutivo tiene lugar en la etapa de la reproduccin. Es en esta etapa donde se producen la mutacin, que es la causante de que los cromosomas de los hijos puedan ser diferentes a los de los padres, y el cruce, que combina los cromosomas de los padres para que los hijos tengan cromosomas diferentes.

De forma breve, pasamos a comentar cada una de los algoritmos mencionados anteriormente, para que el lector pueda tener una idea de las similitudes y diferencias entre ellos. Los Algoritmos Genticos resuelven los problemas generando poblaciones sucesivas a las que se aplican los operadores de mutacin y cruce. Cada individuo representa una solucin al problema, y se trata de encontrar al individuo que represente a la mejor solucin. La Programacin Gentica funciona igual que la tcnica anterior pero se centra en el estudio de problemas cuya solucin es un programa. De manera que los individuos de la poblacin son programas que se acercan ms o menos a realizar una tarea que es la solucin. La Programacin Evolutiva es otro enfoque de los algoritmos genticos, en este caso el estudio se centra en conseguir operadores genticos que imiten lo mejor posible a la naturaleza, en cada caso, ms que en la relacin de los padres con su descendencia. En este caso no se utiliza el operador de cruce, tomando la mxima importancia el operador de mutacin. Estrategias Evolutivas se centran en el estudio de problemas de optimizacin e incluyen una visin del aprendizaje en dos niveles: a nivel de genotipo, y a nivel de fenotipo. Y por ltimo los Sistemas Clasificadores engloban el estudio de problemas en los que la solucin buscada se corresponde con toda una poblacin. Para finalizar se muestra un esquema en el que se sitan las tcnicas mencionadas con respecto a otros procedimientos de bsqueda conocidos.

1.8 Comparacin con otros mtodos de optimizacin

Algoritmos Genticos y Matemticos Existen problemas de optimizacin que pueden ser resueltos por la implementacin de un algoritmo tradicional. En este caso lo ms conveniente es utilizarlo. Por ejemplo: Si tenemos la funcin "Es el doble de" , sta puede ser interpretada como : Ecuacin 1

Esto tambin es vlido para funciones booleanas (retornan un valor de Verdadero o Falso ). Por ejemplo la funcin "Es mayor que" , puede ser interpretada como Ecuacin 2

Para resolver un problema que requiera como solucin saber solamente cual nmero es mas grande, resulta mas eficaz utilizar el algoritmo matemtico directamente. Sin embargo , stos no son aplicables a problemas que posean algunas de estas caractersticas:

La funcin representativa del problema no es continua. En este caso el mismo no es computable. Los algoritmos genticos pueden trabajar con todo tipo de funciones ya que encontrarn un mnimo aceptable si no es posible encontrar el ptimo. La funcin representativa es dinmica: La relacin entre las variable cambia dependiendo de los valores que tomen las mismas. Esta relacin puede ser advertida o no. Las reglas del tipo "X es igual a Y si el valor de X es chico; X es 1.5 de y si el valor de X es grande no se sabe que pasa para valores medios de X"

no pueden ser convertidas en un algoritmo algebraico ya que existen valores que se desconocen. A diferencia de un algoritmo tradicional , un algoritmo gentico puede ser diseado para trabajar bajo estas condiciones. Algoritmos Genticos y Mtodos Enumerativos Existe la posibilidad terica de encontrar soluciones a problemas a optimizacin enumerando todas las soluciones posibles para todos los casos y posteriormente buscando la misma en la base de datos resultante. Los problemas se limitan entonces a un sistema de bsqueda eficiente del caso concreto. Por ejemplo los libros con tablas de logaritmos tradicionales constan de una larga serie de clculos para todos los valores usuales. La solucin consiste simplemente en buscar en la lista el nmero decimal y retornar el logaritmo dado. La memorizacin de las tablas de multiplicar que se ensean a los nios es otro ejemplo usual. Se espera que ante la pregunta Cunto es siete por cinco? los nios respondan instantneamente "35" sin tener que estar calculando mentalmente la multiplicacin. Este mtodo es factible siempre que el nmero de valores sea manejable. De otra manera el simple clculo de los mismos se vuelve imposible. Ejemplo: Generar una tabla que contenga todas las movidas de todos los partidos posibles de un juego de damas resultara imposible de hacer en la prctica. La " memorizacin " de una serie de datos no es otra cosa que la construccin en la memoria del equivalente a una base de datos en donde se busca la pregunta y se encuentra automticamente la respuesta. Los algoritmos genticos usan heurstica para la resolucin de problemas , lo cual limita drsticamente el nmero de datos a utilizar. Algoritmos Genticos y Sistemas Expertos Un Sistema Experto es un programa de computadora que encuentra soluciones a problemas del tipo condicional con la estructura: Si ocurren los hechos A,B,C,D , cual sera el valor del suceso E Ejemplo: Si un anlisis mdico detecta los sntomas A , B , C y D en un paciente , Cual ser la enfermedad del sujeto? Ejemplo: Si el anlisis geolgico de una capa de suelo detecta la presencia de los compuestos qumicos A , B , C y D Es factible que exista petrleo en la misma?.

Si bien existen en la literatura ejemplos de la utilidad de sta tcnica , las reglas deben ser provistas por un especialista ( o varios ) en el tema. Por ende , se requiere que los conocimientos estn disponibles, que sean estructurados o factibles de ser estructurados ( convertidos a reglas heursticas ) y que los hechos de la realidad sean relativamente estticos , es decir que las causas para arribar a una determinada conclusin no cambien , ya que cada vez que esto sucede , los expertos deben reelaborrar las reglas , lo cual dificulta y retarda considerablemente la operatoria del sistema. Las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto pueden observarse en el cuadro GA005. Los Sistemas Expertos tuvieron su apogeo en la dcada de los 80`s , aproximadamente de 1979 a 1985. En esa poca se los lleg a considerar verdaderas panaceas que resolveran muchos de los problemas cotidianos del hombre. Incluso se formaron en ese entonces varias compaas con el objeto especfico de realizarlos y comercializarlos. Algunos fueron exitosos y funcionaron bien , pero las dificultades planteadas anteriormente no tardaron en aparecer. En particular:

Existen temas en los cuales el conocimiento no es esttico , sino que la aparicin de nueva informacin altera las pautas o reglas de inferencia de los resultados. La necesidad permanentes de reevaluar las reglas por medio de expertos humanos lleva al sistema a una operatoria lenta y burocrtica. Cada conocimiento nuevo implica reentrenar manualmente el sistema. Los Sistemas Expertos demostraron no ser tiles en este campo. Existen temas en los cuales la interrelacin de ciertas variables no es conocida. Si la informacin disponible de cierto asunto es limitada , y no se conoce el comportamiento de algunas de sus variables , el Sistema experto tendr grandes dificultades de programarse ya que sus reglas sern imprecisas.

El Cuadro GA5 muestra las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto Condiciones bsicas necesarias para la implementacin efectiva de un sistema experto

Los expertos no siempre estructuran su conocimiento. Existen numerosas personas que razonan por mtodos empricos. Esto hace que les resulte muy difcil traducir sus pensamientos o su mtodo deductivo a reglas que la computadora pueda interpretar. Un Sistema experto no podr llegar a resultados valederos cuando los especialistas en un tema no puedan tener estructurados sus pensamientos. Por ejemplo: supngase que se quiera programar un sistema experto para calificar obras de arte. Difcilmente se encontrar un crtico de arte que pueda estructurar las razones por las cuales considera "buena" o "mala" a una obra de arte. En general las palabras que pueda decir resultarn a los odos del programador del Sistema como una serie de subjetividades imposibles de sistematizar.

Luego de observar todo esto, se empez a considerar a los Sistemas expertos como aptos solamente para entornos reducidos y con condiciones de ejecucin acotadas. La idea del Sistema Experto como " resolvedor universal de problemas " qued sepultada. Si bien la investigacin bsica de los algoritmos genticos es contempornea a la de los sistemas expertos , la renovada importancia que se les dio en el

mbito cientfico se produjo en paralelo a la desvalorizacin que sufrieron estos ltimos. Los algoritmos genticos se revalorizaron ya que poseen las siguientes ventajas competitivas:

Solo necesitan asesoramiento del experto cuando se agregan o suprimen variables al modelo. Los Sistemas Expertos requieren la presencia del mismo ante cada modificacin del entorno. Los algoritmos genticos solo requieren el asesoramiento del experto para identificar las variables pertinentes , aunque no es necesario que stos definan sus valores ni sus relaciones (las reglas) iniciales o finales. Los Sistemas Expertos solo trabajan con las reglas y valores que les dictan los seres humanos.

Algoritmos Genticos y Redes Neuronales Una red neuronal es el intento de poder realizar una simulacin computacional del comportamiento de partes del cerebro humano mediante la rplica en pequea escala de los patrones que ste desempea para la formacin de resultados a partir de los sucesos percibidos. El cerebro consta de unidades llamadas neuronas, las cuales estn conectadas entre si formando una red (de ah la denominacin " red neuronal ") Concretamente, se trata de poder analizar y reproducir el mecanismo de aprendizaje de sucesos que poseen los animales ms evolucionados. La red simula grupos de neuronas , llamados " capas " las cuales estn relacionadas unas con otras. Los datos se introducen en la primera capa , llamada "capa de entradas" Cada capa transfiere la informacin a sus vecinas., teniendo un peso o ponderacin para los valores , lo que va modificando los mismos en su paso a travs de la red Cuando los datos llegan a la ltima de las capas , llamada " capa de salida " el valor resultante es tomado como el resultado de la red. La red puede ser entrenada para diversos usos , entre ellos como mecanismo de optimizacin. En este sentido, se puede expresar que seran un modelo alternativo competitivo con los algoritmos genticos , si se las programara para este fin. En rigor de verdades , la literatura sugiere que se podran hacer modelos mixtos o hbridos en donde se combinen las ventajas de las redes neuronales y los algoritmos genticos , aunque hay muy poco material disponible en este campo. Tal vez esto se deba al hecho que los GA y el estudio de las redes forman dos ramas o escuelas separadas dentro de la inteligencia artificial , por lo que existe una preferencia en los investigadores en perfeccionar alguno de los dos modelos antes que tratar de unirlos.

1.

2.El Algoritmo Gentico Simple


El Algoritmo Gentico Simple, tambin denominado Cannico, se representa en la Figura . 1. Como se ver a continuacin, se necesita una codificacin o representacin del problema, que resulte adecuada al mismo. Adems se requiere una funcin de ajuste adaptacin al problema, la cual asigna un nmero real a cada posible solucin codificada. Durante la ejecucin del algoritmo, los padres deben ser seleccionados para la reproduccin, a continuacin dichos padres seleccionados se cruzarn generando dos hijos, sobre cada uno de los cuales actuar un operador de mutacin. El resultado de la combinacin de las anteriores funciones ser un conjunto de individuos (posibles soluciones al problema), los cuales en la evolucin del Algoritmo Gentico formarn parte de la siguiente poblacin.

Figura 1

2.1. Codificacin
Se supone que los individuos (posibles soluciones del problema), pueden representarse como un conjunto de parmetros (que denominaremos penes), los cuales agrupados forman una ristra de valores (a menudo referida como cromosoma). Si bien el alfabeto utilizado para representar los individuos no debe necesariamente estar constituido por el (0, l), buena parte de la teora en la que se fundamentan los Algoritmos Genticos utiliza dicho alfabeto. En trminos biolgicos, el conjunto de parmetros representando un cromosoma particular se denomina fenotipo. El fenotipo contiene la informacin requerida para construir un organismo, el cual se refiere como genotipo. Los mismos trminos se utilizan en el campo de los Algoritmos Genticos. La adaptacin al problema de un individuo depende de la evaluacin del genotipo. Esta ltima puede inferirse a partir del fenotipo, es decir puede ser computada a partir del cromosoma, usando la funcin de evaluacin. La funcin de adaptacin debe ser diseada para cada problema de manera especfica. Dado un cromosoma particular, la funcin de adaptacin le asigna un nmero real, que se supone refleja el nivel de adaptacin al problema del individuo representado por el cromosoma. Durante la fase reproductiva se seleccionan los individuos de la poblacin para cruzarse y producir descendientes, que constituirn, una vez. mutados, la siguiente generacin de individuos. La seleccin de padres se efecta al azar usando un procedimiento que favorezca a los

individuos mejor adaptados, ya que a cada individuo se le asigna una probabilidad de ser seleccionado que es proporcional a su funcin de adaptacin. Este procedimiento se dice que est basado en la ruleta sesgada. Segn dicho esquema, los individuos bien adaptados se escogern probablemente varias veces por generacin, mientras que, los pobremente adaptados al problema, no se escogern ms que de vez en cuando. Una vez seleccionados dos padres, sus cromosomas se combinan, utilizando habitualmente los operadores de cruce y mutacin. Las formas bsicas de dichos operadores se describen a continuacin. El operador de cruce, coge dos padres seleccionados y corta sus ristras de cromosomas en una posicin escogida al azar, para producir dos subristras iniciales y dos subristras finales. Despus se intercambian las subristras finales, producindose dos nuevos cromosomas completos (vase la Figura 2). Ambos descendientes heredan genes de cada uno de los padres. Este operador se conoce como operador de cruce basado en un punto. Habitualmente el operador de cruce no se aplica a todos los pares de individuos que han

Figura 2 sido seleccionados para emparejarse, sino que se aplica de manera aleatoria, normalmente con una probabilidad comprendida entre 0.5 y 1.0. En el caso en que el operador de cruce no se aplique, la descendencia se obtiene simplemente duplicando los padres. El operador de mutacin se aplica a cada hijo de manera individual, y consiste en la alteracin aleatoria (normalmente con probabilidad pequea) de cada gen componente del cromosoma. La Figura 3 muestra la mutacin del quinto gen del cromosoma. S bien

Figura 3 puede en principio pensarse que el operador de cruce es ms importante que el operador de mutacin, ya que proporciona una exploracin rpida del espacio de bsqueda, ste ltimo asegura que ningn punto del espacio de bsqueda tenga probabilidad cero de ser examinado, y es de capital importancia para asegurar la convergencia de los Algoritmos Genticos. Para criterios prcticos, es muy til la definicin de convergencia introducida en este campo por De Jong en su tesis doctoral. Si el Algoritmo Gentico ha sido correctamente implementado, la poblacin evolucionar a lo largo de las generaciones sucesivas de tal manera que la adaptacin media extendida a todos los individuos de la poblacin, as como la adaptacin del mejor individuo se irn incrementando hacia el ptimo global. El concepto de convergencia est relacionado con la progresin hacia la uniformidad: un gen ha convergido cuando al menos el 95 % de los individuos de la poblacin comparten el mismo valor para dicho gen. Se dice que la poblacin converge cuando todos los genes han convergido. Se puede generalizar dicha definicin al caso en que al menos un poco de los individuos de la poblacin hayan convergido. La Figura 4 muestra como vara la adaptacin media y la mejor adaptacin en un Algoritmo Gentico Simple tpico.

Figura 4 A medida que el nmero de generaciones aumenta, es ms probable que la adaptacin media se aproxime a la del mejor individuo.

2.2. Ejemplo
Como ilustracin de los diferentes componentes del Algoritmo Gentico Simple, supongamos el problema . adaptado de Goldberg de encontrar el mximo de la funcin f(z) = x2 sobre los enteros (1,2,...,32). Evidentemente para lograr dicho ptimo, bastara actuar por bsqueda exhaustiva, dada la baja cardinalidad del espacio de bsqueda. Se trata por tanto de un mero ejemplo con el que pretendemos ilustrar el comportamiento del algoritmo anteriormente descrito. Consultando l pseudocdigo de la Figura 1, vemos que el primer paso a efectuar consiste en determinar el tamao de la poblacin inicial, para a continuacin obtener dicha poblacin al azar y computar la funcin de evaluacin de cada uno de sus individuos. Suponiendo que el alfabeto utilizado para codificar los individuos est constituido por (0, 1), necesitaremos ristras de longitud 5 para representar los 32 puntos del espacio de bsqueda. En la Tabla 1, hemos representado los 4 individuos que constituyen la poblacin inicial, junto con su funcin de adaptacin al problema, as como la probabilidad de que cada uno de dichos individuos sea seleccionado . segn el modelo de ruleta sesgada . para emparejarse. Volviendo a consultar el pseudocdigo expresado en la Figura 1, vemos que el siguiente paso consiste en la seleccin de 2 parejas de individuos. Para ello es suficiente, con obtener 4 nmeros reales provenientes de una distribucin de probabilidad uniforme en el intervalo

Tabla 1

Tabla 2 (0, 1), y compararlos con la ltima columna de la Tabla l. As por ejemplo, supongamos que dichos 4 nmeros hayan sido: 0.58; 0.84; 0.11 y 0.43. Esto significa que los individuos seleccionados para el cruce han sido: el individuo 2 junto con el individuo 4, as como el individuo 1 junto con el individuo 2. Para seguir con el Algoritmo Gentico Simple, necesitamos determinar la probabilidad de cruce, p,. Supongamos que se fije en p, = 0.8. Valindonos al igual que antes de, 2 en este caso, nmeros provenientes de la distribucin uniforme, determinaremos si los emparejamientos anteriores se llevan a cabo. Admitamos, por ejemplo, que los dos nmeros extrados sean menores que 0.8, decidindose por tanto efectuar el cruce entre las dos parejas. Para ello escogeremos un nmero al azar entre l y 1 . 1 (siendo l la longitud de la ristra utilizada para representar el individuo). Notse que la restriccin impuesta al escoger el nmero entre 1 y l . l, y no l, se realiza con la finalidad de que los descendientes no coincidan con los padres. Supongamos, tal y como se indica en la Tabla 2, que los puntos de cruce resulten ser 2 y 3. De esta manera obtendramos los 4 descendientes descritos en la tercera columna de la Tabla 2. A continuacin siguiendo el pseudocdigo de la Figura 1, mutaramos con una probabilidad, p, cercana a cero, cada uno de los bit de las cuatro ristras de individuos. En este caso suponemos que el nico bit mutado corresponde al primer gen del tercer individuo. En las dos ltimas columnas se pueden consultar los valores de los individuos, as como las funciones de adaptacin correspondientes. Como puede observarse, tanto el mejor individuo como la funcin de adaptacin media han mejorado sustancialmente al compararlos con los resultados de la Tabla 1.

3.Extensiones y Modificaciones del Algoritmo Gentico Simple


En este apartado se introducirn algunas extensiones y modificaciones del Algoritmo Gentico Simple. Se comenzar dando un pseudocdigo para un Algoritmo Gentico Abstracto (AGA), para a continuacin introducir algunas variantes que se han ido proponiendo en trabajos desarrollados en estos ltimos aos.

Figura 5

3.1. Poblacin
3.1.1. Tamao de la poblacin Una cuestin que uno puede plantearse es la relacionada con el tamao idneo de la poblacin. Parece intuitivo que las poblaciones pequeas corren el riesgo de no cubrir adecuadamente el espacio de bsqueda, mientras que el trabajar con poblaciones de gran tamao puede acarrear problemas relacionados con el excesivo costo computacional. Goldberg efectu un estudio terico, obteniendo como conclusin que el tamao ptimo de la poblacin para ristras de longitud I, con codificacin binaria, crece exponencialmente con el tamao de la ristra. Este resultado traera como consecuencia que la aplicabilidad de los Algoritmos Genticos en problemas reales sera muy limitada, ya que resultaran no competitivos con otros mtodos de optimizacin combinatoria. Alander, basndose en evidencia emprica sugiere que un tamao de poblacin comprendida entre l y 21 es suficiente para atacar con xito los problemas por el considerados. 3.1.2. Poblacin inicial

Habitualmente la poblacin inicial se escoge generando ristras al azar, pudiendo contener cada gen uno de los posibles valores del alfabeto con probabilidad uniforme. Nos podramos preguntar que es lo que sucedera si los individuos de la poblacin inicial se obtuviesen como resultado de alguna tcnica heurstica o de optimizacin local. En los pocos trabajos que existen sobre este aspecto, se constata que esta inicializacin no aleatoria de la poblacin inicial, puede acelerar la convergencia del Algoritmo Gentico. Sin embargo en algunos casos la desventaja resulta ser la prematura convergencia del algoritmo, queriendo indicar con esto la convergencia hacia ptimos locales.

3.2. Funcin objetivo


Dos aspectos que resultan cruciales en el comportamiento de los Algoritmos Genticos son la determinacin de una adecuada funcin de adaptacin o funcin objetivo, as como la codificacin utilizada. Idealmente nos interesara construir funciones objetivo con "ciertas regularidades", es decir funciones objetivo que verifiquen que para dos individuos que se encuentren cercanos en el espacio de bsqueda, sus respectivos valores en las funciones objetivo sean similares. Por otra parte una dificultad en el comportamiento del Algoritmo Gentico puede ser la existencia de gran cantidad de ptimos locales, as como el hecho de que el ptimo global se encuentre muy aislado. La regla, general para construir una buena funcin objetivo es que sta debe reflejar el valor del individuo de una manera "real", pero en muchos problemas de optimizacin combinatoria, donde existe gran cantidad de restricciones, buena parte de los puntos del espacio de bsqueda representan individuos no vlidos. Para este planteamiento en el que los individuos estn sometidos a restricciones, se han propuesto varias soluciones. La primera sera la que podramos denominar absolutista, en la que 'aquellos individuos que no verifican las restricciones, no son considerados como tales, y se siguen efectuando cruces y mutaciones hasta obtener individuos vlidos, o bien, a dichos individuos se les asigna una funcin objetivo igual a cero. Otra posibilidad consiste en reconstruir aquellos individuos que no verifican las restricciones. Dicha reconstruccin suele llevarse a cabo por medio de un nuevo operador que se acostumbra a denominar reparador. Otro enfoque est basado en la penalizacin de la funcin objetivo. La idea general consiste en dividir la funcin objetivo del individuo por una cantidad (la penalizacin) que guarda relacin con las restricciones que dicho individuo

viola. Dicha cantidad puede simplemente tener en cuenta el nmero de restricciones violadas bien el denominado costo esperado de reconstruccin, es decir el coste asociado a la conversin de dicho individuo en otro que no viole ninguna restriccin. Otra tcnica que se ha venido utilizando en el caso en que la computacin de la funcin objetivo sea muy compleja es la denominada evaluacin aproximada de la funcin objetivo. En algunos casos la obtencin de n funciones objetivo aproximadas puede resultar mejor que la evaluacin exacta de una nica funcin objetivo (supuesto el caso de que la evaluacin aproximada resulta como mnimo n veces ms rpida que la, evaluacin exacta). Un problema habitual en las ejecuciones de los Algoritmos Genticos surge debido a la velocidad con la que el algoritmo converge. En algunos casos la convergencia es muy rpida, lo que suele denominarse convergencia prematura, en la cual el algoritmo converge hacia ptimos locales, mientras que en otros casos el problema es justo el contrario, es decir se produce una convergencia lenta del algoritmo. Una posible solucin a estos problemas pasa por efectuar transformaciones en la funcin objetivo. El problema de la convergencia prematura, surge a menudo cuando la seleccin de individuos se realiza de manera proporcional a su funcin objetivo. En tal caso, pueden existir individuos con una adaptacin al problema muy superior al resto, que a medida que avanza el algoritmo "dominan" a la poblacin. Por medio de una transformacin de la funcin objetivo, en este caso una comprensin del rango de variacin de la funcin objetivo, se pretende que dichos "superindividuos" no lleguen a dominar a la poblacin. El problema de la lenta convergencia del algoritmo, se resolvera de manera anloga, pero en este caso efectuando una expansin del rango de la funcin objetivo. La idea de especies de organismos, ha sido imitada en el diseo de los Algoritmos Genticos en un mtodo propuesto por Goldberg y Richardson, utilizando una modificacin de la funcin objetivo de cada individuo, de tal manera que individuos que estn muy cercanos entre s devalen su funcin objetivo, con objeto de que la poblacin gane en diversidad.

Funcin

3.3 Seleccin
La funcin de seleccin de padres ms utilizada, es la denominada funcin de seleccin proporcional a la funcin objetivo, en la cual cada individuo tiene una, probabilidad de ser seleccionado como padre que es proporcional al valor de su funcin objetivo. Denotando por (p super prop sub j,t) la probabilidad de que el individuo (I super j sub t) sea seleccionado como padre, se tiene que:

Funcin Esta funcin de seleccin es invariante ante un cambio de escala, pero no ante una traslacin. Una de las maneras de superar el problema relacionado con la rpida convergencia proveniente de los superindividuos, que surge al aplicar la anterior funcin de seleccin, es el efectuar la seleccin proporcional al rango del individuo, con lo cual se produce una reparticin ms uniforme de la probabilidad de seleccin, tal y como se ilustra en la Figura 6. Si denotamos por rango(g(I super j sub t)) el rango de la funcin objetivo del individuo (I super j sub t) cuando

Figura 6 los individuos de la poblacin han sido ordenados de menor a mayor (es decir el peor individuo tiene rango 1, mientras que el individuo con mejor funcin objetivo tiene rango lambda), y sea (p super rango sub j,t) la probabilidad de que el individuo (I super j sub t) sea seleccionado como padre cuando la seleccin se efecta proporcionalmente al rango del individuo, se tiene que

Funcin La suma de los rangos, lambda(lambda + 1)/2, constituye la constante de normalizacin. La funcin de seleccin basada en el rango es invariante frente a la translacin y al cambio de escala. Otro posible refinamiento del modelo de seleccin proporcional, es el modelo de seleccin del valor esperado, el cual acta de la manera siguiente: para, cada individuo If, se introduce un contador, inicialiazado en g(I super j sub t)/gt, donde, gt denota la media, de. ) a funcin objetivo en la generacin t. Cada vez que el individuo (I super j sub t) es seleccionado para el cruce, dicho contador decrece en una cantidad c (c pertenece a (0, 5;.1)). El individuo en cuestin dejar de poder ser seleccionado en esa generacin, cuando su contador sea negativo. Un esquema de seleccin, introducido por Brindle, y que empricamente ha proporcionado buenos resultados, es el denominado muestreo estocstico con reemplazamiento del resto, en el cual cada individuo es seleccionado un nmero de veces que coincide con la parte entera del nmero esperado de ocurrencias de dicho suceso, compitiendo los individuos por los restos. Es

decir, si denotamos por n(I super j sub t) el nmero de veces que el individuo (I super j sub t) es seleccionado para el cruce, tenemos que:

Funcin Baker introduce un mtodo denominado muestreo universal estocstico, el cual utiliza un nico giro de la ruleta siendo los sectores circulares proporcionales a la funcin objetivo. Los individuos son seleccionados a partir de marcadores (vase Figura 7), igualmente espaciados y con comienzo aleatorio. Efectuando un paralelismo con los mtodos de muestreo estadsticos, este ltimo tipo

Figura 7 de seleccin de padres se relaciona con el muestreo sistemtico, mientras que la seleccin proporcional a la funcin objetivo, est basada en el muestreo estratificado con fijacin proporcional al tamao. Tambin el procedimiento de seleccin que hemos denominado muestreo estocstico con reemplazamiento del resto, mantiene un paralelismo con el muestreo estratificado con fijacin de compromiso. En el modelo de seleccin elitista se fuerza a que el mejor individuo de la poblacin en el tiempo t, sea seleccionado como padre. La seleccin por torneo, constituye un procedimiento de seleccin de padres muy extendido y en el cual la idea consiste en escoger al azar un nmero de individuos de la poblacin, tamao del torneo, (con o sin reemplazamiento), seleccionar el mejor individuo de este grupo, y repetir el proceso hasta que el

nmero de individuos seleccionados coincida con el tamao de la poblacin. Habitualmente el tamao del torneo es 2, y en tal caso se ha utilizado una versin probabilstica en la cual se permite la seleccin de individuos sin que necesariamente sean los mejores. Una posible clasificacin de procedimientos de seleccin de padres consistir en: mtodos de seleccin dinmicos, en los cuales las probabilidades de seleccin varan de generacin a generacin, (por ejemplo la seleccin proporcional a la funcin objetivo), frente a mtodos de seleccin estticos, en los cuales dichas probabilidades permanecen constantes (por ejemplo la seleccin basada en rangos). Si se asegura que todos los individuos tienen asignada una probabilidad de seleccin distinta de cero el mtodo de seleccin se denomina preservativo. En caso contrario se acostumbra a denominarlo extintivo.

3.4. Cruce
El Algoritmo Gentico Cannico descrito anteriormente utiliza el cruce basado en un punto, en el cual los dos individuos seleccionados para jugar el papel de padres, son recombinados por medio de la seleccin de un punto de corte, para posteriormente intercambiar las secciones que se encuentran a la derecha de dicho punto. Se han investigado otros operadores de cruce, habitualmente teniendo en cuenta ms de un punto de cruce. De Jong investig el comportamiento del operador de cruce basado en mltiples puntos, concluyendo que el cruce basado en dos puntos, representaba una mejora mientras que aadir ms puntos de cruce no beneficiaba el comportamiento del algoritmo. La ventaja de tener ms de un punto de cruce radica en que el espacio de bsqueda puede ser explorado ms fcilmente, siendo la principal desventaja el hecho de aumentar la probabilidad de ruptura de buenos esquemas. En el operador de cruce basado en dos puntos, los cromosomas (individuos) pueden contemplarse como un circuito en el cual se efecta la seleccin aleatoria de dos puntos, tal y como se indica en la Figura 8.

Figura 8 Desde este punto de vista, el cruce basado en un punto, puede verse como un caso particular del cruce basado en dos puntos, en el cual uno de los puntos de corte se encuentra fijo al comienzo de la ristra que representa al individuo. Vase Figura,9. En el denominado operador de cruce uniforme (Syswerda) cada gen, en la descendencia se crea copiando el correspondiente gen de uno de los dos padres, escogido de acuerdo ' a una "mscara de cruce" generada aleatoriamente. Cuando existe un l en la "mscara de cruce", el gen es copiado del primer padre, mientras que cuando exista un 0 en la

Figura 9 "mscara de cruce", el gen se copia del segundo padre, tal y como se muestra en la Figura 10. En la literatura, el trmino operador de cruce uniforme se relaciona con la obtencin

Figura 10 de la "mscara de cruce" uniforme, en el sentido de que cualquiera de los elementos del alfabeto tenga asociada la misma probabilidad. Hablando en trminos de la teora de la probabilidad la mscara de cruce est compuesta por una muestra aleatoria de tamao A extrada de una distribucin de probabilidad de Bernouilli de parmetro l/2. Si tuvisemos en cuenta el valor de la funcin de adaptacin de cada padre en el momento de generar la "mscara de cruce", de tal manera que cuanto mayor sea la funcin de adaptacin de un individuo, ms probable sea heredar sus caractersticas, podramos definir, vase Larraaga y Poza [26], un operador de cruce basado en la funcin objetivo, en el cual la "mscara de cruce" se interpreta como una muestra aleatoria de tamao l proveniente de una distribucin de Bernouilli de parmetro

Funcin donde (I super j sub t) y I(super i sub t) denotan los padres seleccionados para ser cruzados. El concepto de "mscara de cruce" puede tambin servir para representar los cruces basados en un punto y basados en mltiples puntos, tal y como se muestra en Figura 11. Sirag y Weiser, modifican el operador de cruce en el sentido del Simulated Annealing. De esta manera el operador de cruce se modifica definiendo un umbral de energa H. y una temperatura T, las cuales influencian la manera en la que se escogen los bits individuales. Segn el operador propuesto el bit (i +

1)-simo se tomar del padre opuesto al que se ha tomado el bit i-simo, con probabilidad exp( . (tetha sub c)/T), donde T es el parmetro "temperatura" el cual, al igual que en Simulated Annealing, decrecer lentamente por medio de un programa de enfriamiento. Con altas temperaturas el comportamiento se asemeja al del operador de cruce uniforme, es decir con probabilidad cercana a la unidad los bits se van escogiendo alternativamente de cada padre. Por otra parte cuando el valor

Figura 11 del parmetro temperatura se acerca a cero el hijo "resultante coincide prcticamente con uno de los padres. Existen otros operadores de cruce especficos para un determinado problema como son, por ejemplo, los definidos para el problema del agente de comercio. Por otra parte, la idea de que el cruce debera de ser ms probable en algunas posiciones ha sido descrita por varios autores (Schaffer y Morishima, Holland, Davis, Levenick).

3.5. Mutacin
La mutacin se considera un operador bsico, que proporciona un pequeo elemento de aleatoriedad en la vecindad (entorno) de los individuos de la poblacin. Si bien se admite que el operador de cruce es el responsable de efectuar la bsqueda a lo largo del espacio de posibles soluciones, tambin parece desprenderse de los experimentos efectuados por varios investigadores que el operador de mutacin va ganando en importancia a medida que la poblacin de individuos va convergiendo (Davis). Schaffer y col. encuentran que el efecto del cruce en la bsqueda es inferior al que previamente se esperaba. Utilizan la denominada evolucin primitiva, en la cual, el proceso evolutivo consta tan slo de seleccin y mutacin. Encuentran que dicha evolucin primitiva supera con creces a una evolucin basada exclusivamente en la seleccin y el cruce. Otra conclusin de su

trabajo es que la determinacin del valor ptimo de la probabilidad de mutacin es mucho ms crucial que el relativo a la probabilidad de cruce. La bsqueda del valor ptimo para la probabilidad de mutacin, es una cuestin que ha sido motivo de varios trabajos. As, De Jong recomienda la utilizacin de una probabilidad de mutacin del bit de (l super -1), siendo l la longitud del string. Schaffer y col. utilizan resultados experimentales para estimar la tasa ptima proporcional a l /(lambda super 0.9318),(l super 0.4535), donde lambda denota el nmero de individuos en la poblacin. Si bien en la mayora de las implementaciones de Algoritmos Genticos se asume que tanto la probabilidad de cruce como la de mutacin permanecen constantes, algunos autores han obtenido mejores resultados experimentales modificando la probabilidad de mutacin a medida que aumenta el nmero de iteraciones. Pueden consultarse los trabajos de Ackley, Bramlette, Fogarty y Michalewicz y Janikow.

3.6. Reduccin
Una vez obtenidos los individuos descendientes de una determinada poblacin en el tiempo t, el proceso de reduccin al tamao original, consiste en escoger lambda individuos de entre los Lambda individuos que forman parte de la poblacin en el tiempo t, y los lambda individuos descendientes de los mismos. Dicho proceso se suele hacer fundamentalmente de dos formas distintas. O bien los lambda individuos descendientes son los que forman parte de la poblacin en el tiempo t + 1, es lo que se denomina reduccin simple, o bien se escogen de entre los 2lambra individuos, los lambda individuos ms adaptados al problema, siguiendo lo que podemos denominar un criterio de reduccin elitista de grado lambda. Podemos tambin considerar otros procedimientos de reduccin que se colocan entre los anteriores, por ejemplo, si escogemos los (lambda sub 1) mejores de entre padres y descendientes, escogindose los lambda . (lambda sub 1)y restantes de entre los descendientes no seleccionados hasta el momento. El concepto de reduccin est ligado con el de tasa de reemplazamiento generacional, (t sub rg) es decir en el porcentaje de hijos generados con respecto del tamao de la, poblacin. Si bien en la idea primitiva de Holland [22] dicho reemplazamiento se efectuaba, de l en 1, es decir (t sub gr)=(lambda super -1), habitualmente dicho reemplazamiento se efecta en bloque, (t sub gr)= 1. De Jong [13] introdujo el concepto de tasa de reemplazamiento generacional con el objetivo de efectuar un solapamiento controlado entre padres e hijos. En su trabajo, en

cada paso una proporcin, t,~, de la poblacin es seleccionada para ser cruzada. Los hijos resultantes podrn reemplazar a miembros de la poblacin anterior. Este tipo de Algoritmos Genticos se conocen bajo el nombre de SSGA (Steady State Genetie Algorithm), un ejemplo de los cuales lo constituye GENITOR (Whitley y Kauth, Whitley). Michalewicz introduce un algoritmo que denomina Algoritmo Gentico Modificado, (MOD sub GA), en el cual para llevar a cabo el reemplazamiento generacional, selecciona al azar r1 individuos para la reproduccin, as como r2 individuos (distintos de los anteriores) destinados a morir. Estas selecciones aleatorias tienen en consideracin el valor de la funcin objetivo de cada individuo, de tal manera que cuanto mayor es la funcin objetivo, mayor es la probabilidad de que sea seleccionado para la reproduccin, y menor es la probabilidad de que dicho individuo fallezca. El resto de los lambda . (r1 + r2) individuos son considerados como neutros y pasan directamente a formar parte de la poblacin en la siguiente generacin.

3.7. Algoritmos Genticos Paralelos


En este apartado se introducirn tres maneras diferentes de explotar el paralelismo de los Algoritmos Genticos, por medio de los denominados modelos de islas. Para una profundizacin sobre el tema puede consultarse Stender. Modelos de islas. La idea bsica consiste en dividir la poblacin total en varias subpoblaciones en cada una de las cuales se lleva, a cabo un Algoritmo Gentico. Cada cierto nmero de generaciones, se efecta un intercambio de informacin entre las subpoblaciones, proceso que se denomina migracin. La introduccin de la migracin hace que los modelos de islas sean capaces de explotar las diferencias entre las diversas subpoblaciones, obtenindose de esta manera una fuente de diversidad gentica. Cada subpopulacin es una "isla", definindose un procedimiento por medio del cual se mueve el material gentico de una "isla" a otra. La determinacin de la, tasa de migracin, es un asunto de capital importancia, ya que de ella puede depender la convergencia prematura de la bsqueda. Se pueden distinguir diferentes modelos de islas en funcin de la comunicacin entre las subpoblaciones. Algunas comunicaciones tpicas son las siguientes:

Comunicacin en estrella, en la cual existe una subpoblacin que es seleccionada como maestra (aquella que tiene mejor media en el valor de la funcin objetivo), siendo las dems consideradas como esclavas. Todas las subpoblaciones esclavas mandan sus h1 mejores individuos

(h1, > 1) a la subpoblacin maestra la cual a su vez manda sus h2 mejores individuos (h2 > 1) a cada una de las subpoblaciones esclavas. Vase Figura 12.

Figura 12

Comunicacin en red, en la cual no existe una jerarqua entre las subpoblaciones, mandando todas y cada una de ellas sus h3 (h3 > 1) mejores individuos al resto de las subpoblaciones. Vase Figura 13.

Figura 13

Comunicacin en anillo, en la cual cada subpoblacin enva sus h4 mejores individuos (h4 > 1), a una poblacin vecina, efectundose la migracin en un nico sentido de flujo. Vase Figura 14.

El modelo de islas ha sido utilizado por varios autores (Whitley y Starkweather, Gorges-Schleuter, Tanese).

Figura 14

4. Lgica borrosa (fuzzy logic) y algoritmos genticos


La lgica borrosa trata de acercar la matemtica al lenguaje impreciso del hombre comn. El ser humano se maneja habitualmente con conceptos vagos , los cuales no pueden ser representados por la matemtica tradicional. Si se pregunta a una serie de personas acerca del estado del clima , es factible que las respuestas sean del tipo:

"Hace mucho calor". "Hace frio" "Hoy llovi mucho" "No llovi casi nada: Apenas unas gotitas"

Si alguien responde a la pregunta en forma concreta , su respuesta se parecera a: "En este momento hay 30 grados centigrados y se espera que para el resto del da la temperatura se eleve hasta los 35 grados , para luego decaer a 20 grados a lo largo dela noche" Este tipo de respuesta parece extractada del parte meteorolgico del noticiero. Esperamos or algo similar cuando miramos la televisin , pero no tenemos la expectativa de hacerlo cuando le preguntamos al compaero de trabajo que acaba de llegar si hace calor afuera del edificio. Tenemos entonces que el hombre se maneja con trminos vagos para muchas de las acciones de su vida. Una matemtica estructurada para trabajar con conceptos precisos no puede entonces representar estos conceptos. La lgica borrosa trata de poder incorporar mtodos para que conceptos vagos puedan ser utilizados como funciones matemticas. Esta ha tenido una utilidad prctica inmediata en los mecanismos de control de las maquinarias. La lgica borrosa no es un mecanismo de optimizacin en

si mismo , pero vuelve mas flexibles a los sistemas de control de los dispositivos electrnicos , por lo que podramos decir que se trata de un mtodo optimizado de control.. La difusin que ha tenido en el mundo se le debe en gran parte a la incorporacin que han hecho los japoneses durante la dcada de los 80's de estas tcnicas en los productos que comercializan mundialmente , en especial los electrodomsticos. (No es raro ver un lavarropas o una heladera de marca japonesa con el logotipo de Fuzzy Logic incorporado). Si se utiliza lgica borrosa , un dispositivo automtico puede ser programado con rdenes del tipo expuesto en el Cuadro GA6

Tipo de rdenes plausibles de ser implementadas en un contexto de lgica borrosa

La formulacin de este tipo de reglas es mucho mas sencilla de entender y explicar por los expertos humanos que deben introducir las mismas. As mismo , la programacin del software es mas simple al igual que su mantenimiento. 4.1. Funciones Borrosas La lgica borrosa trabaja con las llamadas funciones borrosas , las cuales permiten efectuar las condiciones descriptas precedentemente.

Ejemplo: Para definir la funcin " mucho " dentro de una serie de valores se procede de la siguiente manera:

Se toma la serie , se la ordena de mayor a menor y se extrae el valor mas grande y el valor mas chico. Estos valores corresponden al lmite superior y al lmite inferior de la serie.

Tenemos entonces que dada una serie variando de a0 hasta an elementos:


Ecuacin 3

Se establece como amplitud de la serie la diferencia del lmite superior y el inferior: Ecuacin 4

La funcin " mucho " queda definida como: Ecuacin 5

En una serie de nmeros naturales , cuyos valores estn entre 0 y 1000 ; A=(LS-LI) ; A=(1000-0) ; A=1000 La funcin " mucho " fue definida como x/A , por lo que variar desde 0/1000 para x=0 hasta 1000/1000 para x=1000. Tendremos entonces un rango de valores entre 0 y 1. Ecuacin 6

Para facilitar los clculos , si la serie no comienza de 0 o contiene valores negativos, conviene convertirla en serie de nmeros positivos sumando a cada trmino el valor mximo negativo. Ejemplo: la serie de {-3 -2 -1 0 1 2 3 4 5} puede ser convertida en {0 1 2 3 4 5 6 7 8} sumndole 3 a todos los trminos.

La serie {3,4,5,6} puede ser convertida en {0,1,2,3} restndole 3 a todos los trminos. Por ello , la ecuacin 3 se transforma en: Ecuacin 7

Donde LI0 y LS0 representan los lmites originales. Estos lmites se normalizan a LS1 y LI1 llevando la serie al rango {0..n}. Ecuacin 8

Veamos un caso concreto: Supongamos la siguiente serie de temperaturas:


TEM ( ti ) 1 2 3 4 5 6 7 8 9 10 11 12 9 10 11 12 13 14 15 16 17 18 9 10 3 5 7 9 11 14 16 18 22 25 27 29 HORA TEMPERATURA (GRADOS CELSIUS)

13 14 15 16 17 18 19 20

11 12 13 14 15 16 17 18

30 32 33 34 35 34 30 25

La pregunta que se sesea que se responda es Hizo mucho calor a las 16 hs?. Esta pregunta es imposible de responder por los mtodos tradicionales ya que la computadora solo puede retornar el valor 34 , pero no discriminar si eso es mucho o no. veamos como trabaja entonces la funcin " mucho " Ecuacin 9

Observamos que en definitiva la funcin " mucho " retorna un nmero representativo del 96,85%. Cuanto mas se acerque el nmero a 1 o 100% mas valedera ser la afirmacin. Cuanto mas se acerque a 0 , menos valedera ser la misma. Solo en el caso que el resultado sea 0 o 1 (0% o 100%) se puede decir taxativamente que el enunciado es verdadero o falso., blanco o negro. Todos los valores intermedios caen bajo la categora de "gris ". Un valor tendr un " gris mas oscuro " ( que lo acercar al negro ) cuando su valor tienda a 1 . De la misma forma , ser un " gris mas claro " ( que lo acercar al blanco ) si tiende a 0. No existen , entonces lmites precisos para las categoras. volvindose imprecisos los mismos ( de ah la nomenclatura de lgica borrosa ) Dado que la funcin se acerca al 100% obtendremos como resultado que efectivamente hizo mucho calor a la hora sealada. De la misma manera ,la funcin " Poco " puede ser descripta como la inversa de la funcin " mucho " , por lo que tendremos que :

Ecuacin 10

Ecuacin 11

Dado que el resultado de la funcin se acerca al 0% obtendremos como resultado que NO hizo poco calor a la hora sealada. 4.2. Algoritmos Genticos basados en Lgica borrosa Existe la posibilidad de planear la arquitectura de un GA para que sus funciones de convergencia y control, as como sus operadores genticos estn basados en lgica borrosa. El GA estara entonces programado para la supervivencia ante entornos borrosos. Esto acarreara por un lado la ventaja de la programacin de las mismas, aunque tendra un efecto en la supervivencia indistinta de ciertos especmenes con similar valor de la funcin borrosa aunque diferente valor absoluto. Ejemplo: Si se programa el GA para seleccionar los especmenes con valores " altos " , esto dar igual ponderacin a un ejemplar con un 90% de performance (de la funcin "alto" ) que a uno con el 92% de la misma funcin.(Ambos son "altos"). Sin lgica borrosa el segundo ejemplar sera mas competitivo que el primero y lo aniquilara. Dado que el efecto de utilizar o no esta lgica cambia la arquitectura del GA , su implementacin no es en si misma ni buena ni mala , dependiendo de los objetivos del programador y de los resultados esperados. Las diferencias entre un GA con y sin lgica borrosa pueden ser apreciadas en el Cuadro GA7

Cuadro GA7 Diferencias entre un GA con y sin lgica borrosa

5. Ejemplos de Aplicacin
5.1. Ejemplo1 Veamos cmo funciona un algoritmo gentico: Vamos a partir de una funcin f(x) muy sencilla: f(x)=x2 Imagina que deseas encontrar el valor de x que hace que la funcin f(x) alcance su valor mximo, pero restringiendo a la variable x a tomar valores comprendidos entre 0 y 31. An ms, a x slo le vamos a permitir tomar valores enteros, es decir: 0,1,2,3,...,30, 31. Obviamente el mximo se tiene para x = 31, donde f vale 961. No necesitamos saber algoritmos genticos para resolver este problema, pero su sencillez hace que el algoritmo sea ms fcil de comprender.

Lo primero que debemos hacer es encontrar una manera de codificar las posibles soluciones(posibles valores de x). Una manera de hacerlo es con la codificacin binaria. Con esta codificacin un posible valor de x es (0,1,0,1,1). Cmo se interpreta esto? Muy sencillo: multiplica la ltima componente (un 1) por 1, la penltima (un 1) por 2, la anterior (un 0) por 4, la segunda (un 1) por 8 y la primera(un 0) por 16 y a continuacin haz la suma: 11. Observa que (0,0,0,0,0) equivale a x = 0 y que (1,1,1,1,1) equivale a x = 31. A cada posible valor de la variable x en representacin binaria le vamos a llamar individuo. Una coleccin de individuos constituye lo que se denomina poblacin y el nmero de individuos que la componen es el tamao de la poblacin. Una vez que tenemos codificada la solucin, debemos escoger un tamao de poblacin. Para este ejemplo ilustrativo vamos a escoger 6 individuos. Debemos partir de una poblacin inicial. Una manera de generarla es aleatoriamente: coge una moneda y lnzala al aire; si sale cara, la primera componente del primer individuo es un 0 y en caso contrario un 1. Repite el lanzamiento de la moneda y tendremos la segunda componente del primer individuo (un 0 s sale cara y un 1 s sale cruz). As hasta 5 veces y obtendrs el primer individuo. Repite ahora la secuencia anterior para generar los individuos de la poblacin restantes. En total tienes que lanzar 5 * 6 = 30 veces la moneda. Nuestro siguiente paso es hacer competir a los individuos entre s. Este proceso se conoce como seleccin. La tabla 1 resume el proceso.

Tabla 1.- SELECCION


(1) 1 2 3 4 5 6 (2) (0,1,1,0,0) (1,0,0,1,0) (0,1,1,1,1) (1,1,0,0,0) (1,1,0,1,0) (0,0,0,0,1) (3) 12 18 15 24 26 1 (4) 144 324 225 576 676 1 (5) 6 3 2 5 4 1

Cada fila en la tabla 1 est asociada a un individuo de la poblacin inicial. El significado de cada columna de la tabla es el siguiente: (1) = Nmero que le asignamos al individuo.

(2)= Individuo en codificacin binaria. (3) = Valor de x. (4) = Valor de f(x). Observa que el mejor individuo es el 5 con f = 676. Calcula la media de f y obtendrs fmed=324.3. En cuanto a la columna (5) ahora te lo explico. Una manera de realizar el proceso de seleccin es mediante un torneo entre dos. A cada individuo de la poblacin se le asigna una pareja y entre ellos se establece un torneo: el mejor genera dos copias y el peor se desecha. La columna (5) indica la pareja asignada a cada individuo, lo cual se ha realizado aleatoriamente. Existen muchas variantes de este proceso de seleccin, aunque este mtodo nos vale para ilustrar el ejemplo. Despus de realizar el proceso de seleccin, la poblacin que tenemos es la mostrada en la columna (2) de la tabla 2. Observa, por ejemplo, que en el torneo entre el individuo 1 y el 6 de la poblacin inicial, el primero de ellos ha recibido dos copias, mientras que el segundo cae en el olvido.

Tabla 2.- CRUCE


(1) 1 2 3 4 5 6 (2) (0,1,1,0,0) (0,1,1,0,0) (1,0,0,1,0) (1,0,0,1,0) (1,1,0,1,0) (1,1,0,1,0) (3) 5 3 2 6 1 4 (4) 1 3 3 1 1 1

Tras realizar la seleccin, se realiza el cruce. Una manera de hacerlo es mediante el cruce 1X: se forman parejas entre los individuos aleatoriamente de forma similar a la seleccin. Dados dos individuos pareja se establece un punto de cruce aleatorio, que no es ms que un nmero aleatorio entre 1 y 4 (la longitud del individuo menos 1). Por ejemplo, en la pareja 2-3 el punto de cruce es 3, lo que significa que un hijo de la pareja conserva los tres primeros bits del padre y hereda los dos ltimos de la madre, mientras que el otro hijo de la pareja conserva los tres primeros bits de la madre y hereda los dos ltimos del padre. La poblacin resultante se muestra en la columna (2) de la tabla 3. Tabla 3.- POBLACION TRAS EL CRUCE

(1) 1 2 3 4 5 6

(2) (0,1,0,1,0) (1,1,1,0,0) (0,1,1,1,0) (1,0,0,0,0) (1,1,0,1,0) (1,0,0,1,0)

(3) 10 28 14 16 26 18

(4) 100 784 196 256 676 324

En la columna (3) tienes el valor de x; en la siguiente tienes el valor de f correspondiente. Fjate en que ahora el valor mximo de f es 784 (para el individuo 2), mientras que antes de la seleccin y el cruce era de 676. Adems fmed ha subido de 324.3 a 389.3. Qu quiere decir esto? Simplemente que los individuos despus de la seleccin y el cruce son mejores que antes de estas transformaciones. El siguiente paso es volver a realizar la seleccin y el cruce tomando como poblacin inicial la de la tabla 3. Esta manera de proceder se repite tantas veces como nmero de iteraciones t fijes. Y cul es el ptimo?. En realidad un algoritmo gentico no te garantiza la obtencin del ptimo pero, si est bien construido, te proporcionar una solucin razonablemente buena. Puede que obtengas el ptimo, pero el algoritmo no te confirma que lo sea. As que qudate con la mejor solucin de la ltima iteracin. Tambin es buena idea ir guardando la mejor solucin de todas las iteraciones anteriores y al final quedarte con la mejor solucin de las exploradas. Consideraciones adicionales En problemas reales en los que se aplican los algoritmos genticos, existe la tendencia a la homegeinizacin de la poblacin, es decir a que todos los individuos de la misma sean idnticos. Esto impide que el algoritmo siga explorando nuevas soluciones, con lo que podemos quedar estancados en un mnimo local no muy bueno. Existen tcnicas para contrarrestar esta "deriva gentica". El mecanismo ms elemental, aunque no siempre suficientemente eficaz, es introducir una mutacin tras la seleccin y el cruce. Una vez que has realizado la seleccin y el cruce escoges un nmero determinado de bits de la poblacin y los alteras aleatoriamente. En nuestro ejemplo consiste simplemente en cambiar algunos(s) bit(s) de 1 a 0 de 0 a 1.
2. Ejemplo 2

Con la finalidad de aclarar mejor los conceptos cubiertos previamente, presentaremos ahora una sencilla aplicacin del algoritmo gentico a un problema de optimizacin: Un grupo de financieros mexicanos ha resuelto invertir 10 millones de pesos en la nueva marca de vino "Carta Nueva". As pues, en 4 ciudades de las principales de Mxico se decide iniciar una vigorosa campaa comercial: Mxico en el centro, Monterrey en el noroeste, Guadalajara en el occidente y Veracruz en el oriente. A esas 4 ciudades van a corresponder las zonas comerciales I, II, III y IV. Un estudio de mercado ha sido realizado en cada una de las zonas citadas y han sido establecidas curvas de ganancias medias, en millones de pesos, en funcin de las inversiones totales (almacenes, tiendas de venta, representantes, publicidad, etc.) Estos datos se ilustran en la tabla 2 y en la figura 4. Para simplificar los clculos, supondremos que las asignaciones de crditos o de inversiones deben hacerse por unidades de 1 milln de pesos. La pregunta es: en dnde se deben de asignar los 10 millones de pesos de los que se dispone para que la ganancia total sea mxima?
Inversin (en millones) 0 1 2 3 4 5 6 7 8 9 10 Beneficio I 0 0.28 0.45 0.65 0.78 0.90 1.02 1.13 1.23 1.32 1.38 Beneficio II 0 0.25 0.41 0.55 0.65 0.75 0.80 0.85 0.88 0.90 0.90 Beneficio III 0 0.15 0.25 0.40 0.50 0.62 0.73 0.82 0.90 0.96 1.00 Beneficio IV 0 0.20 0.33 0.42 0.48 0.53 0.56 0.58 0.60 0.60 0.60

Tabla 1. Datos obtenidos con la investigacin de mercado en cada una de las regiones en estudio 1) Representacin: Para poder aplicar el algoritmo gentico, lo primero que necesitamos determinar es cul ser el esquema a utilizarse para representar

las posibles soluciones del problema. En este caso necesitamos 4 bits (2^4 = 16) para representar cada solucin, porque cada una admite 11 valores posibles (de 0 a 10). Como existen 4 valores independientes (uno por cada zona de estudio), se requieren entonces 16 bits (4 x 4) por cada cromosoma. Es importante hacer notar que se requiere una funcin de codificacin (i.e., que transforme el valor de la inversin a binario) y una de decodificacin (i.e., que realice el proceso inverso). Debido a que en este caso los 4 bits utilizados para representar una solucin pueden producir ms valores de los que se necesitan, se usar una funcin de ajuste que haga que los resultados producidos siempre se encuentren en el rango vlido. 2) Funcin de Aptitud: Dado que el objetivo es obtener las inversiones que sumen 10, y que tengan un beneficio mximo, podemos usar la siguiente funcin de aptitud penalizada:
c1+c2+c3+c4 F(x)=------------500*V+1

donde c1, c2, c3 y c4 son las ganancias por zona, que se calculan de acuerdo a los valores de la tabla 2, y v es el valor absoluto de la diferencia entre la suma obtenida de las inversiones y 10. Ntese que cuando no se viole ninguna restriccin (i.e., cuando la suma de inversiones sea exactamente 10) la funcin de aptitud no ser "castigada". 3) Operadores: Se usar una cruza de 2 puntos. La probabilidad que se dar a la misma ser del 80%. En cuanto a la mutacin, se le asignar una probabilidad baja, que ser del 1%. El tamao de poblacin manejado para este ejemplo ser de 50 cromosomas, y se correr el algoritmo gentico durante 20 generaciones. 4) Resultados: El resultado obtenido en una corrida tpica es un beneficio de 1.81 millones de pesos, correspondiente a invertir 4 millones en la zona comercial I, 3 millones en la zona II, 1 milln en la zona III y 2 millones en la zona IV. Esta es la solucin ptima, la cual se obtuvo originalmente mediante programacin dinmica. El tiempo que le tom al algoritmo gentico encontrar este valor fue de slo 13 segundos. Debe hacerse notar que, en este caso, si deseramos analizar inversiones que sumen otra cantidad, y en unidades menores al milln, el algoritmo gentico tendra que modificarse de manera mnima, mientras que la programacin dinmica requerira una cantidad tal de trabajo que prcticamente se volvera inoperante.

5. Bibliografa

"Aplicaciones de la Computacin Evolutiva"

http://www.geocities.com/SiliconValley/7491/aplce_c.htm

"Evaluacin del comportamiento de los Algoritmos Genticos"

http://www.geocities.com/SiliconValley/9802/3d5ca400.htm

"Introduccin a la vida artificial"

http://igeocities.com/CapeCanaveral/8104/ivan.htm

"Construccin de bases de conocimiento con Computacin Evolutiva"

http://www.fciencias.unam.mx/revista/soluciones/N17/Vlad1.html

"Introduccin a los algoritmos genticos"

http://www.fciencias.unam.mx/revista/soluciones/Coello2.html

"Los placeres existenciales de los algoritmos genticos"

http://www.fciencias.unam.mx/revista/soluciones/N17/Gold3.html

"Algoritmos Genticos"

http://www.iamnet.com/users/jcontre/genetic/ag.htm

"Operadores genticos"

http://www.iamnet.com/users/jcontre/genetic/operadores.htm

"Travelling Salesman problem using genetic algoritms"

http://www.lalena.com/ai/TSP

"Algoritmos genticos"

http://www.uv.es/~rmarti/genet.html

"Introduccin.(Tantas veces va el cntaro al agua hasta que se rompe)"

http://homepages.mty.itesm.mx/~lagrado/al-gen.htm

"Algoritmos Genticos"

http://www.iamnet.com/users/jcontre/genetic/ag.htm

"MannaMouse"

http://www.caplet.com/MannaMouse.html#parameters

"The flying circus" (contiene acceso al programa ejecutable Match)

http://www.wi.leidenuniv.nl/~gusz/Flying_Circus/index.html

"The Hitch-Hiker. s guide to Evolutionary Computation"

http://gnomics.udg.es/~encore/www/top.htm

[1] Holland, J.H., "Adaptation in Natural and Artificial Systems", University of Michigan Press, 1975, 211 p. [2] Koza, J.R., "Genetic Programming. On the Programming of Computers by Means of Natural Selection", The MIT Press, 1992, 819 p. [3] Buckles, B.P., and Petry, F.E., "Genetic Algorithms", IEEE Computer Society Press, 1992, 109 p. [4] Goldberg, D.E., "Genetic Algorithms in Search, Optimization and Machine Learning", Addison- Wesley Publishing Company, 1989, 412 p. [5] Booker, L.B.; Goldberg, D.E., and Holland, J.H., "Classifier Systems and Genetic Algorithms", Artificial Intelligence, 40, 1989, pp. 235-282. [6] Davis, L. (Editor), "Handbook of Genetic Algorithms", Van Nostrand Reinhold, 1991, 385 p. [7] Forrest, S., "Genetic Algorithms: Principles of Natural Selection Applied to Computation", Science, Vol. 261, No. 5123, August 13, 1993, pp. 872-878. [8] Smith, R.E.; Goldberg, D.E., and Earickson, J.A., "SGA-C : A C-language Implementation of a Simple Genetic Algorithm", TCGA Report No. 91002, The Clearinghouse for Genetic Algorithms, The University of Alabama, May 14, 1991. [9] Ribeiro Filho, J.L.; Treleaven, Ph.C., and Alippi, C., "Genetic-Algorithm Programming Environments", IEEE Computer, June 1994, pp. 28-43. [10] Srinivas, M., and Patnaik, L.M., "Genetic Algorithms : A Survey", IEEE Computer, June 1994, pp. 17-26.

[11] Rawlins, G.J.E. (Editor), "Foundations of Genetic Algorithms", Morgan Kaufmann Publishers, 1991, 341 p. [12] Whitley, L.D. (Editor), "Foundations of Genetic Algorithms 2", Morgan Kaufmann Publishers, 1993, 322 p. [13] Kaufmann, A., y Faure, R., "Invitacin a la Investigacin de Operaciones", Segunda Edicin, CECSA, Mxico, 1977, 311 p. [14] Porter, K., "Handling Huge Arrays", Dr. Dobb's Journal of Software Tools for the Professional Programmer, Vol. 13, No. 3, 1988, pp. 60-3. [15] Koza, J., "Genetic Programming II : Automatic Discovery of Reusable Programs", The MIT Press, 1992, 746 p. [16 ] Francisco J. Varedas&Francisco J.Vico ,"Computacin Evolutiva Basada en un modelo de codificain implicita", Inteligencia Artificial, N 5, pag 20-25.

http://proinf.net/permalink/jugar_al_ajedrez

You might also like