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

时间:2017-06-10 03:38:43

标签: keras reinforcement-learning openai-gym keras-rl

我是强化学习的完全新手,并且一直在寻找一个框架/模块来轻松导航这个危险的地形。在我的搜索中,我遇到了两个模块keras-rl& OpenAI GYM。

我可以让他们两个人在他们的WIKI共享的示例上工作,但他们有预定义的环境,很少或没有关于如何设置我自己的自定义环境的信息。

如果有人能指出我的教程,或者只是向我解释如何设置非游戏环境,我会非常感激?

1 个答案:

答案 0 :(得分:15)

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

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

对于自定义环境,应定义一些事项。

  1. Constructor__init__ method
  2. 行动空间
  3. 观察空间(所有可用的健身房空间见https://github.com/openai/gym/tree/master/gym/spaces(它是一种数据结构))
  4. _seed方法(不确定它是强制性的)
  5. _step方法接受动作作为参数并返回观察(动作后的状态),奖励(转换到新的观察状态),完成(布尔标志)和一些可选的附加信息。
  6. _reset方法,实现剧集重新开始的逻辑。
  7. 或者,您可以使用类似

    的方法创建_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方法中的操作更改为观察空间。