desarrollos inteligentes - Ingeniería en Sistemas Computacionales y

Anuncio
Desarrollos Inteligentes
Algoritmos Genéticos
CAPÍTULO 3
ALGORITMOS GENÉTICOS
“Y creó Dios al ser humano a su imagen, a imagen de Dios
los creó, varón y mujer los creó, y los bendijo diciéndoles:
Crezcan y multiplíquense..”
Génesis 1.27.
“A esta conservación de las variaciones y diferencias
individualmente favorables y a la destrucción de las que
son perjudiciales, la he llamado selección natural o
supervivencia de los más aptos” Charles Darwin.
Objetivo:
El estudiante comprenderá los conceptos fundamentales de algoritmos
genéticos, así como sus aplicaciones.
1
Desarrollos Inteligentes
Algoritmos Genéticos
3.1 Fundamentos de genética y evolución.
Una manera de ubicar la técnica de los algoritmos genéticos puede ser en el
campo de la computación bio-inspirada (Mateos, 2003), la cual se basa en
establecer analogías con sistemas naturales o sociales para diseñar métodos
heurísticos no determinísticos de “búsqueda”, de “aprendizaje”, de imitación de
“comportamiento”, etc.
Los algoritmos bio-inpirados (ABs) permiten resolver problemas modelando
un fenómeno de la naturaleza, presentan con frecuencia una estructura paralela
(múltiples agentes), y son adaptativos (tienen realimentación con el entorno).
Algunos modelos de computación bio-inspirada son:
-
Algoritmos evolutivos
-
Redes neuronales
-
Algoritmos inmunológicos
-
Algoritmos basados en inteligencia de enjambres
La computación evolutiva es la rama de la inteligencia artificial que engloba
a todas aquellas técnicas de resolución de problemas basadas en la evolución
de las especies y la supervivencia del más apto, parte del hecho observado en la
naturaleza en que los seres vivos presentan una capacidad de resolver los
problemas de supervivencia mediante el mecanismo de la evolución natural, la
cual se produce casi en la generalidad como consecuencia de dos procesos
primarios: la selección natural y la reproducción (cruce).
En la computación evolutiva encontramos a los algoritmos genéticos (genetic
algorithms), las estrategias evolutivas (evolution strategies) y la programación
evolutiva (evolutionary programming) entre otros.
2
Desarrollos Inteligentes
Algoritmos Genéticos
Los algoritmos genéticos (AGs), se basan en el proceso genético de los seres
vivos, por lo cual resulta conveniente revisar algunos aspectos fundamentales de
la evolución y la genética necesarios para clarificar los principios de los AGs.
Se considera que la evolución biológica es una derivación de las especies de
organismos vivientes, de otras ya existentes, a través de un proceso de
cambio más o menos gradual y continuo.
(http://www.molwick.com/es/evolution/140-genetica-evolucion.html).
La teoría de la evolución biológica en su forma macroscópica ( es decir de los
seres vivos como el hombre) que sirve como base para los AGs es la
Darwinista, considera como motor de la evolución la adaptación de los seres al
medio ambiente, derivado del efecto combinado de la selección natural y de las
mutaciones aleatorias.
Casi todas las especies están formadas por una o más poblaciones de
individuos que se cruzan entre sí, formando una comunidad de intercambio
de material genético (genes). En el interior de esas poblaciones se da el
hecho de que ciertos individuos dejan más descendientes que otros, lo que
implica que sus genes o alelos estarán mejor representados en la siguiente
generación, en conjunto habrá ocurrido un cambio generacional en la
frecuencia de aparición de los genes, es decir una evolución. ¿Qué procesos
hacen que unos alelos cambien de frecuencia entre generaciones?, esos son
los factores de evolución como la mutación, la deriva genética, la
migración y la selección natural.
(http://biologia.uab.es/divulgacio/genpob.html#factores)
La mutación es un cambio estable y heredable en el material genético, altera la
secuencia del ADN introduciendo nuevas variantes y aumentando la diversidad
de los genes, la tasa de mutación es la frecuencia en la que se producen nuevas
mutaciones en ese gen en cada generación, una alta tasa de mutación implica un
mayor potencial de adaptación a un cierto cambio ambiental, pues permite
explorar más variantes genéticas aumentando la probabilidad de obtener la
3
Desarrollos Inteligentes
Algoritmos Genéticos
variante más adecuada para ese nuevo ambiente. Las mutaciones en sí no tienen
dirección alguna en relación al cambio, se pueden considerar por ejemplo como
la alteración al azar de una letra por otra en un texto.
Cada especie tiene una tasa de mutación propia que ha sido establecida por la
selección natural, para que la especie pueda enfrentar de una mejor manera los
compromisos contrapuestos de estabilidad- cambio que le impone su ambiente.
Para una cierta población, en cada generación se produce un sorteo de genes
durante la transmisión de gametos de los padres a los hijos conocida como
deriva genética, el que un individuo de la nueva generación posea un alelo u
otro es una cuestión de azar, durante este proceso cambiante bien podría suceder
que un tipo de alelo no se transmita de una generación a otra, esto produciría una
pérdida definitiva de ese alelo, lo cual constituye un efecto contrario a la
mutación.
El intercambio de individuos de una población a otra constituye la migración de
genes entre dos poblaciones, integrando así otro factor de cambio genético.
La selección natural es la reproducción diferencial de unas variantes genéticas
respecto de otras, se puede establecer como el proceso que resulta del
cumplimiento de las tres condiciones siguientes: (1) variación fenotípica entre
los individuos de una población, (2) supervivencia o reproducción diferencial
asociada a la variación, y (3) herencia de la variación. Esto se puede clarificar
mediante un ejemplo, suponga que hay una población de polillas cuyos
miembros pueden ser de color oscuro o
claro, hay por tanto variación
fenotípica, el fenotipo es el conjunto de características que determinan a un
individuo en particular, a la información que contiene el fenotipo se denomina
genotipo. Al seguir a ambos tipos de polilla a lo largo de su vida, se ve que en
promedio las formas oscuras dejan más descendientes que las claras, es decir
que tienen mayor éxito reproductor que las claras lo que constituye la segunda
condición. Pero esta ventaja de la forma oscura no tendría ninguna trascendencia
4
Desarrollos Inteligentes
Algoritmos Genéticos
si la variante oscura no fuera hereditaria, por lo cual es necesario agregar la
tercera condición que es la herencia.
3.2 Fundamentos de algoritmos genéticos.
Los principios básicos de los algoritmos genéticos fueron establecidos por J.
Holland en 1975, son métodos adaptivos que pueden usarse para resolver
diferentes tipos de problemas como pueden ser los de búsqueda y
optimización. Su operación esta basada en los procesos genéticos de la
evolución de las especies naturales, según se vio en la sección anterior,
utilizan una analogía en su accionar con estos, a continuación se describirá
con mayor detalle esta correspondencia.
(http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf)
En la naturaleza se pueden observar poblaciones de individuos que compiten
entre sí en la búsqueda de recursos, como son el agua, la comida, y un territorio,
tratan de preservarse en un ambiente cambiante, y para ello se reproducen
produciendo así una nueva generación a partir de la población actual. Los
individuos que tienen más éxito en sobrevivir y atraer compañeros, tienen una
mayor probabilidad de generar un mayor número de descendientes, la
combinación entre buenas características de los ancestros producirá individuos
que se adapten en forma más eficiente al medio ambiente, produciendo así la
evolución de la población con individuos mejor preparados para superar los
cambios que llegase a presentar el medio en que viven. De esta manera, las
especies evolucionan logrando obtener unas características (genes) que permiten
a los organismos adaptarse mejor al entorno en que viven.
En la técnica de la solución de problemas mediante AGs, de forma muy similar
a la naturaleza, se trabaja con una población de individuos, cada uno de los
cuales representa una solución para el problema a resolver, se tiene una función
de efectividad o rendimiento que permite evaluar a cada individuo en relación
con la bondad de esa solución, en la evolución biológica esto equivaldría al
grado que tiene un organismo para competir por un recurso o bien para adaptarse
5
Desarrollos Inteligentes
Algoritmos Genéticos
a un medio. Cuanto mejor sea la evaluación de un individuo según su función de
efectividad, mayor deberá ser la probabilidad de ser seleccionado para
reproducirse, de manera similar a la selección natural, cruzando material
genético con otro individuo seleccionado de igual forma, emulando así la deriva
genética en organismos vivos. Como resultado de este cruce se obtienen
descendientes que comparten algunas de las características de sus padres
(herencia), conformando así individuos que integrarán una nueva generación.
Obviamente que los individuos que observan un valor bajo en su evaluación,
tendrán una probabilidad también baja de ser seleccionados para la
reproducción, sin embargo podrán ser seleccionados aunque con menos
frecuencia, ya que el material genético que contienen pudiera ser una parte
importante de una buena solución y no debiera perderse.
Continuando con el proceso descrito anteriormente, se produce una nueva
población, la cual sustituye a la anterior conformando otra generación, la que se
espera la integren individuos o soluciones con características mejores. A lo largo
de las generaciones, se van mejorando las características de la población cuyos
individuos representan diferentes alternativas de solución, explorando así el
espacio solución, acercándose cada vez más a una óptima.
Si a medida que se avanza en el proceso de operación de un algoritmo genético,
se tiene que la población no mejora, pudiera ser necesario aplicar mutación o
migración, la primera mediante la modificación aleatoria de los valores de
algunas características (genes) de los individuos, la segunda permitiendo de
alguna manera que individuos de otras poblaciones reemplacen a algunos de la
población actual. Es conveniente destacar el hecho de que independientemente
de que se degenere o no la población se puede aplicar sistemáticamente los dos
últimos factores de evolución mencionados.
No se garantiza que un algoritmo genético encuentre la solución óptima de un
problema, sin embargo de acuerdo a la experiencia, se obtienen soluciones con
cierto grado de acercamiento a la óptima en un tiempo razonablemente
6
Desarrollos Inteligentes
Algoritmos Genéticos
aceptable, sobre todo para aquellos problemas en los que no se tienen métodos
específicos de solución.
Los algoritmos genéticos codifican las posibles soluciones en estructuras
llamadas cromosomas, que representan el material genético de un individuo, es
necesario un método que permita obtener ese código, de tal manera que pueda
ser procesada la información genética en una computadora, es común utilizar
secuencias de dígitos binarios para representar los cromosomas, en donde el
valor de cada dígito es la información de una característica de la solución. Otro
método consiste en usar cadenas de números enteros, ó decimales en donde cada
posición representa un aspecto particular de la solución, así mismo se pueden
utilizar cadenas de letras.
Mediante la aplicación de un conjunto de operadores genéticos sobre la
población se va refinando gradualmente la solución hasta alcanzar un resultado
que cumpla con las condiciones requeridas.
Los AGs se diferencian de otros algoritmos de optimización o búsqueda en
cuatro aspectos (Goldberg David E., 1989):
1. Trabajan con la codificación del conjunto de parámetros, no con los
parámetros mismos.
2. Manejan una población de puntos solución, no un solo punto.
3. Utilizan información de eficiencia (función objetivo), no derivadas o
conocimiento auxiliar.
4
Usan reglas de transición probabilísticas, no determinísticas.
7
Desarrollos Inteligentes
Algoritmos Genéticos
3.3 Descripción de un algoritmo genético.
Hasta ahora se ha establecido un conjunto de fundamentos o principios de los
algoritmos genéticos, que permiten crear un modelo conceptual de ellos, a efecto
de estar en posibilidad de comprender su actuación o proceso, siendo ahora
necesario entrar a un nivel mayor de detalle para su implementación
computacional, en la presente sección se aborda esta situación.
La mejor manera para describir un algoritmo genético es utilizando un modelo
general, que incluya los pasos y sus estructuras de control principales, al cual se
le denomina algoritmo genético canónico, como se ilustra en la figura 3.3.1.
Figura 3.3.1 Algoritmo genético canónico
8
Desarrollos Inteligentes
Algoritmos Genéticos
El primer paso en la aplicación de un AG consiste en la generación de una
población inicial. En general esta población se genera de manera aleatoria, y el
tamaño de dicha población (la cantidad de individuos que la compone) es un
parámetro que se define al inicio. Una vez generada esta población se debe
evaluar la aptitud (fitness) de cada individuo, la cual de alguna manera indica el
logro del objetivo.
Si el criterio de optimización es alcanzado, se termina el proceso obteniendo la
solución con el mejor individuo, si no se logra cumplir con tal criterio se
continúa aplicando los operadores de selección, cruce y mutación.
El operador de selección es el encargado de decidir cuales individuos
contribuirán en la formación de la próxima generación de individuos. Este
mecanismo como ya se indicó simula el proceso de selección natural, forma una
población intermedia, que esta compuesta por los individuos con mayor aptitud
de la generación actual.
El siguiente operador es el de cruce o cruza, su función es recombinar el
material genético. Se toman aleatoriamente dos individuos que hayan
sobrevivido al proceso de selección y se recombina su material genético creando
uno o más descendientes, que pasan a la siguiente población. Este operador se
aplica tantas veces como sea necesario para formar la nueva población.
La última tarea en este paso consiste en la aplicación del operador de mutación.
Este operador, que en general actúa con muy baja probabilidad, modifica
algunos genes del cromosoma, posibilitando de esta manera la búsqueda de
soluciones alternativas.
Una vez finalizado el proceso de selección, cruza y mutación se obtiene la
siguiente generación, la cual será evaluada, repitiéndose el ciclo descrito
previamente. Tras cada iteración la calidad de la solución generalmente va
incrementándose, y los individuos representan mejores soluciones al problema.
9
Desarrollos Inteligentes
Algoritmos Genéticos
Al algoritmo detallado anteriormente se lo conoce como algoritmo genético
canónico o sencillo, y es la forma más utilizada. Sin embargo, en algunas
implementaciones particulares de AGs se pueden agregar nuevos operadores. En
todos los casos, la forma en que se implementen esos operadores variará de
acuerdo a las características propias del problema.
A continuación se ilustra la aplicación del algoritmo genético canónico con un
ejemplo adaptado de (Goldberg David E., 1989). El problema consiste en
encontrar el valor de la variable x que produce el máximo valor de la función
f(x) =40x- x2, sobre el intervalo para x en [0,1,2,...,31].
Para empezar es necesario generar una población inicial integrada por un cierto
número de individuos, nos encontramos con el problema de la representación del
cromosoma de cada individuo, supongamos que decidimos utilizar un código
binario (0,1), de longitud 5, pues el máximo valor de x es 31 , cuyo código sería
el tren de bits 11111, considerando una población de cuatro individuos, y
obteniendo al azar los cromosomas de los individuos, podemos evaluarlos y
determinar su probabilidad de selección para la reproducción, como se muestra
en la tabla 3.3.1.
________________________________________________________________
Individuo
cadena
valor de x evaluación probabilidad probabilidad
No.
(fenotipo) (genotipo) f(x)
selección
acumulada
1
00111
7
231
0.196
0.196
2
11101
29
319
0.270
0.466
3
11001
25
375
0.318
0.784
4
01000
8
256
0.216
1.0
Tabla 3.3.1 Población inicial obtenida en el ejemplo del algoritmo canónico.
En la tabla 3.3.1 se obtuvieron los valores de la probabilidad de selección,
dividiendo el valor específico de f(x) para cada individuo, entre la sumatoria de
los cuatro valores de f(x).
De acuerdo con el algoritmo, y observando que ningún integrante de la
población actual es el óptimo, se continúa con la selección de los individuos
10
Desarrollos Inteligentes
Algoritmos Genéticos
para la reproducción, es decir dos parejas. Para esto solamente es requerido
generar cuatro números aleatorios entre [0,1], suponiendo que los números 0.41,
0.18, 0.63, y 0.26 son los obtenidos, los cuales a partir de la última columna de
la tabla 3.3.1, corresponden a los individuos 2, 1, 3, 2 respectivamente, por lo
que la primera pareja la integrarían los individuos 2 y 1, la segunda pareja la
forman los individuos 3 y 2. Con estas dos parejas se puede generar la población
1, o sea la generación siguiente.
El algoritmo indica que se debe aplicar el operador cruza, para ello es necesario
determinar los puntos de cruce, es decir la posición del bit en donde se efectuará
el corte de los cromosomas de los padres, procediendo de la misma manera que
en la selección se generarán dos enteros aleatorios en el rango [1,4], sean por
ejemplo los enteros 2 y 3.
Finalmente se aplicará la mutación, se debe definir una probabilidad de mutar
Pm cercana a cero, sea por ejemplo 0.01, generando 20 números aleatorios entre
[0,1], uno para cada bit de la población, para este caso se tienen los números:
0.82, 0.84, 0.12, 0.60, 0.57, 0.51, 0.16, 0.59, 0.37, 0.01, 0.24, 0.03, 0.85, 0.17,
0.39, 0.16, 0.88, 0.72, 0.13, 0.75. Se observa que solamente se debe mutar el
último bit del segundo individuo.
_____________________________________________________________
Individuo
Punto
Descendiente Nueva población
x
f(x)
seleccionado de cruce
Descend. mutados
2 11101
2
11111
11111
31
279
1 00111
2
00101
10101
21
399
3 11001
3
11101
11101
29
319
2 11101
3
11001
11001
25
375
____________________________________________________________
Tabla 3.3.2 Población en tiempo 1.
En la tabla 3.3.2 se muestra la nueva población obtenida, con sus integrantes ya
evaluados. Si se comparan ambas poblaciones, se podrá observar que en cada
una se tiene un mayor valor de bondad de 375, sin embargo en la población
inicial la suma de retribuciones es de 1181, mientras que en la nueva se obtiene
11
Desarrollos Inteligentes
Algoritmos Genéticos
una suma de 1372, lo que indica que en términos generales se ha mejorado el
rendimiento de la población.
Este proceso se debiera continuar por un cierto número de generaciones, hasta
llegar a un valor de convergencia del máximo valor de f(x), el que debiera
aproximarse al valor óptimo de la función.
3.4 Componentes de un algoritmo genético.
En este momento el lector ya puede tener un concepto más claro sobre los AGs,
sin embargo se requiere ahora efectuar un estudio más completo de sus
componentes, de tal manera que se haga factible la posibilidad de resolver
problemas mediante su implementación en una computadora.
Los componentes característicos de los algoritmos genéticos son los siguientes:
-
La definición del problema
-
La representación de la solución del problema
-
La decodificación del cromosoma
-
La evaluación de un individuo
-
Los operadores evolutivos: Selección, cruce y mutación
(Mateos Alfonso, 2003)
Los cuatro primeros se tratarán en esta sección, el último se verá en la siguiente
sección.
3.4.1 Definición del problema.
Los problemas complejos de búsqueda y optimización, en donde se tienen
diferentes conjuntos de variables que deben ser combinadas para su solución, y
aquellos de múltiples restricciones con espacios de búsqueda muy grandes,
conforman el campo de aplicación de los AGs. No requieren información
12
Desarrollos Inteligentes
Algoritmos Genéticos
adicional sobre optimización, por lo que pueden tomar diferentes tipos de
funciones objetivo y todo tipo de restricciones lineales o no lineales definidas
sobre espacios discretos, continuos o combinados (Mateos Alfonso, 2003).
La flexibilidad que muestran en su estructura y su forma de operar, los AGs se
significan como una alternativa excelente para la resolución de problemas, sobre
todo en los que no se tiene una técnica específica de solución, o bien se desea
explorar soluciones globales en espacios demasiado grandes.
3.4.2
Representación de la solución.
Los algoritmos genéticos trabajan manipulando cromosomas, que son
estructuras que codifican las distintas soluciones de un determinado problema.
La forma en que se codifican los cromosomas es dependiente de cada problema
en particular, y suele variar de problema en problema.
Un cromosoma esta compuesto por un conjunto de genes. Cada gen representa
una característica particular del individuo y ocupa una posición determinada en
el cromosoma, llamada locus. A cada uno de los valores que puede tomar un gen
se lo conoce como alelo.
Es importante destacar dos conceptos que muchas veces suelen confundirse:
genotipo y fenotipo. El genotipo es el conjunto de genes de un individuo, que
representan la descripción genética del individuo. El fenotipo es la forma en que
se expresa el genotipo, como resultado de la interacción con su entorno.
La morfogénesis es el proceso de decodificar el genotipo para producir un
fenotipo. Una cuestión a resolver cuando se diseñan algoritmos evolutivos es la
forma de codificar los genes. Estos se pueden representar como cadenas
binarias, números enteros, números reales, etc.
En general se utilizan las
cadenas binarias por varios motivos:
13
Desarrollos Inteligentes
a)
Algoritmos Genéticos
Cualquier parámetro se puede codificar como una cadena de bits. Una
cadena de bits permite expresar valores booleanos, enteros, reales, etc.
b)
motivo la mayor parte de los trabajos teóricos se basa en este esquema de
codificación.
c) El uso de cadenas de bits permite contar con gran cantidad de herramientas
de análisis.
Las cadenas de bits son fáciles de manipular. El desarrollo de operadores
genéticos es simple y eficiente. Sin embargo, las características propias del
problema podrían llevar a la utilización de otro esquema de codificación. En
dicho caso será necesario desarrollar operadores genéticos que se adapten al
esquema seleccionado.
Los algoritmos genéticos trabajan sobre una población de individuos, en donde
cada uno representa una posible solución.
La población es un concepto muy importante en los algoritmos genéticos y
existen dos cuestiones fundamentales a resolver: como generar la primera
población, y cual debe ser el tamaño de la población.
La población inicial debe poseer la mayor diversidad posible. Idealmente, la
población inicial debería contener todos los posibles valores (alelos) que pueda
tomar un gen. De esta manera se aseguraría una exploración completa del
espacio de búsqueda. En la práctica, esta situación no suele ser factible por lo
que la primera población se genera comúnmente de manera azarosa, asignándole
aleatoriamente a cada gen uno de los posibles alelos. De esta manera se asegura
la diversidad de alelo por gen. En algunos casos se pueden utilizar heurísticas
para la generación de la población inicial, las que permiten obtener un punto de
partida más próximo a la solución del problema. En estos casos, es importante
que la heurística asegure la diversidad mencionada. De lo contrario el algoritmo
14
Desarrollos Inteligentes
Algoritmos Genéticos
genético no será capaz de realizar una búsqueda completa sobre el espacio de
soluciones.
El tamaño de la población no es problema crítico. Si el tamaño de la población
es muy grande se realizará una exploración del espacio de búsqueda más rápida
en términos de generaciones. Sin embargo, el tiempo necesario para obtener una
nueva generación a partir de la generaron actual será mayor, dado que se estarán
procesando individuos innecesarios. Si el tamaño de la población es muy chico
podría llegar a darse el caso en que la población converja rápidamente a una
solución que no sea lo suficientemente buena. En la practica se suelen utilizar
poblaciones de 20 individuos, pudiéndose aumentar el mismo en base a la
complejidad del problema o a la calidad de la solución requerida. En algunos
casos se utiliza un tamaño de población inicial, el cual se va incrementando a
medida que la población tiende a ser homogénea.
3.4.3 Decodificación del cromosoma.
La cadena binaria de caracteres del cromosoma representa un valor real
candidato a ser una solución para el problema, dicho valor debe ser obtenido a
partir de esta cadena que etiqueta un número dentro del intervalo fijado
inicialmente. La decodificación es el proceso inverso al de la codificación, de tal
manera que dado un método, automáticamente se define el otro.
3.4.4
Evaluación de un individuo.
El uso de los conceptos de función de evaluación y función de aptitud se suelen
utilizar como sinónimos. Sin embargo, ambos conceptos son diferentes, y es
conveniente hacer una distinción entre ellos.
La función de evaluación, o función objetivo, provee una medida de la
ejecución del conjunto de parámetros. Indica que tan buena es la solución
obtenida tras la aplicación de un conjunto de parámetros, independientemente de
15
Desarrollos Inteligentes
Algoritmos Genéticos
la aplicación de esta función sobre otro conjunto de parámetros. En general, esta
medida se obtiene tras la decodificación de un cromosoma en el conjunto de
parámetros que representa.
Por su parte, la función de adaptación siempre esta definida con respecto al
resto de los individuos de la población. Indica que tan buena (o mala) es una
solución comparada con el resto de las soluciones obtenidas hasta el momento.
El valor obtenido por esta función se traduce, tras la aplicación del operador de
selección, en oportunidades de reproducción. Aquellos que tengan mayor aptitud
tendrán mayores posibilidades de reproducirse y transmitir su material genético
a la próxima generación.
3.5 Operadores evolutivos.
La selección es el operador evolutivo por naturaleza, mediante él se seleccionan
a los individuos más aptos que deben copiarse o reproducirse para la siguiente
generación.
El siguiente operador genético se llama cruce o cruza, que consiste en tomar a
dos individuos ya seleccionados e intercambiar entre ellos segmentos de su
código
genético,
produciendo
una
descendencia
de
hijos
heredando
características de sus padres y mejorando así su aptitud.
El tercer operador es la mutación, que al igual que una mutación en los seres
vivos, cambia un gen por otro, o bien alterando puntos concretos del código de
un individuo.
En las siguientes secciones se estudiarán estos operadores con mayor
profundidad.
16
Desarrollos Inteligentes
Algoritmos Genéticos
3.5.1 Selección.
Este proceso de selección de candidatos a reproducirse suele realizarse de forma
probabilística, lo cual implica que todos los individuos tienen posibilidades de
ser seleccionados (aún los menos aptos).
En los AGs las técnicas de selección pueden clasificarse en tres grandes grupos
(Coello, 2001):
- Selección proporcional
- Selección mediante torneo
- Selección de estado uniforme
La selección proporcional
Describe a un grupo de esquemas de selección propuestos por Holland, en los
cuales se eligen individuos de acuerdo a su contribución de aptitud con respecto
al total de la población, los grupos que incluye son:
- La ruleta
- Sobrante estocástico
- Universal estocástica
- Muestreo determinístico
Solamente se estudiará la ruleta ya que permite ilustrar la manera de realizar esta
operación genética.
La selección por ruleta
Esta técnica fue propuesta por DeJong, la cual ha sido más frecuentemente
utilizada debido a su simplicidad y popularidad, ya que es la referencia inicial
dada por Goldberg en su texto (Goldberg, 1998).
Los pasos de este algoritmo son los siguientes:
1. Calcular la suma T de los valores esperados (Ve) de la aptitud de los
individuos
17
Desarrollos Inteligentes
Algoritmos Genéticos
2. Repetir N veces (N es el tamaño de la población)
- Generar un número aleatorio r entre 0 y T
- Ciclar a través de los individuos de la población sumando los valores
esperados hasta que la suma sea mayor o igual a r.
- El individuo que haga que ésta suma exceda el límite es el
seleccionado.
Cada individuo tiene un valor de aptitud obtenido en el paso de evaluación de la
función objetivo: f ( i)
para i = 1 hasta N.
Se calcula la suma de aptitudes:
N
Suma aptitudes = ∑ f (i)
i=1
_
Se obtiene el valor f = Suma aptitudes / N
Se calcula el valor esperado Ve(i):
_
Ve(i) = f(i) / f
Se obtiene la suma de los valores esperados Ve(i):
N
T = ∑ Ve(i)
i =1
Se genera un número aleatorio r є [0.0, T]
El individuo seleccionado pasa a la siguiente generación, repitiéndose el
procedimiento tantas veces como sea necesario hasta completar la siguiente
generación. Al contener una componente aleatoria, la cantidad de copias de un
individuo que efectivamente pasan a la siguiente generación puede variar de la
cantidad de copias esperadas.
18
Desarrollos Inteligentes
3.5.2
Algoritmos Genéticos
Cruce.
Las técnicas de cruza básicas suelen diseñarse para aplicarse a la representación
binaria, pero pueden generalizarse a otro tipo de representación mediante
algunas adaptaciones, las tres técnicas básicas son (Coello, 2001)
- Cruza de un punto
- Cruza de dos puntos (o multipunto)
- Cruza uniforme
Cruza de un punto
En esta variante del operador de cruza se toma un punto de cruza, luego, a un
hijo se le asignan todos los genes del padre ubicados a la izquierda del punto de
cruza, y todos los genes de la madre ubicados a la derecha del punto de cruza. El
segundo hijo es el complemento del primero.
La Figura 3.5.1 muestra un ejemplo de cruza simple en el cual se toma como
punto de cruza el primero de ellos.
19
Desarrollos Inteligentes
Algoritmos Genéticos
Figura 3.5.1 Cruza de un punto
Cruza Multipunto
Esta variante del operador de cruza es similar al operador de cruza simple,
sólo que se toman n puntos de cruza, El valor de n = 2 es el más común.
Cada hijo recibe los genes entre dos puntos de cruza sucesivos de cada uno de
los padres, de manera intercalada. Cabe destacar que la cruza simple es un caso
particular de la cruza multipunto, con un único punto de cruza.
Cruza Uniforme
Se trata de una cruza de n puntos, pero el
número de puntos no se fija
previamente. También se puede optar por asignar aleatoriamente los pesos.
Cada hijo tiene una probabilidad de 0.5 de recibir los genes de su padre y por
ende de recibirlos de su madre.
20
Desarrollos Inteligentes
3.5.3
Algoritmos Genéticos
Mutación.
Este operador en los algoritmos genéticos canónicos se suele considerar como de
menor importancia, es tema de debate e investigación en la comunidad de
computación evolutiva.
La mutación binaria es el tipo de mutación tradicionalmente utilizado en el
algoritmo genético canónico, y consiste en invertir un gen seleccionado
aleatoriamente. Dada la representación binaria del gen, se invierte el bit que lo
representa con una determinada probabilidad llamada probabilidad de mutación.
Por ejemplo:
Antes
10101010
Después
10111010
Mutación por inserción
Se selecciona un gen en forma arbitraria y se le inserta en una posición
arbitraria.
Por ejemplo:
Sea el individuo:
8 7 6 0 4 3 2 5
Si elegimos la posición 6 de izquierda a derecha y movemos ese valor a la
posición 2, entonces se tendrá el individuo mutado de la siguiente forma:
Individuo mutado:
8 3 7 6 0 4 2 5
Mutación por desplazamiento
Es una generalización de la mutación por inserción, en vez de mover un solo
valor se mueven varios.
Mutación adaptativa por temperatura ascendente
La probabilidad de mutación se va incrementando a medida que transcurren las
generaciones. El objetivo de este aumento es mantener la diversidad de
21
Desarrollos Inteligentes
Algoritmos Genéticos
individuos en la población, que tiende a hacerse homogénea con el transcurso de
las generaciones.
Mutación adaptativa por temperatura descendente
La probabilidad de mutación va decreciendo a medida que transcurren las
generaciones. De esta manera se asegura una alta diversidad de individuos en las
generaciones iniciales. La probabilidad mínima debe ser mayor a cero para
permitir continuar la exploración del espacio de búsqueda a medida que las
generaciones avanzan.
3.6 Ventajas y limitaciones de los algoritmos genéticos.
Es conveniente considerar las ventajas y desventajas que presentan los AGs, al
igual que toda herramienta, ya que de esta manera se puede estar en condiciones
de aprovechar sus bondades, y así mismo, atender las desventajas que pudiera
presentar.
Algunas de las ventajas pueden ser las siguientes:
-
Una ventaja muy importante y quizás la principal, la constituye el hecho
de que los AGs son paralelos, es decir, permiten explorar el espacio de
soluciones en muy diversas direcciones a la vez, lo que posibilita
encontrar una solución cercana a la óptima en un tiempo relativamente
corto. El AG puede dirigirse hacia el espacio con los individuos más
aptos y encontrar el mejor de ese grupo. En el contexto de los algoritmos
evolutivos, esto se conoce como teorema del esquema, y es la ventaja
principal de los AGs sobre otros métodos de resolución de problemas
-
Debido al paralelismo que les permite evaluar implícitamente muchos
esquemas a la vez, los algoritmos genéticos funcionan particularmente
bien resolviendo problemas cuyo espacio de soluciones potenciales es
realmente grande demasiado vasto para hacer una búsqueda exhaustiva
22
Desarrollos Inteligentes
Algoritmos Genéticos
en un tiempo razonable. La mayoría de los problemas que caen en esta
categoría se conocen como ``no lineales''. En un problema lineal, la
aptitud de cada componente es independiente, por lo que cualquier
mejora en alguna parte dará como resultado una mejora en el sistema
completo.
-
La mayoría de los problemas prácticos tienen un espacio de soluciones
enorme, imposible de explorar exhaustivamente; el reto se convierte
entonces en cómo evitar los óptimos locales, soluciones que son mejores
que todas las que son similares a ella, pero que no son mejores que otras
soluciones distintas situadas en algún otro lugar del espacio de
soluciones. Muchos algoritmos de búsqueda pueden quedar atrapados en
los óptimos locales: si llegan a lo alto de una colina del paisaje
adaptativo, descubrirán que no existen soluciones mejores en las
cercanías y concluirán que han alcanzado la mejor de todas, aunque
existan
picos
más
altos
en
algún
otro
lugar
del
mapa.
Los algoritmos evolutivos, por otro lado, han demostrado su efectividad
al escapar de los óptimos locales y descubrir el óptimo global incluso en
paisajes adaptativos muy escabrosos y complejos. (Debe decirse que, en
la realidad, a menudo no hay manera de decir si una cierta solución a un
problema es el óptimo global o sólo un óptimo local muy alto. Sin
embargo, aunque un AG no devuelva siempre una solución perfecta y
demostrable a un problema, casi siempre puede devolver al menos una
muy buena solución).
-
Muchos problemas de la vida real no pueden definirse en términos de un
único valor que hay que minimizar o maximizar, sino que deben
expresarse en términos de múltiples objetivos, a menudo involucrando
contrapartidas: uno sólo puede mejorar a expensas de otro. Los AGs son
muy buenos resolviendo estos problemas: en particular, su uso del
paralelismo les permite producir múltiples soluciones, igualmente
buenas, al mismo problema, donde posiblemente una solución candidata
optimiza un parámetro y otra candidata optimiza uno distinto, y luego un
supervisor humano puede seleccionar una de esas candidatas para su
23
Desarrollos Inteligentes
Algoritmos Genéticos
utilización. Si una solución particular a un problema con múltiples
objetivos optimiza un parámetro hasta el punto en el que ese parámetro
no puede mejorarse más sin causar una correspondiente pérdida de
calidad en algún otro parámetro, esa solución se llama óptimo paretiano o
no dominada.
-
Los AGs no saben nada de los problemas que deben resolver. En lugar de
utilizar información específica conocida a priori para guiar cada paso y
realizar cambios con un ojo puesto en el mejoramiento, como hacen los
diseñadores humanos; realizan cambios aleatorios en sus soluciones
candidatas y luego utilizan la función de aptitud para determinar si esos
cambios producen una mejora.
Por otra parte, algunas de las desventajas pueden ser:
-
Definir una representación del problema. El lenguaje utilizado para
especificar soluciones candidatas debe ser robusto; es decir, debe ser
capaz de tolerar cambios aleatorios que no produzcan constantemente
errores fatales o resultados sin sentido.
Hay dos maneras principales para conseguir esto. La primera, utilizada
por la mayoría de los algoritmos genéticos, es definir a los individuos
como listas de números -binarios, enteros o reales- donde cada número
representa algún aspecto de la solución candidata. Si los individuos son
cadenas binarias, un 0 o 1 podría significar la ausencia o presencia de
una cierta característica. Si son listas de números, estos números podrían
representar muchas cosas distintas: los pesos de las conexiones en una
red neuronal, el orden de las ciudades visitadas en un recorrido dado, la
situación espacial de componentes electrónicos, los valores con los que
se alimenta a un controlador, los ángulos de torsión de los enlaces
péptidos de una proteína, etcétera. Así, la mutación implica cambiar
estos números, cambiar bits o sumar o restar valores aleatorios. En este
caso, el propio código del programa no cambia; el código es lo que dirige
la simulación y hace un seguimiento de los individuos, evaluando sus
24
Desarrollos Inteligentes
Algoritmos Genéticos
aptitudes y quizá asegurando que sólo se producen valores realistas y
posibles para el problema dado.
El problema de representar a las soluciones candidatas de manera robusta
no surge en la naturaleza, porque el método de representación utilizado
por la evolución, a saber, el código genético, es inherentemente robusto:
con muy pocas excepciones, como una cadena de codones de parada, no
existe una secuencia de bases de ADN que no pueda traducirse en una
proteína. Por lo tanto, virtualmente, cualquier cambio en los genes de un
individuo siempre producirá un resultado inteligible, y por tanto las
mutaciones en la evolución tienen mayor probabilidad de producir una
mejora. Esto entra en contraste con los lenguajes creados por el hombre
como el inglés, donde el número de palabras con significado es pequeño
comparado con el número total de formas en las que se pueden combinar
las letras del alfabeto, y por tanto, es probable que un cambio aleatorio
en una frase en inglés produzca un sinsentido.
-
El problema de cómo escribir la función de aptitud debe considerarse
cuidadosamente para que se pueda alcanzar una mayor aptitud y
verdaderamente signifique una solución mejor para el problema dado. Si
se elige mal una función de aptitud o se define de manera inexacta, puede
que el algoritmo genético sea incapaz de encontrar una solución al
problema, o puede acabar resolviendo el problema equivocado. (Esta
última situación se describe a veces como la tendencia del AG a
``engañar'', aunque en realidad lo que está pasando es que el AG está
haciendo lo que se le pidió hacer, no lo que sus creadores pretendían que
hiciera). Unos investigadores utilizaron un algoritmo evolutivo en
conjunción con una serie de chips reprogramables, haciendo que la
función de aptitud recompensara al circuito en evolución por dar como
salida una señal oscilatoria. Al final del experimento, se producía
efectivamente una señal oscilatoria -pero en lugar de actuar como un
osculador, como pretendían los investigadores, ¡descubrieron que el
circuito se había convertido en un receptor de radio que estaba recibiendo
25
Desarrollos Inteligentes
Algoritmos Genéticos
y retransmitiendo una señal oscilatoria de un componente electrónico
cercano.
-
Además de elegir bien la función de aptitud, también deben elegirse
cuidadosamente los otros parámetros de un AG, el tamaño de la
población, el ritmo de mutación y cruzamiento, el tipo y fuerza de la
selección. Si el tamaño de la población es demasiado pequeño, puede que
el algoritmo genético no explore suficientemente el espacio de soluciones
para encontrar buenas soluciones consistentemente. Si el ritmo de cambio
genético es demasiado alto o el sistema de selección se escoge
inadecuadamente, puede alterarse el desarrollo de esquemas beneficiosos
y la población puede entrar en catástrofe de errores, al cambiar
demasiado rápido para que la selección llegue a producir convergencia.
-
Un problema muy conocido que puede surgir con un AG se conoce como
convergencia prematura. Si un individuo que es más apto que la mayoría
de sus competidores emerge muy pronto en el curso de la ejecución, se
puede reproducir tan abundantemente que merme la diversidad de la
población demasiado pronto, provocando que el algoritmo converja hacia
el óptimo local que representa ese individuo, en lugar de rastrear el
paisaje adaptativo lo bastante a fondo para encontrar el óptimo global.
Esto es un problema especialmente común en las poblaciones pequeñas,
donde incluso una variación aleatoria en el ritmo de reproducción puede
provocar que un genotipo se haga dominante sobre los otros.
-
Finalmente, varios investigadores aconsejan no utilizar algoritmos
genéticos en problemas resolubles de manera analítica. No es que los
algoritmos genéticos no puedan encontrar soluciones buenas para estos
problemas; simplemente es que los métodos analíticos tradicionales
consumen mucho menos tiempo y potencia computacional que los AGs
y, a diferencia de los AGs, a menudo está demostrado matemáticamente
que ofrecen la única solución exacta. Por supuesto, como no existe una
26
Desarrollos Inteligentes
Algoritmos Genéticos
solución matemática perfecta para ningún problema de adaptación
biológica, este problema no aparece en la naturaleza.
3.7 Aplicaciones diversas.
Esta sección se orientará a revisar algunas de las aplicaciones de los AGs, las
cuales se incrementan en forma explosiva en el tiempo, cada vez surgen nuevos
campos y aumenta la diversidad de soluciones. Por ello solamente con el fin de
ilustrar al lector, se considerarán varias de ellas, para terminar la presente
sección con la ejemplificación de un caso específico.
Predicción.
Una aplicación en mercados financieros lo constituye el algoritmo genético
utilizado para predecir el rendimiento futuro de 1.600 acciones ofertadas
públicamente, al AG se le asignó la tarea de predecir el beneficio relativo de
cada acción, definido como el beneficio de esa acción menos el beneficio medio
de las 1.600 acciones a lo largo del periodo de tiempo en cuestión, 12 semanas
(un cuarto del calendario) en el futuro. Como entrada, al AG se le
proporcionaron datos históricos de cada acción en forma de una lista de 15
atributos, como la relación precio-beneficio y el ritmo de crecimiento, medidos
en varios puntos del tiempo pasado; se le pidió al AG que evolucionara un
conjunto de reglas si/entonces para clasificar cada acción y proporcionar, como
salida, una recomendación sobre qué hacer con respecto a la acción (comprar,
vender o ninguna predicción) y un pronóstico numérico del beneficio relativo.
Los resultados del AG fueron comparados con los de un sistema establecido,
basado en una red neuronal, que los autores habían estado utilizando para
pronosticar los precios de las acciones y administrar las carteras de valores
durante tres años. Por supuesto, el mercado de valores es un sistema
extremadamente ruidoso y no lineal, y ningún mecanismo predictivo puede ser
27
Desarrollos Inteligentes
Algoritmos Genéticos
correcto el 100% del tiempo; el reto consiste en encontrar un predictor que sea
preciso más de la mitad de las veces.
En el experimento, el AG y la red neuronal hicieron pronósticos al final de la
semana para cada una de las 1.600 acciones, durante doce semanas
consecutivas. Doce semanas después de cada predicción, se comparó el
rendimiento verdadero con el beneficio relativo predicho. Globalmente, el
AG superó significativamente a la red neuronal: en una ejecución de prueba,
el AG predijo correctamente la dirección de una acción el 47,6% de las
veces, no hizo predicción el 45,8% de las veces y realizó una predicción
incorrecta sólo un 6.6% de las veces, una precisión predictiva total de un
87,8%. El AG también superó significativamente a tres índices bursátiles
importantes -el S&P 500, el S&P 400 y el Russell 2000- en este periodo; la
casualidad fue excluida como causa de este resultado con un margen de
confianza de un 95%. Los autores atribuyen este convincente éxito a la
capacidad del algoritmo genético de percatarse de relaciones no lineales
difícilmente evidentes para los observadores humanos, además del hecho de
que carece del ‘prejuicio’ contra las reglas anti intuitivas y contradictorias''
de los expertos humanos.
(http://www.molwick.com/es/evolucion/140-genetica-evolucion.html)
Otro caso en esta categoría de aplicaciones, lo es el sistema Omega,
desarrollado por la empresa Holandesa Cap Gemini, y la británica KiQ Ltd
(Coello, 2001), que usa un portafolio del comportamiento pasado de un cliente,
genera un modelo matemático que puede usarse para predecir los
comportamientos de clientes que se encuentran fuera de los portafolios
conocidos. Omega se puede usar para evaluar solicitudes de crédito, generar
listas de correo, modelar lealtad de los consumidores a un producto, y para
detectar fraudes.
28
Desarrollos Inteligentes
Algoritmos Genéticos
Reconocimiento de patrones.
Este tipo de aplicación es una de las más generalmente utilizadas, se verán a
continuación algunas de ellas.
El reconocimiento de criminales, es una solución en la que a un testigo se le
presentan una serie de caras seleccionadas aleatoriamente, el testigo asigna un
valor de aptitud a cada una de las caras, se continúa generando nuevas
poblaciones de caras mediante cruce y mutación, hasta lograr la identificación
de una cara muy similar a la del criminal.
En la industria de las telecomunicaciones se ha establecido el término ``fuga''
para describir la velocidad a la que los usuarios se cambian de un proveedor de
servicios a otro. La fuga le cuesta a las compañías de telecomunicaciones una
gran cantidad de dinero cada año, y reducir las fugas es un factor importante
para aumentar la rentabilidad. Si las compañías pueden contactar con los clientes
que tienen probabilidad de cambiar y ofrecerles incentivos especiales para que
se queden, puede reducirse la tasa de fugas; pero ninguna compañía tiene los
recursos para contactar a más de un pequeño porcentaje de sus clientes. El
problema es, por tanto, cómo identificar a los clientes que más piensen fugarse
con mayor probabilidad. Todas las compañías tienen grandes bases de datos con
información de los clientes que teóricamente puede utilizarse para este
propósito; pero ¿qué método funciona mejor para examinar esta enorme cantidad
de datos e identificar los sutiles patrones y tendencias que indican la
probabilidad de fuga de un cliente?
Au, Chan y Yao aplicaron algoritmos genéticos a este problema para generar un
conjunto de reglas de tipo si-entonces para predecir la probabilidad de fuga de
distintos grupos de clientes. En su AG, la primera generación de reglas, todas las
cuales tenían una condición, fue generada utilizando una técnica de inducción
probabilística. Las generaciones posteriores las refinaron, combinando sencillas
reglas de una condición con reglas más complejas con varias condiciones. Para
la medición de la aptitud se utilizó una medida de correlación objetiva de la
``interesantitud'', que no necesitaba información de entrada subjetiva. El
algoritmo evolutivo de explotación de datos se probó sobre una base de datos
29
Desarrollos Inteligentes
Algoritmos Genéticos
real de 100.000 clientes proporcionada por una compañía de Malasia, y su
rendimiento se comparó con el de dos métodos alternativos: una red neuronal
multicapa y un algoritmo basado en árbol de decisiones ampliamente utilizado,
el C4.5. Los autores afirman que su AG fue capaz de descubrir regularidades
ocultas en la base de datos y ``efectuó predicciones precisas de fuga con
distintas tasas de fuga'', superando al C4.5 bajo todas las circunstancias,
superando a la red neuronal en tasas mensuales de fuga bajas e igualándola en
tasas de fuga mayores y, en ambos casos, alcanzando las conclusiones más
rápidamente. Algunas ventajas más del enfoque evolutivo son que puede
funcionar eficientemente incluso cuando faltan algunos campos de datos, y que
puede expresar sus descubrimientos en conjuntos de reglas fácilmente
comprensibles, al contrario que la red neuronal.
Entre algunas de las reglas más interesantes halladas por el AG se encuentran las
siguientes: los clientes tienen más probabilidad de fugarse si se han suscrito
personalmente al plan de servicios y no han sido admitidos en ningún plan de
bonificación (una solución potencial sería admitir a todos esos clientes en planes
de bonificación); los clientes tienen más probabilidad de fugarse si viven en
Kuala Lumpur, tienen entre 36 y 44 años y pagan sus facturas en efectivo
(supuestamente porque es más fácil cambiarse de proveedor para los clientes que
pagan al contado, a diferencia de los que cargan en cuenta automáticamente); y
los clientes que viven en Penang y contrataron a través de un cierto vendedor
tienen más probabilidades de fugarse (este vendedor puede estar proporcionando
un mal servicio al cliente y debería ser investigado).
Optimización y Matemáticas.
La optimización de losas de concreto prefabricadas es un problema abordado en
el Engineering Design Centre de la Universidad de Plymouth en Inglaterra
(Coello, 2001), la losa se representa como una placa sujeta a diversos tipos de
cargas. En el problema se tienen unas 400 variables continuas de decisión, el
costo computacional asociado a esta solución es muy alto, una sola evaluación
30
Desarrollos Inteligentes
Algoritmos Genéticos
de la función de aptitud toma aproximadamente 10 minutos en una estación de
trabajo Sun Spark con 6 procesadores.
Se recurrió a un esquema distribuido para evaluar la función de aptitud, se logró
obtener un ahorro del 3% al 5% en relación con el mejor resultado obtenido por
expertos humanos utilizando técnicas tradicionales de optimización.
La empresa Escocesa Quadstone, usó AGs para resolver un problema de
optimización de estrategias de producción de British Petrol. El objetivo era
maximizar el rendimiento financiero de un grupo de campos petrolíferos y de
gas interdependientes, con un sinnúmero de restricciones complejas de
compromisos y penalizaciones.
El uso de AGs produjo retornos netos substancialmente mejores que los
obtenidos por planeadores humanos o por cualquier otra técnica de
optimización.
También los AGs se han enfocado a la optimización de las estrategias de acceso
a una gran base de datos, para mejorar los tiempos de respuesta en las consultas.
Algunos problemas clásicos en Informática como el ordenamiento de una lista
de elementos, han sido direccionados mediante algoritmos genéticos.
Igualmente en Matemáticas se han utilizado AGs, para resolver ecuaciones de
derivadas parciales no lineales de alto orden, normalmente encontrando los
valores para los que las ecuaciones se hacen cero, y dan como ejemplo una
solución casi perfecta para los coeficientes de la ecuación de quinto orden
conocida como Super Korteweg-de Vries.
Diseño.
Muy diversas aplicaciones se han abordado en el campo del diseño, en diferentes
disciplinas, se mencionarán a continuación algunas de estas.
31
Desarrollos Inteligentes
Algoritmos Genéticos
Diseño de un sistema de suspensión para un automóvil realizado por
investigadores del KanGAL, que es un laboratorio de Algoritmos Genéticos de
Kanpur en la India (Coello, 2001).
Burke y Newall utilizaron algoritmos genéticos para diseñar los horarios de los
exámenes universitarios. Se sabe que, en general, el problema del horario es NPcompleto, lo que significa que no se conoce un método para hallar con garantías
una solución óptima en un tiempo razonable. En un problema así, hay
restricciones duras -no puede asignarse el mismo aula a dos exámenes a la vez- y
restricciones suaves -si es posible, no deben asignarse varios exámenes en
sucesión a un mismo estudiante, para minimizar la fatiga. Las restricciones duras
deben satisfacerse, mientras que las restricciones suaves deben satisfacerse lo
máximo posible.
GAnet es uno de los tres productos principales de software de la empresa
Optimal Solutions, que es una biblioteca de clases para desarrollar algoritmos
genéticos, incluye rutinas para simular redes hidráulicas y permite el manejo de
restricciones duras y blandas. Se aplicó esta solución en el diseño de una red de
agua potable para la región de York (Ontario, Canadá) (Coello, 2001).
He y Mort aplicaron algoritmos genéticos al problema de hallar rutas óptimas
en las redes de telecomunicaciones (como las redes de telefonía e Internet), que
se usan para transmitir datos desde los remitentes hasta los destinatarios. Esto es
un problema NP-difícil, un tipo de problema para el que los AGs son
``extremadamente aptos... y han encontrado una enorme variedad de
aplicaciones exitosas en esos campos''. Es además un problema multiobjetivo, en
el que hay que equilibrar objetivos en conflicto como maximizar el caudal de
datos, minimizar los retrasos en la transmisión y la pérdida de datos, encontrar
caminos de bajo coste y distribuir la carga uniformemente entre los
encaminadores o conmutadores de la red. Cualquier algoritmo real satisfactorio
debe también ser capaz de redirigir el tráfico de las rutas principales que fallen o
estén congestionadas.
Los AGs combinados con redes neuronales fueron utilizados por un grupo de
Unilever Research, para diseñar nuevos péptidos bactericidas para usarse en
32
Desarrollos Inteligentes
Algoritmos Genéticos
limpiadores anti-bacterianos y preservativos de alimentos. El resultado fue la
generación de 400 bactericidas virtuales potencialmente activos, de los cuales
cinco fueron sintetizados (Coello, 2001).
Otras investigaciones plantean la utilización de un AG para auxiliar en la
selección de los diversos parámetros que deben considerarse en el diseño de una
aeronave.
A continuación se ejemplificará la aplicación de los AGs con la descripción del
problema del agente viajero, se recomienda al lector tomarse su tiempo para
revisar esta solución.
El problema del agente viajero.
Se trata de un problema muy conocido referenciado como TSP (Travelling
Salesman Problem),
pero también de mucha aplicabilidad, y sobre todo fácil de
entender, por lo que resulta un caso paradigmático.
Es la situación de un agente viajero (Travelling Salesman), que debe planear su
recorrido por n ciudades (n>=3), pasando solo una vez por cada una, y
regresando a la ciudad en donde inició su viaje, de tal manera que la distancia
recorrida sea mínima. Sea Cij la distancia de la ciudad “i” a la “j”.
Es decir, se debe obtener una permutación de n elementos Cij que minimiza la
sumatoria:
n
∑ Cij
i=1
Sin repetir ciudades a visitar.
El número de soluciones posibles es del orden de n!.
Existen diferentes formas de representar una gira, y por tanto una solución al
problema, los operadores de cruce y mutación dependerán fuertemente de tal
representación, a efecto de mostrar esta situación se verá a continuación unas
maneras de hacerlo.
Una forma muy natural de representación es la que se basa en la trayectoria, una
gira se representa como una lista de n ciudades, si se observa la figura 3.7.1, la
gira 1-2-3-6-5-8-7-4 se puede indicar mediante (1 2 3 6 5 8 7 4).
33
Desarrollos Inteligentes
Algoritmos Genéticos
Figura 3.7.1 Representación de un mapa de 8 ciudades con sus comunicaciones.
Operador de cruce PMX (Partially Mapped Crossover) (Bukcland Mat, 2002),
En él, una parte de la ristra representando a uno de los padres, se hace
corresponder con una parte, de igual tamaño, de la ristra del otro padre,
intercambiándose la información restante. Por ejemplo si se consideran los
padres:
Padre 1
(3 2 5 6 8 7 4 1) y
Padre 2
(3 1 2 5 6 8 7 4)
El operador PMX crea las giras descendientes de la siguiente manera. En primer
lugar, selecciona con probabilidad uniforme dos puntos de corte a lo largo de las
ristras que representan las giras padres. Supongamos que el primer punto de
corte se selecciona entre el tercer y el cuarto elemento de la gira, y el segundo
entre el sexto y el séptimo elemento:
Padre 1 (3 2 5 | 6 8 7 | 4 1) y
Padre 2 (3 1 2 | 5 6 8 | 7 4)
Se establece una correspondencia biunívoca entre los elementos comprendidos
entre los puntos de corte, en este caso se tienen las correspondencias: 6 <--> 5,
34
Desarrollos Inteligentes
Algoritmos Genéticos
8<--> 6, y 7 <--> 8. Posteriormente se copian las subristras del padre 1 en el
hijo 1 y la del padre 2 en el hijo 2 quedando así:
Hijo 1: ( 3 2 5 | 6 8 7 | 4 1)
Hijo 2 : ( 3 1 2 | 5 6 8 | 7 4)
A continuación se procede a intercambiar los elementos de los hijos tomando en
cuenta los mapeos correspondientes. Considerando el mapeo 6 <--> 5:
Hijo 1: ( 3 2 6 | 5 8 7 | 4 1)
Hijo 2: ( 3 1 2 | 6 5 8 | 7 4)
Se procede con los intercambios de acuerdo al mapeo 8<-->6, de esta manera
quedarán los descendientes así:
Hijo 1: ( 3 2 8 | 5 6 7 | 4 1)
Hijo 2: ( 3 1 2 | 8 5 6 | 7 4)
Finalmente se procede con el mapeo 7 <--> 8:
Hijo 1: ( 3 2 7 | 5 6 8 | 4 1)
Hijo 2: ( 3 1 2 | 7 5 6 | 8 4)
Generando finalmente los descendientes:
Hijo 1: ( 3 2 7 5 6 8 4 1)
Hijo 2: ( 3 1 2 7 5 6 8 4)
Operador de mutación basado en desplazamiento (DM), se inicia extrayendo una
subcadena al azar y se inserta en otra posición dada aleatoriamente. Por ejemplo
sea la cadena (1 2 5 3 6 8 7 4), suponiendo que se selecciona la sublista (3 6 8)
y al azar se elige la posición que se encuentra después del elemento con valor 7,
35
Desarrollos Inteligentes
Algoritmos Genéticos
entonces la cadena resultante ya aplicado el operador de mutación será la
siguiente: ( 1 2 5 7 3 6 8 4).
Los descendientes obtenidos mediante los operadores PMX y DM, no tienen
elementos repetidos, cumpliendo así con esta restricción, sin embargo la
factibilidad de conectividad pudiera no ser satisfecha, de tal manera que al final
de la obtención de una solución óptima debiera verificarse tal situación.
Existen una diversidad de operadores de cruce y de mutación propuestos por
diferentes autores, conviene que el lector investigue algunos de ellos con el fin
de comparar las formas de codificación y los resultados que arroja cada una.
36
Desarrollos Inteligentes
Algoritmos Genéticos
PREGUNTAS
1. ¿En qué se basa la computación bio-inspirada?.
2. Mencione algunos modelos de computación bio-inspirada.
3. ¿En qué tipo de proceso de los seres vivos se basan los algoritmos genéticos?.
4. ¿ Cuál es la teoría de la evolución biológica en su forma macroscópica que
sirve como base para los Algoritmos genéticos?.
5. ¿Qué procesos hacen que unos alelos cambien de frecuencia entre
generaciones de poblaciones de los seres vivos?.
6. ¿Por quién y en qué año fueron establecidos los principios básicos de los
algoritmos genéticos?.
7. Un cromosoma ¿Qué codifica y qué representa en un algoritmo genético?.
8. ¿ En qué se diferencian de otros algoritmos de optimización o búsqueda los
AGs ?.
9. ¿ Cuáles son los componentes característicos de los algoritmos genéticos?
10. ¿Una ventaja muy importante y quizás la principal de los AGs es?
37
Desarrollos Inteligentes
Algoritmos Genéticos
RETROALIMENTACIÓN SOBRE LAS PREGUNTAS
1. La computación bio-inspirada se basa en establecer analogías con sistemas
naturales o sociales para diseñar métodos heurísticos no determinísticos de
“búsqueda”, de “aprendizaje”, de imitación de “comportamiento”, etc.
.
2. Algunos modelos de computación bio-inspirada son:
-
Algoritmos evolutivos
-
Redes neuronales
-
Algoritmos inmunológicos
-
Algoritmos basados en inteligencia de enjambres
.
3. Los algoritmos genéticos se basan en el proceso genético de los seres vivos.
4. La teoría de la evolución biológica en su forma macroscópica que sirve como
base para los AGs es la Darwinista.
5. Esos procesos son los factores de evolución como la mutación, la deriva
genética, la migración y la selección natural.
6. Los principios básicos de los algoritmos genéticos fueron establecidos por J.
Holland en 1975.
7. Los algoritmos genéticos codifican las posibles soluciones en estructuras
llamadas cromosomas, que representan el material genético de un individuo
8. Los AGs se diferencian de otros algoritmos de optimización o búsqueda en
cuatro aspectos:
- Trabajan con la codificación del conjunto de parámetros, no con los
parámetros mismos.
- Manejan una población de puntos solución, no un solo punto.
38
Desarrollos Inteligentes
Algoritmos Genéticos
- Utilizan información de eficiencia (función objetivo), no derivadas o
conocimiento auxiliar.
- Usan reglas de transición probabilísticas, no determinísticas.
9. Los componentes característicos de los algoritmos genéticos son los
siguientes:
-
La definición del problema
-
La representación de la solución del problema
-
La decodificación del cromosoma
-
La evaluación de un individuo
-
Los operadores evolutivos: Selección, cruce y mutación.
10. Una ventaja muy importante y quizás la principal, la constituye el hecho de
que los AGs son paralelos, es decir, permiten explorar el espacio de soluciones
en muy diversas direcciones a la vez, lo que posibilita encontrar una solución
cercana a la óptima en un tiempo relativamente corto.
39
Desarrollos Inteligentes
Algoritmos Genéticos
EJERCICIOS
1. Considere el siguiente problema: Se tiene una caja negra, la cual consta de 5
interruptores de entrada, para cada configuración de ellos existe una señal de
salida f, el objetivo es determinar la posición de los interruptores que genere un
valor máximo para f. Suponga que se asocia los valores 0 y 1 a las posiciones
apagado y encendido de los interruptores respectivamente. Elabore una
codificación del problema de tal manera que pueda ser resuelto mediante un
algoritmo genético.
2. Para el problema del ejercicio 1, suponga que se tienen seis configuraciones
específicas de los interruptores, y que sus señales de salida son las siguientes:
5, 10, 15, 25, 50, y 100. Bajo el operador de la ruleta sencilla, determine el
número esperado de copias de cada configuración en una cierta generación, si el
tamaño de la población manejada es de seis.
3. El problema consiste en encontrar el valor de la variable x que produce el
máximo valor de la función f(x) = 28x- x2, sobre el intervalo
para x en
[0,1,2,...,31]. Desarrolle una codificación y ejecute manualmente el algoritmo
genético que permita resolver el problema. ¿En cuántas generaciones pudo
obtener una solución óptima?.
4. Una población contiene las siguientes cadenas de bits cada una
representando una configuración de los cinco interruptores del ejercicio1, sus
valores de bondad de adaptación f son los siguientes:
Cadena
f
10001
20
11100
10
00011
5
01110
15
40
Desarrollos Inteligentes
Algoritmos Genéticos
La probabilidad de mutación es Pm = 0.001, y la probabilidad de cruce es
Pc=1.0 . Calcule el número esperado de esquemas de la forma 1**** en la
generación 1.
41
Desarrollos Inteligentes
Algoritmos Genéticos
BIBLIOGRAFÍA.
Bukcland Mat (2002).- A I Techniques for game programming. Premier Press,
Cincinnati, Ohio, U.S.A.
Coello Coello Carlos (2001).- Introducción a la computación evolutiva (notas del
curso). CINVESTAV-IPN, México D.F.
Goldberg David E. (1989).- Genetic Algorithms in search, optimization, and machine
learning. Addison Wesley publishing Co. Inc.U.S.A.
Mateos Alfonso (2003). Algoritmos evolutivos y algoritmos genéticos.- Universidad
Carlos III, Madrid.
42
Desarrollos Inteligentes
Algoritmos Genéticos
REFERENCIAS WEB:
http://www.molwick.com/es/evolucion/140-genetica-evolucion.html
Fecha de acceso: 7/Mayo/2008
Tema: Fundamentos de genética y evolución.
http://biologia.uab.es/divulgacio/genpob.html#factores
Fecha de acceso: 15/Mayo/2008
Tema: Fundamentos de genética y evolución.
http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf
Fecha de acceso: 18/Mayo/2008
Tema: Fundamentos de algoritmos genéticos.
43
Descargar