Entiendo el principio básico de un filtro de partículas e intenté implementar uno. Sin embargo, me colgué en la parte de remuestreo.
Teóricamente hablando, es bastante simple: del conjunto de partículas antiguo (y ponderado), dibuje un nuevo conjunto de partículas con reemplazo. Al hacerlo, favorezca las partículas que tienen pesos altos. Las partículas con pesos altos se extraen con mayor frecuencia y las partículas con pesos bajos con menos frecuencia. Quizás solo una vez o nada en absoluto. Después de volver a muestrear, a todos los pesos se les asigna el mismo peso.
Mi primera idea sobre cómo implementar esto fue esencialmente esto:
- Normaliza los pesos
- Multiplique cada peso por el número total de partículas.
- Redondee esos pesos escalados al número entero más cercano (por ejemplo, con
int()
Python)
Ahora debería saber con qué frecuencia dibujar cada partícula, pero debido a los errores de redondeo, termino teniendo menos partículas que antes del paso de remuestreo.
La pregunta: ¿Cómo puedo "llenar" las partículas que faltan para llegar al mismo número de partículas que antes del paso de remuestreo? O, en caso de que esté completamente fuera de lugar aquí, ¿cómo puedo volver a muestrear correctamente?