1

我目前正在使用由 openai 制作的“spinningup”。在 spinup 中,实现了 PPO 和其他 RL 算法。但是,只有 DDPG、SAC 和 TD3 具有名为“action_limit”的变量。

我现在正在使用 PPO,我还需要剪辑(给出下限和上限)动作,因为我的机器人只在 [0, 200.0] 范围内工作。是因为 PPO 算法不需要与 DDPG、SAC、TD3 不同的 action_limit 吗?或者他们没有在 PPO 上放置 action_limit 是 spinup 的错误吗?

还是有其他聪明的方法可以在这里做出一些限制?

4

1 回答 1

0

我还认为在使用“spaces.Box”创建环境时应该考虑它,但是在运行策略时,它的值也会高于我输入的框。

如果您查看Continuous_MountainCarEnv,它会在 self.step() 中使用以下代码来使用该操作(第 74 行):

force = min(max(action[0], self.min_action), self.max_action)

因此,它限制了步骤中的力输入,尽管它已经创建了具有相同限制的 action_space(第 51 行):

self.action_space = spaces.Box(
        low=self.min_action,
        high=self.max_action,
        shape=(1,),
        dtype=np.float32

因此,在创建 action_space 和使用操作本身时考虑限制可能很有用。如果您不使用此限制,则经过训练的策略可能会导致高于您的限制的操作,尽管它们可能会接近该限制。

干杯!!

于 2021-04-24T15:43:11.113 回答