我正在尝试为一个强化学习用例开发一个自定义的健身房环境。在这个环境中,我的主要目标是根据每个步骤中要采取的几个操作来预测状态,也就是说,我的observation_space依赖于action_space中的多个操作。我尝试在不同Box spaces值的元组中为环境提供几个操作,如下所示:
self.action_space = Tuple([Box(low=np.array([22]),high=np.array([25])),
Box(low=np.array([0]), high=np.array([230])),
Box(low=np.array([0]), high=np.array([33])),
Box(low=np.array([0]), high=np.array([3.5]))])多个操作空间:

环境构建成功,但是,当我尝试在指定的环境上训练PPO模型时,我遇到了以下错误:
Error: AssertionError: The algorithm only supports (<class 'gym.spaces.box.Box'>, <class 'gym.spaces.discrete.Discrete'>, <class 'gym.spaces.multi_discrete.MultiDiscrete'>, <class 'gym.spaces.multi_binary.MultiBinary'>) as action spaces but Tuple(Box(22.0, 25.0, (1,), float32), Box(0.0, 230.0, (1,), float32), Box(0.0, 33.0, (1,), float32), Box(0.0, 3.5, (1,), float32)) was provided错误:

有没有人能建议在一个动作空间中使用多个动作时如何处理这个问题,以及这个错误到底意味着什么,因为我所理解的是我们需要传递tuple中的健身房空间,但是我传递了Box空间,但是抛出了错误?
发布于 2021-11-17 22:16:01
如果你是stable_baseline3,那么问题可能来自于它不支持元组的事实,考虑使用Dict来代替。
https://stackoverflow.com/questions/69580018
复制相似问题