策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题

话不多说直接上policy iteration的算法

策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


接下来进行python实现:

首先定义好环境,这里分两步,一是拿一个随机策略并初始化其值函数为0数组,然后进行策略迭代,再根据返回的最优策略进行试验求得回报

策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


初始化环境

接下来进行策略迭代,分为三步1.初始化;2.策略估计;3.策略改进

策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


策略迭代

接下来实现上图中的第二步策略估计

策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


策略估计

接下来进行策略改进

策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


策略改进

最后运行整个环境


策略迭代(policy iteration)解决冰湖(FrozenLake-v0)问题


至此实现策略迭代,具体代码可以在https://github.com/JUSTLOVELE/MobileDevStudy/blob/master/RL/gym_case/policy_iteration.py 中查阅

其实策略迭代就是先估计,在改进策略,直到收敛,如果不收敛就继续估计继续改进。。。实现后其实可以得知策略迭代是先求解出最优解,然后再去和环境进行交互求得最大收益,之所以在和环境交互前能求最优策略是提前知道了环境的转移概率P和回报函数R,然后再利用动态规划和贝尔曼最优方程,但真实世界中哪里能做到先知先觉呢?恐怕转移概率和回报函数一个都得不到。


分享到:


相關文章: