【发布时间】:2019-03-23 19:52:32
【问题描述】:
我已经安装了 Gym Retro Mario 游戏。我在交互模式下运行,可以看到我手动做出的每一个动作都会打印出奖品。想知道这个奖项是如何计算的。如果有人可以指向任何 py 文件(位置,行号),那就太好了。
浏览过之前的类似问题,浏览过代码 retro_env.py。找不到Mario Step and Reward的代码
当我回溯时,我到达了文件 retro_env.py。以下是应该返回奖励的阶梯函数:
def step(self, a):
if self.img is None and self.ram is None:
raise RuntimeError('Please call env.reset() before env.step()')
for p, ap in enumerate(self.action_to_array(a)):
if self.movie:
for i in range(self.num_buttons):
self.movie.set_key(i, ap[i], p)
self.em.set_button_mask(ap, p)
if self.movie:
self.movie.step()
self.em.step()
self.data.update_ram()
ob = self._update_obs()
rew, done, info = self.compute_step()
return ob, rew, bool(done), dict(info)
然而它调用的是self.compute_step(),即:
def compute_step(self):
if self.players > 1:
reward = [self.data.current_reward(p) for p in range(self.players)]
else:
reward = self.data.current_reward()
done = self.data.is_done()
return reward, done, self.data.lookup_all()
这个函数调用retro._retro下GameDataGlue的current_reward()。但是,站点包中没有 _retro 文件夹。不确定 current_reward 是如何计算的
我应该能够理解马里奥奖励是如何计算的。然后我就可以应用到其他游戏甚至我自己的自定义环境中
【问题讨论】:
-
发现存在 _retro.pyd 文件。谁能告诉如何获取这个模块的内容/代码。
标签: openai-gym