( + )
Juan Felipe Muoz Fernndez - jfmunozf@unal.edu.co
14-Nov-2014
f ( x) = 100( xi2 xi +1 ) 2 + (1 xi ) 2
i =1
n = 2 , 5.12 xi 5.12
Elija los parmetros que considere adecuados.
Grafique la secuencia de bsqueda: iteracin vs mejor f (x)
1. Cul es la mejor solucin x' y f (x' ) encontrada?
En general:
2. Qu ventajas le ve al algoritmo?
3. Qu desventajas le ve al algoritmo?
Debe entregar: diagrama de flujo (o seudocdigo), algoritmo (con comentarios) y resultados.
PSEUDOCDIGO
Inicio
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
numero de generaciones = K
tamao poblacin =
poblacin de individuos hijos de = 7 *
tamao de paso de la desviacin =
lmite superior dominio variable Xi = 5.12
lmite inferior dominio variable Xi = -5.12
Arreglo poblacin X1 = AleatorioUniforme(,-5.12,5.12)
Arreglo poblacin X2 = AleatorioUniforme(,-5.12,5.12)
desviacin estndar = =
(5.12 (5.12)/6
en blanco Arreglo desviacin estndar X1
en blanco Arreglo desviacin estndar X2
en blanco Arreglo hijos X1
en blanco Arreglo desviacin estndar hijos X1
en blanco Arreglo hijos X2
en blanco Arreglo desviacin estndar hijos X2
en blanco Arreglo fitness padres
en blanco Arreglo fitness hijos
en blanco Arreglo probabilidad acumulada
Para i = 1 hasta
() = f(poblacin X1[i],poblacin X2[i])
Arreglo fitness padres [i] = AadirElemento(
())
Arreglo desviacin estndar X1[i] =
Arreglo desviacin estndar X2[i] =
Fin-Para
Para k = 1 hasta K
Para i = 1 hasta Ciclo para inicializar arreglo de desv. Std.
Arreglo probabilidad acumulada[i] = i/
Fin-Para
Para i = 1 hasta
RuletaPadre1 = AleatorioUniforme(1,0,1)
RuletaPadre2 = AleatorioUniforme(1,0,1)
Seleccin
Para j=2 hasta Ciclo de seleccin de padres
Si (Arreglo probabilidad acumulada[j-1] <=
RuletaPadre1 <= Arreglo probabilidad acumulada[j])
Entonces
Padre1X1 = Arreglo poblacin X1[j]
DesviacionPadre1X1 = Arreglo desviacin estndar
X1[j]
Padre1X2 = Arreglo poblacin X1[j]
DesviacionPadre1X2 = Arreglo desviacin estndar
X1[j]
Fin-Si
Si (Arreglo probabilidad acumulada[j-1] <=
RuletaPadre2 <= Arreglo probabilidad acumulada[j])
Entonces
DesviacionPadre2X1)/2
DesviacionPadre2X2)/2
Mutacin
DesviacionPerturbadaHijoX1 = DesviacionHijoX1 * (,,)
DesviacionPerturbadaHijoX2 = DesviacionHijoX1 * (,,)
HijoX1 = HijoX1 + (1,0, !"#$"%&'()*(+#,#-".%/ )
HijoX2 = HijoX2 + (1,0, !"#$"%&'()*(+#,#-".%/0 )
Calculo del fitness del hijo generado
() = f(HijoX1, HijoX2)
Arreglo fitness hijos = AadirElemento(
())
Arreglo hijos X1 = AadirElemento(HijoX1)
Arreglo desviacin estndar hijos X1 =
AadirElemento(DesviacionPerturbadaHijoX1)
Arreglo hijos X2 = AadirElemento(HijoX2)
Arreglo desviacin estndar hijos X2 =
AadirElemento(DesviacionPerturbadaHijoX2)
Fin-Para
Inicializar
Inicializar
Inicializar
Inicializar
Inicializar
en
en
en
en
en
blanco
blanco
blanco
blanco
blanco
Arreglo
Arreglo
Arreglo
Arreglo
Arreglo
(
(
(
(
(
+
+
+
+
+
)X1
)X2
)X1
)X2
)
()
en
en
en
en
blanco
blanco
blanco
blanco
Arreglo
Arreglo
Arreglo
Arreglo
poblacin X1
poblacin X2
desviacin estndar X1
desviacin estndar X2
RESULTADOS
El algoritmo se corri con los siguientes parmetros.
-
Los resultados estn indicados en la siguiente tabla. El mejor valor de f(x) en la ltima
generacin.
Tabla 1: Resultados ejecucin algoritmo ( + )
Iteracin
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Mejor X1
Mejor X2
f(x)
0.4112564 -0.2674012
19.40273
1.695582
2.859003 0.5094138
1.695582
2.859003 0.5094138
0.8865207 0.8426046 0.3342046
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9802172
0.948112 0.01655542
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
0.9981759
1.004901 0.00730708
Iteracin
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Mejor X1
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
1.02435
Mejor X2
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
1.051137
f(x)
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
0.00093259
De acuerdo a los resultados ilustrador por la Tabla 1, la mejor solucin x' y f (x' ) es la
siguiente:
-
Mejor x1 = 1.024350
Mejor x2 = 1.051137
Para el caso particular, el algoritmo de Estrategias Evolutivas es el adecuado dado que las
posibles soluciones que optimizan la funcin de Rosenbrock, son continuas y el algoritmo
de ES se desempea mejor con este tipo de variables, a diferencia de los algoritmos
genticos que son ms adecuados con variables continuas o binarias.
Los mejores individuos siempre permanecen vivos en las generaciones, eliminando las
peores soluciones de la poblacin.
cat(0,poblacionX1[1],poblacionX2[1],rosenbrock(c(poblacionX1[1],poblacionX2[1
])),"\n",file="C:\\datos.csv",sep=",",fill=FALSE,append=TRUE)
# Inicia ciclo de generaciones
for (k in 1:numIteraciones) {
# Ciclo para almacenar la probabilidad acumulada
# de cada padre. Todos los padres tienen igual
# probabilidad de ser seleccionados
for (i in 1:mu) {
probAcum[i] = i/mu
}
# Inicia ciclo de generacion de hijos
for (i in 1:lambda) {
# Los padres se seleccionan tirando un
# numero aleatorio entre 0 y 1 con
# distribucion uniforme. Se necesitan
# dos padres para generar un hijo.
ruletaPadre1 = runif(1,0,1)
ruletaPadre2 = runif(1,0,1)
# Seleccion de padres...
# En este ciclo se seleccionan los padres de la
# poblacion de padres para cada variable de acuerdo
# al valor de la ruletaPadreXi y la probabilidad acumulada.
# La seleccion de los padres debe incluir la desviacin
# estndar de cada uno en cada caso, es decir:
#
Padre1X1,desvStdPadre1X1 + Padre2X1,desvStdPadre2X1 = HijoX1
#
Padre1X2,desvStdPadre1X2 + Padre2X2,desvStdPadre2X2 = HijoX2
for (j in 2:length(probAcum)) {
if ( (ruletaPadre1 >= probAcum[j-1]) && (ruletaPadre1 <=
probAcum[j]) ) {
# Seleccion del padre 1 y su desviacin para X1
padre1X1 = poblacionX1[j]
sigmaPadre1X1 = dsvSdX1[j]
# Seleccion de padre 1 y su desviacin para X2
padre1X2 = poblacionX2[j]
sigmaPadre1X2 = dsvSdX2[j]
}
if ( (ruletaPadre2 >= probAcum[j-1]) && (ruletaPadre2 <=
probAcum[j]) ) {
# Seleccion del padre 2 y su desviacin para X1
padre2X1 = poblacionX1[j]
sigmaPadre2X1 = dsvSdX1[j]
# Seleccion del padre 2 y su desviacin para X2
padre2X2 = poblacionX2[j]
sigmaPadre2X2 = dsvSdX2[j]
}
}
# Cruzamiento intermedio.
# Se cruzan los padres seleccionados con sus
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
Yu, X., & Gen, M. (2010). Simple Evolutionary Algorithms. Introduction to Evolutionary
Algorithms, 1139. Retrieved from http://link.springer.com/chapter/10.1007/978-1-84996129-5_2
[6]
Dirk Hansen, N., Auger, A., & Auger, A. (2013). Fast evolution strategies. Evolution
Strategies.
ANEXOS
El presente documento PDF incluye los siguientes archivos adjuntos.
-