MADDPG 连续动作noise trick

在maddpg中,对于连续动作鼓励探索时,使用的是OU noise方法,该方法是自相关的。

# OU noise是自相关的,后一步的噪声受前一步的影响(且是马尔科夫的)。而第一部分阐述的高斯噪声,前后两步都是完全独立的。
class OU_noise:
    def __init__(self,action_dim ,miu = 0, theta = 0.15, sigma = 0.2, dt = 0.1,scale = 0.1):
        self.miu = miu
        self.theta= theta
        self.sigma= sigma
        self.dt = dt
        self.action_dim = action_dim
        self.scale = scale
        self.state = np.ones(self.action_dim) * self.miu
        self.reset()

    def noise(self):
        dx = self.theta * (self.miu - self.state) * self.dt + self.sigma * np.sqrt(self.dt) * np.random.randn(self.action_dim)
        self.state = self.state + dx
        return  self.state * self.scale

    def reset(self):
        self.state = np.ones(self.action_dim) * self.miu

你可能感兴趣的:(maddpg)