Beruflich Dokumente
Kultur Dokumente
Wilson S. Bohorquez O.
Jhonatan S. Mora R.
Nicolas A. Verano
Universidad Nacional de Colombia
Bogotá D.C.
1
tícula
xt+1 = xt + vt+1 (3)
Este procedimiento es repetido hasta que se
cumple alguna condición de parada.
1.3. Algoritmo
Entradas:
f ⇐Función
xmin , xmax , c1 , c2
max_iter ⇐ Máximo de iteraciones
vmax , vmin , stop_criter Figura 1: Resultado 1
SP ⇐ numero de partículas
d ⇐ Cantidad de variables
Resultados para c = 3
Inicio del algoritmo CPU-time 0.17
k = 0 ⇐Contador Gbest (0,0)
P ⇐ población inicial gbest 60
v ⇐ velocidad inicial iteraciones 1051
F I ⇐Calculo del fitness
P best ⇐Calculo mejor posición personal
F best ⇐Mejor fitness personal
Gbest ⇐Mejor posición global
gbest ⇐Mejor fitness global
while(v stop_criter)
ω = vmax − (vmax − vmin )k/max(max_ite, k)
v = ωv + r1 c1 (P best − P ) + r2 c2 (Gbest − P )
v = max(min(vmax , v), −vmax )
P =P +v
F I ⇐Actualización del fitness
P best ⇐Actualización mejor posición personal
F best ⇐Actualización Mejor fitness personal
Gbest ⇐Actualización Mejor posición global
gbest ⇐Actualización Mejor fitness global Figura 2: Resultado 2
Verificación criterio de parada
k=k+1
Resultados para c = 5
Salidas: CPU-time 0.19
Gbest Gbest (0,0)
gbest gbest 100
iteraciones 1111
1.4. Resultados
A continuación se muestra los resultados obte-
nidos, aplicando la función
f (x, y) = −(x2 + y 2 ) + 10c(cos(cx) + cos(cx))
(4)
para la región de búsqueda [−10, 10]×[−10, 10] y
para c ∈ {2, 3, 5, 10}. Se muestra en cada cuadro
el punto donde el algoritmo encontró el máximo,
el valor máximo, el tiempo CPU-time, el número
de iteraciones y la correspondiente gráfica.
Resultados para c = 2
CPU-time 0.15
Gbest (-2e-8,1e-8)
gbest 40 Figura 3: Resultado 3
iteraciones 1003
2
PN
Resultados para c = 10 tales que i s wti = 1. De esta manera, la f.d.p
CPU-time 0.21 a posteriori en el instante t, p(xt /yt ) puede ser
Gbest (0,0) aproximada por
gbest 200
Ns
iteraciones 1208 X
p(xt /yt ) = wti δ(xt − xit ) (7)
k=1
Ns
X
Figura 4: Resultado 4 p(x) ≈ wi δ(x − xi ) (8)
k=1
donde
2. Filtro de partículas π(xi )
wi ∝ (9)
q(xi )
2.1. Introducción
es el peso normalizado de la partícula i-ésima.
El filtro de partículas es un método empleado
para estimar el estado de un sistema dinámico Además, si la muestra xi0:t fue extraída a partir
xt = f (xt−1 , νt+1 ) (5) de la densidad propuesta q(x0:t /y1:t ), entonces
los pesos en (7) son definidos por (9) serán
yt = g(xt , ηt ) (6)
p(xi0:t /t1:t )
donde las funciones deterministas f y g no son wki ∝ (10)
necesariamente lineales, y los ruidos νt y ηt no q(xio:t /tt:t )
son necesariamente Gaussianos. Este método fue
Volviendo al caso secuencial, en cada iteración,
propuesto en 1993 por N. Gordon, D. Salmond
uno podría obtener muestras que constituyan
y A. Smith como filtro bootstrap para implemen-
una aproximación a p(x0:t /y1:t−1 ) y desea apro-
tar filtros bayesianos recursivos mediante el mé-
ximar p(x0:t /t1:t ) con un nuevo conjunto de
todo de Monte Carlo. Este algoritmo es conocido
muestras. Si la función de densidad de impor-
también como SIS (Sequential Importance Sam-
tancia es seleccionada para ser factorizada como
pling) o algortimo Condensation.
q(x0:t /y1:t ) = q(xt /x0:t−1 , y1:t )q(x0:t−1 /y1:t−1 )
2.2. Descripción del algoritmo (11)
El algoritmo consiste en presentar la función entonces se pueden obtener muestras
i
de densidad de probabilidad (f.d.p) a posteriori x0:t ∼ q(x0t i/y1:t ), aumentando así las muestras
mediante un conjunto de partículas aleatorias existentes x0:t−1 ∼ q(x0t −1 /y1:t−1 ) con el nuevo
i
con pesos asociados y calcular la estimación final estado x t ∼ q(xt /x0:t−1 , y1:t ).
del estado del sistema en base a estas muestras
y pesos. A medida que el número de muestras se Para derivar la ecuación de actualización de pe-
hace grande, por el método de Monte Carlo, la sos se aplica el teorema de Bayes para obtener
aproximación a la f.d.p a posteriori es exacta y una fórmula recursiva que relacione la f.d.p a
la describe completamente, permitiendo a este posteriori con la f.d.p a priori
método conseguir una estimación Bayesiana
p(yt /xt )p(xt /xt−1 )
optima. p(x0:t /y1:t ) = p(x0:t−1 /t1:t−1 )
p(yt /tt−1 )
Para describir con detalle el algoritmo, sea (12)
{xi0:t | i = 1, . . . , Ns } el conjunto aleatorio de es- ∝ p(yt /xt )p(xt /xt−1 )p(x0:t−1 /y1:t−1 )
tados con pesos asociados {wti | i = 1, . . . , Ns }, (13)
3
Sustituyendo (11) y (13) en (10) se obtiene El remuestreo consiste en transformar la medida
aleatoria {xit , wti } en el nuevo conjunto {x∗i 1
t , Ns }
i i i i
p(yt /xt )p(xt /xt−1 )p(x0:t−1 /t1:t−1 ) ∗i
wti ∝ (14) donde cada nueva partícula xt se genera re-
q(xit /xi0:t−1 , y1:t )q(xi0:t−1 /y1:t−1 ) muestreando la f.d.p a posteriori aproximada
i i i
i p(y t /x t )p(x t /x t−1 ) Ns
∝ wk−1 (15)
q(xit /xi0:t−1 , y1:t )
X
p(xt /yt ) = wi δ(xt − xi )
t t (20)
t=1
Además, si se cumple la propiedad mar-
koviana para la función de importancia con una probabilidad correspondiente a su peso
q(xit /xi0:t−1 , y1:t ) = q(xit /xit−1 , y1:t ). Esto es P r(x∗i i
t = xt ) = wt , el resultado es una i.i.d de
particularmente útil en el caso concreto cuando la f.d.p discreta (20).
solo un estimador filtrado de p(xt /yt ) es reque-
rido en cada paso. El cual es el escenario que
nosotros supondremos y para el cual solo xit
2.3. Algoritmo
necesita ser guardado y podemos desechar el
camino xi0:t−1 y la historia de las observaciones Entradas:
y1:t−1 . Así los pesos modificados serán Ns ⇐ Numero de partículas
x0 ⇐Generar partículas iniciales
i i p(yt /xit )p(xit /xit−1 ) w = 1/Ns ⇐ Pesos Iniciales
wt ∝ wk−1 (16)
q(xit /xit−1 , yt ) T ⇐Longitud de la secuencia
Inicio del algoritmo:
y la f.d.p filtrada a posteriori p(xt /yt ) puede ser for i : 1 : T
aproximada por Obtener muestra a partir de la función de importancia
Ns
xt ∼ q(xt /xt−1 , yt )
p(xt /yt ) =
X
i
wt δ(xt − xt ) i
(17) Actualizar las P f.d.pi y la función de importancia
i
t=1
p(x t /y t ) = t=1 w t δ(x t − xt )
p(xxt /xt−1 ) ∝ p(yt /xt )p(xt /xt−1 )p(yt /yt−1 )p(xt−1 /yt−1 )
donde los pesos son definidos por la fórmula (16). q(xt /xt−1 , yt ) = q(xt /xt−1 , yt )q(xt−1 /yt−1 )
Se actualizan los pesos
Para terminar en cada paso de la iteración se p(yt /xit )p(xit /xit−1 )
wti ∝ wk−1 i
q(xit /xit−1 ,yt )
calcula la estimación de la variable de estados xbt
con el valor esperado de las partículas {xit | i = Se normalizan
1, . . . , Ns } bajo la medida {wti | i = 1, . . . , Ns } w = PNws wi
i=1 t
Se calcula el valor estimado de xt
Ns PNs i i
X xbt = i=1 w t xt
xbt = wti xit (18) Se re-muestrea la medida {xit , wti | i = 1, . . . Ns }, si es necesario
i=1
end
Un problema con este algoritmo es que después Salidas:
de un cierto número de iteraciones solo un pe- estimación de la variable de estados
queño número de partículas o ninguna tienen pe- x
b
sos despreciables, este fenómeno se conoce como Desviación de la estimación con respecto a los datos
el problema de degeneración de los pesos. Este previamente simulados
problema puede ser cuantificado mediante el ta- RMSE
maño de la muestra Nef f que se puede estimar
por 2.4. Resultados
1
Nef f ≈ Nef f = P
b
i 2
(19) Primero se simulará la variable de estados
t=1 (wt )
Si todas las partículas tienen el mismo peso xt+1 = 1 + sin(0,04πt) + 0,5xt + νt+1 (21)
wti = 1/Ns , entonces la efectividad de las
partículas es máxima Nef f = Ns , por otro donde νt ∼ Gamma(3, 2). Por otro lado, se su-
lado si todas las partículas menos una tienen pondrá que variable de medida es dada por la
peso cero, la efectividad es mínima Nef f = 1, función
lo que significa que un bajo tamaño muestral (
efectivo indica una degeneración del algoritmo, 0,2x2t + ηt si t ≤ 30
yt = (22)
una buena solución para este problema es la 0,5xt − 1 + ηt si t > 30
elección de una buena función de importancia y
el empleo del remuestreo. donde ηt ∼ N (0, 1e − 5), para realizar una
estimación de la variable de medida aplicando
4
el algoritmo de filtración de partículas.
5
Figura 10: comparación variables de medida
Referencias
1. James Blondin, Particle Swarm Optimiza-
tion: A Tutorial. Consultado el 05-06-2019.
2. Julio Barrera , Osiris Álvarez-Bajo , Juan J.
Flores , Carlos A. Coello Coello, Limiting the
velocity in the Particle Swarm Optimization
Algorithm. Consultado 05-06-2019