Los Algoritmos Genéticos – Introducción – Componentes de un AG – Un AG Simple con representación binaria – Operadores de Selección, Cruce y Mutación – Ejemplo: Cálculo del máximo de una función – AG con codificación no binaria (Penalty Job Sequ.) Introducción Los Algoritmos Genéticos siguen una estrategia inspirada en las leyes de la evolución natural que combina búsqueda dirigida y búsqueda aleatoria [Davis 74] ......la idea subyacente de los Algoritmos Genéticos es la de la evolución natural. En la evolución, las especies se enfrentan al problema de adaptarse a un entorno complejo y cambiante. El conocimiento que cada especie adquiere en este proceso se refleja en la construcción de los cromosomas de sus individuos. Componentes de un AG • Una representación genética de los individuos o soluciones potenciales del problema (por ejemplo binaria), • Un modo de crear la población inicial, • Una función de evaluación que juega el papel del entorno permitiendo clasificar a los individuos en términos de su fitness, • Operadores genéticos de selección, cruce y mutación que simulan la evolución de las poblaciones, y • Valores de los parámetros del algoritmo: longitud de los individuos, tamaño de la población, número de generaciones, probabilidad de cruce y probabilidad de mutación. Un Algoritmo Genético Simple Algoritmo Genético Simple Leer parámetros; {Pc,Pm,tam-pob,nro-gen,tam-ind} Generar la población inicial P(0); Evaluar P(0); Mientras no ultima-generación hacer Generar una nueva población P(t) a partir de la población anterior aplicando los operadores de Selección, Cruce y Mutación; Evaluar P(t) Finmientras; Devuelve el mejor individuo de la última población; Fin. Operadores Genéticos con Representación Binaria – Selección • Selecciona un individuo de la población anterior con una probabilidad proporcional al fitness del individuo – Cruce en un punto • Se eligen dos individuos aleatoriamente y se decide si hay cruce o no entre ellos de acuerdo con la probabilidad de cruce. En caso afirmativo – Se genera una posición aleatoria entre 1 y la longitud del individuo – Se intercambian las subcadenas a partir de la posición generada – Mutación • Cambia el valor de un bit con una probabilidad igual a la probabilidad de mutación Ejemplo de Selección, Cruce y Mutación 000110010111 8 0.32 111010101100 111010101100 6 0.24 000110010111 001110101001 6 0.24 111010101100 111011011100 5 0.2 a) Población actual b) Fitness y prob. de selección 4 111010010111 111010010111 000110101100 000110101100 111010101001 11111010100 1 001110101001 001110101100 001110101101 c) Selección d) Cruce 8 e) mutación. Población siguiente Ejemplo: cálculo del máximo de una función Se trata de encontrar el máximo, en el intervalo [-1..2], de la función f(x) = x * sen(10πx) + 2.0 (Solución: x = 1.85, f(1.85) = 3.85) 4 3,5 3 2,5 f(x) 2 1,5 1 0,5 0 -1 0 1 x Solución con un AG Representación de los individuos (binaria) Población inicial (aleatoria) Función de evaluación o fitness (eval(v)=f(x)) Operadores genéticos (cruce en un punto, ..), Parámetros (Pc, Pm, tamaño de la población, número de generaciones, tamaño de los individuos) 2 ¿Cómo determinar los parámetros? Tamaño de los individuos Si queremos seis dígitos después del punto decimal, necesitamos, al menos, 3000000 de valores distintos (pues la longitud del intervalo es 3). Esto significa que debemos tener al menos 22 bits, ya que 2097152 = 221 < 3000000 < 222 = 4194304 Ejemlos: (1000101110110101000111) (0000000000000000000000) (1111111111111111111111) 0.637197 -1 2 Otros parámetros Pc = 0.8, Pm = 0.03, número de generaciones = 100, tamaño de la población = 50 AG con codificación no binaria – Ejemplo de AG para el problema PJS • Codificación: una permutación de los trabajos (Tk1,...,Tkn) • Función fitness Coste_Total(Tk1,...,Tkn) = n ∑ (t i =1 ki + du ki )× pki Fitness(Tk1,...,Tkn) = 1 / Coste_Total(Tk1,...,Tkn) • Operadores Genéticos – Selección: proporcional al fitness – Cruce: cruce basado en el orden (OX) – Mutación: intercambio de 2 trabajos elegidos aleatoriamente Cruce basado en el orden (OX) para permutaciones Padre1 Padre2 (T2 T5 T1 T6 T0 T3 T4) (T0 T4 T5 T6 T3 T2 T1) Selección de una subcadena Se eliminan los elementos de la subcadena (-- -- T1 T6 T0 -- --) (-- T4 T5 -- T3 T2 --) La subcadena del Padre1 mantiene el orden y la posición y el resto de tareas mantienen el orden del Padre 2 Hijo (T4 T5 T1 T6 T0 T3 T2)