Вы находитесь на странице: 1из 38

Las especies no se desarrollan hacia la perfección, sino lo contrario.

El débil, de hecho, siempre prevalece sobre el fuerte, no solamente


porque son mayoría, sino también porque son los más astutos.
Friedrich Nietzsche, The Twilight of the Idols

Universidad de Chile
Facultada de Ciencias Físicas y Matemáticas
Departamento de Ingeniería Civil

ALGORITMOS GENÉTICOS

Presentación original descargada desde: http://www.alfredorahn.com/


Adaptación realizada por Rodrigo Meza L., Semestre de Primavera, 2006
Algoritmos Genéticos

 Programas evolutivos que emplean


principalmente la representación binaria.

 Un algoritmo genético simula la evolución de los


procesos y los cambios genéticos en las
estructuras de los cromosomas o individuos de
una población.

 Cada individuo representa una posible solución


del problema.

 En cada nueva generación habrán individuos


mejor adaptados, es decir, habrá soluciones que
se acercarán cada vez más al óptimo del
problema.
ESTRUCTURA DE UN ALGORITMO
GENÉTICO SIMPLE (AGS)

110010 1010
Cromosomas
101110 1110 Cruce
1100101010
Codificación
Soluciones
1011101110 1100101110

0011011001
1100110001 Mutación
0011011001

0011001001
Selección
Evaluación

1100101110

1011101010
Cálculo Aptitud
0011001001
Rueda de la Ruleta Decodificación Soluciones
ESTRUCTURA GENERAL DE UN
A.G. SIMPLE

Después de varias generaciones el


algoritmo converge hacia el mejor
cromosoma: representa la solución
óptima o subóptima.
ESTRUCTURA GENERAL DE UN
A.G. SIMPLE
1. [Inicio]:Generar población aleatoria de n cromosomas (soluciones apropiadas al
problema)
2. [Aptitud]: Evaluar la aptitud f(x) de cada cromosoma x en la población.
3. [Nueva población] Crear una nueva población repitiendo los pasos siguientes hasta
completar la nueva población:
1. [Selección] Seleccionar dos padres cromosomas de la población de acuerdo a su
aptitud.
2. [Cruce] Con una probabilidad de cruce combinar dos padres para obtener un
nuevo hijo. Si no se realiza => el hijo es copia exacta del padre.
3. [Mutación] Con una probabilidad de mutación mutar un bit en cada locus.
4. [Aceptación] Colocar el nuevo hijo en la población nueva.
5. [Reemplazo] Usar la nueva población para otra corrida del algoritmo.
6. [Verificar] Condición final satisfecha => parar, y retornar el mejor cromosoma.
7. [Ciclo] Ir al paso 2
ASPECTOS A EMULAR EN LOS
ALGORITMOS GENÉTICOS

* Idear genética de la
información.

* Idear una aplicación selectiva,


emulando el Darwinismo.

* Idear mecanismos de
reproducción
ESTRUCTURA GENERAL DE UN A.G.S
Representación

1. Se refiere a la manera de representar una solución o


individuo.
2. Depende en general del problema a tratar.
3. Cromosoma: Cadena de símbolos => representa una
solución => puede ser un número real / entero.

Cromosoma 1 000001010100101
Cromosoma 2 101111011111110

4. Los símbolos son cadenas de bits => representación


binaria.
ESTRUCTURA GENERAL DE UN A.G.S
Representación

 La longitud de la cadena depende de la precisión deseada => si el


dominio de la variable xj es [aj, bj] y la precisión requerida es n dígitos
después del punto decimal => longitud del dominio debe ser dividido
en al menos (bj- aj)*10n rangos de igual tamaño. Los bits requeridos
(mj) serán:

m j 1 mj
2  (b j  a j ) *10  2
n
1
ESTRUCTURA GENERAL DE UN A.G.S
Representación

Cambios Notación Decimal y Binaria

53.095 = 5* 104 +3* 103 + 0*102 + 9* 101 + 5* 1

10011 => 1*24 +0*23 + 0*22 +1*21 +1*20 = 16+2+1 = 19 = >

m j 1
10011 => 1*20 +1*21 + 0*22 +0*23 +1*24 = 19 = (  b i 2i )10
i 0

Una cadena de 5 bits => representa números decimales entre [0..31]


=> [00000...11111]
ESTRUCTURA GENERAL DE UN A.G.S
Representación

 Conversión de string => número real:


Convertir el string binario => de la base 2 a la base 10 => substring:

m j 1
1.  ((bm j 1..b0 )) 2  (  bi 2i )10  substring
i 0

bj  a j
2.  x j  a j  decimal( substring) * mj
2 1
ESTRUCTURA GENERAL DE UN A.G.S
Representación

Ejemplo
 Hallar el valor de x que maximiza la función: f(x) = x. Sen (10 .x) +1.0 en el
rango x  [-1..2]. Trabajar con una precisión de 6 dígitos.

 Codificación: Cálculo de los bits requeridos para representar a x:


m j 1 n mj
2  (b j  a j ) * 10  2 1

m j 1 6 mj
2  (2  (1)) * 10  2  1

21 22
2.097.152  2  3.000.000  2  4.194.304 # bits  22

1000101110110101000111
ESTRUCTURA GENERAL DE UN A.G.S
Representación

 Decodificación :convertir el string => número real

1000101110110101000111 2288967 Substring

bj  a j
x j  a j  decimal( substring) * mj
2 1

3
x j  1  2288967*  0.637197
4194303
ESTRUCTURA GENERAL DE UN A.G.S
Representación

Los cromosomas:

0000000000000000000000 -1

COTAS DEL
DOMINIO
1111111111111111111111 2
EJEMPLO CON UN ALGORITMO
GENÉTICO SIMPLE

Problema de Optimización:
(Dos Variables)

Max f(x1 ,x2) = 21.5+ x1sen(4 x1) + sen(20 x2)


-3.0  x1  12.1
4.1 x2  5.8
EJEMPLO CON UN ALGORITMO
GENÉTICO SIMPLE

Bits necesarios para x1y x2:

X1: (12.1-(-3.0))*10.000=151.000 => 217 <151000 218=> m1=18


X2: (5.8 - 4.1)*10.000=17.000 => 214 <17.000 215=> m2=15 =>
Longitud Total del cromosoma : m1 +m2 = 33 bits.
33
000001010100101001 101111011111110
18 15
EJEMPLO CON UN ALGORITMO
GENÉTICO SIMPLE

 Conversión de string => número real:


bj  a j
x j  a j  decimal ( substring ) *
1
mj
2
Número Binario Número Decimal
X1 000001010100101001 5417
X2 101111011111110 24318
X1= -3.0+5417*[12.1-(-3.0)]/ [218-1] = -2.687969
X2= 4.1+24318*[5.8 –4.1]/ [215-1] = 5.361653
ESTRUCTURA GENERAL DE UN A.G.S
Población Inicial

 En general los Algoritmos Genéticos trabajan sobre


una población fija de n individuos inicializada
aleatoriamente. Esta forma de generar la población es
la más simple para obtener cromosomas bien dispersos
en el espacio de las soluciones.

 El tamaño n de la población afecta al programa


evolutivo, pues es la principal fuente de material
genético, además de la mutación.

 n debe ser un número tal que permita tener diversidad


de individuos, sin sacrificar la eficiencia en la
búsqueda.
ESTRUCTURA GENERAL DE UN A.G.S
Población Inicial

•Consiste en la creación aleatoria Ejemplo 1


•Cada cromosoma tiene
de una población de cromosomas
22 bits.
(individuos).
•Cada bit generado
•Los bits de cada cromosoma son
aleatoriamente.
inicializados aleatoriamente.

V1 = (x1) = 0.637197 1000101110110101000111


V2 = (x2) = - 0.958973 0000001110000000010000

V3 = (x3) = 1.627888 1110000000111111000101


EJEMPLO CON UN ALGORITMO
GENÉTICO SIMPLE

Ejemplo 2

 Población Inicial:
V1= [000001010100101001101111011111110]
Población Inicial = 3
V2= [001110101110011000000010101001000]
V3= [111000111000001000010101001000110]

 Lo que corresponde a:

V1= [x1,x2]= [-2.687969, 5.361653]


V2= [x1,x2]= [0.474101, 4.170144] Fenotipo

V3= [x1,x2]= [10.419457, 4.661461]


ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud

• La función de adaptación cuantifica la


aptitud de cada cromosoma como
solución del problema, y determina su Maximizar f(x) = x. Sen (10 .x) +1.0
probabilidad de ser seleccionado para la
fase de reproducción y poder pasar ~ función de aptitud
parte de su material genético a la
siguiente generación. Max f(x1 ,x2) = 21.5+ x1sen(4 x1) + sen(20 x2)

• Determina la conexión entre el ~ función de aptitud


programa evolutivo y el problema
considerado. Emula al ambiente, pues
provee la presión que hace evolucionar Minimizar f(x) = x. Sen (10 .x) +1.0
la población hacia cromosomas más 1
función de aptitud =
aptos
1  f(x)
• Influye en la complejidad del
Algoritmo Genético.
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud

Maximizar f(x) = x. Sen (10 .x) +1.0


Eval (v1) = f(x1) = 1.586345
1. Convertir Genotipo en
Fenotipo
Eval (v2) = f(x2) = 0.078878
2. Evaluar la función objetivo
Eval (v3) = f(x3) = 2.250650 3. Convertir el valor de la
función objetivo en aptitud.

Max f(x1 ,x2) = 21.5+ x1sen(4 x1) + sen(20 x2)


Eval(v1) = f(-2.687969, 5.361653) = 19.805119
Eval(v2) = f(0.474101, 4.170144) = 17.370896
Eval(v3) = f(10.419457, 4.661461) = 9.590546
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud

 Sus propiedades son determinantes en la eficiencia y eficacia


del método.
 Es importante tratar de incorporar en ella las restricciones del
problema.
 El número(los números) que produce(n) en general se
traducen en probabilidades.
 En general no es relevante la forma como se evalúa esta
función, lo que permite incorporar la mayor cantidad de
información posible.
 Llamada también => Función de Adaptación
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud

Prob. de Selección o
Sobrevivencia para
Individuo Adaptación Cruzamiento
SUPERINDIVIDUO
N° fi pi = fi / Ftotal
Es un cromosoma que tiene una
1 200 0.797
adaptación muy alta en
comparación con el resto de los
cromosomas de la población:
problema de Convergencia 2 30 0.119
Prematura, donde el algoritmo
genético encontrará una solución 0.040
3 10
sin haber explorado
suficientemente el espacio de 8 0.032
4
búsqueda. 0.008
5 2
6 1 0.004
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud
Renormalización

 Técnicas para evitar los efectos de convergencia prematura


=> superindividuos.
 Existen diversas técnicas, por ejemplo:
 Ventana de renormalización (1 Parámetro).
 Renormalización lineal (2 Parámetros)
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud
Renormalización

Ventana de Renormalización
Determinar un mínimo para la ventana. Asignar a cada individuo una
nueva adaptación igual a la adaptación actual menos mínimo , si da
positivo; o mínimo si da negativo.

Ejemplo:
F. Adapt.: 500 200 110 80 20 5
Min. 10: 490 190 100 70 10 10
Min. 100: 400 100 10 100 100 100
Min. 250: 250 250 250 250 250 250
ESTRUCTURA GENERAL DE UN A.G.S
Función de Evaluación de Aptitud
Renormalización

Ordenar los cromosomas en adaptación decreciente. Asignar un valor


máximo a la máxima adaptación, fijar un decremento el cual se resta
sucesivamente asignando este valor como adaptación renormalizada a cada
individuo sucesivo en el orden.

F. Adapt.: 500 200 110 80 20 5


Max. 100 Dec. 5:
100 95 90 85 80 75
Max. 100 Dec. 20:
100 80 60 40 20 00
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Cruce / Recombinación

La selección de los individuos que van a reproducirse se realiza mediante un operador


de selección. El operador de selección hace la elección basándose en los valores de
adaptación de los individuos. Ejemplos: Ranking, Ruleta y Torneo.

 Procedimiento de Cruce Cruce de un Punto


Begin
• Establecer la probabilidad de cruce pc => se espera que
k<= 0; en promedio pc*100 cromosomas sean cruzados.
While (kn) do begin
rk<= número aleatorio en [0,1]; • Para cada individuo se genera un número aleatorio rk.
if (rk< pc) then • Si rk < pc => se selecciona el individuo para ser
seleccione vk como un padre; cruzado.
end • Generar número aleatorio entero entre [2,n° de bit-1]
K<= k+1; para determinar el punto de cruce para cada par de
end padres a cruzar. Este es el llamado cruce monopunto.
end
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Cruce / Recombinación

• En el ejemplo 2 si punto de cruce = 9 y se cruzan los cromosomas v1’ y v3’


quedan los hijos:

V1’ = [001110101| 110011000000010101001000]


V3’ = [000001010 | 100101001101111011111110]
V1’’= [001110101100101001101111011111110]
Nueva Población
V3’’= [000001010 110011000000010101001000] (Actual)
V2’’= [001110101110011000000010101001000] =V2’
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Cruce / Recombinación

• Si la cantidad de padres seleccionados para el cruce es par => se cruzan los padres
tomados de dos en dos aleatoriamente.
• Impar => Se añade otro tomado al azar o se elimina uno de los seleccionados. La
selección del método es aleatoria.
• Los dos hijos generados => reemplazan a los padres en la población actual.
• El cruce => normalmente genera dos hijos.
• Dependiendo del método de cruce => se puede obtener un solo hijo.
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Cruce / Recombinación

• Existen otras formas de


Cromosoma 1 11011 | 00100110110 realizar cruce: dos puntos,
Cromosoma 2 11011 | 11000011110 uniforme, aritmético y
otros.
Descendiente 1 11011 | 11000011110 •Puede resultar complicado y
dependiente => codificación.
Descendiente 2 11011 | 00100110110
•Cruces específicos para un
problema => mejoran
¿Implementación? desempeño de los AG.
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Mutación

Procedimiento de Mutación • Establecer la probabilidad de


mutación pm => se espera que en
1. Total de bits = n (tamaño
promedio pm*100 cromosomas sean
población)*número de bits por mutados.
cromosoma.
2. Generar una secuencia de
números aleatorios rk (k=1...
Total bits) en [0,1].
3. Si rk < pm => mutar bit k.
ESTRUCTURA GENERAL DE UN A.G.S
Operadores Genéticos
Mutación

Para el ejemplo # 2 (diapositiva 20) es necesario generar


3*33 números aleatorios => 99 para cada cromosoma de la población;
suponiendo que luego de hacerlo queda:

pos. Bit N° Crom. N° bit en na


el cromosoma
39 2 6 0.009857

=>Mutar bit 6 del cromosoma 2:


V2’’’= [ 001110101110011000000010101001000]

1
ESTRUCTURA GENERAL DE UN A.G.S
Mutación

Hijo 1 Original 1101111000011110


•Previene que la población
Hijo 2 Original 1101100100110110 => caiga en un óptimo
local.
Hijo 1 Mutado 1100111000011110
•Depende => codificación
Hijo 2 Mutado 1101101100110110 individuo.
•Existen diversas formas
¿Implementación? de realizarla
ESTRUCTURA GENERAL DE UN A.G.S
Reinserción de los Hijos en la Población

 El método de reinserción será Procedimiento de Reinserción


diferente según si la cantidad de
cromosomas generados sea 1. Nº Hijos = Nº Cromosomas Población:
menor, igual o mayor que la Reinserción Pura, pues cada cromosoma
cantidad de elementos vive exactamente una generación.
existentes en la población. 2. Nº Hijos > Nº Cromosomas Población:
Similar a Reinserción Pura, pues se eligen
los mejores cromosomas entre los que se
generaron, y se eliminan los cromosomas
sobrantes
3. Nº Hijos < Nº Cromosomas Población: Se
requiere seleccionar a aquellos individuos de
la población que serán reemplazados.
Métodos: inserción uniforme, elitista, torneo
invertido.
ESTRUCTURA GENERAL DE UN A.G.S
Criterios de Término

 El criterio de terminación del algoritmo


genético es el encargado de definir el
momento en el cual debe detenerse el ciclo
de evolución y adoptar el cromosoma más
apto como la solución encontrada por el
algoritmo genético. A continuación se
describen los criterios más comúnmente
utilizados.
ESTRUCTURA GENERAL DE UN A.G.S
Criterios de Término: Convergencia de
Identidad

 Consiste en detener al algoritmo genético cuando


un determinado porcentaje de los cromosomas de la
población representan a la misma solución.
 Los operadores del algoritmo genético tienden a
preservar y difundir el material genético de los
cromosomas más aptos, por lo que es de esperar
que luego de un gran número de generaciones,
alguna solución con gran valor de aptitud se
imponga y domine la población.
ESTRUCTURA GENERAL DE UN A.G.S
Criterios de Término: Convergencia de Aptitud

 Puede suceder que existan soluciones distintas que obtengan


valores de aptitud similares. En ese caso, es probable que no
haya una solución que se imponga en la población (y el
criterio de terminación por convergencia de identidad nunca
se cumple).
 Este criterio no espera a que la población se componga
mayoritariamente de una sola solución, sino que finaliza la
ejecución del algoritmo cuando los valores de aptitud de un
determinado porcentaje de las soluciones son iguales, o
difieren en un pequeño porcentaje.
 Por ejemplo, cuando el 90% de las soluciones tenga valores
de aptitud que no difieran en más de un 1%.
ESTRUCTURA GENERAL DE UN A.G.S
Criterios de Término: Cantidad de Generaciones

 Los métodos anteriores apuntan a esperar a que la evolución de la población


llegue a su fin.
 Cuando alguno de ellos se cumple, es probable que las soluciones no sigan
mejorando mucho más, no importa cuantas generaciones más se ejecuten.
 Sin embargo, los algoritmos genéticos pueden necesitar un número de
generaciones muy grande para llegar a la convergencia, dependiendo de las tasas
de reproducción y mutación.
 Utilizando cualquiera de los dos criterios anteriores no puede estimarse un
número máximo de generaciones, ya que esto dependerá no solamente de los
parámetros del algoritmo genético sino también del azar.
 El criterio de terminación por cantidad de generaciones consiste simplemente en
finalizar la ejecución una vez que ha transcurrido un número determinado de
generaciones.

Вам также может понравиться