Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Genticos
Toms Arredondo Vidal
17/4/09
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)
Poblacin
generacin = n
Mecanismo aleatorio
de reproduccin
Poblacin
generacin = n+1
f(x) = (x^3)*(sin(x))+x+2
mxima global
(2.27, 8.11)
mxima local
(-2.22,3.58)
-2.78
3.0
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 (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,
-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
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
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
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:
Ejemplo3 (cont):
Representacin:
Ejemplo3 (cont):
Ejemplo3 (cont):
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 ]
[ ]
[...]
[...]
[...]
...
(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
*0000
*111*
{10000, 00000}
{01110, 11110, 01111, 11111}
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
pi = f i / f i
i
m(H, t + 1) =
m(H, t) n f(H)
fi
i
f =
fi / n i
Entonces,
ps = 1- pd = 1 - (Hx)/(-1)
p c (H)
p s = 1 - pd 1 -1
m(H, t + 1) m(H, t)
f(H)
f
(H )
1
p
c
m(H, t + 1) m(H, t)
f(H)
f
(H )
1
p
o
(
H
)
p
c
m
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
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