在线规划算法:从展望到蒙特卡罗树搜索
1. 带滚动的展望搜索
在解决问题时,我们常常需要找到一种合适的策略来做出决策。一种简单的在线策略是通过模拟到深度 $d$ 来估计值,并基于这些估计值采取贪心行动。为了进行模拟,我们需要一个策略,由于不知道最优策略,我们可以使用滚动策略(rollout policy)。滚动策略通常是随机的,动作从分布 $a \sim \pi(s)$ 中抽取。
为了生成滚动模拟,我们使用生成模型 $s’ \sim T(s, a)$ 从分布 $T(s’ | s, a)$ 中生成后续状态 $s’$。这个生成模型可以通过随机数生成器来实现,在实践中比显式表示分布 $T(s’ | s, a)$ 更容易实现。
以下是相关的代码实现:
struct RolloutLookahead
𝒫 # problem
π # rollout policy
d # depth
end
randstep(𝒫::MDP, s, a) = 𝒫.TR(s, a)
function rollout(𝒫, s, π, d)
ret = 0.0
for t in 1:d
a = π(s)
s, r = randstep(𝒫, s, a)
ret += 𝒫.γ^(t-1) * r
end
return ret
end
function (π::RolloutLookahead)(s)
U(s) = rollout(π.𝒫, s, π.π, π.d)
return greedy(π.𝒫, U
超级会员免费看
订阅专栏 解锁全文
824

被折叠的 条评论
为什么被折叠?



