Compare commits
2 Commits
8ce3754cb0
...
81c58289c1
| Author | SHA1 | Date | |
|---|---|---|---|
| 81c58289c1 | |||
| 83a3634e2a |
29
inference.py
29
inference.py
@ -644,7 +644,8 @@ class ParticleFilter(InferenceModule):
|
||||
"""
|
||||
self.particles = []
|
||||
"*** YOUR CODE HERE ***"
|
||||
raiseNotDefined()
|
||||
for index in range(self.numParticles):
|
||||
self.particles.append(self.legalPositions[index % len(self.legalPositions)])
|
||||
"*** END YOUR CODE HERE ***"
|
||||
|
||||
def getBeliefDistribution(self):
|
||||
@ -656,7 +657,13 @@ class ParticleFilter(InferenceModule):
|
||||
This function should return a normalized distribution.
|
||||
"""
|
||||
"*** YOUR CODE HERE ***"
|
||||
raiseNotDefined()
|
||||
self.beliefs = DiscreteDistribution()
|
||||
|
||||
for particle_position in self.particles:
|
||||
self.beliefs[particle_position] += 1
|
||||
self.beliefs.normalize()
|
||||
return self.beliefs
|
||||
|
||||
"*** END YOUR CODE HERE ***"
|
||||
|
||||
########### ########### ###########
|
||||
@ -676,7 +683,19 @@ class ParticleFilter(InferenceModule):
|
||||
the DiscreteDistribution may be useful.
|
||||
"""
|
||||
"*** YOUR CODE HERE ***"
|
||||
raiseNotDefined()
|
||||
pacman_position = gameState.getPacmanPosition()
|
||||
jail_position = self.getJailPosition()
|
||||
|
||||
particle_weights = DiscreteDistribution()
|
||||
for particle in self.particles:
|
||||
particle_weights[particle] += self.getObservationProb(observation, pacman_position, particle, jail_position)
|
||||
|
||||
total = sum([v for k, v in particle_weights.items()])
|
||||
if total == 0:
|
||||
self.initializeUniformly(gameState)
|
||||
else:
|
||||
self.particles = [particle_weights.sample() for time in range(self.numParticles)]
|
||||
|
||||
"*** END YOUR CODE HERE ***"
|
||||
|
||||
########### ########### ###########
|
||||
@ -689,6 +708,8 @@ class ParticleFilter(InferenceModule):
|
||||
gameState.
|
||||
"""
|
||||
"*** YOUR CODE HERE ***"
|
||||
raiseNotDefined()
|
||||
for index, old_particle_position in enumerate(self.particles):
|
||||
distribution = self.getPositionDistribution(gameState, old_particle_position)
|
||||
self.particles[index] = distribution.sample()
|
||||
"*** END YOUR CODE HERE ***"
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user