如何在keras-rl / OpenAI GYM中实现自定义环境?



我是强化学习的新手,一直在寻找一个框架/模块来轻松驾驭这个危险的领域。在我的搜索中,我遇到了两个模块keras-rl和OpenAI GYM。

我可以让他们两个在他们的 WIKI 上分享的示例一起工作,但它们带有预定义的环境,并且很少或根本没有关于如何设置我自己的自定义环境的信息。

如果有人能为我指出教程或只是向我解释如何设置非游戏环境,我将不胜感激?

我已经在这些库上工作了一段时间,可以分享我的一些实验。

让我们首先考虑一个文本环境作为自定义环境的示例,https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py

对于自定义环境,应定义一些内容。

  1. Constructor__init__方法
  2. 操作空间
  3. 观察空间(所有可用的健身房空间见 https://github.com/openai/gym/tree/master/gym/spaces(它是一种数据结构))
  4. _seed方法(不确定是否是强制性的)
  5. _step方法接受操作作为参数并返回观察(一个又一个操作的状态)、奖励(用于过渡到新的观察状态)、完成(布尔标志)和一些可选的附加信息。
  6. _reset实现剧集重新开始逻辑的方法。

或者,您可以使用类似以下内容创建_render方法。

def _render(self, mode='human', **kwargs):
outfile = StringIO() if mode == 'ansi' else sys.stdout
outfile.write('State: ' + repr(self.state) + ' Action: ' + repr(self.action_taken) + 'n')
return outfile

此外,为了获得更好的代码灵活性,您可以在_get_reward方法中定义奖励的逻辑,并通过在方法中采取行动来更改观察空间_take_action。

最新更新