首页 > 解决方案 > 如何实现线性萨尔萨

问题描述

你如何在 Python 中实现“ Linear Sarsa ”?

我为那些不熟悉该算法的人提供了一个伪代码示例,以及我个人在 Python 中实现它的尝试。

线性 Sarsa 算法的伪代码示例:

  1. 任意初始化 θ

  2. 对于 {1, . . . , N} 做

  3. s ← 第 i 集的初始状态

  4. 而状态 s 不是终端做

  5. a ← π(s)

  6. r ← 在状态 s 观察到动作 a 的奖励

  7. s0 ← 在状态 s 观察到动作 a 的下一个状态

  8. θ ← θ + α[r + γV(s0; θ) - V(s; θ)]∇θV(s; θ)

  9. s ← s0

  10. 结束时

  11. 结束

尝试的 Python 实现

def linear_sarsa(env, max_episodes, eta, gamma, epsilon, seed=None):
    random_state = np.random.RandomState(seed)
    eta = np.linspace(eta, 0, max_episodes)
    epsilon = np.linspace(epsilon, 0, max_episodes)
    theta = np.zeros(env.n_features)

    for i in range(max_episodes):
        features = env.reset()
        q = features.dot(theta)
        gradientThetaFeatures = np.gradient(q[s]) #∇θV(s; θ)
        done = False
        while not done:
            s2, reward, done, info = env.step(action)
            action1 = policy
            #Theta Value
            #θ ← θ + α[r + γV(s2; θ) − V(s; θ)]∇θV(s; θ)
            theta = theta + eta * (reward + (gamma * q[s2]) - q[s]) * gradientThetaFeatures
            s = s2
    return theta

我这样做正确吗?

标签: pythonpython-3.xalgorithmartificial-intelligence

解决方案


推荐阅读