我在玩pymdptoolbox。它有一个内在的森林管理问题。它可以通过为林函数指定状态值(默认值为3)来生成转换矩阵P
和R
。用Q-Learning
、PolicyIteration
和ValueIteration
来寻找最优策略的实现非常简单。但是,通过将状态更改为大于4的值(从5开始)来创建稍微复杂一些的问题,只有PI
和VI
返回相同的策略,而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
目前没有回答
相关问题 更多 >
编程相关推荐