Q学习策略与价值/政策迭代不一致

时间:2018-11-20 05:27:52

标签: python q-learning markov

我正在玩pymdptoolbox。它具有内在的森林管理问题。通过为林函数指定状态值(默认值为3),可以生成过渡矩阵PRQ-LearningPolicyIterationValueIteration的实现可以找到最佳策略很简单。但是,通过将状态更改为大于4(从5开始)的值来创建一个稍微复杂的问题,只有PIVI返回相同的策略,而QL无法找到最佳政策。这是非常令人惊讶和困惑的。谁能帮助我了解为什么此软件包中的QL为何如此?

通过查看QL的原始代码(使用epsilon-greedy),似乎将概率与迭代次数(即prob = 1 - (1/log(n+2)))联系在一起,学习率是(1/math.sqrt(n+2)) 。是否有任何特定的原因将概率/学习率与迭代次数联系在一起,而不是使它们成为独立变量(尽管代码本身可以轻松修改)。

我认为我最大的困惑是要了解为什么QL找不到解决问题的政策。谢谢。

from mdptoolbox.mdp import ValueIteration, QLearning, PolicyIteration
from mdptoolbox.example import forest

Gamma = 0.99

states = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 30, 50, 70, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]

compare_VI_QI_policy = [] # True or False
compare_VI_PI_policy = []

for state in states:

    P, R = forest(state)

    VI = ValueIteration(P, R, Gamma)
    PI = PolicyIteration(P, R, Gamma)
    QL = QLearning(P, R, Gamma)

    ## run VI
    VI.run()

    # run PI
    PI.run()

    # run QL
    QL.run()

    compare_VI_QI_policy.append(QL.policy == VI.policy)
    compare_VI_PI_policy.append(VI.policy == PI.policy)

print compare_VI_QI_policy
print compare_VI_PI_policy

0 个答案:

没有答案