强化学习经典算法笔记——策略迭代算法
上一篇讲了价值迭代算法,这一篇介绍另一个动态规划算法——策略迭代算法(Policy Iteration)。
简单介绍
Value Iteration的思路是:先迭代找出一个最优的Value Function,然后再根据Value Function迭代出一个最优策略。
Policy Iteration的思路是反着的,首先给定一个初始化的策略函数,一般是随机策略。给予这个策略,可以得到每个状态下采取的动作,进而得到reward和下一状态,利用更新法则,更新value function。
然后,根据更新后的value function更新之前的随机策略。如此,就完成了value-policy的交替更新,直至收敛。
编程实现
还是以FrozenLake游戏为例,实现Policy Iteration算法。
import gym
import numpy as np
env = gym.make('FrozenLake-v0')
def compute_value_function(policy, gamma=1.0, threshold = 1e-20):
'''
计算value function
'''
# len=16
value_table = np.zeros(env.nS)
while True:
updated_value_table = np.copy(value_table)
for state in range(env.n