策略迭代(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,然後再利用動態規劃和貝爾曼最優方程,但真實世界中哪裡能做到先知先覺呢?恐怕轉移概率和回報函數一個都得不到。


分享到:


相關文章: