我创建了一个自定义的OpenAI Gym环境,具有离散动作空间和一个相对复杂的状态空间。由于状态空间结合了一些连续和离散的维度,因此被定义为一个元组:
import gymfrom gym import spacesclass CustomEnv(gym.Env): def __init__(self): self.action_space = spaces.Discrete(3) self.observation_space = spaces.Tuple((spaces.Discrete(16), spaces.Discrete(2), spaces.Box(0,20000,shape=(1,)), spaces.Box(0,1000,shape=(1,))) ...
我在使用keras-rl,特别是DQNAgent训练代理时取得了一些成功,但keras-rl的支持不足,且文档非常差。有什么推荐的RL包可以处理这种类型的观测空间吗?目前看来,OpenAI Baselines和Stable-Baselines似乎都无法处理这种情况。
或者,有没有其他方式可以定义我的状态空间,以便将我的环境适应这些更好的定义包中?
回答:
你可以尝试rllib
,这是一个在加州大学伯克利分校扩展的ray
中的强化学习包。
https://rise.cs.berkeley.edu/projects/ray/
它包括了许多已实现的算法:
而且使用起来相当简单。你只需要添加你的环境,详细说明可以在以下网址找到:https://ray.readthedocs.io/en/latest/rllib-env.html