Entendo o princípio básico de um filtro de partículas e tentei implementá-lo. No entanto, fiquei pendurado na parte de reamostragem.
Teoricamente falando, é bastante simples: a partir do conjunto de partículas antigo (e ponderado), desenhe um novo conjunto de partículas com substituição. Enquanto isso, favorece as partículas que têm pesos altos. Partículas com pesos altos são atraídas com mais frequência e partículas com pesos baixos com menos frequência. Talvez apenas uma vez ou não. Após a reamostragem, todos os pesos recebem o mesmo peso.
Minha primeira idéia de como implementar isso foi essencialmente esta:
- Normalizar os pesos
- Multiplique cada peso pelo número total de partículas
- Arredonde esses pesos dimensionados para o número inteiro mais próximo (por exemplo, com
int()
em Python)
Agora eu deveria saber com que frequência desenhar cada partícula, mas devido aos erros de arredondamento, acabo tendo menos partículas do que antes da etapa de reamostragem.
A pergunta: como "preenche" as partículas ausentes para obter o mesmo número de partículas que antes da etapa de reamostragem? Ou, caso eu esteja completamente fora de controle aqui, como reamostrar corretamente?