【问题标题】:Openai Gym Box action space not bounding actionsOpenai Gym Box 动作空间不限制动作
【发布时间】:2022-08-03 11:16:12
【问题描述】:

我正在使用 Keras RL2 在自定义 openai 健身房环境中训练 DDPG 代理。对于行动空间,我正在使用这条线

self.action_space = spaces.Box(low=0, high=100, shape=(18,), dtype=np.float32)

它在训练时完全忽略了低值和高值(有时有负值和超过 200 的值)。我该如何阻止这种情况发生?

  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: python reinforcement-learning openai-gym


【解决方案1】:
class ActionNormalizer(gym.ActionWrapper):
"""Rescale and relocate the actions."""

def action(self, action: np.ndarray) -> np.ndarray:
    """Change the range (-1, 1) to (low, high)."""
    low = self.action_space.low
    high = self.action_space.high

    scale_factor = (high - low) / 2
    reloc_factor = high - scale_factor

    action = action * scale_factor + reloc_factor
    action = np.clip(action, low, high)

    return action

def reverse_action(self, action: np.ndarray) -> np.ndarray:
    """Change the range (low, high) to (-1, 1)."""
    low = self.action_space.low
    high = self.action_space.high

    scale_factor = (high - low) / 2
    reloc_factor = high - scale_factor

    action = (action - reloc_factor) / scale_factor
    action = np.clip(action, -1.0, 1.0)

    return action

这是来自https://github.com/MrSyee/pg-is-all-you-need 的一段代码,它将输入操作缩放到 [-1, 1]。

env = ActionNormalizer(gym.make("blablabla"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2022-10-08
    • 2017-01-02
    • 2020-11-11
    • 2022-12-04
    相关资源
    最近更新 更多