Guía para recién llegados a los ALGORITMOS GENÉTICOS

Anuncio
UVa Dpto. de Organización de Empresas Escuela de Ingenierías Industriales Elena Pérez www.eis.uva.es/elena [ Guía para recién llegados a los ALGORITMOS GENÉTICOS]
El propósito de esta guía es dar soporte a nuestras publicaciones y sugerir algunas lecturas para ayudar a los recién llegados a los Algoritmos Genéticos. Universidad de Valladolid (2010) Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 1 Contenido 1. Introducción .................................................................................................................. 2 2. La selección natural y la evolución de las especies ...................................................... 2 3. Los algoritmos evolutivos ............................................................................................ 3 4. Conceptos básicos en biología y en algoritmos genéticos ............................................ 4 5. Estructura de los algoritmos genéticos ......................................................................... 6 5.1 Descripción del problema a resolver ...................................................................... 7 5.2 Codificación de las soluciones ............................................................................... 8 5.2.1 Codificación binaria ........................................................................................ 8 5.2.2 Codificación simbólica .................................................................................... 8 5.2.3 Codificación permutacional............................................................................. 9 5.2.4 Codificación permutacional con repetición ..................................................... 9 5.2.5 Codificación real ............................................................................................. 9 5.3 Inicialización .......................................................................................................... 9 5.4 Selección............................................................................................................... 10 5.4.1 Métodos proporcionales a la calidad. ............................................................ 10 5.4.2 Métodos basados en el orden o métodos de ordenación. ............................... 12 5.4.3 Métodos basados en competiciones o torneos. .............................................. 13 5.5 Operadores genéticos: Reproducción ................................................................... 14 5.5.1 Operadores Cruce ..................................................................................... 15 5.5.2 Operadores Mutación. .............................................................................. 18 5.6 Sustitución ............................................................................................................ 20 6. ¿Por qué funcionan los algoritmos genéticos? ........................................................... 21 6.1. El teorema fundamental de los algoritmos genéticos .......................................... 21 6.2. La hipótesis de los bloques constitutivos ............................................................ 24 6.3. El paralelismo implícito ...................................................................................... 24 7. Algoritmos genéticos en la práctica......................................................................... 25 Agradecimientos ............................................................................................................. 25 Bibliografía ..................................................................................................................... 25 Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 2 1. Introducción Los algoritmos genéticos pertenecen a los denominados algoritmos evolutivos. El denominador
común de todos ellos es la imitación de los mecanismos que dirigen el proceso evolutivo de las
especies según las leyes de Darwin, y su adaptación al problema que se debe resolver.
Dentro de este campo, la primera técnica desarrollada fue la programación evolutiva, después
aparecieron las estrategias evolutivas, los algoritmos genéticos y, por último, la programación
genética. De todas ellas, los algoritmos genéticos son los que han tenido un mayor interés, tanto
por parte de los investigadores como del sector industrial, por los buenos resultados obtenidos y
por su fácil adaptación a las condiciones reales de trabajo.
Los algoritmos genéticos resuelven problemas de optimización en los que hay que maximizar o
minimizar una función objetivo sujeta a unas restricciones, sin que se deba cumplir ninguna
condición, tal como la de derivabilidad o convexidad. Por otro lado, también tienen aplicación
en temas de aprendizaje donde están especialmente adaptados por su carácter evolutivo.
La principal diferencia de los algoritmos genéticos con otras metaheurísticas de optimización
(como la búsqueda tabu, el recocido simulado, etc) es la utilización de conjuntos de soluciones
de forma simultánea durante la búsqueda. Mediante la reproducción, que es el proceso que
caracteriza a todos los algoritmos evolutivos, se consigue una mejora de las características de
las soluciones que forman parte de la población de una generación a la siguiente, tal y como
sucede en la naturaleza. De esta forma, el mejor individuo de la población (esto es, el individuo
mejor adaptado a las condiciones medioambientales) tiene mayores probabilidades de
sobrevivir, acceder a unos recursos limitados como es la comida, y reproducirse. Mediante la
reproducción sexual, en contraposición de la asexual, existe un intercambio del material
genético de ambos padres, lo que permite que los descendientes puedan heredar las buenas
características que hacen de sus padres los mejores. Por el contrario, los individuos peor
adaptados tenderán a desaparecer, y con ellos esas características que no les permitieron
adaptarse y sobrevivir.
Resumiendo, los algoritmos genéticos hacen evolucionar a las soluciones iniciales mediante la
aplicación del proceso selectivo que imita a la naturaleza y de los denominados operadores
genéticos que permiten imitar los procesos genéticos que se dan en la reproducción sexual.
Para introducir a nuestros lectores a los algoritmos genéticos, en primer lugar, hacemos
referencia a su inspiración en la evolución natural de las especies. Después, recorremos
brevemente la historia de los algoritmos evolutivos. A continuación, definimos una serie de
términos básicos con los que es necesario estar familiarizado y describimos los procesos de un
algoritmo genético. Finalmente, analizamos los motivos por los que los algoritmos genéticos
funcionan.
2. La selección natural y la evolución de las especies No se puede comenzar a hablar de la evolución de las especies sin repetir las palabras que
removieron los cimientos de las tradiciones occidentales sobre el origen del hombre.
“Probablemente todos los seres orgánicos que hayan vivido nunca sobre esta
tierra han descendido de alguna única forma primordial, a la que se infundió vida
por primera vez.... Esta opinión sobre el origen de la vida tiene su grandeza...
porque mientras este planeta ha ido dando vueltas de acuerdo con la ley fija de la
gravedad, a partir de un inicio tan sencillo han evolucionado y siguen
evolucionando formas sin fin, las más bellas y las más maravillosas.” (Darwin,
1859. Párrafo tomado de Sagan, 1980)
El pilar fundamental del descubrimiento realizado, de forma simultánea, por Charles Darwin y
Alfred Russel Wallace, es que el mecanismo de la evolución es la selección natural. Las
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 3 mutaciones aumentan las probabilidades de supervivencia, obteniéndose una serie de lentas
transformaciones de una forma de vida en otra, que origina nuevas especies.
El medio ambiente es el que selecciona las pocas mutaciones que se producen durante la
autoreproducción de las células y durante la reproducción sexual. Aquellos individuos con
características más favorables para la supervivencia y la reproducción, al tener un mayor acceso
a los recursos limitados del entorno, no sólo tendrán un mayor número de descendientes, sino
que también serán capaces de transmitir a sus descendientes estas características, dando lugar a
un cambio adaptativo en la población. La teoría de la selección natural predice el cambio
evolutivo hacia las características más apropiadas para el entorno en el que viven los
organismos.
La esencia de la teoría del Origen de las Especies de Charles Darwin, se recoge en las
siguientes premisas (Fang 1994):
1. En la reproducción sexual, cada individuo pasa parte de sus rasgos genéticos a sus
descendientes.
2. Además, la naturaleza produce individuos con algunos rasgos diferentes debido a
cambios llamados mutaciones, generalmente producidos de forma aleatoria.
3. Los individuos mejor adaptados tienen mayor descendencia que aquellos peor adaptados.
Esto dirige a la población hacia rasgos favorables.
4. A lo largo de grandes periodos de tiempo, la variación puede acumularse, produciendo
nuevas especies cuyos rasgos les hace especialmente adaptables a un nicho ecológico
particular.
Se puede decir que los secretos que entraña la evolución son dos: la muerte y el tiempo. Por un
lado, la muerte elimina una cantidad ingente de formas vivas que estaban imperfectamente
adaptadas al medio ambiente. Por otro, el tiempo permite ir acumulando las pequeñas
mutaciones accidentales que resultan ser beneficiosas.
3. Los algoritmos evolutivos Los algoritmos evolutivos surgieron a principios de la década de los 60 (Fraser, 1957;
Bremermann et al., 1966; Reed, 1967; Bäck et al., 1997; y Fogel, 1998), basándose en los
principios de la evolución natural de las especies y en el desarrollo del conocimiento de los
conceptos de la genética. Los mecanismos naturales, que si bien no se conocen en su totalidad,
si lo son sus objetivos y funcionamiento básico, permiten a las especies evolucionar y adaptarse
al entorno.
Con el auge que tomaron estas teorías, y por medio de los descubrimientos de nuevas
tecnologías que permitían un desarrollo computacional y matemático mucho más avanzado,
empezaron a investigarse teorías y algoritmos artificiales que emulaban los mecanismos
naturales siendo una fecha importante 1975 con los trabajos de Holland.
A partir de esta fecha, los estudios sobre algoritmos evolutivos, en cualquiera de sus facetas, se
han incrementado de tal forma que ya es difícil encontrar un área de investigación en la que no
hayan irrumpido con gran fuerza. Es posible encontrar estudios en ámbitos tan diversos como
finanzas, inversión, educación, transporte, redes de comunicación, planificación, logística,
producción, etc., (Biethahn, 1995).
Se puede hacer una clasificación de los diferentes algoritmos evolutivos según el año de su
primera publicación.
Así, los primeros desarrollos fueron realizados por Fogel (1966) y se denominaron
programación evolutiva. El proceso general es el siguiente: En primer lugar se generan las N
soluciones de la primera población, después de la inicialización, todos los individuos se
recombinan asexualmente formando N nuevas soluciones, utilizando únicamente el proceso de
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 4 mutación, es decir, no hay intercambio de material genético puesto que en este caso no existe el
concepto de padres. Las formas de mutación son muy flexibles y pueden producir
perturbaciones similares a las producidas por la recombinación sexual.
Las estrategias evolutivas fueron desarrolladas por Rechenberg (1973). Originalmente
constaban de sistemas de selección y mutación sobre una población de un único individuo,
denominándose (1+1, ES), donde el individuo de la población siguiente era el mejor de entre el
padre y el hijo. Posteriormente Schwefel introdujo la recombinación sexual y poblaciones con
más de un individuo, μ>1. El número de hijos creados será λ, con λ>μ. La supervivencia
seleccionaba a los mejores de:
− La población de hijos, denominado (μ,λ).
− De las poblaciones padres e hijos, denominado (μ+λ).
Posteriormente y desde 1975, los algoritmos genéticos han sido muy importantes dentro de las
técnicas evolutivas. Tradicionalmente han utilizado codificaciones independientes al problema,
como son las cadenas binarias, sin embargo, muchas de las aplicaciones recientes se han
centrado en otras representaciones tales como grafos, listas ordenadas, números reales, etc. Para
la formación de los descendientes la reproducción es sexual, es decir, hay intercambio del
material genético de los padres mediante los operadores genéticos, cruce y mutación. En este
caso, el operador mutación se considera un operador de segundo orden frente al operador cruce,
como principal diferencia con las técnicas evolutivas anteriores.
Se puede decir que los algoritmos genéticos son métodos metaheurísticos poco convencionales.
Esto es debido a que trabajan con un conjunto de soluciones al mismo tiempo, imitando los
procesos que se llevan a cabo en la evolución natural de las especies. Esta es la principal
diferencia con otras metaheurísticas tales como la búsqueda tabu, el recocido simulado, etc.
donde una única solución es modificada hasta alcanzar un cierto criterio de parada.
En los últimos años se están desarrollando las técnicas de programación genética. En este caso
la representación es más compleja el ser estructuras jerarquizadas y de tamaño variable (Koza,
1993). La población está formada por cientos o miles de dichas estructuras que son unidos por
operadores apropiados pretendiéndose encontrar aquella combinación mejor adaptada a un
determinado problema.
Los algoritmos genéticos es el campo de los algoritmos evolutivos que ha tenido un mayor
desarrollo. Prueba de ello es el gran número de publicaciones existentes en revistas de gran
prestigio como, por ejemplo, Management Science, Operational Research, etc., y por la
creación de grandes conferencias internacionales bianuales: International Conference on
Genetic Algorithms, Parallel Problem Solving from Nature, Foundations of Genetic Algorithms.
4. Conceptos básicos en biología y en algoritmos genéticos En esta sección explicamos el significado que tienen en los algoritmos genéticos una serie de
conceptos clave en biología. En la tabla 1 se definen una serie de términos con los que conviene
estar familiarizados: genotipo, fenotipo, cromosoma, etc. Mediante el sencillo problema del
vendedor o viajante de comercio (TSP1) vamos a ir aclarando cada uno de estos conceptos.
El problema del viajante de comercio consiste resolver el orden en el que una persona que debe
visitar todas y cada una de las ciudades definidas y sólo una vez, con el objetivo de minimizar la
distancia recorrida. La definición del problema incluye una matriz de distancias entre las
ciudades (ver tabla 2).
- La solución es el recorrido que debe hacer el comercial.
1
TSP: Travelling Salesman Problem
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 5 - El cromosoma será una cadena de longitud 5 y formada por números enteros: [-, -, -, -, -].
- El genotipo será una permutación de 5 números enteros. Una posible solución es la
cadena [1 2 3 4 5], que indicará que el orden en el que el comercial debe visitar las
ciudades es: en primer lugar la ciudad codificada por el número 1, después por la 2, y así
sucesivamente hasta llegar a la ciudad 5, terminando el viaje volviendo a la ciudad de
partida. Sin embargo, esta forma de dar la solución no nos servirá de nada si previamente
no hemos establecido la norma de codificación. En nuestro caso, Barcelona será
codificada por el número 1, Granada por el 2, Madrid por el 3, Sevilla por el 4, y
Valladolid por el 5.
- El fenotipo será la ruta específica, [Barcelona, Granada, Madrid, Sevilla, Valladolid,
Barcelona], esto es, la solución decodificada.
- Los Genes serán cada uno de los números enteros que forman la cadena.
- Los Loci serán las posiciones de la cadena y que darán el orden relativo, la primera
posición está ocupada por el número 1 (Barcelona), la posición 2 por el número 2
(Granada), lo que nos indica que después de visitar Barcelona el comercial debe ir hacia
la ciudad de Granada.
Tabla 1. Paralelismo entre los términos biológicos y los algoritmos evolutivos
Término
Descripción
Ser vivo
Ente natural formado por cromosomas
Solución
Elemento básico del algoritmo
Conjunto de factores heredados en un individuo
Genotipo
Solución codificada del problema a resolver
La dependencia con el ambiente en que el genotipo funciona
en la práctica
Fenotipo
La solución decodificada y que adquiere significado cuando
se utiliza conjunta con los datos del problema
Estructura que transporta los factores hereditarios o genes
Cromosoma Cadena de caracteres donde se almacena la solución
codificada
Gen
Unidad de recombinación: el segmento más corto en que el
cromosoma puede dividirse
Número real o binario cuya unión forma el cromosoma
Loci
Cada una de las posiciones que puede ocupar un gen dentro
del cromosoma
Cada una de las posiciones en la cadena de codificación
Generación
Iteración
Cada uno de los reemplazos que se origina cuando se tiene
descendientes.
Cada uno de los pasos en que se divide la búsqueda
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 6 Tabla 2. Datos de distancias para un ejemplo del TSP
Barcelona
Granada
Madrid
Sevilla
Barcelona
Granada
868
Madrid
621
434
Sevilla
1046
256
538
Valladolid
663
627
193
589
La forma de codificar las soluciones de un problema es crítica para un correcto funcionamiento
de los algoritmos, como se verá más adelante. Aunque lo más importante es que todas las
posibles soluciones al problema (espacio de búsqueda) tengan una posible codificación. Para
nuestro ejemplo, el número de posibles soluciones en n!, donde n representa al número total de
ciudades por visitar, es decir, 5! = 120 diferentes circuitos. La codificación utilizada cumple esta
condición.
5. Estructura de los algoritmos genéticos El pseudo código de un algoritmo genético es el siguientes:.
1. Elegir la población inicial de individuos
2. Evaluar la función objetivo (fitness) de cada individuo de la población
3. Repetir en esta población hasta terminar (límite de tiempo, alcanzar un valor en la función
objetivo, etc.)
1. Seleccionar los mejores individuos para la reproducción (padres).
2. Crear nuevos individuos (hijos) a través de los operadores cruce y mutación.
3. Evaluar la función objetivo en los hijos.
4. Reemplazar los padres por los hijos
En la figura 1 se muestra el diagrama de flujo simplificado con las partes más importantes de un
algoritmo genético clásico: selección, reproducción y sustitución. Aparte de estos procesos, que
pertenecen al núcleo principal y exclusivo de los algoritmos genéticos, existen otros, de igual
importancia, que sirven de apoyo a los anteriores: descripción del problema a resolver,
codificación de sus soluciones e inicialización. Selección y codificación son los puntos críticos
de un algoritmo genético.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 7 Población inicial
Generación t
Generación t+1
Selección
Población de Padres
Reproducción
Descendientes
Sustitución
Figura 1. Estructura general de un algoritmo genético
5.1 Descripción del problema a resolver
El primer proceso que debemos realizar es la formulación completa del problema a resolver: la
función o funciones objetivo, las restricciones a las que está sujeto el problema y que
restringirán zonas del espacio de búsqueda, etc.
En la mayoría de los problemas de optimización existe una función natural que determina el
valor de una solución. Dicha función puede utilizarse directamente como función de calidad
(fitness function) del algoritmo genético si cumple que todos los valores que asigna a las
soluciones son positivos y la función está definida de tal forma que el problema sea de
maximización.
Si la función natural no verifica alguna de estas características, tendremos que adaptarla para su
uso (Goldberg, 1989). Si la función está definida de forma que el problema es de minimización,
existen técnicas para su transformación a un problema de maximización.
Por ejemplo, dada una función de costes g(x), una función de beneficio f(x) puede definirse
según la siguiente ecuación:
⎧ Cmax − g ( x )
f(x)= ⎨
0
⎩
Cuando g( x ) < Cmax
Resto de casos
,
siendo Cmax un coeficiente de entrada cuyo valor es el mayor valor observado hasta el
momento o el mayor valor observado en las últimas k generaciones.
Cuando existe la posibilidad de valores negativos, la transformación de la función podría ser de
la siguiente forma:
⎧u( x ) + Cmin
f(x)= ⎨
0
⎩
Cuando
u( x ) + Cmin > 0
,
Resto de casos
siendo Cmin un coeficiente de entrada cuyo valor es el valor absoluto del peor valor de u(x)
encontrado hasta el momento o el valor absoluto del peor valor de u(x) encontrado en las
ultimas k generaciones., y u(x) es la función natural.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 8 5.2 Codificación de las soluciones
Existen distintos tipos de codificaciones de las soluciones: binarias, simbólicas, permutacional,
(también conocida como codificación simbólica basada en el orden2), la permutacional con
repetición y la real. La codificación depende del problema que se quiere resolver. Según Fang
(1994) las normas básicas a tener en cuenta para el diseño de una codificación óptima se pueden
resumir en:
1. Cada solución del problema tendrá su correspondiente cadena codificada.
2. Para cada cadena codificada producida mediante los operadores genéticos existirá su
correspondiente solución decodificada.
3. Codificación y solución se corresponderán una a una, es decir no habrá redundancia.
4. La codificación deberá permitir heredar de padres a hijos las características inherentes a
los primeros.
5.2.1 Codificación binaria
Tradicionalmente la codificación binaria ha sido la más utilizada por la facilidad que ofrece el
desarrollo de programas informáticos y porque permite la aplicación de sencillos operadores
genéticos. Además, la mayor parte de la teoría subyacente en los algoritmos genéticos está
desarrollada para la codificación binaria, aunque existen ampliaciones a otros tipos de
representaciones.
Dentro de la codificación mediante números binarios cabe destacar el código Gray, utilizado en
lugar del binario porque la separación que existe en el espacio codificado entre soluciones
adyacentes en el espacio decodificado siempre es 1, como se puede observar en la tabla 3,
utilizando la distancia hamming como medida de separación. Para las soluciones adyacentes 2 y
3, la distancia es 2 en código binario, mientras que en el código Gray es 1. Esto tiene
importancia a la hora de aplicar los operadores genéticos, ya que pequeñas modificaciones en la
codificación pueden provocar grandes movimientos en el espacio de soluciones decodificadas.
Un inconveniente de la codificación binaria es su falta de adaptabilidad a muchos tipos de
problemas. Esto no quiere decir que no se puedan codificar de esta forma, sino que el esfuerzo
que se debe hacer para ello disminuye la eficiencia del algoritmo. Por ello existen otros tipos de
codificaciones que aprovechan mejor las características propias de cada tipo de problema,
llamadas codificaciones simbólicas.
Tabla 3. Tipos de codificación binaria
1
2
3
4
Código Binario
00
01
10
11
Código Gray
00
01
11
10
5.2.2 Codificación simbólica
La idea básica de la codificación simbólica se debe a Syswerda (1991a) y ha permitido un
mayor grado de libertad para la codificación de problemas. Pero, tal y como aseguró Davis
2
En Escalada-Imaz y Torres-Velázquez (1997) se encuentra un amplio estudio de los algoritmos genéticos
desarrollados para representaciones basadas en orden.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 9 (1991), hay que tener en cuenta que esta decisión es un factor crítico a la hora de diseñar un
buen algoritmo genético, hasta el punto que una decisión inapropiada puede llevarnos al fracaso.
5.2.3 Codificación permutacional
La codificación permutacional ya la hemos visto con el ejemplo del viajante de comercio,
donde a cada ciudad que debe visitar se le asignaba un número entero. Una posible solución se
obtiene mediante una permutación de los n números enteros que tenemos, y el espacio de
búsqueda estará formado por n!, siendo n las ciudades del problema. Esta codificación también
sirve para problemas de programación de operaciones (scheduling) del tipo flow shop
permutacional. En este caso, cada número entero representa a uno de los trabajos que debe ser
secuenciados, y la permutación es el orden en que los trabajos serán realizados sobre las
máquinas o centro de trabajo.
5.2.4 Codificación permutacional con repetición
La codificación permutacional con repetición consiste en números enteros que se repiten tantas
veces como el problema lo necesite. Se utiliza, entre otros problemas, para la programación de
operaciones del tipo flow shop genérico y el job shop. Donde cada trabajo (representado por un
número entero) se divide en operaciones que deben ser realizadas en máquinas o centros de
trabajo diferentes y en un orden dado. El número de operaciones de cada trabajo nos dará las
veces que el número entero que lo representa debe repetirse en la cadena de codificación. Por
ejemplo, una solución codificada para un problema de 3 trabajos con 3 operaciones cada uno de
ellos será: [1 3 1 2 2 3 3 1 2], tres números enteros y cada uno de ellos tres veces repetido. La
decodificación tendrá en cuenta el orden de las repeticiones dentro de la cadena. Así la primera
operación a secuenciar será la primera de la pieza 1, después secuenciaremos la primera de la
pieza 3, a continuación la segunda operación de la pieza 1, la primera de la pieza 2, la segunda
de la 2, etc.
5.2.5 Codificación real
La codificación real utiliza número reales y suele ser una codificación directa, es decir donde el
valor de la solución es directamente el valor de en la cadena.
5.3 Inicialización
Según Michalewicz (1995) la forma más eficaz para obtener los individuos (cadenas
codificadas) que formarán parte de la primera iteración es la generación aleatoria. De esta
forma, se podrá obtener una población inicial uniformemente distribuida por el espacio de
búsqueda mejorando la exploración. Sin embargo, la calidad media de las soluciones generadas
de esta forma será baja necesitando más pasos (iteraciones o generaciones) para ser mejoradas.
Otra posible forma de inicialización, será utilizar una o varias heurísticas más sencillas capaces
de encontrar diferentes soluciones que pasarán a ser parte de la población inicial. El problema
que nos encontramos con este método es que podemos generar soluciones en zonas muy
determinadas del espacio de búsqueda perdiendo poder exploratorio. Por otro lado, el beneficio
será que ya partimos de soluciones de algún modo mejoradas.
Naturalmente, esta capacidad de exploración inicial dependerá de la relación entre el número de
soluciones potenciales totales y el número de individuos que formarán parte de la población. Por
lo tanto, siguiendo este razonamiento, cuanto menor sea este ratio, mayor será el poder
exploratorio del algoritmo. Pero por otra parte, cuanto mayor sea el número de soluciones con la
que se trabaja menor será la velocidad de búsqueda, retrasando la convergencia del proceso y
necesitando un mayor número de generaciones, iteraciones, lo que provocará unas mayores
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 10 necesidades computacionales y temporales. Por tanto, esta decisión será un compromiso entre
exploración y explotación del espacio de búsqueda.
5.4 Selección
En la naturaleza, la selección sirve para determinar qué individuos sobreviven y se reproducen y
cuales desaparecerán por una incorrecta adaptación al entorno. Este proceso es imitado
mediante los métodos de selección. El proceso de selección es el que ha despertado un mayor
interés a juzgar por la gran cantidad de estudios y métodos desarrollados.
Los métodos de selección, basándose en la calidad de las soluciones (adaptación de los
individuos), seleccionan a los mejores individuos (soluciones) para que se reproduzcan,
formado parte de la población de padres. Por el contrario, los peores individuos (soluciones) no
serán seleccionados y desaparecerán de la búsqueda. Este proceso permite que una misma
solución pase varias copias a la población de padres. Se trata, por tanto, de un muestreo sin
sustitución.
Un concepto de gran importancia es la presión selectiva, que indica el grado con el que las
mejores soluciones son favorecidas para formar parte de la población padre. A mayor presión
selectiva, más se favorecerá a los mejores individuos y, por lo tanto, tendrán un mayor número
de copias en la población padre. Esta presión dirige al algoritmo hacia poblaciones cada vez
mejor adaptadas al problema.
El ratio de convergencia de un algoritmo genético está en gran parte determinado por la
magnitud de la presión selectiva. Con una alta presión selectiva se obtiene un mayor ratio de
convergencia, con el inconveniente de aumentar la probabilidad de convergencia prematura
hacia un subóptimo. Y por el contrario, si la presión es demasiado baja, el ratio de convergencia
disminuirá y el algoritmo tardará más tiempo en encontrar la solución óptima, si es que la
encuentra. En el caso más extremo, donde la presión selectiva es nula, es decir, todos los
individuos tienen la misma probabilidad de sobrevivir, se producirá una búsqueda aleatoria por
todo el espacio de soluciones.
Los métodos existentes en la actualidad se dividen en tres, los basados en la calidad, en el orden
y los que realizan la selección mediante torneos o competiciones. A continuación y basándose
en los trabajos de Goldberg (1989) y Michalewicz (1995), se describirán los principales
métodos de selección:
5.4.1 Métodos proporcionales a la calidad.
En este caso, la selección de padres se realiza teniendo en cuenta la magnitud de la calidad de
las soluciones respecto de la del resto de la población. Por esto, superindividuos, es decir, los
que tienen una calidad bastante superior a la del resto de la población, rápidamente coparán los
puestos de la población de padres con un gran número de copias. El resultado es una pérdida de
la diversidad en la población y una prematura convergencia. Dentro de esta categoría cabe
destacar:
− Selección proporcional o método de la ruleta, desarrollado en un principio por Holland
en 1975, y ampliamente analizado por otros autores como Brindle en su Tesis Doctoral en
1981 y Goldberg (1989). La probabilidad de selección pi, para el individuo i está dada por
la siguiente ecuación:
pi =
fi
n
∑ fj
j =1
siendo fi la calidad del individuo i, y n el tamaño de la población.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 11 La representación gráfica de este sistema es una ruleta dividida en n áreas cada una de
ellas proporcional a la calidad de cada individuo de la población. La selección consistirá
rotar n veces la ruleta y la zona donde caiga el marcador indicará el individuo
seleccionado para reproducirse (Figura 2).
1
2
3
10
4
5
9
8
6
7
Figura 2. Método de selección proporcional a la calidad
De esta forma, los individuos con mayor calidad relativa tendrán mayores probabilidades
de ser seleccionados para la población de padres, y además más de una vez. Por lo que se
presenta el problema de superindividuos y, por lo tanto, de convergencia prematura. Para
evitarlo se desarrollaron los siguientes métodos.
− Selección estocástica por restos, que asigna directamente a cada individuo un número de
copias en la población de padres igual a [pi × n], redondeando al menor entero más
cercano, y con los restos, se aplica el método proporcional para obtener las copias
vacantes. También fue desarrollado por Brindle, en cuyo estudió consideró las
posibilidades de aceptar individuos repetidos o realizar un muestreo sin sustitución.
− Selección estocástica universal, similar al método de la ruleta, pero en lugar de tener una
ruleta con un único marcador, se tienen n marcadores igualmente distanciados (Figura 3),
y mediante una tirada se selecciona a los n individuos.
1
2
3
10
4
5
9
8
7
6
Figura 3. Método de selección estocástico universal
La transcripción al lenguaje matemático parte de un número aleatorio r del que se
obtienen, mediante la siguiente ecuación los rj necesarios para compararlos con las
probabilidades acumuladas, pi, de cada individuo. Fue desarrollado por Baker en 1987.
rj =
r + j −1
k
j = 1,…, n
El efecto de estos tipos de selección depende en gran medida del rango de la calidad de la
población. Existe, por ello, la posibilidad de tener que modificar dichos rangos, modificando la
función de calidad. Goldberg (1989) desarrolló diferentes formas de escalar la calidad.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 12 5.4.2 Métodos basados en el orden o métodos de ordenación.
Estos métodos seleccionan a los individuos no en función de la magnitud absoluta de su calidad,
sino de la posición que ocupan en una lista ordenada cuando se les clasifica según ella. Esto
origina que la presión selectiva sea independiente de los rangos en los que se mueve la calidad3,
y que el número esperado de hijos dependa únicamente de la posición, eliminando así el efecto
pernicioso de los superindividuos.
- Selección por ordenación lineal, propuesto por Baker (1985). Donde la probabilidad para
el individuo situado en la posición i-ésima de una clasificación realizada según el orden
decreciente de calidades será:
p( i ) = q − ( i − 1 ) × r
n −1 1
q=r×
+
2
n
⎡
2 ⎤
r ∈ ⎢0 ,
⎥
⎣ n( n − 1 ) ⎦
siendo n el tamaño de la población y r el parámetro que permite controlar la presión
selectiva. Un r=0 indicará presión selectiva nula, ya que todos los individuos tendrán la
misma probabilidad de ser seleccionados. Para el máximo valor de r (presión selectiva
máxima), la probabilidad de cada individuo será:
p( i ) =
2 ⎡
i −1⎤
× ⎢1 −
n ⎣ n − 1⎥⎦
Se comprueba que el individuo de mayor calidad, es decir, el primero en la clasificación,
tiene un valor esperado de hijos de 2, mientras que para el peor individuo, es 0.
- Selección por ordenación no lineal desarrollado por Michalewicz (1995). En este caso,
la diferencia entre las probabilidades de selección para individuos situados en posiciones
adyacentes en la clasificación, no es igual a lo largo de toda la ordenación. Se rige por la
ecuación:
p( i ) = q × ( 1 − q ) i −1
q ∈(0,1)
donde q es el parámetro que permite controlar la presión selectiva. Si dicho parámetro
aumenta, la presión aumentará, y por lo tanto la diferencia entre las probabilidades de los
individuos adyacentes aumentará según disminuyen sus posiciones dentro de la
clasificación. De esta forma estaremos dando mayor peso (importancia) a los individuos
mejor clasificados, existiendo apenas diferencia entre los peores.
3
Whitley (Whitley, 1989) analiza varias causas por las que el método de ordenación mejora a los demás y compara
su comportamiento frente al teorema del esquema.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 13 5.4.3 Métodos basados en competiciones o torneos.
Fueron inicialmente desarrollados por Brindle en 1981. En este caso, en cada paso se selecciona
el nuevo padre mediante un torneo que se establece entre z individuos seleccionados de forma
aleatoria, siendo éste el de mayor calidad. Es un muestreo con repetición. El proceso se repetirá
hasta que la población de padres esté completa. Inicialmente Brindle utilizó un z = 2 (torneo
binario), que es el de menor presión selectiva. Para aumentar dicha aumentaremos el valor de z,
es decir, aumentar los individuos que compiten por cada puesto.
Horn (Horn et al., 1994) recoge modificaciones a los métodos de torneo especialmente
diseñados para los problemas multimodales4 y multiobjetivo5, donde se necesita controlar la
cantidad de individuos a los que se permite pasar a la siguiente población dependiendo de su
distribución en el espacio de búsqueda. Es decir, si se tiene una gran cantidad de individuos o
soluciones en determinadas partes del espacio de búsqueda, no se permiten más individuos en
esas zonas. Así se pretende que el algoritmo busque de forma más amplia, limitando la
posibilidad de que toda la población caiga en una única zona de alta calidad.
Para problemas multimodales, destacan la selección por torneo de Boltzmann6 y la selección por
torneo con actualización continua7. Para problemas multiobjetivo se utilizan torneos que tienen
en cuenta la superficie de Pareto.
Al elegir el tipo de selección a utilizar, hay que tener en cuenta el tipo de problema a estudiar y
algunas características importantes de cada uno de estos métodos, como por ejemplo las
estudiadas por De la Maza y Tidor (1993). Estos autores analizan dos aspectos importantes de
los métodos de selección, como son su comportamiento frente a modificaciones en la función de
calidad, en cuanto a la escala y a la traslación de valores.
Es importante estudiar cómo afectan las modificaciones de la escala en los métodos, ya que
según converge el método en las últimas etapas, la escala de calidad de la población se reduce,
de forma que la presión selectiva se modifica.
Asimismo, la traslación de los valores de la función de calidad es también importante, puesto
que en algunas ocasiones hace falta modificar la función objetivo de un problema de
optimización para que sea válido como función de calidad del algoritmo.
Como ya hemos visto, una de las modificaciones propuesta por Goldberg (1989) es la suma de
una cantidad, siendo el resultado una traslación de valores, que dependiendo de la magnitud de
dicha cantidad puede hacer que la calidad real del individuo sea despreciable, por lo que el
método no sea capaz de distinguir a los mejores individuos.
Los estudios llevados a cabo por los citados autores, demuestran que los métodos
proporcionales son invariante frente a la escala, pero sí se ven influidos por la traslación de
valores. Por el contrario, los métodos de ordenación y de torneo son invariantes tanto frente a la
escala como a la traslación.
En un nivel más teórico Goldberg y Ded (1991) comparan diferentes características de los
métodos de selección. Sus recomendaciones más relevantes se pueden resumir en:
4
Los problemas multimodales se caracterizan por tener varios óptimos locales y globales, por lo que los métodos
tradicionales de optimización suelen caen atrapados en uno de los muchos óptimos locales obteniéndose bajos
rendimientos. Además, dada las condiciones de trabajo puede ser necesario encontrar más de un óptimo global y de
entre ellos seleccionar el que mejor se adapte a las condiciones reales del problema (Pérez et al., 2001).
5
Los problemas multiobjetivo necesitan de un tratamiento especial para tener en cuenta todos los objetivos al mismo
tiempo. Aunque inicialmente se propuso la idea de obtener una única función objetivo resultante de la suma
ponderada de las funciones objetivo, se ha demostrado que el comportamiento de la búsqueda depende del rango en
que se mueva cada objetivo. Los métodos basados en poblaciones están especialmente adaptados a este tipo de
problemas ya que se puede establecer la frontera de Pareto, y trabajar sobre ella (Pérez et al. 2000).
6
Mahfound (1994) realizó un análisis bastante completo del método.
7
Un amplio estudio con diferentes modalidades es el realizado por Oei et al (1991).
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 14 - Utilizar en las primeras generaciones bajos ratios de presión selectiva para prevenir la
convergencia prematura.
- Por el contrario, según evoluciona el sistema se deberían utilizar ratios cada vez mayores
junto con algún operador mutación, para redescubrir los bloques constitutivos8 perdidos
durante el proceso.
- Preservar la diversidad tanto espacial como temporal mediante métodos de selección que
permitan la especialización.
- Eliminar el ruido en la evaluación y muestreo de individuos mediante la competición.
Las dos primeras conclusiones comparten la idea en la que se basan los modelos del recocido
simulado, al principio una alta temperatura para que cualquier solución pueda ser aceptada (fase
de alta exploración), y después una disminución lenta para que cada vez sea más difícil aceptar
malas soluciones (fase de explotación). .
También hay estudios que analizan el comportamiento de los sistemas de selección ante
situaciones en las que la función de calidad no es determinista; es decir, en entornos ruidosos
Miller y Goldberg (1997) presentan formas para medir el efecto del ruido dependiendo de su
origen y de su magnitud, y de esta forma poder elegir el método más apropiado.
Aparte de los métodos mencionados, cabe destacar algunas estrategias utilizadas para aumentar
el rendimiento de los algoritmos genéticos relacionadas con el fortalecimiento de los mejores
individuos. El método elitista propuesto por De Jong en 1975, consiste en pasar una copia del
mejor individuo directamente a la siguiente población; de esta forma se previene su posible
desaparición al llevar a cabo la recombinación. Michalewicz (1995) destaca otra posibilidad, la
denominada modelo del valor esperado, donde a cada individuo se le asigna un contador que se
decrementa al sufrir cruce o mutación. Cuando el contador cae hasta cero, ese individuo ya no
está disponible para su selección nunca más. De esta forma eliminamos zonas del espacio de
búsqueda suficientemente analizadas ya.
Otra técnica que permite también mejorar el rendimiento es hibridizar los sistemas de selección,
es decir, en un mismo algoritmo combinar el efecto de varios métodos de selección. De esta
forma Baker (1985) utilizó un umbral máximo de convergencia para activar el método de
ordenación y así disminuir la velocidad de convergencia, y un umbral mínimo para desactivar
este método y continuar con el método proporcional a la calidad por defecto.
5.5 Operadores genéticos: Reproducción
En los algoritmos genéticos, la reproducción se realiza, en primer lugar, intercambiando el
material genético de los dos padres mediante un operador cruce apropiado, y después sobre las
dos cadenas que se obtienen se realiza la mutación. El resultado son dos nuevas cadenas con
propiedades de ambos padres y alguna mutación aleatoria.
Por lo tanto, los principales operadores de reproducción son los de cruce y de mutación, que
deben estar adaptados al tipo de codificación seleccionada para resolver el problema. Además,
existe otro tercer tipo de operador llamado de inversión. A continuación mostraremos los
operadores más importantes para algunas codificaciones9.
8
La teoría matemática en la que se basa el funcionamiento de los algoritmos genéticos y que desarrollará en la
sección X.5, tiene como pilar fundamental lo que se han denominado bloques constitutivos, que son segmentos de la
cadena que son especialmente buenos y que dirigen la búsqueda hacia las zonas de mayor calidad.
9
Aunque es imposible una revisión completa de todos los operadores genéticos existentes, Michalewicz
(Michalewicz, 1995) recoge los más importantes.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 5.5.1
15 Operadores Cruce
El operador cruce es el que juega el papel más importante dentro de los operadores genéticos, ya
que permite el intercambio de características de una generación a la siguiente; es decir, el que
hace evolucionar a las especies. Su realización es probabilística, se le asigna una probabilidad
(pc)para que se pueda ejecutar. Su valor depende del tipo de problema, de la representación
utilizada, y de muchos factores más. Inicialmente el valor dado fue del 60% (Goldberg, 1989),
pero han surgido muchos estudios de cómo adaptar estas probabilidades al estado del proceso
genético (Michalewicz, 1995).
Es importante considerar que el operador cruce realiza dos trabajos, los denominados
mecanismo e idea (Jones, 1995).
La idea del cruce se basa en el hecho de que cada uno de los padres seleccionados tiene una
probabilidad mayor que la media de la generación actual, de ofrecer un mejor material genético.
La razón principal de mantener un conjunto de soluciones y utilizar el cruce es formar cada vez
mejores individuos y combinarlos a su vez para conseguir otros nuevos aún mejores: cumplir el
teorema de los bloques constitutivos. Si la idea del cruce así definida no se desarrolla en el
algoritmo elegido, entonces no merece la pena gastar recursos en mantener una población de
soluciones.
El mecanismo del cruce es el proceso por el que se lleva a cabo la idea. Es decir, la forma del
intercambio, la aplicación literal de los métodos para la implementación de cada operador cruce
que serán explicados a continuación.
Es importante separar estos dos conceptos del cruce ya que si un algoritmo realiza sólo el
mecanismo, el resultado final es tal que no importa entonces que los padres seleccionados sean
los mejores, al no aprovecharse sus buenas características. Se puede hablar de macromutación
de los padres: cambio de la mayor parte del material genético de cada uno de los padres por otro
que, en principio, no les aporta beneficios, tal y como pasa en las mutaciones.
Existe otro método menos estudiado de producir hijos, pero en cuyo proceso no están
implicados directamente dos padres. Fue desarrollado inicialmente por Syswerda en 1993 y
modificado por Eshelman y Schaffer (1993). Consiste en la creación de los hijos teniendo en
cuenta toda la información que proporciona el total de individuos de la generación actual. Para
crear los nuevos individuos, se observa la frecuencia de los valores existentes en cada posición,
y por medio de dicha frecuencia se van construyendo los hijos de forma estocástica.
Dentro de la gran cantidad de operadores cruce existentes, citaremos los básicos para las
codificaciones: binaria, permutacional y permutacional con repetición.
- Operador con un punto de cruce. Es el operador clásico para la codificación binaria y
del que han surgido los demás. Se genera un número aleatorio que determinará el punto
de corte, o punto de intercambio de los cromosomas, según se muestra en la figura 4.
Padre 1
0 1 1 0 1 0 1 0 0 0 0 1 1 1
Padre 2
1 1 1 0 1 0 0 1 0 1 1 0 0 1
Hijo 1
0 1 1 0 1 0 1 1 0 1 1 0 0 1
Hijo 2
1 1 1 0 1 0 0 0 0 0 0 1 1 1
Figura 4. Operador cruce 1-punto
- Operador con N puntos de cruce. Es una ampliación del anterior. En este caso se
determinan n puntos de cruce para lo que se deberán generar n números aleatorios.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 16 - Operador cruce uniforme. Es la generalización de los operadores anteriores. Cada gen
tiene una probabilidad del 50% de ser intercambiado por el correspondiente del otro
padre, utilizándose para ello una máscara (Figura 5).
Fue desarrollado por primera vez por Ackeley en 1987, y posteriormente Syswerda
(1989) realizó un estudio comparativo entre este operador y los operadores 1-punto y 2puntos. La conclusión fue que el cruce uniforme funciona mejor que los otros dos en
estudio.
Padre 1
0 1 1 0 1 0 1 0 0 0 0 1 1 1
Padre 2
1 1 1 0 1 0 0 1 0 1 1 0 0 1
Máscara
111 11 00 11 11 111 11 00 00 00 00 11 11 00
Hijo 1
0 1 1 0 1 0 1 1 0 1 1 1 1 1
Hijo 2
1 1 1 0 1 0 0 0 0 0 0 0 0 1
Figura 5. Operador cruce uniforme
- Operador cruce ordenado (OX)10. Desarrollado inicialmente por Davis en 1985 para la
codificación permutacional, ha sido uno de los operadores clásicos para este tipo de
representación, siendo ampliamente utilizado en la bibliografía.
Se selecciona de forma aleatoria un segmento de las cadenas que serán las únicas que
permanecerán inalteradas en las cadenas de los hijos. Los números enteros de cada padre
que han quedado fuera son las que se intercambian. Para completar el resto de la cadena
de los hijos, se necesita una cadena auxiliar, para el hijo 1 formada por los genes del
padre 2 y para el hijo 2 formada por los del padre 1, comenzando a rellenarlo con los
números que están a continuación del segundo corte y tomando la cadena como si fuese
circular (Figura 6).
En el ejemplo, la cadena auxiliar correspondiente al hijo 1 será: [ 2 1 3 7 4 5 6 9 8]. Se
tachan los números ya presentes en el hijo 1, ( 4 5 6), para asegurar la formación de hijos
válidos, es decir [2 1 3 7 4 5 6 9 8], y con los restantes se comienza a rellenar al hijo por
su segundo corte. La operación a seguir con el hijo 2 es similar. Para el hijo 2 será [7 8 9
1 2 3 4 5 6].
- Cruce generalizado basado en el orden (GOX)11. Desarrollado por Bierwirth et al.
(1996) para la codificación permutacional con repetición.
10
Order Crossover
11
Generalized Order Crossover.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) Padre 1
1
2
3
4
5
6
7
8
9
Padre 2
7
4
5
6
9
8
2
1
3
Hijo 1
7
9
8
4
5
6
2
1
3
Hijo 2
3
4
5
6
9
8
7
1
2
17 Figura 6. Operador cruce ordenado
Como en el operador anterior, se seleccionan dos posiciones en la cadena mediante dos
números aleatorios que determinan una subcadena en cada padre. La subcadena (3 1 1)
del padre 1 va a pasar sin cambios al hijo 1, el resto de sus posiciones las heredará del
padre 2. Para formar hijos válidos los números enteros del padre 1 que se van a
intercambiar se tachan de la cadena de números enteros del padre 2 que pasan al hijo 1, es
decir el segundo 3, el primer y segundo 1, [2 1 1 3 2 1 2 3 3]. La subcadena del hijo 1 se
insertará detrás del mismo número que en la que estaba en el padre 1, en este caso la
subcadena está detrás del segundo 2, por lo que el hijo 2 será: [ 2 3 2 ( 3 1 1 ) 1 2 3 ].
(Figura 7).
Padre 1
3
2
2
3
1
1
2
3
1
Padre 2
2
1
1
3
2
1
2
3
3
Hijo 1
2
3
2
3
1
1
1
2
3
Hijo 2
2
3
1
1
3
2
1
2
3
Figura 7. Operador cruce generalizado basado en el orden
Estos son sólo algunos de los operadores cruce de los muchos que existen. Como se puede
comprobar, es de gran importancia que estén adaptados a la codificación utilizada para resolver
el problema, puesto que de no ser así se presentaría el problema de la obtención de hijos no
válidos. Como ilustración se aplicará el operador cruce 1-punto a un problema del vendedor que
debe visitar 9 ciudades (Figura 8).
Padre 1
1
2
3
4
5
6
7
8
9
Padre 2
7
4
5
6
9
8
2
1
3
Hijo 1
1
2
3
6
9
8
2
1
3
Hijo 2
7
4
5
4
5
6
7
8
9
Figura 8. Obtención de hijos no válidos por un operador curce incorrecto
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 18 Se obtiene una solución que visitará dos veces las ciudades 1, 2 y 3, y que por el
contrario no visitará las 4, 5 y 7. Por lo tanto son soluciones que no se cumplen las
condiciones del problema.
5.5.2
Operadores Mutación.
Mientras el operador cruce combina aquellas buenas características de los individuos llevando a
cabo la explotación de las áreas beneficiosas detectadas por la selección, el operador mutación
incluye la diversidad en la búsqueda facilitando la exploración de áreas aún no tratadas. Por lo
tanto se puede decir que la principal característica de este operador es permitir que todos los
individuos del espacio de búsqueda tengan una probabilidad de ser explorados mayor de cero.
Además, su funcionamiento permite recuperar características de los individuos que por medio
de la selección y el cruce podrían haber perdido, cayendo en el olvido y que, aún siendo buenas
características, sería imposible recuperar sin la acción del operador mutación.
Existe una gran cantidad de operadores mutación. A continuación, se desarrollan algunos.
- Mutación estándar. Es el operador por excelencia utilizado en la codificación binaria. La
probabilidad de aplicación (pm)s muy baja, para no incluir demasiada diversidad en la
búsqueda y perder de esta forma la dirección de la misma. Según los estudios realizados
por Holland, la probabilidad aceptable sería la comprendida entre 0.1 y 1%. Esta
probabilidad se aplicará bit a bit, a diferencia de los operadores cruce que se refieren a
cada pareja o incluso a otros operadores mutación, generalmente los aplicados sobre
codificaciones no binarias, donde se aplicará sobre cada cadena o individuo.
El proceso es sencillo y consiste en mutar el bit correspondiente según la probabilidad de
mutación asignada (Figura 9).
1 0 1 0 0 0 1 0 1 0 1
1 0 0 0 0 0 1 1 1 0 1
Figura 9. Operador mutación estandar
- Mutación no uniforme. Desarrollado para codificaciones reales. Como demuestra
Michelewicz (1995), el operador mutación estándar actúa de diferente forma en la
codificación binaria que en la codificación real, de tal forma que el operador así diseñado
actúa de una forma mucho más aleatoria para la codificación real que para la binaria,
donde cambiar un bit aleatoriamente no implica producir un valor totalmente aleatorio del
dominio. Para evitar este efecto se diseñó la mutación no uniforme.
Dado un cromosoma formado por m variables, St={v1, v2, v3,..., vk,... ,vm}, cuyo elemento
vk es seleccionado para mutar, el cromosoma resultante es de la forma St+1={v1, v2, v3,...,
v´k,... ,vm}, donde:
⎧v k + Δ(t ,UB − ν k )
⎩ v k + Δ(t ,ν k − LB )
ν ´k = ⎨
si un número aleatorio es 0
si es 1
con UB y LB, el rango superior e inferior respectivamente del dominio de la variable vk.
El valor Δ(t,y) devuelve un valor comprendido entre 0 e y:
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) Δ( t , y ) = y × ( 1 − r
( 1−
t b
)
T
⎧r
⎪
⎪
⎪T
) ⎨
⎪
⎪b
⎪ el
⎩
19 número aleatorio entre 0 y 1
número total de generaciones
gra do de dependencia sobre
número de iteración
Se recomienda b=5. Esto supone que en las generaciones iniciales, el operador mutación
suma una cantidad mayor que en las finales. El objetivo es incentivar la exploración en
las generaciones iniciales y la explotación en las finales, una búsqueda intensiva, más
localizada.
La adaptación del método al caso binario es sencilla. Se tiene un cromosoma binario de
tal forma que el bit que muta está dado por ∇(t,n):
⎧ ⎣Δ( t , n )⎦
⎪
∇( t , n ) = ⎨
⎪ Δ( t , n )
⎤
⎩⎡
si un número aleatorio es 0
si es 1
El símbolo ⎡x⎤ indica que se busca al entero mayor más cercano a x, y ⎣x⎦ el entero menor
más cercano. En este caso, asignando al parámetro b el valor 1.5, se busca que en las
primeras generaciones muten los bits más significativos de la cadena para aumentar la
capacidad exploratoria del algoritmo, mientras que en las últimas etapas se mutarán los
menos significativos para dar más importancia a la búsqueda local.
- Mutación basada en el orden (OBM)12. Este operador está diseñado para que pueda
trabajar tanto con codificaciones permutacionales como con las permutacionales con
repetición. Consiste en el intercambio de los valores de dos posiciones seleccionadas
aleatoriamente (Figura 10).
3
2
2
3 1
1
2
3
1
3
2
3
3 1
1
2
2
1
Figura 10. Operador mutación OBM (codificación permutacional con repetición)
- Mutación por permutación de un subconjunto (SSM13). Desarrollado por Davis (Davis,
1991) para la codificación permutacional, pero que es directamente aplicable también a la
permutacional con repetición. Se seleccionan dos posiciones de la cadena correspondiente
al individuo que tiene que mutar, y los valores comprendidos entre ellas se permutan de
forma aleatoria, dejando el resto del cromosoma igual (Figura 11):
1 2 4 6 5 3 7 9 8
1 2 4 6 7 5 3 9 8
Figura 11. Operador mutación SSM (codificación permutacional)
12
Order Based Mutation.
13
Scramble Sublist Mutation.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 20 1. Operador Inversión.
En algunas ocasiones, como es el caso de problemas de engaño14 en la codificación utilizada, se
recomienda el uso de otro operador, denominado operador inversión. Su proceso es sencillo
pero hay que tener en cuenta que es un operador que afecta a la codificación, no al contenido de
la cadena. El proceso se presenta en la Figura 12, donde se muestra un cromosoma binario y
además la posición de cada bit situado encima del cromosoma. Se trata de una representación
extendida de la solución donde a parte de dar la información para la calidad, se da información
necesaria para su decodificación.
Se seleccionan dos puntos en el cromosoma y las posiciones situadas entre los puntos
seleccionados son invertidas. La probabilidad recomendada para la aplicación de este operador
es del 75%.
1
2
3
4
5
6
7
8
0
1
1
1
0
1
0
1
1
2
6
5
4
3
7
8
0
1
1
0
1
1
0
1
Figura 12. Operador inversión
La calidad del cromosoma sigue siendo la misma, ya que lo único que se invierte son las
posiciones ocupadas por los valores. En el ejemplo anterior se ha mostrado el caso binario, pero
es aplicable a cualquier codificación. Goldberg (1989) y Michalewicz (1995) presentan estudios
sobre este operador y posibles modificaciones en su utilización para mejorar su rendimiento.
Goldberg (1989) realizó la aplicación del operador inversión de dos formas; continua, donde
todos los individuos tienen la misma probabilidad, o colectiva, donde la población total se
divide en dos subpoblaciones aplicándose la inversión sólo a una de ellas y con los mismos
puntos de inversión, de forma que se evita la proliferación de subpoblaciones que no interactuan
entre sí.
Hemos visto que los operadores genéticos se aplican según unas probabilidades (pc y pm). Si
durante el proceso evolutivo una pareja no debe pasar por el operador cruce, directamente
pasarán a la población de hijos sin sufrir ningún tipo de modificación, tampoco se aplicará la
mutación.
5.6 Sustitución
En este punto destacamos que existen dos tipos diferentes de algoritmos genéticos según sea el
proceso de la reproducción y que afectará a la forma de aplicar la sustitución.
- Algoritmos genético generacionales. Donde de la población inicial formada por N
individuos se obtienen N padres que son recombinados mediante los operadores genéticos
apropiados para dar lugar a N hijos. Después, estos N hijos sustituirán directamente a la
población inicial siendo así la población de partida de la siguiente generación cerrando el
ciclo.
- Algoritmos genéticos de creación continua. En esta técnica se seleccionan dos individuos
para obtener dos hijos, siendo incorporados a la población mediante la sustitución de uno
o dos individuos. La sustitución puede ser:
14
Se puede definir engaño (deception) como la característica que tiene la codificación utilizada para que los bloques
constitutivos proporcionen una información errónea al proceso, desviándolo por tanto de la dirección hacia las zonas
de óptimos. Para más información consultar (Whitley, 1991); (Goldberg et al., 1991) y (Forrest y Mitchell, 1993).
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 21 1. Totalmente aleatoria. Todos tienen la misma probabilidad.
2. Seleccionando directamente al peor o peores individuos.
3. Mediante técnicas de clasificación u ordenación.
Una modificación destacable de esta técnica se denomina creación continua sin duplicados
desarrollada por Whitley (1989b) para el programa GENITOR, y por Syswerda (1989), cuya
principal característica es que evitan trabajar con individuos duplicados al descartar hijos ya
presentes en la población. El principal beneficio de esta técnica frente a las convencionales, es
el uso más eficiente de la población al evaluar sólo individuos diferentes. El inconveniente más
importante es el aumento de tiempo del proceso por la identificación y eliminación de copias.
La principal diferencia entre los algoritmos genéticos generacionales y los de creación continua
es que cuando se crea un buen individuo, éste estará disponible para el proceso inmediatamente,
mientras que en el reemplazo generacional hay que esperar a la siguiente generación.
En los estudios que llevó a cabo De Jong en 1975, demostró que el modelo con G=1, es decir el
generacional, era mejor para los problemas de optimización.
Por último destacar el proceso elitista ampliamente utilizados en los algoritmos genéticos
generacionales. Que este método cuando se ha formado ya la población de hijos que será la
población de partida de la siguiente generación se elimina al peor individuo y en su lugar pasa
directamente al mejor individuo de la población inicial de la generación anterior. De esta forma,
el proceso tendrá siempre una copia, al menos, de la mejor solución encontrada en cada
momento, por si por el efecto de la selección y de los operadores genéticos, ésta se perdiera.
6. ¿Por qué funcionan los algoritmos genéticos? En esta sección se describirán los fundamentos matemáticos de los algoritmos genéticos,
que permitirán comprobar su potencia real y ayudarán a entender cómo funcionan y el por qué
de las modificaciones que se deben hacer para que los algoritmos genéticos se puedan adaptar a
cada tipo de problema. Para los desarrollos matemáticos siguientes se ha supuesto un algoritmo
genético generacional con representación binaria, operador de un punto de cruce y mutación
estándar.
6.1. El teorema fundamental de los algoritmos genéticos El teorema fundamental o teorema del esquema está basado en el concepto del mismo nombre.
La notación normalmente utilizada representa un esquema como un cromosoma construido a
partir de ceros, unos y el símbolo de comodín #, que indica que su valor puede ser 0 ó 1. Por
ejemplo, el cromosoma # 0 1 1 # 0 indica que tiene cuatro posiciones cuyos valores son fijos
y otras dos variables.
Un esquema representa a un conjunto de cromosomas que tienen una serie de características
comunes entre ellos, las posiciones fijas. De esta forma, el esquema anterior representa a los
siguientes cromosomas:
Esquema
# 0 1 1 # 0
Cromosoma
0 0 1 1 0 0
“
1 0 1 1 0 0
“
0 0 1 1 1 0
1 0 1 1 1 0
“
n
Es decir, un esquema representa a 2 cromosomas, en el alfabeto binario. Para otros alfabetos
será cn, donde c es la cardinalidad del alfabeto y n el número de comodines que hay en el
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 22 esquema. Por otro lado, el número de diferentes esquemas de longitud k que existen es (c+1)k,
ya que el lenguaje en el que se basa está formado por los símbolos propios del alfabeto c y el
comodín #. Así los posibles esquemas presentes en un cromosoma de longitud 2, serán:
0 0
0 1
0 #
# 0
1 1
1 0
1 #
# 1
# #
k
En cambio, un cromosoma de longitud k estará representado por 2 diferentes esquemas. Por
ejemplo, el cromosoma 0 0 1, pertenece a los esquemas siguientes:
0 0 #
0 # 1
# 0 1
0 # #
# 0 #
# # 1
0 0 1
# # #
Otros conceptos necesarios para el desarrollo del teorema es el de orden de un esquema y su
longitud. El orden de un esquema S, conocido como o( S ), es el número de posiciones fijas en
el esquema, así # 0 1 1 # 0 tiene un orden de 4. La longitud de un esquema S, representado
por δ( S ), es la distancia entre la primera y última posición fija, por ello los esquemas con una
única posición fija tienen la longitud cero. Por ejemplo:
o(S1) = 4 y δ(S1) = (6-2) = 4
Esquema S1
# 0 1 1 # 0
Esquema S2
1 1 1 0 1 # # 0 0 1 o(S2) = 8 y δ(S2) = (10-1) = 9
Por m(H, t) se entiende la frecuencia del esquema H en la generación t; en otras palabras, el
número de veces que aparece el esquema H en la generación t. Dicha frecuencia para la
generación (t + 1) cambiará bajo los efectos de la selección, reproducción y de los operadores
genéticos.
Otra propiedad de un esquema es su calidad media representada por eval(H,t)15, que da la
calidad media de todos los cromosomas representados por ese esquema y que están presentes en
la generación t. Supuesto que existen p cromosomas pertenecientes al esquema H, la calidad
media estará representado por:
p
fj
j =1
p
eval( H , t ) = ∑
El primer paso de un algoritmo es la selección. Se considerará una selección proporcional a la
calidad, es decir, durante la selección un cromosoma es copiado en la población padre de
acuerdo a su calidad. Por tanto, en la siguiente generación se espera tener m(H, t+1)
representaciones del esquema H:
m( H , t + 1 ) = m( H , t )*
eval( H , t )
N
∑ fi
*N
i =1
m( H , t + 1 ) = m( H , t )*
eval( H , t )
f
siendo N el tamaño de la población, ya que en la selección proporcional el valor esperado de
copias de un cromosoma es igual a la probabilidad de ser seleccionado por el número de padres
que se elijan, al estar en el caso de reemplazo generacional el número de padres es N.
La ecuación anterior indica que el número de esquemas crece o disminuye según sea la calidad
del esquema respecto a la calidad media de la población. Si la calidad es superior a la media, el
número de copias será mayor que 1 y, por tanto, la cantidad de esquemas del tipo H crecerá. Al
contrario, si la calidad es inferior a la media, entonces el número de esquemas decrecerá. Esto se
puede entender mejor si representamos la frecuencia del esquema en la generación t+1, respecto
al ratio ε:
15
Siguiendo la notación utilizada en Michalewicz (Michalewicz, 1995).
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) ε=
23 ( eval( H ,t ) − f )
⇒ m( H ,t + 1 ) = m( H ,t ) × ( 1 + ε )
f
Se observa que si la calidad media del esquema es mayor que la calidad media de la población,
ε tiene un valor mayor que cero, y por tanto la frecuencia aumentará. Pero si además se estudia
cómo es esta evolución desde la generación inicial, se ve que es exponencial, como se
comprueba en la siguiente ecuación:
m( H ,t + 1 ) = m( H ,1 ) × ( 1 + ε )t
Por lo tanto, la selección proporcional favorece el aumento de los individuos mejor adaptados
pero, como ya se ha dicho, los métodos de ordenación también cumple este teorema
aumentando el número de individuos adaptados de una generación a las siguientes.
El efecto del operador cruce sobre los esquemas se debe a la posibilidad que surge al aplicar el
cruce sobre los cromosomas seleccionados haciendo que se rompa el esquema al que
pertenecen, disminuyendo la frecuencia de ocurrencia en posteriores generaciones.
Un ejemplo de una ruptura por cruce la tenemos en los siguientes cromosomas:
Padres
H=1 # # # 1 0
Hijos
⇒ 1 0
|0
1 1 0
0 1 0 1 1 0
0 1
|1
1 1 1
1 0 1 1 1 1
El esquema representado por H está presente en el primer padre. Sin embargo dicho cromosoma
desaparece cuando se aplica el operador cruce. La cuantificación de esta ruptura depende de la
longitud del esquema, δ( H ), la longitud de la cadena y la probabilidad de aplicar el operador
cruce, pc. La probabilidad de supervivencia del esquema H después del operador cruce será:
p
scruce
= 1− p ×
c
δ( H )
l −1
De la misma forma que el operador cruce rompe el esquema, el operador mutación también
puede romperlo. Esto ocurrirá cuando el bit a mutar sea uno de los que permanecen fijos en el
esquema. Por ello, la probabilidad de supervivencia frente a la mutación será función de la
probabilidad de mutación, pm, y el número de posiciones fijas en el esquema, o(H):
p smutación = ( 1 − p m ) o( H )
como pm<<1 ⇒ p smutación ≈ 1 − o( H ) × p m
Considerando despreciable el término cruzado del cruce con la mutación, la frecuencia del
esquema H en la generación t + 1, después de todo el proceso, se muestra en la siguiente
ecuación:
m( H ,t + 1 ) ≥ m( H , t ) ×
δ( H )
eval( H , t ) ⎡
⎤
× ⎢1 − p c ×
− o( H ) × p m ⎥
−
f
l
1
⎣
⎦
Llegados a este punto ya es posible enunciar el teorema fundamental de los algoritmos
genéticos:
Los esquemas cortos, de orden bajo y calidad superior a la media de la población,
reciben un crecimiento exponencial de representantes en posteriores generaciones
de un algoritmo genético.
El teorema fundamental sugiere que los alfabetos deben tener la menor cardinalidad
posible para aumentar el rendimiento del algoritmo, ya que maximizan el número de
esquemas disponibles para el proceso genético.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 24 6.2. La hipótesis de los bloques constitutivos El teorema fundamental permite formular una serie de ideas acerca de por qué los algoritmos
genéticos funcionan. Del apartado anterior se concluye que los esquemas altamente adaptados,
de bajo orden y cortos, son de gran importancia en el proceso genético, ya que son los que van a
dominar a la población llevándola hacia regiones de alta calidad. Dichos esquemas son tan
importantes en el proceso que, incluso, reciben un nombre propio: bloques constitutivos o
básicos.
La fuerza de los algoritmos genéticos está en la posibilidad de combinar los bloques
constitutivos para formar cada vez mejores individuos. Pero quien tiene realmente la
responsabilidad de crear dichos bloques es la representación seleccionada. Si en una
codificación de un algoritmo genético no existen dichos bloques constitutivos, el proceso no
será dirigido y por lo tanto no se podrá asegurar un resultado óptimo.
6.3. El paralelismo implícito Como se demostró anteriormente, un cromosoma representa a 2k esquemas diferentes cuando su
longitud es k. Por lo tanto, se puede establecer un límite superior y otro inferior para contabilizar
el número de esquemas totales que son procesados en una población formada por n individuos
de longitud k. Para el límite superior se supondrá que todos los cromosomas de la población son
distintos y que además los esquemas procesados por cada individuos son, así mismo, diferentes
en su conjunto. Entonces el límite superior será n×2k. Para el límite inferior se supondrá todo lo
contrario, es decir, que todos los individuos son iguales y por lo tanto el número mínimo de
esquemas procesados es de 2k.
Los cálculos desarrollados tanto por Holland como por Goldberg para delimitar el valor del
número de esquemas procesados, se escapan de los objetivos del presente libro, por lo que tan
solo se citarán sus resultados y se dará una breve explicación de su significado. Goldberg (1989)
desarrolla los cálculos necesarios para su estimación, y Bertoni y Dorigo (1993) hacen una
revisión completa de los cálculos de Goldberg dando otro límite aún más aproximado que los
anteriores. Holland estableció el límite inferior en:
n3
c1 × k
considerando una población formada por n individuos siendo n = c1 × 2k , k la longitud de los
cromosomas y c1 una constante entera pequeña. Es decir, el orden de magnitud de los esquemas
procesados en una población de n individuos es al menos de n3, y no de n como cabría esperar
en un principio. A esto se le llama paralelismo implícito, ya que se procesan más esquemas que
individuos tiene la población. Ya se ha analizado la importancia que tienen los esquemas en el
desarrollo y la potencia de búsqueda de los algoritmos genéticos, siendo importante delimitar el
valor mínimo de dichos esquemas.
Goldberg delimitó el número z de esquemas de una longitud determinada ks, que son los
esquemas que tendrán una probabilidad de sobrevivir al cruce y a la mutación mayor o igual que
un ps determinado. Con esta estimación se puede conocer el número de bloques constitutivos
que son procesados al mismo tiempo en cada generación, y por ello esta estimación es más
interesante. El número de tales esquemas ns fue delimitado a n × ( k − k + 1 ) × 2 ks −2 , siendo el
s
tamaño de la población n = 2
ks / 2
, por lo que el límite inferior es:
( k − ks + 1) × n3
4
Es decir, el orden de magnitud de los bloques constitutivos procesados sigue siendo de n3. Se
refuerza así el concepto de paralelismo implícito.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 25 7. Algoritmos genéticos en la práctica El gran desarrollo que han tenido los algoritmos genéticos se debe al gran número de
aplicaciones reales donde se han obtenido buenos resultados, aunque su parte teórica aún no se
conozca del todo. Originalmente esta falta de sólidas bases ha sido una traba para el desarrollo
de técnicas de optimización. Sin embargo, desde los años 50 y debido a la creciente necesidad
por parte de las empresas de obtener resultados aún a costa de exactitud ha generado que la
práctica esté mucho más desarrollada que la teoría.
Podemos hacer un recorrido por algunas de las aplicaciones que existen en diferentes campos:
ƒ
Industria: Equilibrado de cargas (Fulk, 93); Planificación multiobjetivo (Busc, 91);
programación de operaciones (Matt, 96).
ƒ
Servicios financieros: Estudio de riesgos (Hugh, 90); detección de fraude en créditos (Foga,
92);Selección de carteras de inversión (Nobl, 90).
ƒ
Tráfico: Establecimiento de rutas de vehículos (Kada, 91); programación del despegue de
aviones (Abra, 93).
ƒ
Energía: Optimización de las redes de distribución de energía eléctrica (Ader, 85).
ƒ
Educación: Problemas de asignación aula-clase (Colo, 92); programación de exámenes
(Ross, 94).
ƒ
Telecomunicaciones: Diseño de redes de área local (Kear, 95).
ƒ
Salud pública: Programación de pacientes en un hospital (Abla, 95).
Agradecimientos Este trabajo ha sido financiado por la Junta de Castilla y León (VA003B08)
Bibliografía Bäck, T.; Hammel, U. y Schwefel, H. (1997). “Evolutionary computation: Comments on the
history and current state”. En Fogel, D.B. (Ed).
Baker, J.E. (1985). ”Adaptive selection methods for genetic algorithms”. Proceedings of the
first International Conference on Genetic Algorithms and their applications. John J. Gefenstette
(Ed.). Lawrence Erlbaum. New Jersey. Pag. 101-111.
Bertoni, A. y Dorigo, M. (1993). “Implicit parallelism in genetic algorithms”. Artificial
Intelligence, Vol. 61 2.
Biethahn, J. y Nissen, V. (Co-Eds). (1995). Evolutionary algorithms in management
applications. Springer. New York.
Davis, L. (1989). ”Adapting operator probabilities in genetic algorithms”. Proceedings of the
third international conference on Genetic Algorithms. J. David Schaffer (Ed.). Kaufmann. San
Mateo. Pag. 375-378.
Davis, L. (ed).(1991). Handbook of genetics algorithms. Van Nostrand. New York.
Fang H. (1994). Genetic Algorithms in Timetabling and Scheduling, Doctoral dissertation,
Department of Artificial Intelligence, University of Edinburg
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Guía para recién llegados a los Algoritmos Genéticos. Elena Pérez (2010) 26 Forrest, S. y Mitchell, M. (1991). ”What makes a problem hard for a genetic algorithm? Some
anomalous results and their explanation”. Manuscrito enviado para su publicación en Machine
Learning.
Forrest, S. y Mitchell, M. (1993). ”Relative building-block fitness and building block
hypothesis”. Foundations of Genetic Algorithms 2. Whitley D.L. (Ed). Kaufmann. San Mateo.
Pag. 109-126.
Fulkerson, W. (1993): Scheduling assembly lines. Personal comunication.
Goldberg, D.E. (1989). Genetic algorithms in search, optimization, and machine learning.
Addison-Wesley. Massachusetts
Goldberg, D.E. y Deb, K. (1991). ”A comparative analysis on selection schemes used in genetic
algorithms”. Foundations of Genetic Algorithms 1. Rawlins G.(Ed). Kaufmann. San Mateo.
Pag. 69-93.
Goldberg, D.E.; Deb, K.; Kargupta, H. y Harik, G. (1993). “Rapid, accurate optimization of
difficult problems using fast messy genetic algorithms”. Proceedings of the fifth international
conference on Genetic Algorithms. Stephanie Forrest (Ed.). Kaufmann. San Mateo. Pag. 56-64.
Herrera, F.; Lozano, M. y Verdegay, J.L. (1994). Algoritmos genéticos: fundamentos,
extensiones y aplicaciones. Technical Report #DECSAI 94105. Universidad de Granada.
Holland, J.H. (1992). “Algoritmos genéticos”. Investigación y Ciencia. Septiembre 38-86.
Mattfeld, D.C. (1996). Evolutionary search and the job shop. Investigations on genetic
algorithms for production scheduling. Springer. Berlin.
Michalewicz, Z. (1995). Genetic algorithms + data structures = Evolution Programs. Springer.
Berlin.
Oei, C.K.; Goldberg, D.E. y Chang, S.J. (1991). Tournament selection, niching and the
preservation of diversity. IlliGAL Report Nº 91011. University of Illinois at UrbanaChampaign.
Sagan, C. (1982). Cosmos. Planeta.
Syswerda, G. (1989). “Uniform crossover in genetic algorithms “.Proceedings of the third
international conference on Genetic Algorithms. Schaffer, J. D. (Ed.). Kaufmann. San Mateo.
Pag. 2-9.
Syswerda, G. (1991). “A study of reproduction in generational and steady-state genetic
algorithms”. Foundations of Genetic Algorithms 1. Rawlins G.(Ed). Kaufmann. San Mateo.
Pag. 94-101.
Whitley, L.D. (1989b). “The GENITOR Algorithm and selection pressure”. Proceedings of the
third international conference on Genetic Algorithms. J. David Schaffer (Ed.). Kaufmann. San
Mateo. Pag. 116-121.
Whitley, L.D. (1991). ”Fundamental principles of deception in genetic search”. Foundations of
Genetic Algorithms. Rawlins G.(Ed). Kaufmann. San Mateo. Pag. 221-241.
Universidad de Valladolid. Dpto. Organización de Empresas: Escuela de Ingenierías Industriales
Descargar