實作 value iteration
Value iteration 是在 RL 中用來尋找最佳策略的關鍵方法。它會反覆改進每個狀態的價值函式,直到收斂,從而得到最佳策略。你會從已初始化並為你預先載入的價值函式 V 與 policy 開始。接著,在迴圈中持續更新它們直到價值函式收斂,並觀察策略的實際表現。
get_max_action_and_value(state, V) 函式已為你預先載入。
本練習屬於課程
使用 Python 的 Gymnasium 進行強化學習
練習說明
- 對每個狀態,找出具有最大 Q 值的動作(
max_action)及其對應的值(max_q_value)。 - 依據
max_action與max_q_value更新new_V字典與policy。 - 透過檢查每個狀態中
new_v與V的差是否小於threshold來判斷是否收斂。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
threshold = 0.001
while True:
new_V = {}
for state in range(num_states-1):
# Get action with maximum Q-value and its value
max_action, max_q_value = ____
# Update the value function and policy
new_V[state] = ____
policy[state] = ____
# Test if change in state values is negligeable
if all(abs(____ - ____) < ____ for state in ____):
break
V = new_V
render_policy(policy)