AIMA.Core.Probability.Reasoning.ParticleSet.perceptionUpdate C# (CSharp) Method

perceptionUpdate() public method

public perceptionUpdate ( String perception, Randomizer r ) : ParticleSet
perception String
r Randomizer
return ParticleSet
        public ParticleSet perceptionUpdate(String perception, Randomizer r)
        {
            // compute Particle Weight
            foreach (Particle p in particles)
            {
                double particleWeight = hmm.sensorModel().get(p.getState(),
                        perception);
                p.setWeight(particleWeight);
            }

            // weighted sample to create new ParticleSet
            ParticleSet result = new ParticleSet(hmm);
            while (result.size() != size())
            {
                foreach (Particle p in particles)
                {
                    double probability = r.nextDouble();
                    if (probability <= p.getWeight())
                    {
                        if (result.size() < size())
                        {
                            result.add(new Particle(p.getState(), p.getWeight()));
                        }
                    }
                }

            }
            return result;
        }