python - Python 强化学习 - 元组观察空间
问题描述
我创建了一个自定义的 openai 健身房环境,其中包含一个离散的动作空间和一个有点复杂的状态空间。状态空间被定义为元组,因为它结合了一些连续的维度和其他离散的维度:
import gym
from gym import spaces
class 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 基线和 stable-baselines 都无法处理它。
或者,是否有一种不同的方式可以定义我的状态空间,以便将我的环境适合这些定义更好的包之一?
解决方案
您可能想尝试rllib
中的强化学习包ray
,它在伯克利的 UC 中进行了扩展。
https://rise.cs.berkeley.edu/projects/ray/
它包括许多已实现的算法:
它非常易于使用。您只需要添加您的环境,该环境已在以下位置进行了全面说明: https ://ray.readthedocs.io/en/latest/rllib-env.html
推荐阅读
- delphi - 为什么在一种情况下需要静态而在另一种情况下不是强制性的?
- javascript - 如何识别我的项目中安装或未安装的 npm 包
- git - Git 命令等效于 Clearcase 命令?
- html - 我使用的是 flexbox 对吗?似乎无法让垂直对齐工作 - 其他线程似乎没有答案
- python - 导出 FastAI 文本分类器模型时出错
- angular - 如何过滤掉对象内部数组字段中的字段?
- c++ - glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?
- c# - 为什么“var connectionStringBuilder = new SqliteConnectionStringBuilder”会抛出“System.NullReferenceException”
- javascript - 如何防止玩家发送垃圾邮件移动消息(Node.js)?
- c# - 使用可为空变量和三元运算符处理公司中的 DBNull.Value