[英]Enhancement of Agent Training Q Learning Taxi V3
episode_number = 10000
for i in range(1,episode_number):
state = env.reset()
reward_count = 0
dropouts = 0
while True:
if random.uniform(0,1) < epsilon:
action = env.action_space.sample()
else:
action = np.argmax(q_table[state])
next_state, reward, done, _ = env.step(action)
old_value = q_table[state, action]
next_max = np.max(q_table[next_state])
next_value = (1-alpha)*old_value + alpha*(reward + gamma*next_max)
q_table[state,action] = next_value
state = next_state
if reward == -10:
dropouts += 1
if done:
break
reward_count += reward
if i%10 == 0:
dropout_list.append(dropouts)
reward_list.append(reward_count)
print("Episode: {}, reward {}, wrong dropout {}".format(i, reward_count,dropouts))
我被要求增強此代碼以展示獎勵和懲罰的比較。 它是如何工作的,我必須通過讓這段代碼顯示訓練代理之前和訓練代理之后獲得的獎勵的比較來增強它。 繪制的圖表必須重疊以顯示比較,但我找不到方法。 我已經嘗試了好幾天,但找不到我正在尋找的解決方案。 我希望有人可以幫助我。
如果需要創建新代碼或單獨的代碼然后比較結果,請告訴我。 謝謝你。
我認為在next_value的做作中缺少一個術語應該是next_value = (1-alpha) old_value + alpha (reward + gamma*next_max- q_table(state,action))
關於您要制作的情節,您可以交互 plot 代理人同時采取隨機行動獲得的獎勵與強化學習后代理人獲得的獎勵
我似乎不明白,但您顯示的代碼是代理的學習階段
運行后,q_table 包含與當前 state 相關的每個操作的質量
代理進程的算法是
initialize environment
done := false
while not done
s:= current state
a := argmax(q_table[s])
update s and done by making the action a
我建議您查看本教程,該教程涵蓋了我認為的所有審訊
隨時查看帖子的評論部分,了解有關情節的擔憂
我希望我有幫助
祝你工作順利!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.