gym是為測試和開發rl演算法而設計的環境/任務的集合。它讓使用者不必再建立複雜的環境。gym用python編寫,它有很多的環境,比如機械人模擬或atari 遊戲。這裡以乙個基礎的計程車遊戲為例,示範gym的使用方法,以及基本的q-learning的實現
1.建立環境
import gym
import numpy as np
env = gym.make(
"taxi-v3"
)#建立計程車遊戲環境
state = env.reset(
)#初始化環境
envspace = env.observation_space.n #狀態空間的大小
actspace = env.action_space.n #動作空間的大小
2.在不使用q-learning時雖然也能夠通過隨機嘗試獲得滿意的結果,但是往往需要很多步才能做對一次
# 隨機動作
conter =
0reward =
none
while reward!=20:
state, reward, done, info = env.step(env.action_space.sample())
conter = conter +
1print
(reward)
print
(done)
print
(conter)
3.建立乙個q表,將經驗儲存在q表中
# q-learning
q = np.zeros(
[envspace,actspace]
)#建立乙個q-table
alpha =
0.5#學習率
for episode in
range(1
,2000):
done =
false
reward =
0#瞬時reward
r_cum =
0#累計reward
state = env.reset(
)#狀態初始化
while done !=
true
: action = np.argmax(q[state]
) state2,reward,done,info = env.step(action)
q[state,action]
+= alpha*
(reward+np.
max(q[state2]
)-q[state,action]
) r_cum +=reward
state = state2
# env.render()
if episode %
50==0:
print
('episode:{};total reward:{}'
.format
(episode,r_cum)
)print
('the q table is:{}'
.format
(q))
# 測試階段
conter =
0reward =
none
while conter<
200:
action = np.argmax(q[state]
) state, reward, done, info = env.step(action)
conter = conter +
1# env.render()
print
(reward)
Python實現的Q Learning入門Demo
首先明確學習的概念,學習是系統為了適應環境而做出的長久的變化,以便在未來更有效率的處理類似的問題。強化學習就是通過演算法和訓練,讓程式的產生相應的變化,未來更好地處理類似問題。學習系統本身 即學習程式 環境 即學習程式要解決的問題所處的環境 系統判定當前狀態,根據策略採取行動 系統獲得環境的反饋 系...
Q learning演算法實現1(matlab)
演算法偽 得到q表後,根據如下演算法選擇最優策略 以機械人走房間為例,實現如下 注 原文中的房間狀態0 5分別對應 中1 6 機械人走房間q learning的實現 基本引數 episode 100 探索的迭代次數 alpha 1 更新步長 gamma 0.8 折扣因子 state num 6 ac...
SARSA與Q learning的區別
sarsa與q learning的區別 sarsa 的整個迴圈都將是在乙個路徑上,也就是 on policy,下乙個 state 和下乙個 action 將會變成他真正採取的 action 和 state.和 qlearning 的不同之處就在這.qlearning 的下個乙個 state acti...