周雙林,楊 星,b,劉克中,b,熊 勇,b,吳曉烈,劉炯炯,王偉強(qiáng)
(武漢理工大學(xué) a.航運學(xué)院; b.內(nèi)河航運技術(shù)湖北省重點實驗室, 武漢 430063)
隨著海上交通密度的增加和船舶航速的提升,人為制定船舶航行避碰決策正面臨巨大的壓力。[1]調(diào)查顯示,80%的碰撞事故是由船員因素造成的,其中船員未遵守《國際海上避碰規(guī)則》是船舶之間發(fā)生碰撞的主要因素。[2]自主避碰技術(shù)作為保障船舶在海上安全航行的關(guān)鍵技術(shù),其研究受到各國學(xué)者的關(guān)注。ABDALLAH等[3]采用非線性優(yōu)化方法解決兩船避碰問題,并將COLREGS(International Regulations for Preventing Collisions at Sea,COLREGs)作為優(yōu)化算法的約束條件,通過仿真試驗驗證該避碰算法的有效性;倪生科等[4]基于多種群的遺傳算法進(jìn)行船舶避碰輔助決策研究,通過合理設(shè)置算法的終止條件對遺產(chǎn)算法的適應(yīng)度函數(shù)進(jìn)行評價,從而為船舶避碰提供有效的輔助決策;ZHANG等[5]和張金奮等[6]提出一種基于分布式框架的實時多船決策支持系統(tǒng),建立讓路船和直航船的行動方式和幅度等避碰模型,并將其應(yīng)用于多船避碰;李麗娜等[7-8]結(jié)合避碰規(guī)則和良好船藝,提出一種船舶擬人智能避碰決策方法,通過實時處理避碰參數(shù)計算模型和目標(biāo)交會特征模型等避碰模型,實現(xiàn)對多個危險目標(biāo)船舶的避讓;SZLAPCZYNSKI等[9]采用船舶域評估船舶的碰撞危險,并采用光柵海圖優(yōu)化算法中的搜索策略得到能適用于開闊水域和受限水域的多船避碰方法;沈海青等[10]基于深度競爭Q學(xué)習(xí)和A*算法提出一種無人船智能避碰方法,將COLREGs轉(zhuǎn)化成動態(tài)航行限制線,使避碰決策符合COLREGs;于家根等[11-12]分別基于擬態(tài)物理學(xué)優(yōu)化算法和社會情感優(yōu)化算法對船舶特定會遇場景下的轉(zhuǎn)向避碰決策問題進(jìn)行研究。
在船舶自主避碰相關(guān)研究中,仍存在對COLREGs考慮不夠充分和構(gòu)建復(fù)雜環(huán)境模型時避碰算法計算量較大的問題。當(dāng)前人工智能技術(shù)飛速發(fā)展,具有模型簡單、魯棒性強(qiáng)和能自主學(xué)習(xí)適應(yīng)環(huán)境等特點,其深度強(qiáng)化學(xué)習(xí)技術(shù)廣泛應(yīng)用于智能避碰和路徑規(guī)劃研究中。本文針對當(dāng)前自動避碰算法存在的不足,結(jié)合船舶航行特性和COLREGs基于深度強(qiáng)化學(xué)習(xí)中的深度Q網(wǎng)絡(luò)(Deep Q Network,DQN)算法,提出一種針對多種會遇場景的船舶智能避碰方法,利用深度神經(jīng)網(wǎng)絡(luò)對智能體進(jìn)行訓(xùn)練,并通過數(shù)值仿真對兩船會遇和多船會遇場景進(jìn)行測試,驗證該方法的有效性。
強(qiáng)化學(xué)習(xí)算法理論框架基于馬爾可夫決策過程(Markov Decision Process, MDP),其本質(zhì)是agent與環(huán)境不斷交互實現(xiàn)學(xué)習(xí)適應(yīng)環(huán)境的過程,通過不斷更新agent行為策略,使其獲得最大累計獎勵Rt。[13]
(1)
式(1)中:γ∈[0,1]為折扣系數(shù),可調(diào)節(jié)未來獎勵對當(dāng)前動作的影響;rk為k時刻獲得的瞬時獎勵。
累計回報獎勵期望即動作值函數(shù)Qπ(s,a)和狀態(tài)值函數(shù)Vπ(s),通常作為評價策略π的標(biāo)準(zhǔn),其中:s為agent所處狀態(tài);a為agent采取的動作;Qπ(s,a)為agent依據(jù)策略π在處于狀態(tài)s時采取動作a獲得的期望獎勵值;Vπ(s)為agent處于s時采取策略π獲得的期望獎勵值。
Qπ(s,a)=Eπ{Rt|st=s,at=a}
(2)
Vπ(s)=Eπ{Rt|st=s}
(3)
強(qiáng)化學(xué)習(xí)的目標(biāo)是得到最優(yōu)動作值函數(shù)Q*(s,a)和最優(yōu)狀態(tài)值函數(shù)V*(s),有
(4)
(5)
將式(2)代入式(4),可得Q*(s,a)的迭代形式為
(6)
式(6)中:s′和a′為下一時刻的狀態(tài)和動作,Q*(s,a)滿足Bellman方程。由此可求得最優(yōu)策略函數(shù)π*(s)為
(7)
利用深度神經(jīng)網(wǎng)絡(luò)對Q*(s,a)進(jìn)行估計,其代價函數(shù)為
L(θi)=E{(yi-Q(s,a;θi))2}
(8)
式(8)中:θ為深度神經(jīng)網(wǎng)絡(luò)中的參數(shù);i為訓(xùn)練回合數(shù)。
神經(jīng)網(wǎng)絡(luò)優(yōu)化目標(biāo)為
(9)
深度強(qiáng)化學(xué)習(xí)采用記憶回放技術(shù)解決樣本數(shù)據(jù)關(guān)聯(lián)性問題,加速估計Q*(s,a)的訓(xùn)練過程。
船舶會遇場景復(fù)雜,避碰行動受操縱性和COLREGS的約束,因此選擇具有良好魯棒性的DQN算法構(gòu)建船舶智能避碰模型,該模型的核心工作是合理設(shè)計MDP中的各個要素。根據(jù)船舶間實時獲取的航行信息,從全局的角度建立包含會遇環(huán)境信息的狀態(tài)集St,保證輸入神經(jīng)網(wǎng)絡(luò)中船舶航行信息的完整性。船舶避碰行為at主要考慮轉(zhuǎn)向,保證避碰決策的可執(zhí)行性。獎勵函數(shù)rt是船舶DQN避碰模型中最核心的部分,是船舶智能避碰決策制定的依據(jù)。當(dāng)不存在碰撞危險時,船舶在海上通常按規(guī)定航向航行;當(dāng)存在碰撞危險時,船舶采取的避碰決策既需考慮船舶間避碰過程的安全有效性,又要考慮船舶在避碰過程中是否遵守COLREGs。因此,應(yīng)綜合考慮航向跟隨、船舶碰撞和規(guī)則符合等因素,對船舶智能避碰模型DQN獎勵函數(shù)進(jìn)行設(shè)計。基于DQN的船舶智能避碰模型框架見圖1。
船舶航行時衡量本船與周圍船舶危險度的直接
且重要的標(biāo)準(zhǔn)是兩船在最近會遇點時的距離和方位。[14]船舶避碰行動通常開始于6 n mile,為提高避碰算法處理本船與周圍船舶會遇信息的可計算性,以半徑rencounter=6 n mile作為本船對周圍環(huán)境感知并記錄的范圍。
1) 為減小計算量,縮短訓(xùn)練時間,以12°為1個單位,將本船可航行范圍分成30個區(qū)域,每個區(qū)域的邊界弧長L=2 327.29 m,小于大多數(shù)船舶航行的安全距離,保證在開闊水域中每個區(qū)域內(nèi)最多有1艘目標(biāo)船。記錄每個區(qū)域中目標(biāo)船到本船的距離d0,沒有目標(biāo)船的區(qū)域記錄di=rencounter=6,并以距離值作為強(qiáng)化學(xué)習(xí)的狀態(tài)因數(shù)之一,有
xt=[dt,1,dt,2,…,dt,30]
(10)
2) 為量化兩船會遇的緊迫程度,引入最近會遇時間(Time to Closest Point of Approaching,tCPA)和最近會遇距離(Distance of Closest Point of Approaching,dCPA)作為指標(biāo),該狀態(tài)因數(shù)為
Tt=[TCPA1,Tt,CPA2,…,Tt,CPA30],
dt=[dt,CPA1,dt,CPA2,…,dt,CPA30]
(11)
將本船相對目標(biāo)船的方位作為狀態(tài)因數(shù)之一,有
θt=[θt,1,θt,2,…,θt,30]
(12)
綜上,強(qiáng)化學(xué)習(xí)的狀態(tài)集為
(13)
頻繁改變船舶航速易對主機(jī)造成損害,且花費的時間較長,為保證算法輸出的避碰決策具有良好的可操作性,系統(tǒng)動作集選擇航向變化量,本船進(jìn)行避碰行為采取的轉(zhuǎn)向角度設(shè)計為:A={-Δψ,0,Δψ},左轉(zhuǎn)為負(fù),右轉(zhuǎn)為正,Δψ>0,其中Δψ可根據(jù)實際船舶操作特性進(jìn)行合理設(shè)置。
船舶智能避碰深度強(qiáng)化學(xué)習(xí)算法中的獎勵函數(shù)是船舶智能避碰決策制定的依據(jù)。當(dāng)船舶不存在碰撞危險時,本船應(yīng)按預(yù)先規(guī)定航向航行;當(dāng)船舶存在碰撞危險時,本船應(yīng)采取合理的避碰決策,其執(zhí)行的避碰行動既要考慮船舶間避碰過程的安全有效性,又要考慮船舶在避碰過程中是否遵守COLREGS。
2.3.1航向保持獎勵函數(shù)
當(dāng)本船周圍不存在需要避讓的目標(biāo)船時,應(yīng)按照預(yù)先規(guī)定的航向航行。觀察本船每一時刻的航向,并將其與規(guī)定的航向相比較,計算其偏差。當(dāng)偏差值大于可接受的最大誤差時,認(rèn)為此時的狀態(tài)處于偏離航向狀態(tài),需對其進(jìn)行懲罰。因此,設(shè)計航向保持獎勵函數(shù)為
(14)
式(14)中:Δφe為此時本船航向與規(guī)定航向之間的偏差;Δφe,max為可接受的最大航向偏差值;-rcf為航向偏差的懲罰值。
2.3.2避碰獎勵函數(shù)
當(dāng)存在碰撞危險時,本船應(yīng)采取避碰決策,始終與周圍船舶保持安全的物理距離,對船舶間距離小于安全會遇距離(Safe Distance of Approach,SDA)的狀態(tài)給予懲罰。[14]因此,設(shè)計避碰獎勵函數(shù)為
(15)
式(15)中:Pt,0為本船在t時刻的位置;Pt,Ti為目標(biāo)船i在t時刻的位置;SDA為兩船間的安全會遇距離;-rcollision為發(fā)生碰撞的懲罰值。
2.3.3遵守規(guī)則獎勵函數(shù)
船舶避碰過程除保證避讓的安全有效性外,還要考慮避讓過程是否遵守COLREGs。通過對該規(guī)則進(jìn)行解讀分析,量化部分要求,設(shè)計針對避碰決策是否符合規(guī)則的獎勵函數(shù)。分析每一時刻輸入到強(qiáng)化學(xué)習(xí)系統(tǒng)中的狀態(tài)信息,通過對局面和階段進(jìn)行判斷,確定船舶責(zé)任和會遇態(tài)勢,分別針對不同情況逐一設(shè)計對應(yīng)的獎勵函數(shù),在訓(xùn)練時視不同情況對獎勵函數(shù)進(jìn)行調(diào)用。
2.3.3.1 直航船
COLREGs第17條規(guī)定:兩船中的一艘船應(yīng)給另一艘船讓路時,另一艘船應(yīng)保持航向和航速。[15]當(dāng)本船判定為直航船時,應(yīng)對其采取變向的行為進(jìn)行懲罰,設(shè)計直航船獎勵函數(shù)為
(16)
式(16)中:Δφ為本船作為直航船時航向改變量;Δφmax為直航船可接受的最大航向改變量;-rcourse為直航船采取變向行為的懲罰值。
2.3.3.2 讓路船
COLREGs第16條規(guī)定:須給他船讓路的船舶,應(yīng)盡可能及早地采取大幅度的行動,寬裕地讓清他船。[15]因此,當(dāng)檢測到存在碰撞危險且判定本船為讓路船時,本船應(yīng)及早地采取避碰行動,對遲緩的動作進(jìn)行懲罰。設(shè)計讓路船及早行動獎勵函數(shù)為
(17)
式(17)中:φtdetect為檢測到危險時刻的本船航向;φtdetect-1為檢測到危險上一時刻的航向;Δt為檢測到發(fā)生危險的時刻與采取動作的時刻之間的差值;-rsoon為對應(yīng)的懲罰值。
根據(jù)COLREGs要求,讓路船應(yīng)該寬裕地讓清他船。因此,定義本船最近會遇距離的預(yù)警范圍dpre和發(fā)生碰撞的物理距離dcol見圖2。[16]當(dāng)船舶會遇時,計算船舶間的最近會遇距離dCPA,通過判斷dCPA是否小于各閾值來判斷船舶間是否存在碰撞危險,進(jìn)而判斷避讓行動是否寬裕。預(yù)警范圍dpre和物理距離dcol與船舶尺度、船舶運動特性和船舶操縱性等相關(guān),各船舶可根據(jù)自身屬性設(shè)定不同的dCPA閾值dpre和dcol,設(shè)計寬裕獎勵函數(shù)Rwide為
(18)
綜上,讓路船獎勵函數(shù)設(shè)計為
Rgive-way=Rsoon+Rwide
(19)
考慮本船同時與多船形成復(fù)雜會遇場景的情況,判斷本船為讓路船或直航船的依據(jù)見式(20)。若相對其中至少1艘目標(biāo)船本船判斷為讓路船,則認(rèn)為本船需采取避讓行動,即本船為讓路船;若相對所有目標(biāo)船本船判斷為直航船,則本船為直航船。
(20)
式(20)中:fi為本船相對第i條目標(biāo)船的船舶責(zé)任;f為本船同時應(yīng)對多船會遇時的船舶責(zé)任。
2.3.3.3 對遇局面
根據(jù)COLREGs第十四條的要求,當(dāng)2艘機(jī)動船在相反的或接近相反的航向上相遇致有構(gòu)成碰撞危險時,應(yīng)各向右轉(zhuǎn)向從他船的左舷駛過。[16]兩船處于對遇局面時,本船應(yīng)采取轉(zhuǎn)向動作,保證兩船在最近會遇點時本船處于他船左舷位置,即本船相對他船的相對方位角θcpa為180°~360°,對該狀態(tài)給予獎勵。因此,設(shè)計對遇局面下的獎勵函數(shù)如式(21)所示,其函數(shù)示意見圖3。
(21)
式(21)中:rhead-on為對遇局面獎勵值系數(shù)。
圖2 船舶周圍預(yù)警范圍示意圖3 對遇局面獎勵函數(shù)
2.3.3.4 交叉讓路局面
根據(jù)COLREGs第15條的要求,當(dāng)2艘機(jī)動船交叉相遇,并構(gòu)成碰撞危險時,有他船在本船右舷的船舶應(yīng)給他船讓路,且應(yīng)避免橫越他船的前方。[16]在交叉讓路局面下,本船應(yīng)從他船艉部經(jīng)過,因此定義相對方位閾值θε=[90°,270°],通過判斷在最近會遇點時本船相對他船的相對方位θcpa是否屬于θε來判斷本船是否橫越他船的前方,設(shè)計交叉讓路局面獎勵函數(shù)Rcross為
(22)
式(22)中:rcross為交叉讓路局面獎勵值系數(shù)。通過對局面和階段進(jìn)行判斷確定本船的責(zé)任和會遇態(tài)勢,訓(xùn)練時視不同情況對獎勵函數(shù)進(jìn)行調(diào)用。處于各局面與責(zé)任下本船調(diào)用獎勵函數(shù)具體情況為:對遇局面Rhead-on+Rgive-way;交叉讓路局面Rcross+Rgive-way;追越局面Rgive-way;交叉直航局面Rstand-on;被追越局面Rstand-on。
船舶避碰深度強(qiáng)化學(xué)習(xí)過程是DQN算法中神經(jīng)網(wǎng)絡(luò)收斂的過程,將本船的航行狀態(tài)集作為神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù),初始給定一個避讓策略求出值函數(shù),并利用值函數(shù)更新避碰策略,如此循環(huán)即可訓(xùn)練出收斂的最優(yōu)避碰策略。完整算法步驟如下:
Input:rt={Rgive-way,Rstand-on,Rhead-on,Rcross} %輸入船舶可調(diào)用獎勵函數(shù)集
Input:at%輸入動作集1. Initialize replay memoryDto capacityN
2. Initialize action-value function Q with random weights
3. for episode = 1;Mdo
4. Initialize sequences1={x1} and preprocessed sequencedφ1=
φ(s1)
5. fort=1,Tdo
6. With probability ∈ select a random actionat
8. Execute actionatin emulator and observe rewardrtand imagex(t+1)
9. Setst+1=st,at,xt+1and preprocessφt+1=φ(st+1)
10. Store transition (φt,at,rt,φt+1) inD
11. Sample random minibatch of transitions
(φj,aj,rj,φj+1) fromD
13. Perform a gradient descent step on (yj-Q(φj,aj;θ))2
14. end for
15. end for
基于TensorFlow深度學(xué)習(xí)框架編程實現(xiàn)提出的避碰算法。訓(xùn)練開始時設(shè)置1艘用于訓(xùn)練的本船agent,并設(shè)置其初始位置、航速、航向、dpre(1.5 n mile)和dcol(0.5 n mile)等參數(shù)。[14]根據(jù)訓(xùn)練場景的要求增加一定數(shù)量長寬與agent相同的目標(biāo)船,針對不同會遇場景設(shè)置目標(biāo)船的初始位置、航向和航速等參數(shù),目標(biāo)船航行時具備自主航行能力,用以模擬多種會遇場景的情形。
設(shè)置DQN算法的相關(guān)參數(shù)如下:記憶回放池的大小為2 000;批量數(shù)據(jù)集的大小為500;最大訓(xùn)練回合為10 000;學(xué)習(xí)率γ=0.99;獎勵折扣系數(shù)ε為0.9;設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為[120,128,128,3],即1個輸入層、2個隱藏層和1個輸出層,輸入層包含120個節(jié)點,輸入為船舶智能避碰深度強(qiáng)化學(xué)習(xí)算法中的狀態(tài)集數(shù)據(jù);每個隱藏層都有128個節(jié)點,隱藏層節(jié)點的激活函數(shù)選擇ReLU非線性激活函數(shù);輸出為動作集中對應(yīng)3個動作的動作值;層與層之間的節(jié)點全連接;采用Adam優(yōu)化算法進(jìn)行訓(xùn)練,得到基于深度強(qiáng)化學(xué)習(xí)的船舶智能避碰模型。
為驗證提出的避碰算法在兩船會遇局面下能使船舶在COLREGs的要求下有效避讓來船,分別對不同會遇局面進(jìn)行仿真驗證。
3.1.1對遇局面
兩船的初始參數(shù)設(shè)置見表1,仿真的船舶航行軌跡和兩船距離隨時間的變化曲線分別見圖4和圖5。由圖4和圖5可知,本船按照COLREGs的要求向右轉(zhuǎn)向?qū)崿F(xiàn)與目標(biāo)船左對左安全通過,并在駛過讓清后恢復(fù)原航向,整個避碰過程安全有效。
表1 對遇局面的船舶初始參數(shù)設(shè)置
圖4 對遇局面中兩船的航行軌跡圖5 對遇局面中兩船距離隨時間變化曲線
3.1.2交叉相遇局面
兩船的初始參數(shù)設(shè)置見表2,仿真的船舶航行軌跡和兩船距離隨時間的變化曲線分別見圖6和圖7。由圖6和圖7可知:本船按照COLREGs要求向右轉(zhuǎn)向,并從目標(biāo)船的艉部駛過,實現(xiàn)對目標(biāo)船的避讓。
表2 交叉相遇局面的船舶初始參數(shù)設(shè)置
圖6 交叉相遇局面中兩船的航行軌跡圖7 兩船距離隨時間變化曲線
3.1.3追越局面
兩船的初始參數(shù)設(shè)置見表3,仿真的船舶航行軌跡和兩船距離隨時間的變化曲線分別見圖8和圖9。由圖8和圖9可知:本船追越他船局面中本船按照COLREGs在目標(biāo)船的右舷作為讓路船從目標(biāo)船的艉部通過,被追越目標(biāo)船作為直航船保持原來的航行狀態(tài)繼續(xù)航行。
作為船舶避碰研究中的重要內(nèi)容之一,多船避碰中各船面臨的會遇場景比兩船會遇局面更復(fù)雜。為驗證提出的避碰算法可使本船在應(yīng)對復(fù)雜會遇場景時具備自主避碰能力,進(jìn)一步進(jìn)行多船避碰仿真試驗。
表3 交叉相遇局面的船舶初始參數(shù)設(shè)置
圖8 追越局面中兩船的航行軌跡 圖9 兩船距離隨時間的變化曲線
3.2.1多船會遇初始參數(shù)設(shè)置
以3艘船舶會遇場景為例進(jìn)行多船避碰測試,船舶初始參數(shù)設(shè)置見表4。
表4 多船會遇場景船舶初始參數(shù)設(shè)置
3.2.2多船避碰仿真驗證結(jié)果分析
多船會遇仿真試驗中的單次訓(xùn)練回合累計獎勵函數(shù)值的變化曲線和船舶航行軌跡分別見圖10和圖11。由圖10可知:隨著訓(xùn)練回合數(shù)的增加,DQN算法中的累計獎勵函數(shù)值逐漸增大,算法在不斷地學(xué)習(xí)。通過足夠次數(shù)的訓(xùn)練學(xué)習(xí)后,可得到符合COLREGs的深度強(qiáng)化學(xué)習(xí)多船避碰模型。由圖11可知:本船一開始與目標(biāo)船1形成碰撞危險,因此本船采取向右轉(zhuǎn)向?qū)δ繕?biāo)船1進(jìn)行避讓,在轉(zhuǎn)向過程中為避免與目標(biāo)船2形成新的危險,本船進(jìn)行左轉(zhuǎn)向,實現(xiàn)對目標(biāo)船2的避讓并恢復(fù)航向,最終形成的多船避讓過程如圖11所示。
多船會遇場景中各船舶間距離隨時間變化曲線見圖12,其中OS-TS1、OS-TS2和TS1-TS2分為本船與目標(biāo)船1、本船與目標(biāo)船2、目標(biāo)船1與目標(biāo)船2之間的距離隨時間的變化曲線。由圖12可知:各船舶間的距離始終保持在安全會遇距離之外。
圖10 單次訓(xùn)練回合累計獎勵函數(shù)值的變化曲線圖11 多船會遇場景中的船舶航行軌跡
圖12 多船會遇場景中各船舶間距離隨時間變化曲線
針對船舶自主避碰問題,在對COLREGs充分理解的基礎(chǔ)上,基于深度強(qiáng)化學(xué)習(xí)技術(shù)能自主學(xué)習(xí)適應(yīng)環(huán)境的特點,提出一種COLREGs約束下的船舶DQN避碰算法,通過分析船舶避碰影響因素,設(shè)計船舶智能避碰DQN模型。將本船視為智能體,根據(jù)船舶間實時獲取的航行信息設(shè)計準(zhǔn)確描述船舶避讓過程的狀態(tài)集和動作集,保證輸入神經(jīng)網(wǎng)絡(luò)中船舶航行信息的完整性和可計算性;結(jié)合船舶避讓決策制定中對安全性和遵守COLREGs的要求,設(shè)計考慮航向跟隨、船舶碰撞和規(guī)則符合等要素的獎勵函數(shù);利用深度神經(jīng)網(wǎng)絡(luò)對智能體進(jìn)行訓(xùn)練,并采用Adam優(yōu)化算法提高訓(xùn)練速度。通過多種會遇場景的數(shù)值仿真試驗驗證了該算法的有效性。目前,針對兩船通過溝通繞開規(guī)則進(jìn)行協(xié)同避讓的情況暫未考慮,今后可就平衡嚴(yán)格遵守COLREGs與船舶協(xié)商避讓開展進(jìn)一步的研究,同時通過增加會遇船舶數(shù)量和會遇場景復(fù)雜度來優(yōu)化算法。