From 81c58289c15d53056fb7f6fd6509bef75b195904 Mon Sep 17 00:00:00 2001 From: snsd0805 Date: Wed, 8 May 2024 00:55:35 +0800 Subject: [PATCH] feat: complete q10, q11 --- inference.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/inference.py b/inference.py index be838de..0a20371 100644 --- a/inference.py +++ b/inference.py @@ -683,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 ***" ########### ########### ########### @@ -696,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 ***"