武 曲 張 義 郭 坤 王 璽
(青島理工大學信息與控制工程學院 山東 青島 266520)
在路徑規(guī)劃領(lǐng)域,目前已經(jīng)存在很多經(jīng)典的算法。如迪杰斯特拉提出的Dijkstra算法,應(yīng)用貪心的思想,通過每次在未標記的節(jié)點中選擇距離源點最近的節(jié)點實現(xiàn)最短路徑的求解[1]。在已知地圖的情況下,這種算法仍可以取得很好的效果。A*算法在Dijkstra算法的基礎(chǔ)上,加入了啟發(fā)式函數(shù)[2],也就是一種評估當前點到達目標的度量,用來決定下一步應(yīng)該優(yōu)先擴展哪個節(jié)點,這種算法在多維度規(guī)劃問題上,或是在較大規(guī)模的地圖上,算法復(fù)雜度很大。勢場法將規(guī)劃空間看作物理學中“場”的概念,將智能體看作一個粒子,障礙物會對這個粒子產(chǎn)生斥力,目標會對這個粒子產(chǎn)生引力,兩者的合力即為最后智能體運動的方向[3],勢場法成功的關(guān)鍵在于如何設(shè)計引力和斥力函數(shù)。這種方法實時性較好,同時產(chǎn)生的路徑通常十分平滑,適合于機械臂一類的應(yīng)用,缺點是在合力為0的位置智能體容易陷入局部最優(yōu)解。
近年來,由于人工智能的興起,很多基于人工智能的路徑規(guī)劃方法被提出,文獻[4]提出了一種基于模糊邏輯的移動機器人路徑規(guī)劃算法,將狀態(tài)空間與動作空間關(guān)聯(lián)起來,形成映射關(guān)系,解決了人工勢場法中容易陷入局部極小的問題;文獻[5]中詳細介紹了遺傳算法在路徑規(guī)劃中的研究,并提出了一種基于改進染色體編碼的自適應(yīng)遺傳算法,使得算法能夠避免過早收斂的問題;文獻[6]中提出了利用雙向神經(jīng)網(wǎng)絡(luò)來解決在未知環(huán)境中進行路徑規(guī)劃的方法。
盡管上述方法可以在各自的領(lǐng)域取得不錯的效果,但是它們都基于已知環(huán)境這個前提,需要人工將環(huán)境與路徑規(guī)劃算法結(jié)合,在實際應(yīng)用時具有一定的局限性。強化學習是一類應(yīng)用在未知環(huán)境的機器學習方法[7],作為機器學習的三大分支之一,不同于監(jiān)督學習和無監(jiān)督學習,強化學習無須提供數(shù)據(jù),所有的學習資料都將從環(huán)境中獲取。智能體通過不斷地探索環(huán)境,根據(jù)不同的動作產(chǎn)生的不同的反饋進行模型的學習,最終智能體將能以最優(yōu)策略在指定環(huán)境中完成任務(wù)。
在利用強化學習進行路徑規(guī)劃問題方面,也已經(jīng)出現(xiàn)了一些研究成果,文獻[8]提出利用偏好評估的強化學習技術(shù),結(jié)合降維的方法,實現(xiàn)了智能體在存在移動障礙物的環(huán)境中的路徑規(guī)劃;文獻[9]將深度強化學習技術(shù)與策略梯度法結(jié)合起來,解決自動駕駛中的路徑規(guī)劃問題,提升了路徑規(guī)劃問題的效率;文獻[10]將監(jiān)督學習與強化學習相結(jié)合,為智能體提供規(guī)劃好的路徑,接下來智能體利用強化學習中函數(shù)近似的方法來進行泛化,實現(xiàn)在其他環(huán)境中的路徑規(guī)劃,具有較強的泛化能力。
將深度學習與強化結(jié)合的結(jié)合上,Mnih等[11]構(gòu)建的DQN(Deep Q Network)無疑是一項重要的研究成果,通過經(jīng)驗重放的off-policy方式,解決了強化學習領(lǐng)域的數(shù)據(jù)之間的強相關(guān)性無法在深度學習算法中取得好的效果的問題??梢哉f,經(jīng)驗重放是深度學習與強化學習結(jié)合的關(guān)鍵所在,一些學者就此過程進行研究。Schaul等[12]提出了一種基于優(yōu)先級經(jīng)驗重放的(Prioritized Experience Replay,PER)的采樣方式,記憶庫中的數(shù)據(jù)按照被利用來進行訓(xùn)練時的TD error計算其優(yōu)先級,造成的TD error比較大的樣本說明模型對此類樣本還未能很好地收斂,在再次采樣時應(yīng)該更多地選擇此類樣本,反之,造成TD error小的樣本應(yīng)該盡量少地被再次采樣。這種方式被證明優(yōu)于隨機采樣的方式,在多種Atari中的表現(xiàn)優(yōu)于隨機采樣。陳希亮等[13]提出一種基于重抽樣優(yōu)選緩存經(jīng)驗回放的抽樣機制,解決了PER抽樣方式導(dǎo)致的抽樣不充分的問題。何明等[14]提出一種PES(Prioritized Experience Selected)的采樣方式,根據(jù)TD error排序序數(shù)的倒序為樣本設(shè)定優(yōu)先級,解決了PER過程中TD error量級間隔過大而導(dǎo)致的多數(shù)樣本因采樣概率低而無法被采集到的問題,在MADDPG算法中取得了比PER采樣過程更好的效果。
以上抽樣方法都著重于從記憶庫中采樣的方式,在離線學習的深度強化學習的機制中,需要設(shè)定一個記憶庫來存儲與環(huán)境的交互數(shù)據(jù),通常,這個數(shù)據(jù)庫被設(shè)計為固定規(guī)格,當記憶庫存滿后,采用先進先出的替換原則用新的數(shù)據(jù)把當前記憶庫中最先存入的數(shù)據(jù)替換出去,以此來為模型提供較新的數(shù)據(jù)。這種抽樣的方式帶來的問題是對于早期存入的數(shù)據(jù),即使有高的優(yōu)先級,也有可能被替換出去,而排在末尾的低優(yōu)先級的數(shù)據(jù),也會因為有更長的存在時間而可能被抽樣。本文采用了一種基于堆結(jié)構(gòu)的優(yōu)先級經(jīng)驗置換策略,在無須嚴格排序的基礎(chǔ)上實現(xiàn)了樣本替換優(yōu)先級的定義與運用,保證了記憶庫中樣本的高可用性。此外為了解決訓(xùn)練過程被某些異常高loss樣本所誘導(dǎo)產(chǎn)生的訓(xùn)練不平穩(wěn)的問題,本文提出使用基于層序數(shù)的優(yōu)先級采樣進行解決。
另外,在多智能體聯(lián)動學習方面,OpenAI團隊在其提出的MADDPG[15]算法中使用了集中式學習、分布式執(zhí)行的框架,不同進程之間共享最新的參數(shù),可以使模型更快地收斂。
Dueling DQN[16]是在DQN算法上的一種改進,該算法將Q值分為Value和Advantage兩部分,經(jīng)本文驗證Dueling DQN在復(fù)雜長回合問題中具有更好的表現(xiàn)。
綜上,本文提出一種分布式優(yōu)先級經(jīng)驗置換Dueling DQN(DPES Dueling DQN)的算法結(jié)構(gòu),并在較大規(guī)模的復(fù)雜環(huán)境中進行路徑規(guī)劃的仿真實驗,驗證了本文算法的可行性和高效性。
Q-Learning算法是強化學習中一種經(jīng)典的基于值的算法[17],該算法維護一個狀態(tài)與動作的Q值表格,在每一個狀態(tài)下,都可以通過查詢表格的方式獲得各個動作所對應(yīng)的Q值,其中一個表項值Qij表示在狀態(tài)si下選擇動作aj的行為價值,通常依argmaxa(Qij)的策略進行動作選擇。在動作執(zhí)行之后,根據(jù)從環(huán)境中獲得回報r按式(1)對當前值對應(yīng)的Q值進行更新。
Q(s,a)←Q(s,a)+γ[r+maxa′Q(s′,a′)-Q(s,a)]
(1)
循環(huán)該過程直至整個Q值表收斂。式中:γ表示衰減度,用來表達一個回合中較后的動作所產(chǎn)生的回報對較前的動作選擇的影響。
Q-Learning算法可以近乎完美地解決低維簡單的強化學習問題,但是在處理多狀態(tài)多動作的復(fù)雜問題時,Q-Learning算法就會變得力不從心,復(fù)雜的狀態(tài)空間和動作空間讓Q值表變得非常巨大,兩相組合更是使得Q值表的數(shù)量級呈指數(shù)型增長,這就導(dǎo)致Q值表的收斂變得異常困難。另外對于未參與訓(xùn)練的狀態(tài),Q-Learning算法將無法為其生成動作,也就是說Q-Learning算法沒有泛化能力。
上述限制使得強化學習在很長一段時間沒有出現(xiàn)突破性的研究進展,一直到2013年,DeepMind團隊的Mnih等提出了DQN算法,這標志著DRL(Deep Reinforcement Learning) 時代的到來,自此不斷涌現(xiàn)出許多DRL的相關(guān)技術(shù)。
DQN由兩個結(jié)構(gòu)相同但參數(shù)間隔更新的網(wǎng)絡(luò)構(gòu)成,可以分別定義為Qtarget和Qeval,其中Qeval從記憶庫中提取數(shù)據(jù)進行學習,其參數(shù)實時更新,而Qtarget每隔一定步數(shù)之后同步Qeval的參數(shù),通過如式(2)所示的loss值來進行Qeval網(wǎng)絡(luò)的學習。
(2)
深度學習的使用通常以訓(xùn)練數(shù)據(jù)相互之間互不相關(guān)為前提,而在強化學習中,一個回合的前后動作之間往往存在著很強的相關(guān)性,這就為深度學習的使用帶了困擾。在DQN中,通過離線學習的方式解決了這個問題。DQN引入了記憶庫的概念,模型會將訓(xùn)練過程中的所有實時產(chǎn)生的元組保存在記憶庫中,并不立即用來進行模型的學習,而是通過在記憶庫中隨機抽樣的方式選擇數(shù)據(jù)進行網(wǎng)絡(luò)的學習。這樣就有效地減弱了數(shù)據(jù)之間的相關(guān)性,使得訓(xùn)練好的模型能夠具有泛化性。
Dueling DQN是DQN的一種改進,Dueling DQN將Q值分成了價值函數(shù)Value和優(yōu)勢函數(shù)Advantage兩部分,其中:Value表示當前狀態(tài)的重要程度;Advantage則對應(yīng)每個動作各有一個值代表每個動作的優(yōu)勢,而后通過式(3)構(gòu)造最終的Q值。
Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)-
(3)
式中:θ表示網(wǎng)絡(luò)卷積層的參數(shù);α和β分別表示Advantage和Value函數(shù)全連接層的參數(shù)。
本文實驗證明,Dueling DQN的這種設(shè)計有利于長回合場景下的動作選擇,在復(fù)雜環(huán)境的路徑規(guī)劃應(yīng)用中有較好的表現(xiàn)。
本文算法采用一種分布式執(zhí)行的框架,框架結(jié)構(gòu)如圖1所示。通過多線程的方式構(gòu)建多個智能體,多個智能體各自獨立地進行動作選擇、動作執(zhí)行,在獲得回報后將數(shù)據(jù)樣本存入共享的記憶庫。
圖1 DPES Dueling DQN結(jié)構(gòu)
智能體在執(zhí)行時,首先加載最新的共享全局參數(shù),再進行動作選擇。智能體在學習時,各自獨立地從記憶庫中進行樣本抽取,對參數(shù)進行梯度更新后將智能體參數(shù)上傳到全局共享參數(shù),以保證全局參數(shù)獲得實時更新,通過多智能體分布式處理的方式,可以進一步降低樣本之間的相關(guān)性,減少模型收斂耗費的時間。
在傳統(tǒng)的離線學習模型中,當記憶庫存滿時,模型便采用先進先出的機制,從索引0開始替換掉最先存入的數(shù)據(jù),這樣會導(dǎo)致高采樣優(yōu)先級的數(shù)據(jù)樣本可能因為位于記憶庫開始而被替換出去,造成有價值數(shù)據(jù)被丟棄。
本文提出的PES策略采用小根堆的結(jié)構(gòu)實現(xiàn)。堆是二叉樹的一種,不同于排序二叉樹在節(jié)點增刪時需要調(diào)整樹的結(jié)構(gòu)來保證樹的平衡,堆結(jié)構(gòu)在增刪節(jié)點的同時自動保證了自身的平衡性,也就保證了在插入刪除時的平均復(fù)雜度。堆有小根堆和大根堆之分,小根堆中的根節(jié)點是整個樹中的最小節(jié)點,其子樹中的根節(jié)點同樣滿足此性質(zhì)。大根堆中則是根節(jié)點為最大節(jié)點。
小根堆在移動節(jié)點時的上浮和下沉兩種操作定義如下:
上浮若當前節(jié)點權(quán)重比父節(jié)點權(quán)重值小,交換當前節(jié)點與父節(jié)點的位置。
下沉若當前節(jié)點權(quán)重比左子節(jié)點權(quán)重或右子節(jié)點權(quán)重大,交換當前節(jié)點與較小的子節(jié)點位置。
記憶庫處在運行態(tài)時,在不同情境下的處理方式如下:
1) 新數(shù)據(jù)插入。
(1) 堆節(jié)點數(shù)未達到上限。為新節(jié)點賦予初始權(quán)重1,將節(jié)點插入到堆末尾。
(2) 堆節(jié)點數(shù)達到上限時。替換掉堆根節(jié)點,為新節(jié)點賦予初始權(quán)重等同堆尾節(jié)點的權(quán)重,對節(jié)點進行下沉操作,移動節(jié)點到合適位置。
2) 權(quán)重更新后的節(jié)點移動。改變被抽樣的節(jié)點權(quán)重,根據(jù)新的權(quán)重值大小決定節(jié)點上浮或是下沉,移動節(jié)點到合適位置。
本文利用數(shù)據(jù)樣本參與訓(xùn)練時產(chǎn)生的TD-error即損失值作為構(gòu)建堆的權(quán)重,loss越大,說明模型對此樣本尚不能很好地擬合,需要保留在記憶庫中繼續(xù)訓(xùn)練。反之,loss越小,說明模型對該樣本擬合得很好,此樣本就應(yīng)該從記憶庫中替換出去,避免該類樣本過多地參與訓(xùn)練使模型陷入局部最優(yōu)。而通過小根堆的方式,loss最小的樣本將會始終被放置在根節(jié)點的位置,可以以O(shè)(1)的時間復(fù)雜度拿到并完成樣本替換。而之所以在新樣本存入初始化其權(quán)重與堆尾節(jié)點相同,是為了保證新寫入數(shù)據(jù)的采樣優(yōu)先級。
在采樣環(huán)節(jié),本文提出一種基于堆層序數(shù)的優(yōu)先級采樣方法。在Schaul等提出的PER中,根據(jù)式(4)構(gòu)建的優(yōu)先級進行采樣。
(4)
式中:pi表示需要為i的樣本參與訓(xùn)練時產(chǎn)生的損失值。本文通過實驗發(fā)現(xiàn),模型在訓(xùn)練前期所產(chǎn)生的誤差之間差異較大,依此方式產(chǎn)生的樣本抽樣概率將會更加懸殊,這并不利于模型的平滑收斂。
本文提出的基于小根堆層序數(shù)的優(yōu)先級采樣方式減弱了這種現(xiàn)象的影響。基于小根堆層序數(shù)的優(yōu)先級采樣并不嚴格依賴損失值的完整排序。在小根堆中的數(shù)據(jù)并不像二叉排序樹那樣滿足嚴格的排序關(guān)系,堆中的層級間滿足如下偏序關(guān)系:
Li≤Lji (5) 式中:Li表是第i層的數(shù)據(jù)。依照此偏序關(guān)系構(gòu)建每層的采樣優(yōu)先級,既可以保證高損失的樣本具有較高的采樣優(yōu)先級,又不至于采樣被限制在某些異常高的loss值上。基于層序數(shù)的優(yōu)先級采樣具體實現(xiàn)方式為首先令pi=i,i=1,2,…,log2(n+1),其中:i為堆的層序數(shù);n為堆中節(jié)點的總個數(shù)。將序列p代入式(4)中獲得堆中各層的采樣概率。在選中抽樣層后,層內(nèi)采用隨機抽樣的方式進行采樣。本文方法的優(yōu)勢在于實現(xiàn)代價低,無須對序列進行排序,且能保證按優(yōu)先級進行采樣。此外,本文方法的采樣效率比較高,可以直接通過索引定位數(shù)據(jù),時間復(fù)雜度為O(1),相較于PES中通過SumTree的O(log2n)的時間復(fù)雜度有了較大的提升。 DPES Dueling DQN的網(wǎng)絡(luò)如圖2所示,其中包含三個全連接的隱藏層,每層設(shè)置300個節(jié)點,以ReLU作為激活函數(shù)。第4層采用Dueling的設(shè)計方式,分為Value和Advantage兩部分,輸出層即為Q值,由第四層中的兩部分相加而得。 圖2 DPES Dueling DQN核心網(wǎng)絡(luò)結(jié)構(gòu) DPES Dueling DQN的算法偽代碼如算法1所示。 算法1DPES Dueling DQN算法 Initialize Agent_Ps, Heap, Learn_point, Global_θ To every Agent_P: Repeat max_loop: while True: loadθfrom Global_θ take actionai, returnr,s′ replace the root element in heap with the new data if Counter_Memory>Memory_size: if Counter_Learn%Replace_point: updateθfromQevaltoQtarget end if do model_P learn updateθto global_θ end if ifs′∈Stargetors′∈Sdanger: end while end if 本文的環(huán)境借助OpenAI團隊構(gòu)筑的gym環(huán)境框架搭建而成,環(huán)境以某建筑其中一層平面構(gòu)建模擬環(huán)境,其可視化效果如圖3所示。 圖3 環(huán)境仿真 模擬環(huán)境由40×40的格點區(qū)域組成,仿真地圖區(qū)域主要包含房間、樓道、樓梯井三部分。為驗證算法處理復(fù)雜環(huán)境的能力,本文在實驗時除了普通障礙(即環(huán)境中的“wall”)外另添加了一種“危險區(qū)域”(即環(huán)境中的“danger”)。加入該場景后的環(huán)境如圖4所示。 圖4 發(fā)生險情的環(huán)境仿真 假定發(fā)生險情后,智能體可能會分布在地圖中的任意位置,要求強化學習模型可以為智能體規(guī)劃最短最安全的逃生路徑。智能體到達安全出口(圖中的exit區(qū)域)視為逃生路徑規(guī)劃成功。在地圖中間區(qū)域附近出現(xiàn)兩處危險點(圖中的danger區(qū)域),若智能體不慎步入其中,將隨即死亡,本回合路徑規(guī)劃失敗。另外,環(huán)境中原本的一處安全出口因為險情無法通過,也變?yōu)槲kU區(qū)域。 環(huán)境中的狀態(tài)由網(wǎng)格點的二維坐標表示,狀態(tài)空間為平面中智能體所有可能處于的位置。即去除墻體和樓梯井之外的所有網(wǎng)格點。 本文設(shè)定的動作空間為離散空間,包括5個動作,分別為原地不動、上、下、左、右,分別以整型數(shù)0、1、2、3、4表示。 強化學習主要依賴環(huán)境的回報優(yōu)化動作選擇策略以完成任務(wù),所以環(huán)境的回報對于任務(wù)的成功與否具有決定作用,本文基于先驗知識和實驗經(jīng)驗進行了下述的回報設(shè)定。 (1) 單步回報。因為環(huán)境中發(fā)生了險情,對于智能體來說,每多走一步,就會增加一分危險,因此設(shè)定rstep=-1。這樣的設(shè)定也會使得智能體會選擇多條可行路徑中最短的一條路徑。 (2) 越界、碰壁回報。如果智能體在墻體邊緣選擇了“撞墻”的動作,這是一步無意義的動作,因此應(yīng)當為此類動作設(shè)定一個負值回報rwall=-1。 (3) 險地回報。智能體踏入險地即死亡,回合結(jié)束,因此險地的回報應(yīng)該為全局最小值。同時為了保證智能體能通過險地之間的過道,險地的設(shè)定值不應(yīng)該太小,經(jīng)過多次實驗,最終設(shè)定rdanger=-50。 (4) 安全出口回報。安全出口處是路徑規(guī)劃任務(wù)的最終目標,因此應(yīng)給予全局最大的正值回報。安全出口的回報應(yīng)該能保證即使長路程的規(guī)劃路徑回合的總回報大于短路程的死亡回合的總回報,在本實驗中,設(shè)定其回報為rtarget=200。 綜上,智能體獲得的回報定義如式(6)所示。 (6) 對于模型的核心網(wǎng)絡(luò),設(shè)計的層數(shù)、節(jié)點越少,則網(wǎng)絡(luò)無法完成對復(fù)雜環(huán)境的全局收斂;設(shè)計的層數(shù)、節(jié)點過多,則可能會產(chǎn)生過擬合,且十分耗費計算資源。經(jīng)過多次實驗測試,最終設(shè)定網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,為3×300節(jié)點的全連接層,以ReLU作為激活函數(shù)。設(shè)定學習率為10-4,采用批量梯度下降的方式進行學習,設(shè)定batch_size為256,Qtarget每2 000步與Qeval同步參數(shù)。 設(shè)定記憶庫的規(guī)模memory_size為50 000,記憶庫中存儲數(shù)據(jù)到達10 000條時開始進行模型的學習。 軟件環(huán)境為Ubuntu18.04,內(nèi)存24 GB,顯卡為GTX1060,顯存6 GB,采用Pytorch的深度學習框架。 為了驗證本文方法,還同時進行與DQN、Dueling DQN、DPER Dueling DQN算法的對比實驗,表1對比DQN、Dueling DQN、DPER Dueling DQN、DPES Dueling DQN在各自在訓(xùn)練的不同階段的模型效果。 表1 測試效果對比表 表1中的完成率指標是加載當時的訓(xùn)練模型進行100次隨機初始起點的模擬逃生路徑規(guī)劃成功次數(shù)所占的比例。其中的回報值為這100次路徑規(guī)劃的回合回報的均值,為了避免智能體在環(huán)境中徘徊,設(shè)置單回合最大步數(shù)為200,超過此限制則認為路徑規(guī)劃任務(wù)失敗。 從表1的數(shù)據(jù)可以看出保證了采樣空間中的數(shù)據(jù)的高價值性、并通過優(yōu)先級進行數(shù)據(jù)采樣的PES策略的表現(xiàn)最佳,可以使訓(xùn)練產(chǎn)生的模型具有更好的全局可用性。 用三種算法分別訓(xùn)練200 000個回合,得到損失變化如圖5所示。 圖5 loss變化 可以看出,Dueling的結(jié)構(gòu)在較大規(guī)模復(fù)雜環(huán)境中有較好的表現(xiàn),體現(xiàn)在訓(xùn)練之初,通過代表狀態(tài)重要性的Value值更能確定準確的方向選擇,體現(xiàn)在loss圖中為在訓(xùn)練開始時可以更快地向著擬合模型,降低loss。而PER和PES策略能在處理訓(xùn)練后期尚未收斂的個別數(shù)據(jù)時發(fā)揮作用,PER策略可以提高這些個別數(shù)據(jù)的抽樣優(yōu)先級,而本文的PES策略在保證其優(yōu)先級的同時,又能確保這些數(shù)據(jù)能夠保持在記憶庫中不被替換出去,在loss圖中可以看出PER策略幾乎把loss降低了一個量級,而本文的PES策略又進一步降低了loss。而且本文方法得到的曲線更加平滑,這也印證了本文方法不會被個別異常數(shù)據(jù)所左右的觀點。結(jié)合表1的數(shù)據(jù)也可以看出本文提出的PES策略具有更好的全局收斂效果。 圖6所示為隨著訓(xùn)練進行,平均回合回報的變化趨勢,通過對比平均回合回報的變化趨勢也可以得到與上文同樣的結(jié)論。本文方法可以更快地完成收斂,Dueling的結(jié)構(gòu)可以更好地幫助智能體找尋前進方向,能盡快地完成收斂。PES的采樣方式則可以使模型盡快適應(yīng)某些尚未收斂的格點,更快地達到在全局任意位置都能安全逃生的路徑規(guī)劃效果。 圖6 平均回合回報 訓(xùn)練到20 000輪的參數(shù)進行測試效果如圖7所示,其中每個格點上的小三角形指示了智能體位于該位置時應(yīng)該選擇的動作方向??梢钥吹綄τ诘貓D上的絕大部分區(qū)域,智能體都能找到安全逃生路徑。 圖7 第20 000輪的路徑規(guī)劃效果 取第110 000輪的參數(shù)進行測試,效果如圖8所示,此時無論在地圖上的任意位置,智能體都能完成安全逃生的路徑規(guī)劃。 圖8 第110 000輪的路徑規(guī)劃效果 另外,本文還利用DPES Dueling DQN算法進行如圖9和圖10場景下的測試。圖9是在未發(fā)生險情的安全路徑規(guī)劃場景,可以看到在地圖中的任何位置,智能體都能按照指示方向到達安全出口,且所選路徑為最短路徑。圖10所示環(huán)境中,一處險情阻塞了主要通道,可以看到模型在進行路徑規(guī)劃時會選擇穿過其他房間到達安全出口。 圖9 無險情發(fā)生時路徑規(guī)劃效果 圖10 險情阻塞主干道路徑規(guī)劃效果 綜合上述的實驗可以看出,本文提出的PES策略可以在深度強化學習算法的訓(xùn)練過程中取得較好的加速表現(xiàn),記憶庫中樣本質(zhì)量的提高有助于模型更快、更穩(wěn)定地收斂。此外,結(jié)合Dueling DQN提出的DPES Dueling DQN算法應(yīng)用在路徑規(guī)劃場景中很好地完成了路徑規(guī)劃任務(wù),通過不同實驗場景的訓(xùn)練,本文算法的泛化性也得到了證明。 本文將深度強化學習應(yīng)用在路徑規(guī)劃領(lǐng)域,提出使用DPES Dueling DQN算法進行復(fù)雜環(huán)境下的路徑規(guī)劃。采用PES策略將欠擬合的樣本數(shù)據(jù)保留在記憶庫中,使記憶庫中的樣本對于模型的全局收斂而言是高收益的。采用分布式的方式既有利于收集全局樣本,也提高了模型收斂的速度及學習效率。又結(jié)合了在較大環(huán)境中表現(xiàn)更佳Dueling DQN算法進行最優(yōu)路徑規(guī)劃。最終通過實驗與DQN、Dueling DQN、DPER Dueling DQN進行對比,驗證了DPES Dueling DQN方法進行路徑規(guī)劃的高效性和泛化能力。2.4 模型核心網(wǎng)絡(luò)
2.5 DPES Dueling DQN算法步驟
3 強化學習環(huán)境搭建
3.1 狀態(tài)空間構(gòu)建
3.2 動作空間構(gòu)建
3.3 環(huán)境回報構(gòu)建
4 仿真實驗
4.1 實驗參數(shù)設(shè)置
4.2 實驗結(jié)果分析
5 結(jié) 語