本文介紹乙個簡單的案例。目標如下:
我們的機械人在上面的地圖上行走,目的是要找到寶藏,如果進入骷髏頭,遊戲就失敗。
我們對地圖上的小方格進行編號: 1 - 8
**簡單表示如下:
self.states = [1,2,3,4,5,6,7,8] #狀態空間
同時定義終止狀態:
self.terminate_states = dict() #終止狀態為字典格式
self.terminate_states[6] = 1
self.terminate_states[7] = 1
self.terminate_states[8] = 1
動作空間很簡單:上,下,左,右
self.actions = ['n','e','s','w']
self.rewards = dict(); #回報的資料結構為字典
(如果不知道怎麼用 gym 畫圖,請跳**
**如下:
def render(self, mode='human', close=false):
# 建立地圖
lines =
line1 = rendering.line((0, 0), (0, 200))
line2 = rendering.line((120, 0), (120, 200))
line3 = rendering.line((0, 200), (600, 200))
line4 = rendering.line((0, 100), (600, 100))
line5 = rendering.line((240, 0), (240, 200))
line6 = rendering.line((360, 0), (360, 200))
line7 = rendering.line((480, 0), (480, 200))
line8 = rendering.line((600, 0), (600, 200))
line9 = rendering.line((0, 0), (120, 0))
line10 = rendering.line((240, 0), (360, 0))
line11 = rendering.line((480, 0), (600, 0))
# 建立骷髏
kulos =
kulo1 = rendering.make_circle(40)
kulo1_transiform = rendering.transform(translation=(60, 50))
kulo1.add_attr(kulo1_transiform)
kulo1.set_color(0, 0, 0)
kulo2 = rendering.make_circle(40)
kulo2_transiform = rendering.transform(translation=(540, 50))
kulo2.add_attr(kulo2_transiform)
kulo2.set_color(0, 0, 0)
# 建立寶藏
golds =
gold = rendering.make_circle(40)
circletrans = rendering.transform(translation=(300, 50))
gold.add_attr(circletrans)
gold.set_color(1, 0.9, 0)
# 建立機械人
robots =
robot = rendering.make_circle(40)
robot.set_color(0.8, 0.6, 0.4)
robot_transilation = rendering.transform(translation=(420, 150))
robot.add_attr(robot_transilation)
transiform = rendering.transform(translation=(50, 50))
for line_ in
lines:
line_.set_color(0, 0, 0)
line_.add_attr(transiform)
self.viewer.add_geom(line_)
for kulo_ in kulos:
kulo_.add_attr(transiform)
self.viewer.add_geom(kulo_)
for gold_ in golds:
gold_.add_attr(transiform)
self.viewer.add_geom(gold_)
for robot_ in robots:
robot_.add_attr(transiform)
self.viewer.add_geom(robot_)
return self.viewer.render(return_rgb_array=mode == 'rgb_array')
本例子用的演算法是dqn, 讀者可以先不管dqn是什麼
機械人找金幣
q 乙個機械人一天能夠找到4個金幣,而50個金幣可以購買新的機械人,問 在第n天,能夠找到的金幣數量的最大值?a 簡單分析可得,如果有足夠的錢,越早換機械人,對於不久後的某一天找到的金幣數量越多。於是,依據動態規劃的方法,構造乙個換機械人的天數以及剩餘金幣的列表。然後,遍歷這個列表找到金幣最多的機器...
強化學習訓練機械人2 Unity3D環境
前言 之前在unity3d中嘗試訓練四足機械人學習奔跑前進,只是做了簡單的嘗試。在19年的寒假裡由於要寫 所以基於強化學習提出一種分層學習演算法,實現四足機械人在腿瘸後仍可以繼續向前運動。這種是一種比較簡單的,所以也就只發表在國內的核心期刊上面。這也是我第一次寫 個人感覺還是相比國內許多 來講,我的...
深度強化學習控制移動機械人
860122112 qq.com 使用深度強化學習控制移動機械人在複雜環境中避障 收集物品到指定點。所用到的演算法包括dqn deuling ddqn a3c ddpg naf。1.實驗環境 ros gazebo 2.移動機械人模型 安裝有kinect的pioneer3移動機械人 機械人從kinec...