パーティクルのリストの重みを正規化したい。これらの重みはパーティクルオブジェクトに属します。重みの合計で割って正規化しようとしています。すべての重みはdoubleで宣言されます。プログラムがリストの先頭で除算を開始すると、値は正しいのですが、2回目または3回目の除算の直後に、間違った結果が得られます。これは、操作後の重みの合計が1ではないという結果になります。する必要があります。誰かがこの問題で私を助けることができますか?多分糸脱毛と関係がありますか?事前にThx。
// normalizing weights
double weightsum = 0;
double check = 0;
List<ParticleRobot> temporalparticleSet = new List<ParticleRobot>();
for (int i = 0; i < particleSet.Count; i++)
{
weightsum = weightsum + this.particleSet[i].Weight;
}
Program.Weightsum = weightsum;
Console.WriteLine("Sum of unnormalized particleweights is " + weightsum);
foreach (ParticleRobot p in this.particleSet)
{
Program.Weight = p.Weight;
p.Weight = Program.Weight / Program.Weightsum;
Console.WriteLine("Updated Particleweight is now : " + p.Weight);
}
// checking that they sum up to 1
for (int i = 0; i < particleSet.Count; i++)
{
check = check + this.particleSet[i].Weight;
}
Console.WriteLine("Check: Sum of particles-weights is = " + check);