Anda di halaman 1dari 71

1. ALGORITMOS GENÉTICOS.

INTRODUCCIÓN
2. ¿CÓMO SE CONSTRUYE?
3. SOBRE SU UTILIZACIÓN
4. ALGUNAS CUESTIONES: DIVERSIDAD,
EXPLORACIÓN vs EXPLOTACIÓN
5. MODELOS: GENERACIONAL vs
ESTACIONARIO
6. DOMINIOS DE APLICACIÓN
En la naturaleza, los procesos evolutivos ocurren
cuando se satisfacen las siguientes condiciones:
 Una entidad o individuo tiene la habilidad de
reproducirse.
 Hay una población de tales individuos que son
capaces de reproducirse.
 Existe alguna variedad, diferencia, entre los
individuos que se reproducen.
 Algunas diferencias en la habilidad para
sobrevivir en el entorno están asociadas con esa
variedad.
Los mecanismos que conducen esta evolución no
son totalmente conocidos, pero sí algunas de sus
características, que son ampliamente aceptadas:
 La evolución es un proceso que opera sobre los
cromosomas más que sobre las estructuras de
la vida que están codificadas en ellos.
La selección natural es el enlace entre los cromosomas
y la actuación de sus estructuras decodificadas.

El proceso de reproducción es el punto en el cual la


evolución toma parte, actúa.

La evolución biológica no tiene memoria.

Referencia: Darwin, C. (1859). On the Origin of


Species by Means of Natural Selection or the
Preservations of Favoured Races in the Struggle for
Life. London: John Murray
COMPUTACIÓN EVOLUTIVA
Está compuesta por modelos de evolución
basados en poblaciones cuyos elementos
representan soluciones a problemas.
La simulación de este proceso en una
computadora resulta ser una técnica de
optimización probabilística, que con frecuencia
mejora a otros métodos clásicos en problemas
difíciles.
Los Algoritmos Genéticos
son algoritmos de optimización,
búsqueda
y aprendizaje
inspirados en los procesos de
Evolución Natural
y
Evolución Genética
"El algoritmo genético es un algoritmo matemático
altamente paralelo que transforma un conjunto
(población) de objetos matemáticos individuales
(típicamente cadenas de caracteres de longitud fija que
se ajustan al modelo de las cadenas de cromosomas),
cada uno de los cuales se asocia con una aptitud, en
una población nueva (es decir, la siguiente generación)
usando operaciones modeladas de acuerdo al
principio Darwiniano de reproducción y sobrevivencia
del más apto y tras haberse presentado de forma
natural una serie de operaciones genéticas
(notablemente la recombinación sexual)."
Para poder aplicar el Algoritmo Genético se requiere de los
5 componentes básicos siguientes:
 Una representación de las soluciones potenciales del problema.

 Una forma de crear una población inicial de posibles soluciones


(normalmente un proceso aleatorio).

 Una función de evaluación que juegue el papel del ambiente,


clasificando las soluciones en términos de su "aptitud".

 Operadores genéticos que alteren la composición de los hijos que


se producirán para las siguientes generaciones

 Valores para los diferentes parámetros que utiliza el Algoritmo


Genético (tamaño de la población, probabilidad de cruza,
probabilidad de mutación, número máximo de generaciones, etc.)
Pasos para construir un Algoritmo Genético:

 Diseñar una representación.


 Decidir cómo inicializar una población.
 Diseñar una correspondencia entre genotipo y
fenotipo.
 Diseñar una forma de evaluar un individuo.
 Diseñar un operador de mutación adecuado.
 Diseñar un operador de cruce adecuado.
 Decidir cómo seleccionar los individuos para ser
padres.
 Decidir cómo reemplazar a los individuos.
 Decidir la condición de paro.
 Debemos disponer de un mecanismo para
codificar un individuo como un genotipo.
 Existen muchas maneras de hacer esto y se
debe elegir la más relevante para el problema
en cuestión.
 Una vez elegida una representación, tenemos
que tener en mente cómo los genotipos
(codificación) serán evaluados y qué
operadores genéticos habrá que utilizar.
Típicamente cada organismo en la población consiste de un
cromosoma, el cual es asimismo un vector de la forma:

<x1, x2, . . ., xn>

donde a cada xi se le llama gen y al valor que toman se le


denomina alelo. Normalmente estos cromosomas se
representan usando un alfabeto binaro, pero no tiene que
ser forzosamente de esa manera, ya que alfabetos de
cualquier cardinalidad son posibles. Típicamente, se
utilizan la llamada representación real (o de punto flotante)
como alternativa para problemas de optimización
numérica en el que las variables toman valores reales. El
uso de letras o cualquier otro símbolo es también válido.
 Cadenas Binarias (Tradicional)
 Punto Flotante (Binaria)
 Punto Flotante (Real)
 Cadenas Enteras
 Expresiones S en LISP (Programación
Genética)
El fenotipo puede ser números reales
Ejemplo: un número entre 2.5 y 20.5 utilizando
8 dígitos binarios
Genotipo: Fenotipo:
1 0 1 0 0 0 1 1 = 13.9609

163
x 2.5 (20.5 2.5) 13.9609
256
 Una forma natural de codificar una
solución es utilizando valores reales
como genes.

 Muchas aplicaciones tienen esta


forma natural de codificación.
 Los individuos se representan como
permutaciones.
 Se utilizan para problemas de secuenciación.
 Ejemplo famoso: Agente Viajero, donde cada
ciudad tiene asignado un único número entre 1
y n.
 Necesita operadores especiales para garantizar
que el resultado de aplicar un operador sigue
siendo una permutación.
 Uniforme sobre el espacio de búsqueda … (si
es posible)
 Cadena binaria: 0 ó 1 con probabilidad 0.5
 Representación real: uniforme sobre un intervalo
dado (para valores acotados)
 Elegir la población a partir de los resultados de
una heurística previa
 Algunas veces la
Genotipo Datos de un
obtención del fenotipo (Codificación) Problema
a partir del genotipo es
un proceso obvio.
 En otras ocasiones, el Algoritmo
genotipo puede ser un de
conjunto de parámetros obtención
para algún algoritmo, el
cual trabaja sobre los
datos de un problema
para obtener un Fenotipo
fenotipo.
 Este es el paso más costoso para una aplicación
real.
 Puede ser una subrutina, un simulador, o
cualquier proceso externo (ej. Experimentos en
un robot, ....).
 Se pueden utilizar funciones aproximadas para
reducir el costo de evaluación.
 Cuando hay restricciones, estas se pueden
introducir en el costo como penalización.
La Mutación es otro operador genético de gran
importancia que cambia aleatoriamente un gen de un
cromosoma. Si usamos representación binaria, una
mutación cambia un 0 en 1 y viceversa.

Este operador permite la introducción de nuevo


material cromosómico en la población y desde la
perspectiva teórica, asegura que, dada cualquier
población, el espacio de búsqueda se encuentre
totalmente conectado.
 Podemos tener uno o más operadores de
mutación para nuestra representación.
 Algunos aspectos importantes a tener en
cuenta son:
 Debe permitir alcanzar cualquier parte del espacio
de búsqueda.
 El tamaño de la mutación debe ser controlado.
 Debe producir cromosomas válidos.
 Podríamos tener uno o más operadores de
cruza para nuestra representación.
 Algunos aspectos importantes a tener en
cuenta son:
 Los hijos deberían heredar algunas características de
cada padre. Si éste no es el caso, entonces estamos
ante un operador de mutación.
 Se debe diseñar de acuerdo a la representación.
 La recombinación debe producir cromosomas
válidos.
Uso de un solo punto de cruza entre 2 individuos.
Observe que cada pareja de cromosomas da origen a 2
descendientes para la siguiente generación. El punto
de cruza puede ser cualquiera de los 2 extremos de la
cadena, en cuyo caso no se realiza la cruza.
Uso de 2 puntos de cruza entre 2 individuos. Note como en
este caso se mantienen los genes de los extremos, y se
intercambian los del centro. También aquí existe la
posibilidad de que uno o ambos puntos de cruza se
encuentren en los extremos de la cadena, en cuyo caso se
hará una cruza usando un solo punto, o ninguna cruza,
según corresponda.
 Debemos garantizar que los mejores individuos
tengan una mayor posibilidad de ser padres
(reproducirse) frente a los individuos menos
buenos.
 Debemos ser cuidadosos para dar una
posibilidad de reproducirse a los individuos
menos buenos. Éstos pueden incluir material
genético útil en el proceso de reproducción.
 Esta idea nos define la presión selectiva que
conducirá la reproducción como la selección
fuerte de los mejores.
 Selección proporcional.
 Selección por jerarquías.
 Selección mediante torneo.
Este nombre describe a un grupo de esquemas de
selección originalmente propuestos por Holland
que eligen individuos de acuerdo a los valores de
sus funciones objetivo. En este caso, el "valor
esperado" de un individuo (es decir, el número
esperado de veces que un individuo será
seleccionado para reproducirse) es la aptitud del
individuo dividida entre la aptitud promedio de la
población. Existen algunas variantes de esta
técnica:
La Ruleta (De Jong, 1975): Es el método más
común de implementación de esta técnica. A cada
individuo se le asigna una rebanada de una
"ruleta" circular proporcional a su aptitud. La
rueda se gira N veces, donde N es el número de
individuos en la población. A cada vuelta, el
individuo que se encuentre bajo el marcador de la
rueda es seleccionado como uno de los padres para
la siguiente generación.
Desventajas:

 Peligro de convergencia prematura porque los


mejores individuos dominan la población muy
rápidamente.
 Baja presión selectiva cuando los valores de la
función objetivo están muy cercanos.
 Comportamientos diferentes cuando se
realizan traslaciones sobre la función de
evaluación.
Escalado de la aptitud (valor de adecuación): Una
solución

 Ajustar la aptitud a un rango:


 Ej. Rangos de 0 a 1
 Normalizar:
 La suma de las aptitudes igual a 1
La técnica puede implementarse de la manera
siguiente:

1. Sume el valor esperado total de los individuos en la


población. Llame a esta suma T.
2. Repetir N veces:
Escoger 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 cuyo valor esperado haga que esta
suma exceda este límite es el seleccionado.
El problema de la ruleta es que normalmente los AGs
usan poblaciones pequeñas y entonces el número de
hijos que se asignan a un individuo está normalmente
bastante lejos de su valor esperado, y es incluso
probable (aunque muy remotamente) que una serie de
giros desafortunados seleccionen repetidamente al
peor individuo de la población. La implementación de
esta técnica es O(n²), aunque puede mejorarse su
eficiencia si se usa búsqueda binaria para localizar la
posición correcta de la rueda en vez de recorrer la
población secuencialmente con una búsqueda lineal.
Esto requiere memoria extra y un recorrido O(n) a
través de la lista para calcular los totales acumulados
por cada segmento de la rueda. La complejidad total se
reduce entonces a O(nlog n).
Cromosoma No. Cadena Aptitud % del Total
1 11010110 254 24.5
2 10100111 47 4.5
3 00110110 457 44.1
4 01110010 194 18.7
5 11110010 85 8.2
Total 1037 100.0
En este caso se escoge aleatoriamente un número P de individuos
(típicamente 2) de la población y se hacen competir entre sí en base a su
aptitud. El individuo (o los individuos) más apto es el que resultará
ganador del torneo y se selecciona como padre para la siguiente
generación. La población normalmente se debe barajar P veces, con lo
que el orden de los individuos es alterado a fin de que puedan volver a
seleccionarse.

Esta técnica garantiza que el individuo más apto será seleccionado P


veces, y que el menos apto nunca será seleccionado. El cálculo de la
complejidad de este algoritmo es muy simple. Cada competencia
requiere la selección aleatoria de un número constante de individuos
de la población. La comparación entre estos individuos puede
realizarse en un tiempo constante, y n competencias de este tipo se
requieren para completar una generación. De tal forma, la selección
mediante torneo es O(n).
Cromosoma No. Cadena Aptitud Barajar Ganadores
1 11010110 A 254 B F
2 10100111 B 47 F
3 00110110 C 457 A C
4 01110010 D 194 C
5 11110010 E 85 E D
6 01111001 F 310 D

Los padres que se seleccionan para la


siguiente generación son:
F,CyD
Cromosoma No. Cadena Aptitud Barajar Ganadores
1 11010110 A 254 D A
2 10100111 B 47 A
3 00110110 C 457 F F
4 01110010 D 194 E
5 11110010 E 85 B C
6 01111001 F 310 C

Los padres que se seleccionan para la siguiente


generación son: A , F y C

La población para la siguiente generación queda


compuesta por:
A , C, C, D, F, F

Nótese cómo el mejor individuo siempre es seleccionado 2


veces (suponiendo torneo binario) y el peor nunca es
seleccionado.
 Los individuos se ordenan por su valor de
función objetivo de mejor a peor. El lugar
ocupado en la lista se llama el orden del
cromosoma.
 En lugar del valor de la función objetivo, se
utiliza el orden del cromosoma, para ordenar
entre un máximo y un mínimo.
 La presión selectiva se ve también afectada por
la forma en que los cromosomas de la
población son reemplazados por los nuevos
descendientes.

 Podemos utilizar métodos de reemplazamiento


aleatorios, o determinísticos.

 Podemos decidir no reemplazar al mejor(es)


cromosoma(s) de la población: Elitismo.
Si supiéramos de antemano la solución final de
nuestro problema de optimización, sería trivial
determinar cómo detener un algoritmo genético. Sin
embargo, puesto que esto no es normalmente posible,
tenemos que usar uno de los siguientes criterios de
detención:

 Correr el algoritmo genético por un cierto número


(fijo) de generaciones.

 Detenerlo cuando la población se haya


estabilizado, es decir, cuando la mayoría de los
individuos tengan el mismo valor de aptitud.
 ¡Cuando se alcanza el óptimo!
 Recursos limitados de CPU:
Fijar el máximo número de evaluaciones.
 Límite sobre la paciencia del usuario: Después
de algunas iteraciones sin mejora.
 Nunca sacar conclusiones de una única ejecución.
 utilizar medidas estadísticas (medias, medianas, ...).
 con un número suficiente de ejecuciones independientes.

 “Se puede obtener lo que se desea en una


experimentación de acuerdo a la dificultad de los casos
utilizados”–Checar la actuación de un algoritmo sobre
ejemplos simples si se desea trabajar con casos reales.

 Desde el punto de vista de las aplicaciones:


doble enfoque y diferente diseño
 Encontrar una solución muy buena al menos una vez.
 Encontrar al menos una solución muy buena en cada
ejecución.
 Optimización combinatoria y en dominios reales.
 Modelado e identificación de sistemas.
 Planificación y control.
 Ingeniería.
 Inteligencia Artificial.
 Aprendizaje y minería de datos.
 Internet y Sistemas de Recuperación de Información.
 ...

Ref: T. Bäck, D.B. Fogel, Z. Michalewicz, Handbook of


Evolutionary Computation. Oxford Univ. Press, 1997.
 No necesitan conocimientos específicos sobre el
problema que intentan resolver.
 Operan de forma simultánea con varias
soluciones, en vez de trabajar de forma
secuencial como las técnicas tradicionales.
 Cuando se usan para problemas de
optimización -maximizar una función objetivo-
resultan menos afectados por los máximos
locales (falsas soluciones) que las técnicas
tradicionales.
 Resulta sumamente fácil ejecutarlos en las modernas
arquitecturas masivas en paralelo.
 Usan operadores probabilísticos, en vez de los típicos
operadores determinísticos de las otras técnicas.
 Pueden tardar mucho en converger, o no converger en
absoluto, dependiendo en cierta medida de los
parámetros que se utilicen -tamaño de la población,
número de generaciones, etc.
 Pueden converger prematuramente debido a una serie
de problemas de diversa índole.
 Si el espacio de búsqueda es grande,
accidentado, poco comprendido
 La función de aptitud tiene mucho ruido
 Si la tarea no requiere que se encuentre el
óptimo global (encontrar rápidamente
una solución bastante buena es
suficiente).
 Si la función de aptitud tiene ruido (por
ejemplo, si involucra tomar medidas sujetas a
error de un proceso del mundo real tal como la
visión de un robot), un método de búsqueda
que use un solo candidato a la vez (como
escalando la colina) será arrastrada
inevitablemente por rutas erróneas debido al
ruido, mientras que el AG tendrá un
desempeño razonable porque trabaja mediante
la acumulación de estadísticas de aptitud a
través de las generaciones.
 Los consejos anteriores deben tomarse con
ciertas precauciones, porque no hay reglas
universales sobre cuándo utilizar un AG para
resolver un problema y cuándo no hacerlo. Su
desempeño normalmente dependerá de
detalles tales como el método de codificación
de las soluciones candidatas, los operadores,
los valores de los parámetros, y el criterio en
particular para medir el éxito del algoritmo.
 Si se conoce un algoritmo polinomial
que resuelva el problema.
 Si el espacio de búsqueda es muy
pequeño, entonces el problema se
puede resolver mediante búsqueda
exhaustiva, y el AG no tiene mucha
razón de ser.
 Si el espacio de búsqueda no está accidentado y
es unimodal, entonces una técnica de gradiente
como "escalando la colina con ascenso
pronunciado" será mucho más eficiente que un
algoritmo genético.
 Si el espacio de búsqueda se conoce bien (e.g.,
alguna instancia pequeña del problema del
viajero) es posible diseñar métodos de
búsqueda que usen conocimiento específico
sobre el dominio para superar fácilmente a una
técnica independiente del dominio como el AG.
Algoritmos Genéticos
 Basados en una metáfora biológica: evolución.
 Gran potencialidad de aplicación.
 Muy populares en muchos campos.
 Muy potentes en diversas aplicaciones.
 Altas prestaciones a bajo costo.

 SON ATRACTIVOS DESDE UN PUNTO DE


VISTA COMPUTACIONAL
1. D.E. Goldberg, Genetic Algorithms in Search,
Optimization and Machine Learning. Addison
Wesley, 1989.

2. Z. Michalewicz, Genetic Algorithms + Data


Structures = Evolution Programs. Springer
Verlag, 1996.

3. T. Bäck, D.B. Fogel, Z. Michalewicz, Handbook


of Evolutionary Computation, Oxford Univ.
Press, 1997.

Anda mungkin juga menyukai