如何在 keras-rl / OpenAI GYM 中实现自定义环境?
How to implement custom environment in keras-rl / OpenAI GYM?
我是强化学习的新手,一直在寻找 framework/module 来轻松驾驭这个危险的地形。在我的搜索中,我遇到了两个模块 keras-rl 和 OpenAI GYM。
我可以让他们两个都处理他们在 WIKI 上分享的示例,但是他们带有预定义的环境并且很少或根本没有关于如何设置我自己的自定义环境的信息。
如果有人能给我指点教程或向我解释如何设置非游戏环境,我将不胜感激?
我已经在这些库上工作了一段时间,可以分享我的一些实验。
让我们首先将文本环境作为自定义环境的示例,https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py
对于自定义环境,应定义一些内容。
- Constructor__init__方法
- 动作space
- 观察space(参见https://github.com/openai/gym/tree/master/gym/spaces所有可用健身房spaces(这是一种数据结构))
- _seed 方法(不确定是否必须)
- _step 方法接受动作作为参数并返回观察(动作后的状态)、奖励(用于转换到新的观察状态)、完成(布尔标志)和一些可选的附加信息。
- _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 方法中更改观察 space 采取行动。
我是强化学习的新手,一直在寻找 framework/module 来轻松驾驭这个危险的地形。在我的搜索中,我遇到了两个模块 keras-rl 和 OpenAI GYM。
我可以让他们两个都处理他们在 WIKI 上分享的示例,但是他们带有预定义的环境并且很少或根本没有关于如何设置我自己的自定义环境的信息。
如果有人能给我指点教程或向我解释如何设置非游戏环境,我将不胜感激?
我已经在这些库上工作了一段时间,可以分享我的一些实验。
让我们首先将文本环境作为自定义环境的示例,https://github.com/openai/gym/blob/master/gym/envs/toy_text/hotter_colder.py
对于自定义环境,应定义一些内容。
- Constructor__init__方法
- 动作space
- 观察space(参见https://github.com/openai/gym/tree/master/gym/spaces所有可用健身房spaces(这是一种数据结构))
- _seed 方法(不确定是否必须)
- _step 方法接受动作作为参数并返回观察(动作后的状态)、奖励(用于转换到新的观察状态)、完成(布尔标志)和一些可选的附加信息。
- _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 方法中更改观察 space 采取行动。