Sei sulla pagina 1di 50

Introduccin a los Algoritmos

Genticos
Toms Arredondo Vidal
17/4/09

Esta charla trata de lo siguiente:


Introduccin a algunos aspectos de los
algoritmos genticos.
Introduccin a algunas aplicaciones de los
algoritmos genticos.

Modelo Evolutivo
Considerando los sistemas evolutivos Holland
propuso un modelo de la evolucin artificial
basados en la evolucin y la gentica natural.

Modelo Evolutivo
De acuerdo a Holland un sistema evolutivo
contiene los siguientes elementos:
E : el ambiente en el cual el sistema se esta
adaptando
: un plan evolutivo que determina
modificaciones estructurales en los organismos
artificiales
: una medida de la capacidad de diferentes
estructuras en el medio ambiente
En este formalismo el plan evolutivo acta en
tiempos discretos t = 1,2,3,...

Modelo Evolutivo
La accin del plan evolutivo es progresar
dentro de un set de posibles estructuras A
(genomas) hacia la que tenga la mejor
capacidad de sobrevivencia
A esta conformado por numero de genes en el
cual cada gen Ai tiene k alelos
Ej: = 3, A ={A1A2A3}
k = 2, Ai = {0 o 1}
Numero combinaciones = k = 23 = 8

(1)

A(1)

A(2)

(2)

A(3)

(t)

A(t)

El plan va a producir una trayectoria a travs de las


posibles estructuras A(t) en el tiempo t (t=1, 2,...) a travs de
la seleccin de sucesivos operadores (t).
Cada estructura A(t) tiene asociada una capacidad (A(t))

Que es un algoritmo gentico (GA)?


Los algoritmos genticos (GA) son algoritmos de
bsqueda y optimizacin basados en los mecanismos
de seleccin natural y gentica.
Los GA usan los siguientes mecanismos:
1. la sobrevivencia de los organismos con mejor capacidad dentro
de una poblacin
2. uso de secuencias de caracteres (generalmente 1s y 0s) en
strings como representacin del ADN de estos organismos
3. el uso de mtodos aleatorios (random) para la generacin de la
poblacin y para su reproduccin

Poblacin
generacin = n

Mecanismo aleatorio
de reproduccin

Poblacin
generacin = n+1

Cmo se reproducen los algoritmos gentico (GA)?


Los GA se reproducen usando el siguiente algoritmo:
1. Esquema de codificacin de la informacin de los
miembros en strings (ADN de 1s y 0s)
2. Evaluacin de capacidad (fitness) de cada miembro
3. Seleccin aleatoria de los miembros que se van a
reproducir
4. Cruce de la informacin de los miembros
(Crossover)
5. Mutacin de la informacin

Condiciones necesarias para la evolucin de los


algoritmos gentico (GA)?
Las condiciones necesarias para la evolucin son las
siguientes:
1. Una entidad capaz de reproducirse
2. Una poblacin de estas entidades
3. Una variedad en la reproduccin
4. Alguna diferencia en la habilidad para sobrevivir de
los miembros de la poblacin (los mas capaces
sobreviven) basada en el medio ambiente

Ejemplo de una mxima local y global

f(x) = (x^3)*(sin(x))+x+2
mxima global
(2.27, 8.11)
mxima local
(-2.22,3.58)

-2.78

3.0

Usando mtodos basados en derivados (hill climbing) (df/dx)=0 podra


resultar que nos quedramos en la mxima local

Ejemplo de una funcin mas compleja

z = f ( x, y ) = 3(1 x ) e
2

x 2 ( y + 1) 2

10

x
1 ( x + 1) 2 y 2
3
5
x2 y2
10 ( x y ) e
e
5
3

5
0
-5
-10

-6
-4
-2
0
2
4
6 -6

-4

-2

Resumen:
Los algoritmos genticos (GA) funcionan con una
codificacin de parmetros no los parmetros mismos
Los GA son paralelos y evalan mltiples posibles
soluciones a las vez no en una direccin como los
algoritmos basados en derivados (bsqueda lineal)
Cada miembro de la poblacin es una posible solucin,
los GA so algoritmos de bsqueda global no local
Los GA usan funciones de costo no derivadas
Los GA usan mtodos estocsticos no determinsticos
Al contrario de los mtodos basados en derivados los
GA no tiene un punto singular de bsqueda inicial
Los mtodos basados en derivados son mas rpidos ya
que evalan y buscan en una sola direccin a la vez

Ejemplo: Maximizar una funcin


Encontrar el mximo de la siguiente funcin:
f(x) = x2
Dado que x es representada por 5 bits [1]
parte 1: generar poblacin inicial (generacin = 1) (tamao
entre 50 a 100 miembros)
(A1) 01101
(B1) 11000
(C1) 01000
(D1) 10011

Ejemplo (cont):
parte 2: hacer reproduccin para obtener nueva poblacin (usando una
ruleta)
String
Capacidad
% Capacidad
(A1) 01101

169

14.4

(B1) 11000

576

49.2

(C1) 01000

64

5.5

(D1) 10011

361

30.9

Total
Ruleta:

1170
A1

D1
C1

B1

100
Se corre cuatro veces y da:
A1, B1, B1, D1

Ejemplo (cont):
parte 3: hacer cruce para obtener nueva generacin (se eligen
sitios de cruce aleatoriamente)
Strings iniciales:
(A1) 01101
(B1) 11000
(B1) 11000
(D1) 10011
Nuevos Strings (generacin = 2)
(A2) 01100
(B2) 11001
(C2) 11011
(D2) 10000

Ejemplo (cont):
parte 4: se introducen mutaciones en la nueva poblacin usando una
probabilidad de mutacin de cada gen (Ej. pm=.001)
Nuevos Strings (generacin = 2)
(A2) 01100
(B2) 11001
(C2) 11011
(D2) 10000 11000
Se vuelve a la parte 1 para las siguientes generaciones = 3,4,

Ejemplo2: Optimizacin con variables reales.


Max f(x ,y) = 21.5 + x sin(4 x) + sin(20 y)

-3.0 x 12.1
4.1 y 5.8
35
30
25
20
15
10
5

12

10

-2

5
5.2
5.4
5.6
5.8

4.2
4.4
4.6
4.8

Ejemplo2 (cont):
Representacin:
si el dominio de la variable xj es [aj, bj] y la precisin

requerida es 5 dgitos despus del punto decimal


el rango del dominio debe ser dividido en al menos

(bj- aj)*105 rangos de igual tamao. Los bits


requeridos (mj) sern:

mj 1

mj

2 < (b j a j ) *10 2 1
5

Ejemplo2 (cont):
Bits necesarios para las variables:
x: (12.1-(-3.0))*10.000=151.000 => 217 <151000 218=> m1=18
y: (5.8 - 4.1)*10.000=17.000 => 214 < 17.000 215=> m2=15

Longitud Total del cromosoma : m1 + m2 = 33 bits.

000001010100101001 101111011111110
18
15

Ejemplo2 (cont):
Conversin de string a un nmero real:

x j = a j + decimal (substring ) *
Nmero Binario
x 000001010100101001
y 101111011111110

bj a j
2 1
mj

Nmero Decimal
5417
24318

x = -3.0 + 5417 * [12.1 (-3.0)] / [218 1] = -2.687969


y = 4.1 + 24318 * [5.8 4.1] / [215 1] = 5.361653

Ejemplo2 (cont):
Algoritmo
Parte 1: Crear Poblacin Inicial Aleatoria

generacion = 1
V1= [000001010100101001101111011111110]
V2= [001110101110011000000010101001000]
...
V50= [111000111000001000010101001000110]
Corresponde a:
V1= [x1,x2]= [-2.687969, 5.361653]
V2= [x1,x2]= [0.474101, 4.170144]
...
V50= [x1,x2]= [10.419457, 4.661461]

Ejemplo2 (cont):
Parte 2: Evaluacin de capacidad
f(x ,y) = 21.5+ xsin(4 x) + sin(20 y)
Eval(v1) = f(-2.687969, 5.361653) = 19.805119
Eval(v2) = f(0.474101, 4.170144) = 17.370896
...
Eval(v50) = f(10.419457, 4.661461) = 9.590546

Ejemplo2 (cont):
Parte 3: Seleccin de Cruces basado en Evaluacin de capacidad y
Ruleta
Parte 4: Mutacin
Iterar para generaciones = 2, 3, ...
Cuando parar iteraciones:
Hay varias condiciones posibles para parar iteraciones, algunas de
ellas son:

cuando generaciones sean un valor determinado

cuando evaluacin da un porcentaje del mximo valor deseado

cuando capacidad mxima no cambia mucho en porcentaje

muchas otras posibilidades!

Ejemplo3: Optimizacin de rutas en redes WDM.

Definir conjunto de rutas que permite la comunicacin


entre todos los nodos deseados en una red
Hay muchas posibles opciones por ejemplo entre (0,3):

0-1-3, 0-2-3, 0-4-2-3

La idea es optimizar las rutas entre los nodos para


minimizar el costo total de conexin de la red
0

Ejemplo3 (cont):
Representacin:

cada individuo de la poblacin codifica todas la rutas


usadas por los m nodos de la red

se utiliza un arreglo de 2 dimensiones, la primera


dimensin indica el numero de la ruta

la segunda indica todos los nodos usados en esta ruta

el arreglo completo denominado padres contiene todos


los individuos de la poblacin

Ejemplo3 (cont):

los pares de nodos de inicio y termino en una ruta


(nodo1 y nodo2) se generan de acuerdo al cdigo:

for(j = 0 ; j < (m*m) - m ; j++)


{
nodo1 = j/(m - 1);
nodo2 = (j/(m - 1) > j%(m - 1)) ? j%(m - 1) : (j%(m - 1) + 1);
}

para m=5 los pares de nodos generados son: (0,1),


(0,2), (0,3), (0,4), (1,0), (1,2), (1,3), (1,4), (2,0), (2,1),
(2,3), (2,4), ..., (4,0), (4,1), (4,2), (4,3)

Ejemplo3 (cont):

Por ejemplo, una poblacin de 6 individuos (con m = 5)


y las rutas para el primer individuo

padres [ 0 ]
[1]
[2]
[3]
[4]
[5]
Max poblacin

(0,1)
[0

(0,2)
1

(0,3)
2

(0,4)
3

(1,0)
4

(1,2)
5

[0]
[4]
[1]
[-1 ]
[ ]
[ ]

[0]
[2]
[-1 ]
[ ]
[ ]
[ ]

[0]
[4]
[1]
[3]
[-1 ]
[ ]

[...]

[...]

[...]

Para el primer individuo


la ruta (0,1) es 0-4-1

Fin de la rutas indicada por un -1

...

(4,3)
19]

[4]
[1]
[3]
[-1 ]
[ ]
[ ]

Ejemplo3 (cont):
Algoritmo:
1- Crear poblacin de padres inicial aleatoria, utiliza:
elegir_ruta(m , nodo1, nodo2, matriz, padres[i][j],
tipo_nodo, file_results);
2- Evaluar fitness de cada miembro de la poblacin:
fit[i].val = fitness(padres[i] , m , beta, Nl, Ll);
3- Imprimir promedio, mejor y peor fitness
4- Generar ruleta usando metodo Fitness Proportionate:
ruleta[0] = fit[0].val / fit_total;
for (i = 1 ; i < tamPobla ; i++)
ruleta[i] = ruleta[i - 1] + (fit[i].val / fit_total);

Ejemplo3 (cont):
5- Elegir pares a cruzar (i1 e i2) usando ruleta:
for(i = 0 ; i < tamPobla/2 ; i++) {
indiv1 = aleatorio();
indiv2 = aleatorio();
for(i1 = 0 ; indiv1 >= ruleta[i1] ; i1++);
for(i2 = 0 ; indiv2 >= ruleta[i2] ; i2++);
i1=3

i2=15

15

4
5

...

16
17

...

18

Ejemplo3 (cont):
5(cont)- Cruzar pares seleccionados (i1 e i2) si aleatorio( )
es menor que probCruce (0 < probCruce 1):
for(i = 0 ; i < tamPobla/2 ; i++) {

...
for(j = 0 ; j < (m*m - m) ; j++)
copiar_ruta(padres[i1][j] , hijos[2*i][j] , m);
for(j = 0 ; j < (m*m - m) ; j++)
copiar_ruta(padres[i2][j] , hijos[2*i + 1][j] , m);
if(aleatorio() < probCruce)
cruce(hijos[2*i] , hijos[2*i + 1] , m);
}
Nota: cruce( ) intercambia todas las rutas entre los pares

Ejemplo3 (cont):
6- Hacer mutacin:
for(i = 0 ; i < tamPobla ; i++)
{
if(aleatorio() < probMut)
mutacion(hijos[i] , matriz , m, tipo_nodo, ...);
}
Nota: mutacin llama elegir_ruta(...) para mutar cada ruta
si aleatorio() < P_MUTAC
7- Si quedan iteraciones por ejecutar volver al paso 2
8- Determinar el fitness del mejor individuo
9- Imprimir rutas del mejor individuo

Schema (o Esquema o Molde):

Para analizar las caractersticas de los AG se introducen dont care


bits usando el simbolo * para crear esquemas (schemata) usando
el alfabeto {0, 1, *}
Un esquema explcitamente reconoce las similitudes en una
poblacin de strings y eso ayuda en el anlisis de los AG.
Entonces, un esquema es un aparato para reconocer patrones:

*0000
*111*

{10000, 00000}
{01110, 11110, 01111, 11111}

Con estos bits se seleccionan todos los strings que


corresponden a dont care bits

Teorema Fundamental:
Let

A = string binario
an = 0 o 1
then A=a5a4a1a2a3a6a7

(A=a1a2a3a4a5a6a7)
(alelos)
(nuevo orden)

Definiciones
an un gen
Ai un string en una poblacin
A una poblacin
A(t) una poblacin en una generacin especifica

Teorema Fundamental (cont):


Orden del esquema o(H): El orden de la esquema H es el
numero de posiciones fijas presentes en una esquema.
O(011*1**) = 4
Distancia definitoria del esquema (H): La distancia entre
la primera y ultima posicin definitiva
(011*1**) = 5 1 = 4

Teorema Fundamental (cont):


Asumamos que los strings son copiados a la nueva
generacin con una probabilidad basada en su valor de
capacidad (fitness fi) dividida por la total capacidad en la
generacin (fitness proportional reproduction):

pi = f i / f i
i

Teorema Fundamental (cont):


Asumamos que m es el numero de copias de un esquema
en una poblacin de tamao n en particular en la
generacin t m(H,t)
Nota: f(H) es la capacidad promedio de todos los strings que
corresponden al esquema H en la generacin t
Entonces en promedio,

m(H, t + 1) =

m(H, t) n f(H)
fi
i

Teorema Fundamental (cont):


Si f es la capacidad promedio de la poblacin completa,

f =

fi / n i

Entonces,

m(H, t + 1) = (m(H, t) f(H)) / f

Teorema Fundamental (cont):


Para ver cuales esquemas son afectados por un cruce y
cuales no los son, consideren un string y dos esquemas
asociados que lo representan ( = 7).
A = 0 1 1 1 0 0 0
H1 = * 1 * * * * 0
H2 = * * * 1 0 * *
Si ocurre un cruce en la posicin 3 y el material gentico a
la izquierda del cruce es intercambiado se ve que el
esquema no sobrevive el cruce

Teorema Fundamental (cont):


B = 0 0 0 1 0 0 0
A = 0 1 1 1 0 0 0
H1 = * 1 * * * * 0
H2 = * * * 1 0 * *
Si ocurre un cruce en la posicin 3 (entre A y B por ejemplo)
el material gentico a la izquierda del cruce es
intercambiado se ve que el esquema H1 no sobrevive el
cruce porque tiene un elemento fijo (el 1) que va a ser
intercambiado por un 0 en el string B

Teorema Fundamental (cont):


Basado en el ejemplo previo se ve que no es muy difcil
generalizar esta situacin ya que mientras mas largo es el
esquema (el valor de (H) vs ) mas pequeas son las
probabilidades de sobrevivencia.
pd = (Hx)/(-1)

ps = 1- pd = 1 - (Hx)/(-1)

mas generalmente (incluyendo la probabilidad de cruce pc


que es siempre de 0 a 1)
ps = 1 - pd 1 - (Hx)/(-1) pc

Teorema Fundamental (cont):


Entonces:

p c (H)
p s = 1 - pd 1 -1

Llegamos a la conclusin del teorema fundamental que es una


versin analtica de algo que ya sabamos intuitivamente y que
combina los efectos de reproduccin y cruce en el numero de un
esquema en la prxima generacin considerando su estado en la
generacin actual.

m(H, t + 1) m(H, t)

f(H)
f

(H )

1
p
c

Teorema Fundamental (cont):


Finalmente incluyendo la probabilidad de mutacin pm y considerando
que mientras mas posiciones fijas tiene el esquema (o(H)) mayor es
la probabilidad de que sea destruido.
Para que sobreviva un esquema todas las posiciones fijas tienen que
sobrevivir, dado que la mutaciones son estadsticamente independientes
obtenemos la probabilidad de sobrevivir una mutacin de (1 pm)o(H) .
Para valores pequeos (pm << 1) se aproxima con 1 o(H) pm
El resultado final [1] se denomina Teorema Fundamental de los AG:

m(H, t + 1) m(H, t)

f(H)
f

(H )

1
p

o
(
H
)
p
c
m

Teorema Fundamental (cont):


En el siguiente ejemplo se ve como de acuerdo a
mf(H1)/ f del esquema H1 se espera que sobrevivan
3.2 esquemas despus del cruce.
El promedio de la capacidad del esquema es:
f(H1) = (576 + 361)/2 = 468.5
El promedio de fitness de la poblacin es: f = 293
Multiplicando por el numero de esquemas H1 en el
tiempo t (m(H1,t) = 2) obtenemos
m(H1,t+1) = m(H1,t)f(H1)/ f = (2*468.5)/293 = 3.2

Teorema Fundamental (cont):


Tambin basado en (H1) = 0 se ve que el cruce
no afecta ni un bit.
Por ultimo con un Pm = 0.001 se que deberamos
tener m * Pm = 3 * 0.001 = 0.003 bits afectados (o
sea probablemente ninguno en este caso).

Paralelismo en la bsqueda:
El siguiente grafico ilustra el paralelismo en los esquemas en la
bsqueda de soluciones de los algoritmos genticos.
B
A

010

= 1 0 0
= 1 0 1

H1 = 1 * *

100
001

Algunos ejemplos de aplicaciones:

Diseo de controlador PID usando GA [3]


Diseo de controlador difuso usando GA [3]
Navegacin robtica usando GA [3], [4]
Calibracin de imgenes usando GA [4]
Diseo de controlador H2 usando GA [4]

Generacin de datos de prueba para programas usando GA [4]


Minera de datos usando GA [4]
Optimizacin de red neural usando GA [4]

Referencias:
[1] Goldberg, D., Genetic Algorithms in Search, Optimization and
Machine Learning, Addison Wesley, NY, 1989
[2] Holland, J., Adaptation in Natural and Artificial Systems, MIT
Press, 1995
[3] Jamshidi, M., et al., Robust Control Systems with Genetic
Algorithms, CRC Press, Boca Raton, 2001
[4] Karr, C., Freeman. L, Industrial Aplications of Genetic
Algorithms, CRC Press, Boca Raton, 2001

Potrebbero piacerti anche