finish tracking

This commit is contained in:
2024-07-04 02:19:02 +00:00
parent f1c5e52ef7
commit 24f1de6740

View File

@ -648,7 +648,10 @@ class ParticleFilter(InferenceModule):
""" """
self.particles = [] self.particles = []
"*** YOUR CODE HERE ***" "*** YOUR CODE HERE ***"
raiseNotDefined() num_positions = len(self.legalPositions)
num_particles = self.numParticles
for i in range(num_particles):
self.particles.append(self.legalPositions[i % num_positions])
"*** END YOUR CODE HERE ***" "*** END YOUR CODE HERE ***"
def getBeliefDistribution(self): def getBeliefDistribution(self):
@ -660,7 +663,11 @@ class ParticleFilter(InferenceModule):
This function should return a normalized distribution. This function should return a normalized distribution.
""" """
"*** YOUR CODE HERE ***" "*** YOUR CODE HERE ***"
raiseNotDefined() belief = DiscreteDistribution()
for particle in self.particles:
belief[particle] += 1
belief.normalize()
return belief
"*** END YOUR CODE HERE ***" "*** END YOUR CODE HERE ***"
########### ########### ########### ########### ########### ###########
@ -680,7 +687,14 @@ class ParticleFilter(InferenceModule):
the DiscreteDistribution may be useful. the DiscreteDistribution may be useful.
""" """
"*** YOUR CODE HERE ***" "*** YOUR CODE HERE ***"
raiseNotDefined() belief = DiscreteDistribution()
for particle in self.particles:
belief[particle] += self.getObservationProb(observation, gameState.getPacmanPosition(), particle, self.getJailPosition())
belief.normalize()
if belief.total() == 0:
self.initializeUniformly(gameState)
else:
self.particles = [belief.sample() for _ in range(self.numParticles)]
"*** END YOUR CODE HERE ***" "*** END YOUR CODE HERE ***"
########### ########### ########### ########### ########### ###########
@ -693,6 +707,9 @@ class ParticleFilter(InferenceModule):
gameState. gameState.
""" """
"*** YOUR CODE HERE ***" "*** YOUR CODE HERE ***"
raiseNotDefined() new_particles = []
for particle in self.particles:
new_particles.append(self.getPositionDistribution(gameState, particle).sample())
self.particles = new_particles
"*** END YOUR CODE HERE ***" "*** END YOUR CODE HERE ***"