Q learning實現簡單的Gym遊戲

2021-10-05 17:16:05 字數 1868 閱讀 8755

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...