You are on page 1of 164
Algoritmos Evolutivos UO ety Pree ROC Resa nd ISBN 978-607-7686.29-3 wil Il | Deer er ren Alfaomega Grupo Editor een) ST WOE CLT Le Algoritmos aU TEs Un enfoque practico Lourdes Araujo Carlos Cervigon PNT ei cae) CON) Algoritmos evolutivos: un enfoque practico Lourdes Araujo Carlos Cervigén Alfaomega 4 Ra-Ma’ Datos cataogrtioos ‘Araujo, Lourdes y Cervigsn, Caos. “Algoritmo Evolvos tm efoque price, mers Esiegn Alfaomeza Grup Eto, S.A, de CV, Méxica ISBN: 978-607-7686-293 Formate: 17x23 em gins: 332 Algoritmos evlutivos: un enfogue prético Lourdes Araujo y Caries Cervigén ISBN: 978-84-7897911-,edivin original publicads por RA-MA Editors, Madi, Expat Derechos reservados © RAMA torial Primera edicin: Alfaomega Grupo Eaitor, México, abril 2009 (© 2009 Atfaomega Grupo Balter, S.A. de CV. Ptigras 1139, Cal. Del Valle, 03100, Mésieo DE, Miembro dela Cimara Nacional dela Industria Eitral Mexicana Registro No.2317 Emil atenconaltiente@alfsomega. com.mx ISBN: 978.607.7686.29-3, Derechos reservados: Esta obra es propiedad intelecal de su autor y Jos derechos de publiacin en lengua ‘spfiola an ie legalmentetransferdos al edo. robbs repedaccin parcial oa por cualquier medio sin pemiso por escrito del propitario de lo derechos del copyright. ‘Nota importante: Lainformscnconeid en esta ora ene un ia exclasivamente dct , por oan, no est previo su proven anil profesional o infuse Las indicaciones cs y programs Inco, tan sido elaborados on gran caida pore aur y reproduces bajo ete no ‘e conta. ALFAOMEGA GRUPO EDITOR, SA. de GX. bo sed juricamente responsable or eroresu omisiones; dae ypejuicios gue se pudran air uso de a informacion ‘omen en ste Bb, porn zac ina do pia dine icin auorizada para vents ex México todo el continent american Impeeso en México. Printed in Mexico, Empress de repo ‘México: Alfa Grp Ear, S.A. CV. Peiguas 139, CoD Vile Msn, DF ~C 05100. “as (255) 900.7740 Fa (32S) 5575-2420 2050, Sm con O-800020 998 Erma: ecionalcentalfameps comme (Colombia: Altona Colombian $A. — Cares 15 No, 64 A 20 — PBX (57-1) 210012, Boga, Caliban (971 66H El seme aomepacom so Cte: Atoomeea Grp Ec, S.A.~ Gener del Cant 370-Prviei, Saago, Chile “el 82) 2684248 "Fa (66 2955786 E-ma apeciowaloneac Arges: Allume Grpo Ear Agen. Parga 1307 PB“) ‘Apeminn, COST =e (54-1) 48117183383, Bal enaalcmegaetn son Lourdes dediea esa obra a Jose, Lucas y Tomé Carlos dedica esta obra alos amigos de siempre y que serin para siempre PROLOGO.. AES: TECNICAS DE BUSQUEDA Y OPTIMIZACION... 1.LLA TEORIA DELA EVOLUCION... 112 BxqUena GENERAL DE UN ALOORITO EVOLITIVO 1.3 BUSQUEDA Y OPTIMIZACION ALGORITMOS GENETICOs. 2.1 PRINCIPALES ELEMENTOS DE UN AG 2.2 REPRESENTACION DE LOS INDIVIDUOS, 2.3 GENERACION DELLA POBLACION INICIAL 2.4 GRADO DE ADAPTACION DELO INDIVIDUGS. 2.5 CONDICIONES DE TERMINACION . 2.6 proceso S8L20010N: MECANSOS DE MUESTREO 0 2,7 EL PROCESO DE REPRODUCCION: OPERADORES GENETICOS, = 38 2.7.1 Operadr de Cruce Monopunto, ee 7 36 2.1.2 Operador de Mutacin Aleatoria bit bit... ve 36 2.8 EL PROCESO DE REEMPLAZO. 31 2.9 wpntNTACION DEL ALCORTO GENETICO SIPLE vs 38 2.91 Bstruturas de Dato. so i 40 2.9.2 Generacion de la Poblacin Initial nnn sss 40 2.9.3 Adapiacién de los Individuos... o rel 2.9.4 Evaluacin e la Poblaci6n 2 = 43 2.95 Selecciin de Supervivientes.. 48 2.9.6 Reproduecion, Cruce y Mutacién “4 10_ ALGORMIMOS EVOLLTIVOS- UN ENFOQUE PRACHICO onan onan tnovce 2.10 BIEMPLO DE APLICACION ALA BSQUEDA DEL OFTIMO DE UNA FUNCION 6 42.1.2 Cre discrete de do pans, 2.11 PRoPIEDADES THORICAS DELOS ALGORITOS GeNErIcs, 2 42.13 Cru dere ire ne ai ieee 3 42.14 Cre aimee m 10 2.11.2 B1Teorema Fundamental st 42.15 Crue meta geomtin é i ut 2.11.3 Paaeismo Implicit, 56 42.16 Cree SOK smn HH 42.17 Cree BEX : m1 ALTERNATIVAS A LOS COMPONENTES DE UN ALGORITMO EVOLUTIVO 57 142.2 Operadores de mucin. aia 3. DELA FUNCIONOBIETIVO ALA FUNCION DE ADAPTACION won 8 422.1 Masi ire. nz 3.1 Haciendo Post a Funcién de Adapeacion 2 44222 Matai No Unione. : = m 3.12 Bsalad dela Funcién de Adaptacién st 443 mocraMacion uinica Seceeananena 12 REELS ve 65 43,1 Creacion dels indivduos a 16 3.3 CuTERIOS DF TeNAACION 68 43.2 Operadores de rue ee 119 3.4 VARIANTES DELOS OPERADORES GENETICOS 6 433 Operadores de mutacin. 120 ati se ema aad EXTENSIONES DE LOS ALGORITMOS GENETICOS, 2s 342 Crue Segment. a 5] ALOORIINOS EVOLUTIVOS MULTOBIETNO renner 126 3.43 Cruce Uniforme, i 5.1.1 Funciones agregativas 128 ae Gomera aay 5.1.2 Aproximaciones qe liza el concept de doinancn “129 3.4.5 Tasa de Mutacién Vaile enn n 5.13 Bjemplos de aplicacin ce BI 2A Meecion Ades “ Se ‘52 ALGORITMOS EVOLUTIWOS PARALELOS v8 3.5 TRATAMIENTO De PROBLEMAS CON RESTRICIONES Hee 351 Técnicas bsiws 3 52:1 Modelos centalizados 0 en aH. 13 3.52 Algunos problemas de resticeiones watados con AES 74 ee a Lee 3.5.2.1 Tees de penalicacin z eee Lad aeaa rasa 5.24 Modelo ibid ees 137 eee eee 53 ALOORITMOS MEMENCOS... aaane 139 Saag caguene SAANUEvAS TENDENCHAS 141 ea puaaioN ee 5.4.1 Imelgeni coletva y Algrios de Colonie de Hong. 1 3.5.2.6 Empaqucta en Contes 5.42 Bvoluin diferencia Eee 13 3.52.7 Coloreado degra. 5.43 Algoriamos de Estacion de Distbuciones, 144 OTROS TIFOS DE ALGORITMOS FVOLUTIVOS.. oe ee ae aes 4.1 ALGORINOS EVOLLTIVOS EN OFTIMIZACION COMBINATORIA. 91 OPTIMIZACION DE FUNCIONES (A). nt 4.1.1 El problema del vst de Comet ave 4 1. MaxiMzacion be FLNCIONES Seiten 1st 4.1.1.1 Representa deo indvius. 95 2. MINIMIZAciON DE FUNCIONES. Sees 153 44112 Opendores de cne é 96 3. OPmzaciOn De FUNCIONES DE VARIAS VARIABLES. 158 4113 Opeadoes de mutacin : 10s 442 ALGORITMOS EVOLUTIVOS PARA NUMEROS REALES. a OPTIMIZACION DE FUNCIONES (8) 42.1 Operadores de cic. aaa BUSQUEDA DE RUTAS DE METRO. 42.1.1 Chase disco simple. to 1. _DESCRIPCIONDDEL PROBLERA 12 ALOORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO, 2, _DISERO DEL ALGORFIWO... 2.1 Representacin de los individuos... 22 Generacién dela poblacién i 23° Funcién de adaptacién : 24 Operador de cruce 25. Operadior de mutacin. 2.6 — Consideraciones adicionales. 3, TRATAMIENTO ALTERNATIVO DE LAS RESTRICCIONES. 4. CONOTRAS RESTRICCIONES 5. UN IEMPLO DEINTEREAZ.GRAFICA, PLANIFICACION DE HORARIOS soe 1. DESCRIPCION DEL PROBLEMA. 2. DISENODEL ALGORITMO. 2.1 Representacin de os individuos. 22 Generacién dela poblacién inicia. 23. Funcién de adaptacién 24 Operador de cruce 25. Operador de mutacin. 26 — Consideracionesadicionaes 3. TRATAMIENTO ALTERNATIVO DE LAS RESTRICCIONES. 4. ConoTRASRestRIcctoNEs.. CORTADO DE PATRONES. 1. DESCRIPCION DEL PROBLEMA... 2. DISERO DEL ALGORFTMO. oe a 2.1 Representacin de los datos de entra, 22 Representacin de los individu... 23° Generacién dela poblacion inicial 24 Funcién de adaptacién 25. Operadorde eruce 26. Operador de mutacin. 2.7 Parimetros del slgoritmo, 3, VARIANTES DEL DISES0 Det. ALOORITMO, 3.1 Disenoe implementacin. CONTROL DE TRAFICO AEREO. 1, DESCRIPCION DEL PROBLEMA. 2, ISERO DEL ALGORITWO... sen TBS 185 187 188, 189 pe 190 191 192 194 194 194 196 199, 201 eRAMA 2a 22 23 24 25 26 3. UNAREPRESENTACION ALTERNATIVA. 4. CONRESTRICCIONES ADICIONALES RESOLUCION DEL SUDOKU. 1. DESCRIPCION DEL PROBLEMA. ~ - 2. DISERO DEL ALGORITMO. 24 22 23 24 25 3. UNEIEMPLO DE INTEREAZGRARICA 4. CONCLUSIONES.. IENTIFICACK 1. DESCRIPCION DEL PROBLEMA... 2, DISERODDEL ALGORITMO pice 13 Representacin de os individuos... Generac dela poblacion inci Funcion de adaptacin fi Operador de er on a (Operador de mutacin Consideraciones adicionales i Representacién de los individuosy la poblacién. Generac de la poblaciéninicial. uncién de adaptacién Operador de cre ren Operadores de mutacin... IN DE FUNCIONES.. : 29 Representacin de los individvos 24 29 22 Generacién de lapoblacén nical, vn 30 23 Funcién de adaptacién nD 24 Eloperador de crue so 236 25 — Operador de mutacén. . sn 3T 3, UNBIEMPLO DE INTERFAZ GRAFICA vn 239 4, CONCLUSIONES, 240 GENERACION DE ESTRATEGIAS DE RASTREO. 1, DESCRIPCION DEL PROBLEMA. 2. pisENoDEL ALGORITMO. 2a 22 23 24 25 Representacin de los individuos.. Generacién de la poblacién nici Funcién de adaptacion... El operador decree. Operador de mutacin... 251 253 255 14_ ALGORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO RAMA 3. UNIEMPLODE INTERFAZ GRAFICA, a sn D6 INVASORES DEL ESPACIO. 259 1. DESCRIPCION DEL PROBLEMA, 259 2, DISERODEL ALGOREIMO. oes os ss 263 2.1 Representacia de los individuos y la poblacién sw. 22 Generacién dela poblacion inital nennensnnnninnnnnnnnnnn 26S 23. Funcién de adaptacion ons : Eee aey 24 Eloperador de eruce am 25 El operador de mutacin Seen 273 26 — Consideracionesadicionales 7 ss 3. UNA VERSION ws CoMPtE1a: CoN BOMBAs. 274 4, MAspificu. Topavia: MULTIPLES ALIENIGENAS. 215 UTILIDADES: CODIGO JAVA.. SOLUCION PROYECTO 1: CODIGO C++... BIBLIOGRAFIA. INDICE ALFABETICO. PROLOGO Los Algoritmos Evolutivos constituyen una técnica general de resolucién de problemas de bisqueda y optimizacién, Su forma de procesamiento se ha inspirado en la teoria de la evolucién de las especies. Trabajan con una coleccién 0 "poblacién” de soluciones eandidatas o "individuos”, para los que se calcula una ‘medida de su "adaptacién” o capacidad de ser solucién al problema a resolver. La ‘composicién de la poblacién va cambiando alo largo de un proceso iterativo, cuyas iteraciones se denominan generaciones. Los individuos con mayor adaptacién tienen una probabilidad mayor de sobrevivir y permanecer en la poblacién de la siguiente generacién, y de participar en "operaciones genéticas", que son ‘operaciones de creacién de nuevos individuos a partir de modificaciones de los de la poblacién anterior. De esta forma, se emula el proceso de Ia seleccién natural Los mecanismos de creacién de nuevos individuos @ lo largo del proceso evolutivo aportan a estos algoritmos una de sus propiedades fundamentales: su ccapacidad de acceder a cualquier regidn del espacio de bisqueda del problema. Sin ‘embargo, esta capacidad no conlleva la ineficiencia de una bisqueda aleatoria, ya que el mecanismo de seleccién introduce un sesgo hacia las regiones més prometedoras. Los algoritmos evolutives permiten abordar problemas complejos de bisqueda y optimizacién que surgen en las ingenierias y los campos cientificos: problemas de planificacién de tareas, horarios,trfico aéreo y ferroviario, busqueda ‘de caminos dptimos, optimizacién de funciones, etc. Con este libro hemos querido aportar un enfogue prictico al estudio de estos algoritmos evolutives, que es 16_ ALGORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO oRAMA fundamental para aplicarlos a problemas reales de cualquier disciplina det cconocimiento. Los algoritmos evolutivos presentan una estructura general que puede aplicarse a los distntos problemas, facilitando enormemente las tareas de disefio © ‘mplementacién. El tinico requisito de un usuario que desee aplicar esta técnica para resolver un problema conereto es saber programar en cualquier lenguaje de ‘propésito general en el que codificard el algoritmo evolutivo. Sin embargo, para ‘obtener buenos resultados con estos algoritmos es necesario conocerios con detalle, ‘ya que dentro del esquema general de un algoritmo evolutivo hay que clegir riltiples componentes y parimetros, de los que va a depender Ia calidad del resultado y Ia eficiencia del algoritmo. El conocimiento de la eleccién més adecuada en cada caso, que a menudo depende de detalles sutiles del problema considerado, s6lo se consigue con la prictica. Esta idea nos ha llevado a proponer este libro, que consideramos adecuado para cualquier ingeniero o licenciado con conocimientos basicos de programacién. Este libro ha partido de las notas de los cursos impartidos durante los lltimos seis aftos por los autores en la asignatura de Programacién evolutiva, en la Ingeniera Informética de la Universidad Complutense. El libro tiene dos partes: una primera en la que se describen los algoritmos, y una segunda en la que se proponen varios proyectos y se resuelven empleando estas técnicas En la primera parte se presentan los conceptos que se manejan en el disefio de os algoritmos evolutivos, siempre con un enfoque prictico orientado al desarrollo de aplicaciones. El primer capitulo de esta parte es una introduccién al tema, sus antecedentes y sus variantes, El segundo capitulo esti dedicado a uno de los tipos més frecuentemente utilizados de algoritmos evolutives: los algoritmos enéticos. Estos algoritmos, que trabajan con una representacion sencilla de los problemas en forma de cadenas binarias, nos sirven para presentar Ia estructura y Componentes bisicos de los algoritmos evolutivos. Para ello introducimos una sencilla notacién en pseudocédigo en la que se formulan los algoritmos a lo largo del libro. En el tercer capitulo se describen distintos refinamientos del algoritmo bisico presentado en el capitulo anterior. El cuarto capitulo esti dedicado a otras variantes de algoritmes evolutivos, que trabajan con distintos tipos de representacién de las soluciones del’ problema considerado. Finalmente, en el quinto capitulo se presentan alternativas que afectan a Ia estructura general del algoritmo, como los algoritmos evolutivos paralelos o los que buscan la ‘optimizacién simulténea de varios objetivos (optimizacién multiobjetivo).. En Ia segunda parte del libro se describe con detalle una serie de proyectos précticos de resolucién de problemas complejos aplicando distintos tipos de RAMA PROLOGO 17 algoritmos evolutivos. El primero de estos proyectos es una aplicacién directa del diseflo presentado en la parte I, para facilitar al lector la comprensién y manejo de Jos algoritmos. Los restantes proyectos, muy variados, abordan distintos problemas de alta complejidad computacional, que los algoritmos evolutivos permiten abordar con faclidad: planificacién de horarios, de recursos, basqueda de caminos éptimos con diversas restricciones y bissquedas de estrategias de juego, por citar algunos de cllos. Cada uno de los proyectos se describe cuidadosamente, especificando los clementos del disefio del tipo de algoritmo evolutivo elegido para resolver el problema. Las propuestas que se presentan facilitarén alos lectores el acercamiento al problema y a otros similares, y a su resolucién con un algoritmo evolutivo. Estas propuestas pueden refinarse aplicando variantes de las presentadas en la parte I ‘También se proponen para todas ellas versiones més complejas que el usuario puede desartollar como cjercicios. Los esquemas se han planteado en ppseudocédigo con Ia intencién de que sean accesibles para personas que trabajen en ‘cualquier lenguaje de programacién. Al final de libro, en los apéndices, apuntamos algunos detalles pricticos para la programacién en dos de los lenguajes més ‘extendidos: C+ y Java. [Nos gustaria terminar este predmbulo con una mencién especial a Darwin en el bicentenario de su nacimiento y en el 150 aniversario de Ia publicacién del “Origen de las especies", por su genial aportacién a la ciencia y su inspiracién para la Programacién Evolutiva Capitulo 1 AES: TECNICAS DE BUSQUEDA Y OPTIMIZACION 1, INTRODUCCION Los Algoritmos Evolutives (AEs) son una técnica de resolucidn de problemas de bisqueda y optimizacién inspirada en la teoria de la evolucidn de las especies y la seleccidn natural. Estos algoritmos reiinen caracteristicas de bisqueda aleatoria con caractersticas de bisqueda dirigida que provienen del mecanismo de seleccién de los individuos més adaptados. La unién de ambas caracteristicas les permite abordar los problemas de una forma muy particular, ya que tienen capacidad para acceder a cualquier regién del espacio de busqueda, capacidad de la que carecen otros métodos de busqueda exhaustiva, a la vez que exploran el espacio de soluciones de una forma mucho mas ‘eficiente que los métodos ppuramente aleatorios. Indudablemente, un algoritmo disefiado de forma especifica para la resolucién de un problema concreto seré mis eficiente que un algoritmo evolutivo, que es una téenica general de resolucién, Pero existen muchas situaciones en las que no es posible contar con tales algortmos. Los algoritmos evolutives proporcionan un esquema general para la resolucién de problemas. Es decir, tnemos el algoritmo disefiado para el problema, ue nos ocupa y sélo tenemos que especificar Ia forma de ciertos componentes. Incluso en el disefio de estos componentes, hay patrones de disetio que se pueden aplicar @ toda una clase de problemas y que facilitan la construecién del algoritmo evolutivo. En general, la parte més dependiente del problema especifico considerado es la definicién de la funcién de adaptacion, que se utiliza en el proceso de seleccién del algoritmo evolutivo. Tanto en el disefto de esta funcién, 20 _ALGORITWOS EVOLUTIVOS: UN ENFOQUE PRACTICO RAMA como en el resto de los componentes del algoritmo es fitil incorporar ‘conocimiento especifico del problema, si es que se dispone de él, lo que puede ‘mejorar significativamente la eficiencia y la calidad de las soluciones encontradas. ‘También es importante tener en cuenta que los algoritmos evolutivos no sgarantizan una solucién exacta al problema abordado, sino una aproximacién cuya calidad dependera de los recursos dedicados a la bisqueda, es decir, tiempo y ‘memoria, apare, claro esti, del disefioadecuado de los componentes del algoritmo. Gracias a esta caracteristica pueden aplicarse a problemas de alta complejidad computacional, proporcionando una solucién aproximada que en muchos casos es suficiente para las necesidades del usuario, 0 en otros es lo tinico que se puede obtener. Aunque la estructura general de los algoritmos evolutivos facilta ‘enormemente el disefio de un algoritmo de resolucién de un nuevo problema, s6lo la préctica y la experiencia con este tipo de algoritmos nos permite sacaries el ‘méximo partido, ya que sus resultados son muy dependientes de Ia correcta cleccién de sus componentes y parmetros. Por esto, en este libro se presenta una coleccién de problemas reales, y su resolucién con un algoritmo evolutivo. El estudio y puesta en prictica de estos proyectos permitirl al lector conocer y obtener Ia experiencia necesaria con los algoritmos evolutivos para llegar a comprender st filosofia y para abordar el disefio del algoritmo que resuelva un nuevo problema. 1.1 LA TEORIA DE LA EVOLUCION Los Algoritmos Evolutivos parten de las ideas del modelo de evolucién natural que fue propuesto por Charles Darwin [DAR1859]. De acuerdo con la teoria de Darwin la evolucién de las especies se debe al principio de seleccién natural, que Favorece la supervivencia y multiplicacién de aquellas especies que stn mejor adaptadas a las condiciones de su entomo. Otro elemento que Darwin sefialé como relevante para la evolucién son las mutaciones, © pequetias variaciones que introducen diferencias en las caracteristicas fisicas y tipos de respuesta de los padres y los hijos. El mecanismo que fuerza la actuaci6n de la seleccién es la produccién de descendencia. Mientras hay abundancia de recursos, la poblacién crece exponencialmente. Este proceso lleva a situaciones de escasez de recursos en el entoro, en las que los individuos "mejor adaptados" al medio tienen mayor probabilidad de sobrevivir y de dejar descendencia, La genética y las leyes de Ia herencia genética han complementado la teoria, dde Darwin con mecanismos relativos a la herencia de caracteristicas fisicas en la pproduecién de descendencia, dando lugar a la teoria del neodarwinismo, De acuerdo con esta teoria, las caracteristicas fisicas de un individuo, su fenotipo, son ORAMA (CAPITULO 1: AES: TECNICAS DE BUSQUEDA Y OFTIMIZACION21 Ja consecuencia de su informacién genética 0 genotipo, cadenas de genes con complejas interacciones, que constituyen las unidades de transferencia de la hherencia. Los genes pueden modificarse puntualmente por mutaciones. La replicacién de las cadenas de genes en la reproduccién no siempre es perfecta. A ‘veces, aunque con una frecuencia extremadamente baja, se producen errores en el proceso de copia que constituyen mutaciones. Sin embargo, existen mecanismos reparadores de estos errores, como enzimas eodificadas en los propios genes, que reducen atin mas el porcentaje de este tipo de mutaciones. También existen factores cexternos, como la radiacién y eiertas sustancias quimicas, que pueden incrementar de forma significativa las probabilidades de mutacién. La seleceién tiene lugar sobre los individuos, que son la consecuencia del ‘genotipo y su interaccién con el medio, constituyendo las unidades de seleccién. Lo que evoluciona es el conjunto de individuos que constituyen la poblacién, que representa a un conjunta de genes comunes a sus individuos. La adaptacién de su individuo es su tendencia,relativa al resto de los individuos de la poblacién, para sobrevivir y dejar descendencia en unas condiciones ambientales especificas Estas ideas estin en Ia base del disefto de los algoritmos evolutives. ‘Ademés, muchas de las propiedades de Ia evolucién de los seres vivos, como la ‘edad, la mayor 0 menor tendencia a la mutacién segin el estadio de la evolucién, tc, estin siendo objeto de investigacién para su incorporacién a las técnicas de ccomputacién evolutiva. Sin embargo, los algoritmos evolutives no tratan de ser un refleo fiel de la evolucién biolégica. Debemos tener en cuenta que la naturaleza cevoluciona a lo largo de millones de alos, mientras que a nosotros nos interesa que ‘nuestros algoritmos nos proporcionen una solucién en un tiempo algo més corto. 1.2. ESQUEMA GENERAL DE UN ALGORITMO EVOLUTIVO Los distintos algoritmos evolutivos que se pueden formular responden a un cesquema bésico comuin, y comparten una serie de propiedades: ‘© Procesan simulténeamente, no una solucién al problema, sino todo un conjunto de cllas. Estos algoritmos trabajan con alguna forma de representacién de soluciones potenciales al problema, que se denominan individuos. El conjunto de todos ellos forma la poblacién con Ia que trabaja el algoritmo. ‘© La composicién de la poblacién se va modificando a lo largo de las iteraciones del algoritmo que se denominan generaciones. De generacién 22 ALGORITWOS EVOLLTIVOS: UN ENFOQUE PRACTICO RAMA cen generacién, ademés de variar el mimero de copias de un mismo individuo en la poblacién, también pueden aparecer nuevos individuos ‘generados mediante operaciones de transformacién sobre individuos de la poblacién anterior. Dichas operaciones se conocen como operadores enéticos © Cada generacién incluye un proceso de seleccién, que da mayor probabilidad de permanecer en la poblacién y participar en las ‘operaciones de reproduccién a los mejores individuos. Los mejores individuos son aquellos que dan lugar a los mejores valores (ya Sean minimos o méximos) de la funcién de adaptacién del algoritmo. Es fundamental para el funcionamiento de un algoritmo evolutivo que este proceso de seleccién tenga una componente aleatoria, de forma que individuos con baja adaptacién también tengan oportunidades de sobrevivie, aunque su probabilidad sea menor. Es esta componente aleatoria Ia que dota a los algoritmos evolutivos de capacidad para cescapar de éptimos locales y de explorar distintas zonas del espacio de basqueda, El siguiente pseudocédigo muestra un posible esquema general de un algoritmo evolutivo: funcion algoritno_cenético() ‘Troblacion pol J/_poblacién 7 ‘Trarametros parémetros// tamafio poblacién obtener_paraetros(parametros) ; pob = poblacion-inicialQ; : evaluacion(pob, tan_pob, pos_mejor, sumadaptacion) ; /{ bucle de evolucion o imientras fo Se alcanza condicién de terminacién hacer{ Seleccion(pob," paranetros): Feproducelon(pob, parametres) ; evaluacion(pob,parametros ,pos-mejor, sunadaptacion) ; devolver pobLpos_mejor] El algoritmo procesa un conjunto de individuos que forman la poblacién ‘pob. Al comienzo del algoritmo se obtienen los datos de entrada al problema (obtener_pardmetros) y se genera la poblacién inicial, cuyos individuos se evaliian ‘mediante la funcién de adaptacién del algoritmo. El resto del algoritmo consiste en tun bucle, cada una de cuyasiteraciones es una generacién en la que se produce un RAMA [CAPITULO I: AES: TECNICAS DE BUSQUEDA ¥ OFTIMIZACION23 proceso de seleccién, que da mayores probabilidades de tener copias en la nueva poblacién a los individuos més adaptados, seguido de un proceso de reproduecién fen el que se generan nuevos individuos a partir de los de la poblacién mediante ‘operaciones de mezela y pequefis alteraciones, y finalmente una evaluacién de la rmueva poblacién, En muchas ocasiones se utilizan pequefias variantes de este cesquema. Asi, por ejemplo, a veces se selecciona un subconjunto de la poblacién, {que es el nico que participa en las operaciones de reproduccién. Siguiendo este esquema general se han desarrollado distintas variantes de algoritmos evolutivos, cuya principal diferencia se encuentra en la representacién, de los individuos. Légicamente, los operadores genéticos que se utilizan para la reproduecién en cada caso dependen de la representacién adoptada. Las variantes mas conocidas, y de las que nos ocupamos en este libro, son: * Los Algoritmos Genéticos {HOL7S}: utlizan una representacién binaria ocntera, © Los Programas de Evolucién (MIC94]: los individuos son cualquier cestructura de datos de tamafo fj. © Algoritmos Genéticos de Codificacién Real [BAC91, GOL91, HER98|: se hace evolucionar una poblacién de nimeros reales que codifican las posibles soluciones de un problema numérico. © La Programacién Evolutiva {KOZ94, KOZ02}: se hace evolucionar una poblacién de “programas” para resolver un problema en general. Los ‘programas que evolucionan pueden adoptar distntas formas, aunque Ia mds usual es un érbol. En cualquier caso, se trata de estructuras de datos de tamatio variable, es decir, no todos los individuos tienen el mismo tamafo, Este tipo de AE presenta una diferencia fundamental con el resto: no buscan la solueién @ una instancia conereta de un problema, sino una estrategia capaz de resolver cualquier instancia de ese problema 1.3 BUSQUEDA Y OPTIMIZACION Gran parte de los problemas que surgen en el desarrollo industrial y en la investigacién pueden formularse como una busqueda 0 como una optimizacién: dado un sistema, buscamos un conjunto de valores que permiten llevarlo a una ‘determinada configuracién o bien un conjunto de valores que permiten optimizar ‘su comportamiento (rendimiento, calidad, coste, tc). 24_ ALGORITMOS EVOLLTIVOS: UN ENFOQUE PRACTICO RAMA El método clisico de optimizacién para problemas cuyo espacio de basqueda de soluciones es continuo es la técnica de escalada, que consiste en determinar la pendiente de la vecindad del punto actual y seleccionar el punto de ‘mayor pendiente en dicha vecindad. Si el valor de la funcién a optimizar en el ‘nuevo punto es mejor que en el anterior, el nuevo punto se eonvierte en el punto ‘actual. El proceso continia hasta que no es posible realizar ninguna mejora. Una limitacién de este método es su incapacidad para escapar de éptimos locales. ‘Consideremos una funcién de una variable como la de la figura: b ——— SS c Si la exploracién comienza en un punto como p, s6lo sera capaz de llegar al méximo a, pero no podri llegar a b, ya que para ello tendré que atravesar la regién ¢ de valores peores que a. Aparte de los problemas mencionados de los métodos clésicos, otra dificultad para resolver problemas de optimizacién esti en su. complejidad computacional. La mayor parte de los problemas de optimizacién que surgen en el ‘mundo real tienen una complejidad exponencial, es decir, no existe un procedimiento para resolverios que opere en un mimero de pasos que sea una funcién polinémica del tamafto del problema. Esto implica que los métodos ‘deterministas de resolucién, como el de escalada, no son capaces de resolverlos a partir de cierto tamafio del problema, Una alternativa es realizar una bisqueda aleatoria, tomando puntos al azar dentro de una zona de busqueda, y estimando el valor del 6ptimo mediante técnicas estadisticas, Estas téenicas se pueden aplicar a cualquier tipo de problema, pero son muy ineficientes. RAMA [CAPITULO 1: AES: TECNICAS DE BOSQUEDA Y OPTIMIZACION 25 Los algoritmos evolutives constituyen un punto intermedio al reunir componentes de biisqueda aleatoria y de bisqueda dirigida por la seleccién. Una representacién muy extendida de la evolucién de soluciones son las superficies ‘adaplativas [BAC96A]. Las posibles combinaciones de rasgos fisicos en una poblacién de individuos definen puntos en un espacio multidimensional, donde cada eje de coordenadas corresponde a uno de estos rasgos. Esta representacién usa ‘una dimensién adicional para dibujar los valores de adaptacién de cada punto del espacio, reflejando Ia ventaja selectiva (0 desventaja) de los individuos ‘correspondientes. De esta forma se construye Ia superficie adaprativa, que en su forma simplificada tridimensional (dos dimensiones de rasgos, y una de adaptacién) tiene el aspecto de una zona de valles y picos. Cuando las combinaciones de rasgos de la poblacién cambian, y la adaptacién media se incrementa, la poblacién se mueve hacia arriba, y de esta forma, escala alguno de los picos. Ast la evolucién se puede interpretar como un proceso de optimizacion de Ia adaptacién anilogo al que necesitamos realizar para resolver un problema de ‘optimizacién. Sin embargo, los algoritmos evolutivos no escalan de forma luniforme hacia regiones de mejor adaptacién, sino que cuentan con mecanismos que les permiten cruzar regiones de baja adaptacién, Estos mecanismos son fundamentalmente la seleecién no determinista y las mutaciones. Capitulo 2 ALGORITMOS GENETICOS Uno de los tipos de algoritmos evolutivos mas populares son los algoritmos sgenéticos (AGs), propuestos por Holland (HOL75] en 1975. Se caracterizan por representar las soluciones al problema que abordan en forma de cadena de bits. Entre las razones que hacen que este tipo de AE suela ser uno de los estudiados con mis detalle estin su cficiencia y sencillez de implementacién, Otra razén importante es la existencia de numerosos estudios tedricos de los mecanismos subyacentes al funcionamiento de estos algoritmos para la resolucién de problemas. Empieza a ser tradicional [GOL89, MIC94] comenzar los libros de algoritmos evolutivos con un ejemplo de’ aplicacién a algin problema de planteamiento claro. Este texto también sigue esta linea, ya que la mejor forma de realizar un acercamiento prictico a estos algoritmos es resolver un problema aplicando un AE configurado con una seleccién sencilla de caracteristicas. Asi ‘pues, comenzaremos presentando los elementos que se requieren para aplicar el ‘esquema general, considerando para cada uno de ellos sus formas mas tradicionales ‘0 mis sencillas. Otras variantes més complejas o refinadas se irin presentando a lo largo del libro. Una vez detalladas as caracteristicas del algoritmo, las aplicaremos ‘2 un problema sencillo: la optimizacién de funciones. Este tipo de problemas se suele utilizar tanto en la ensefianza de los AEs como en las evaluaciones de nuevos AEs que se investigan, tanto por su sencillez como por la posibilidad de configurar su grado de dificultad: nimero de éptimos de la funcién y mimero de variables implicadas. 28 ALGORTTMOS EVOLUTIVOS: UN ENFOQUE PRACTICO RAMA 2.1 PRINCIPALES ELEMENTOS DE UN AG Los AGs, asi como otras clases de AES, responden en general a un mismo cesquema, que representibamos en el capitulo anterior, y que aqui reproducimos: funcion Algoritmo_cenético() ‘Tpoblacion pob; // poblacién a ‘Tparanetros' paranetros// tanano poblacién obtener_parametros(parametros); pob.= poblacioninicialO; | evaluacion(pob, tam_pob, pos_mejor, sumadaptacion) ; 7/ bucle de evolucién ‘ nace iwientras no se alcanza Ja condicién de terminacién hacert Seleccién(pob,” paranetros) Feproduccion(pob, paranetros); evaluacion(pob, parémetros, pos_mejor, sumadaptacion) ; 2 devatver pobtpos_nejor]: La cjecucién de un AE requiere una serie de parimetros de funcionamiento, como por ejemplo el tamafio de la poblacién con la que va a ‘trabajar, que definen su comportamiento en promedio. Una vez que el algoritmo ddispone de los valores para estos parémetros, comienza generando una poblacién de individuos, cada uno de los cuales es un candidato a ser solucién del problema tratado, o permite llegar a la solucién a partir de él. A continuacién la poblacién de individuos se somete a un bucle de evolucién cada uno de cuyos ciclos incluye un proceso de seleccién, que modifica la composicién de Ia poblacién, eliminando a ciertos individuos y reforzando Ia presencia de otros, a un proceso de reproduccién, {que introduce nuevos individuos, y una nueva evaluacién, que actualiza los datos de evolucién, tales como la adaptacién media de la poblacién o la posicién del mejor individuo de la poblacién, ‘Como apuntibamos en el capitulo anterior, este esquema general da lugar 8 diversas clases de AEs en funcién de la representacién adoptada para los individuos que componen la poblacién. Y dentro de cada una de esas clases, cada algoritmo es un caso particular, no s6lo en funcién del problema conereto al que se aplica, sino también dependiendo de la eleccién conereta de los métodos que se aplican en lo distintos procesos involucrados, como la seleecién y la reproduccién. A continuacién vamos @ detallar Ios elementos del esquema general para el ‘caso de los algoritmos genéticos. Para cada uno de estos elementos veremos algunos de las variantes més bisicas o mis usuales. Los procedimientos que se RAMA ‘caPirvL02: ALGoRITwos GENEnCOs 79 presentan que se refieren a la representacién de los individuos son especificos de los algoritmos genéticos. Sin embargo, otros son aplicables a cualquiera de las clases de algoritmos evolutivos, 2.2 REPRESENTACION DE LOS INDIVIDUOS En un AG los individuos son eadenas binatias, que denotaremos por b, que representan a puntos x del espacio de biisqueda del problema. Tomando la rnomenclatura de ta biologia, a b se le denomina genoripo del individuo y a x se le denomina fenoripo. La nomenclatura biolégica a veces se adopta también para otros datos del individuo. Asi se usa gen para referirse a la codificacién de una determinada caracteristica del individuo. En los AGs se suele identficar un gen con cada posicién de Ia cadena binaria, aunque esto no tiene por qué ser siempre asi, Se usa alelo para los distintos valores que puede tomar un gen y locus para referirse a una determinada posicién de Ia cadena binaria La sencillez de la representacién binaria que utilizan los AGs les aporta caracteristicas muy importantes de eficiencia que veremos en la seocién 2.11. La contrapartida es que es necesario disponer de un método para pasar de la representacién binaria al espacio de busqueda natural al problema. Este paso es necesario en general para poder evaluar la adecuacién del individuo como solucién al problema. Légicament, el método de transformacién es especifico del problema cconsiderado. Sin embargo, a la hora de disefiar el método de codificacién es importante tener en cuenta una serie de directrices, Asi, debemos buscar una codificacién tal que cada punto del espacio de bisqueda esté representado por el ‘mismo nimero de cadenas binarias, y tal que sea capaz de representar todos los puntos del espacio del problema, Es importante que cada posicin de la cadena tenga un significado para el problema, ya que de esta forma se favorece que los genes que dan alta calidad a un individuo sigan dando lugar a caracteristicas de calidad en un nuevo individuo ‘obtenido por alguna operacién genética a partir del primero. También es importante ‘buscar una codificacién a partir de la cual se pueda llegar de forma eficiente al fenotipo, ya que la decdiiacin ser una opeacin muy feeuete alo argo de 2.3 GENERACION DE LA POBLACION INICIAL Los individuos de la poblacién inicial de un AG suelen ser cadenas de cceros y unos generadas de forma completamente aleatoria, es decir, se va ‘generando cada gen con una funcién que devuelve un cero oun uno con igual 40 _ALGORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO oRAMA probabilidad. En algunos problemas en os que se disponga de informacién Adicional que nos permita saber de antemano que determinadas cadenas tienen mis probabilidades de Hegar a ser solucién, podemos favorecer su generacién al crear Ia poblacién inicial. Sin embargo, es imprescindible para el buen funcionamiento del ‘AG dotar a la poblacién de suficiente variedad para poder explorar todas las zonas del espacio de bisqueda, 2.4 GRADO DE ADAPTACION DE LOS INDIVIDUOS La evolucién de la poblacién depende de la calidad relativa de los ividuos que compiten por aumentar su presencia en la poblacién y por participar en las operaciones de reproduccién. En un problema de busqueda w optimizacién, dicha calidad se mide por Ia adecuacién 0 adaptacién de cada individuo a ser solucién al problema, Es frecuente que los problemas se presenten como la ‘optimizacién de una funcién matematica explicita. En dichos casos la funcién de ‘adaptacién coincide con la funcién a optimizar. Sin embargo, a veces se realizan algunas transformaciones a la funcién a ‘optimizar funcién’ de evaluacién g(x) para transformarla en una funcién de fdaptacién adecuada Js). Denominaremos adaptacién bruta de un individuo x a _g(x).y simplemente adaptacion a f(x). 2.5 CONDICIONES DE TERMINACION Es necesario especificar las condiciones en las que el algoritmo deja de fevolucionar y se presenta la mejor solucién encontrada. La condicion de terminacién més sencilla es alcanzar un determinado nimero de generaciones de evolueién, Otras condiciones, que a veces se ulilizan de forma combinada, son tleanzar una solucién de una determinada calidad o detectar que la mayor parte de la poblacién ha convergido a una forma similar, careciendo de la suficiente diversidad para que tenga sentido continuar con la evolucién. 2.6 EL PROCESO DE SELECCION: MECANISMOS DE MUESTREO La poblacién del algoritmo genético se somete a un proceso de seteccidn ‘que debe tender a favorecer la cantidad de copias de los individuos mas adaptados. Este proceso se puede realizar de formas muy diferentes: RAMA ‘CAPITULO2: ALGORITMOS GENETICOS 31 Seleceién proporcional o por ruleta La probabilidad de seleccién p, de un individuo i con este método es proporcional a su adaptacion relativa: siendo F la adaptacién media de la poblacién. ‘Necesitamos generar un niimero aleatorio de acuerdo con la distribucién de probabilidad dada por los p.. Si contamos con un generador de niimeros aleatorios {que genera nimeros de forma uniformemente distribuida a lo largo de un intervalo, como [0,1], podemos seguir el siguiente procedimiento [PER96]: ‘© Definimos las puntuaciones acumuladas de la siguiente forma: 0 Ptwte (w % % © Se genera un niimero aleatorio a € 0,1). * Se selecciona al individuo i que cumpl Gin 4, <4,(048593) <4, x, 9 < 45(0.81926) adap_mejor){ pos_mejor = 1; Adap_nejor = pob[i].adaptacion; } para cada i desde 0 hasta tam pob hacer { pobifpuneuscion = Beef Ts septacton 7 sunadap; ob{i] punt-acu'= pob(] puntuacion + punteacus Punt_acu= punt_acu+ pab[] spuntuacion; } 2 2.9.5. Seleccién de Supervivientes La funcién de seleccién del algoritmo genético simple selecciona un nimero de supervivientes igual al tamaito de la poblacién por el método de la ruleta. La funcién modifica la poblacién que pasa a estar formada nicamente por ‘cjemplares de los individuos supervivientes, {44 ALGORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO RAMA funcion seleccion(var TPoblacion pob, entero tam_pob) real sel_super(tan_pob]; // seleccionados para sobrevivir real prob: // probaly ad ge Select e nce entero pos super; // posicion del supervivi Froblacton pob-auxs // poblacion auxt Har entero ‘sara cada i desde 0 hasta tam_pob hacer { prob =aleaQ; pos_super = 0; mientras. (Cprob> pob[pos_super] .punt_acu) y (pos_super< tam_pob)) pos_super+s sel_super {i} = pos_super; se genera la poblacién intermedia Phra’ <26n°F* gesde°O hasta tancpob hacer { pob-auxti] = poblsei_superl1]]i Jnicializar(pob) ; pera cada'l desde 0 hasta tan_pob hacer { pobEi] = pob_auxLi; Probablemente ésta es la forma més simple de implementar Ia seleccién, aunque hay muchas otras posibilidades para este operador. 2.9.6 Reproduccién, Cruce y Mutacién Consideramos hora eémo se combinan los operadores ‘mutacin para producir una nueva generacién. La funcién reproduccién presenta ia secuencia a seguir. En un algoritmo genético simple, la implementacién de la reproduceién consiste en la seleccién de Ios individuos a reproducirse entre los de la poblaci6n resultante, y finalmente en la aplicacién del operador de cruce a cada tuna de las parejas, Finalmente se aplica la mutacién bit a bit mediante la funcién Dooleana mutacién. funcion reproduccion(var TPoblacion, pob, entero tan_pob, entero Tcrom, real’ prob_cruce) t ; 11 se1_crucettan_pob] ://seleccionados para reproducirse entero nun_sel-cruce=0; // contador de seleccionados Feal prob; entero, punto_cruce; Findiviguo hijol, entero Ji Se eligen los individuos a cruzar para‘ cada’ desde 0 hasta tan_pob t 5025 e— ORAMA ‘capirut02: ALGoRrMos GENENCOS 65 //se generan tan_pob nimeros aleatorios ay en (0 1] prob’ aleas /T5e eligen Tos individuos de las posiciones i (gon 2) "prob cruce | Si (prob © prob-cruce: sel eruce(aun-sel-cruce] rumcsel-erucers; 71 €1 nimero de seleccignados se hace par $1 Counsel cruce mod 2)'—=1) nun_sel_cruce=-; // se cruzan Tos individuos elegidos en un punto al azar punto_cruce = alea ent(O, lcron); para cada i desde 0 hasta num-sel_cruce avanzando 2{ Cruce(poblsel-crucef il], poblssl_cruceLi+ii1, "ijol, Rijo2,Icrom," punto_cruce); // Jos nuevos individuos’ sustituyen a sus progenitores, pobtsetcrucep iT] > hijot: pobLsel_cruce[i+i]] = hijo2; El operador de cruct toma dos padres y genera dos cadenas hijas. Recibe la probabilidad de cruce, junto con la longitud de la cadena. El intercambio de eruce se realiza en un par de bucles. La funcién calcula Ia adaptacién de los nuevos individuos. funcion cruce(rindividuo padret, tindividuo padre2, var Tindividuo hijol, var Tindividuo’hijo2, ‘ fentero'Tcron, entero’ punto-cruce) enero ti "icializar(hi jol.genes); jnletaltzarthijo2. genes) /] primera parte del intercanbio: 1a ly 2.a2 para cada i'desde 0 hasta punto cruce hacer{ ijol-ganes[i] = padrey-genesi] hijoz-genes[1] = padre2 genes 1 // segunda parte: 1a2y2a1 para cada i desde punto_cruce hasta Icrom; hacer{ hijol-genesti] = padree-genestiJ: hijoz-genes[i] = padrelgenes( iJ; //,s¢ evalian, hijol.adaptacion = adaptacion(hijo1, Icron); hijoz-adaptacion = adaptacion(hijoz, Icron)! 46_ALGORITMOS EVOLUTIVOS: UN ENFOQUE PRACTICO RAMA Finalmente consideramos el operador de mutacién, que con la probabilidad indicada considera la posible mutacién de cada gen del genotipo. La funcién revisa la adaptacién del individuo en caso de que se produzea alguna mutacién funcion mutacion(var TPoblacion pob, entero tam_pob, ‘entero Icrom, real’ prob_mut) booleano mutado; entero 1,33 real prob; para cada i desde 0 hasta tam_pob hacer{ futado = Falso; para cada j desde 0 hasta Icrom hacer{ V7 se genera un numero aleatorio en (0 1) prob = aleaQ; Fy'se mutan aquellos genes con prob < que prob_mut SH (prob. prob_mut){ pobli].genes(j] = not pobLi].genes{j1); mutado’= cierto; d Si (mutado) pobLil-adaptacion = adaptacion(pobli], 1crom); 2.10 EJEMPLO DE APLICACION A LA BUSQUEDA DEL OPTIMO DE UNA FUNCION ‘Vamos a aplicar nesiro algoritmo genético a la bisqueda del maximo en el intervalo[0,20} de una seeilla funcién: x f@O-TF La sencillez dela funcién no justfica la necesidad de aplicacién de un AG. ‘Sin embargo, precisamente esta sencllez nos permite utilizarla para clarificar el funcionamiento del AG, que se aplicard exactamente de la misma forma a otras funciones ms complejas. Por los mismos motives, elegimos también valores de los parimetros que normalmente resultan demasiado pequefios para el buen funcionamiento del AG, ‘pero que nos permiten visualizar el proceso con mayor claridad. Hemos elegido los siguientes valores para los pardmetro: eRAMA ALGORITMOS GENETICOS 47 [ Precision 0.0005 Tamafio de poblacién 30. (Tasadecruces Sw TTasa de mutaciones 1% Numero de generaciones 10 Suponiendo que tabajamos con una funcién sobre nimeros reales, necesitamos discretizar dicho intervalo para hacer corresponder posiciones dei intervalo real considerado con nimeros enteros representados por nuestra cadena binaria, El parimetro precisin (PREC) indica ef nimero de posiciones decimales en las que nos interesa que el resultado de esta correspondencia sea exacto, Este pparimetro condiciona la longitud de la cadena binaria de nuestro algoritmo, A mayor precision requerida, més larga debe ser nuestra cadena para poder representar la cantidad de alimeros reales con esa precision dentro del intervalo de baisqueda especificado. Es habitual utilizar la precisién como pardmetro de entrada al AG y a partir de ella calcular la longitud de las cadenas binarias, en Iugar de especificardirectamente dicha longitud. Para discretizar el intervalo real contenido entre xau ¥ Sau» lo dividimos en pequetias porciones de anchura menor que PREC, como muestra Ia siguiente figura: xe dena binaria Xmin PREC Xmax Los mimeros representados por nuestras cadenas binarias serin las jsiones entre porciones. Con una longitud de cadena binaria 1 podemos representar a 2! niimeros enteros, Io que nos permite dividir 2'-1 porciones de intervalo, Imponiendo que la anchura de las poreiones sea menor que PREC tenemos:

You might also like