在这个问题中,您将在inference.py的ExactInference类中实现observeupdate方法,以正确地更新从pacman传感器观察到的幽灵代理的信念分布。你正在实施在线信念更新来观察新的证据。对于这个问题,观察方法应该在接收到传感器读数后更新地图上每个位置的信念。您应该在变量self.allPositions 上迭代您的更新,其中包括所有合法位置和特殊jail位置。信念表示幽灵在特定位置的概率,并作为离散分布对象存储在名为self.feeds的字段中,您应该更新该字段。
在输入任何代码之前,写下你要解决的推理问题的方程式。您应该使用在上一个问题中编写的函数self.getObservationProb,它返回给定Pacman位置、潜在幽灵位置和jail位置的观察概率。您可以使用gamestate.getPacManPosition()获得Pacman的位置,使用self.getJailPosition()获得jail位置。
在Pacman显示中,高后验信念用明亮的颜色表示,而低信念用暗淡的颜色表示。你应该从大量的信念开始,随着时间的推移,随着越来越多的证据的积累,这些信念会逐渐缩小。当您观察测试用例时,请确保您了解方块是如何收敛到最终着色的。 注意:你的busters代理对他们跟踪的每个幽灵都有一个单独的推理模块。这就是为什么如果您在更新函数中打印一个观察结果,即使板上可能有多个幽灵,您也只能看到一个数字。
为这个问题运行autograder签名器并可视化输出:
python3 autograder.py -q q2
如果要在不带图形的情况下运行此测试(或任何其他测试),可以添加以下标志:
python3 autograder.py -q q2 --no-graphics
*重要事项*:通常,如果用图形运行测试,签名器有时可能会超时。为了准确地确定代码是否足够有效,您应该使用--no-graphics标志运行测试。如果签名者测试通过,那么将得到满分,即使签名者使用图形测试超时。