RL-策略迭代算法
首先需要构建环境 env。环境应完整描述马尔可夫决策过程(MDP)的基本要素,包括状态集合 S 以及状态转移函数 step(即在给定状态与动作下返回下一状态与奖励)。
随后对策略进行初始化。策略用于表示在各状态下选择各动作的概率分布。为简化计算,初始时可设定各状态下动作概率为相同值(或统一初始值)。
策略迭代算法由两个交替执行的阶段组成:策略评估(Policy Evaluation) 与 策略改进(Policy Improvement)。
策略评估(Policy Evaluation)
策略评估阶段用于计算在当前策略下各状态的价值函数。由于状态价值依赖于后继状态(相邻状态)的价值,而后继状态的价值又依赖于更远未来的状态,因此初始计算得到的仅为估计值。随着相邻状态价值的更新,当前状态价值也会发生变化,因此必须通过迭代更新直至收敛,才能得到与当前策略一致的稳定价值函数。
其实现如下:
def policy_evaluation(policy, V):
while True:
delta = 0
for s in range(env.n_states):
v = 0
for a in range(env.n_actions):
prob = policy[s][a]
next_state, reward = env.step(s, a)
v += prob * (reward + gamma * V[next_state])
delta = max(delta, abs(v - V[s]))
V[s] = v
if delta < theta:
break
return V
该过程通过反复迭代,使价值函数逐步逼近满足当前策略的贝尔曼方程的解。
策略改进(Policy Improvement)
在策略改进阶段,基于当前价值函数采用贪婪准则更新策略。对于每个状态,分别计算执行各个动作后的状态价值,并将价值最大的动作概率设为 1,其余动作概率设为 0,从而完成一轮策略更新。
终止条件
策略评估与策略改进交替执行。当某一轮策略改进后,新旧策略完全一致(在离散动作情况下,即所有状态所选择的动作均不再发生变化)时,认为策略已达到稳定状态,算法终止,此时输出最终策略

浙公网安备 33010602011771号