12

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

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

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

4

1 回答 1

22

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

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

对于自定义环境,应该定义几件事。

  1. 构造函数__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 方法中通过采取行动来更改观察空间。

于 2017-06-21T16:00:43.590 回答