【发布时间】:2023-02-09 03:35:55
【问题描述】:
我创建了一个自定义空间,它扩展了 OpenAI gym.Space。我需要这个空间,因为我需要一个总和为一个值的动作空间。使用它,我可以扩大输出并满足我的要求。
class ProbabilityBox(Space):
"""
Values add up to 1 and each value lies between 0 and 1
"""
def __init__(self, size=None):
assert isinstance(size, int) and size > 0
self.size = size
gym.Space.__init__(self, (), np.int64)
def sample(self):
return np.around(np.random.dirichlet(np.ones(self.size), size=1), decimals=2)[0]
def contains(self, x):
if isinstance(x, (list, tuple, np.ndarray)):
if np.sum(x) != 1:
return False
for i in x:
if i > 1 or i < 0:
return False
return True
else:
return False
def __repr__(self):
return f"ProbabilityBox({self.size})"
def __eq__(self, other):
return self.size == other.size
我在自定义环境中的操作空间中使用此空间。我无法在stable-baselines3 中训练这个代理,因为它不支持自定义空间。
- 是否有替代方法来模拟此场景以便我可以使用
stable-baselines3? - 我可以使用哪些其他库/框架来训练支持自定义空间的 RL 代理?
【问题讨论】:
标签: reinforcement-learning openai-gym stable-baselines