劉 釗 周壯壯 張明陽 劉敬賢▲
(1.武漢理工大學航運學院 武漢 430063;2.武漢理工大學內(nèi)河航運技術湖北省重點實驗室 武漢 430063;3.武漢理工大學國家水運安全工程技術研究中心 武漢 430063;4.阿爾托大學工程學院機械工程系 芬蘭艾斯堡 20110)
船舶作為水路運輸?shù)闹黧w,是國家綜合立體交通網(wǎng)的重要構成要素,其智能化已然成為了水運發(fā)展的必然趨勢?!度蚝Q蠹夹g趨勢2030》《智能航運發(fā)展指導意見》《中國制造2025》《智能船舶發(fā)展行動計劃(2019—2021)》和《交通強國建設綱要》等重要文件已明確指出:智能船舶是未來重要科技創(chuàng)新的新領域,人工智能、現(xiàn)代信息等高科技技術應用于航運業(yè)也是未來發(fā)展的必然趨勢。自主避碰技術是船舶智能化發(fā)展面臨的關鍵科學問題[1],其研究受到各國學者的關注。
Lyu 等[2]通過將本船周圍劃分為4 個區(qū)域,并在每個區(qū)域設置不同的斥力勢場函數(shù),實現(xiàn)在多物標場景下及來船不協(xié)調(diào)行動時的安全避碰,但該方法航向變化波動較大,在部分場景下不滿足大角度避讓的要求。黃立文等[3]通過分析船舶會遇過程,結合船舶領域量化碰撞危險,并運用速度障礙法求解船舶在特定會遇態(tài)勢下的動態(tài)避碰操縱區(qū)間,但是該方法假定1 次避讓行動就能讓清所有船舶,沒有對整個避碰過程求解操縱區(qū)間。丁志國等[4]利用模糊理論評估船舶碰撞危險,結合《1972年國際海上避碰規(guī)則》(Convention on the International Regulations for Preventing Collisions at Sea 1972,COLREGs,以下簡稱《避碰規(guī)則》),對典型會遇場景進行仿真,實現(xiàn)在未知環(huán)境下2 船之間的安全避碰,但該方法未考慮多船避讓問題。Wang等[5]提出了1種基于目標船舶意圖推斷的分布式避碰決策模型,該方法考慮了船舶操縱特性及《避碰規(guī)則》要求,但在一些極端情況下會出現(xiàn)對目標船意圖的推斷混亂情況,并造成避碰決策延遲。劉冬冬等[6]使用模糊理論方法結合四元船舶領域量化船舶碰撞危險,并應用粒子群優(yōu)化算法以偏航距離、偏航時間為約束條件求解最短避碰路徑,實現(xiàn)了2船之間的快速避碰,但該方法得到的避碰路徑不符合船舶的操縱特性。Kim 等[7]使用遺傳算法,通過避碰效果評價、是否到達終點,以及最小化航程等指標來對船舶轉(zhuǎn)向角變量進行優(yōu)化,得到了對于靜態(tài)障礙物的有效避碰策略,然而該方法并不能做到實時避讓且未考慮船舶之間的避碰問題。Zhang 等[8]提出了適用于多船會遇場景下的分布式避碰決策方法,該方法在特定場景下目標船操縱行動不協(xié)調(diào)或未按照《避碰規(guī)則》進行避碰操縱時依然具有較好的可靠性。朱凱歌等[9]引入Coldwell 船舶領域計算動態(tài)避讓決策參數(shù),并基于決策參數(shù)設計船舶避碰流程,實現(xiàn)了2 船之間的安全避碰;Kang 等[10]通過構建目標船的船舶領域來評估本船的碰撞危險,并結合差分進化算法設計受障礙物約束的適應度函數(shù)來尋找避碰最優(yōu)路徑,但路徑的生成時間長,避碰效率低。
目前,深度學習在計算機視覺、語音識別、自然語言處理等諸多領域取得的突破性進展,極大地促進了人工智能的發(fā)展,深度神經(jīng)網(wǎng)絡極強的表征能力使得強化學習能夠應用到更加復雜的決策問題上。目前已經(jīng)有很多學者將深度Q 網(wǎng)絡(Deep Q-learning network,DQN)[11]、深度確定性策略梯度(deep deterministic policy gradient,DDPG)、近端策略優(yōu)化(proximal policy optimization,PPO)、SAC(soft actor-critic)等深度強化學習算法應用到船舶自主避碰中。Cheng 等[12]考慮外部環(huán)境干擾與船舶操縱性能,利用DQN算法實現(xiàn)對多個靜態(tài)障礙物的轉(zhuǎn)向與變速避讓,但是該方法未考慮船舶之間的避碰操縱;王程博等[13]依據(jù)馬爾可夫決策過程構建船舶避碰要素,利用深度強化學習算法進行訓練,實現(xiàn)船舶與靜態(tài)障礙物以及小角度交叉相遇局面下的安全避碰;周怡等[14]通過AIS 數(shù)據(jù)構建船舶的安全領域模型,并設計了基于避碰失敗區(qū)域重點學習的DDPG 算法,實現(xiàn)了航道內(nèi)2 船之間的避碰;Zhao等[15-16]依據(jù)《避碰規(guī)則》將本船周圍劃分為4 個區(qū)域來確定會遇局面,并結合船舶運動模型,利用PPO算法訓練得到在2 船和多船場景下的避碰策略,但這些避碰策略都是針對特定場景訓練得到的;Xie等[17]提出1 種基于異步優(yōu)勢演員-評論家算法和Q-learning算法的復合自適應避碰決策模型,該模型考慮了安全性與經(jīng)濟性,實現(xiàn)了多船避碰,但是該方法只針對1 種避碰場景進行訓練,且避讓過程認定目標船保向保速;周雙林等[18]依據(jù)《避碰規(guī)則》劃分讓路船與直航船,并設計各自的獎懲函數(shù),利用DQN 算法得到了不同會遇局面的避碰策略,但算法的訓練是針對特定場景的,不具有普適性;Shen等[19]通過在目標船上添加規(guī)則線,使本船行動符合《避碰規(guī)則》的要求,并利用船舶領域構建適用于船舶避碰過程的強化學習模型,經(jīng)過隨機場景的訓練得到了多船會遇場景下的避碰策略;Sawada 等[20]結合船舶領域構建目標障礙區(qū)并用來評估碰撞風險,利用連續(xù)動作空間下的PPO 算法在23 種多船會遇場景中進行訓練,得到了基本符合《避碰規(guī)則》的避碰模型,同時通過對比實驗得出了使用連續(xù)動作空間得到的避碰策略性能更高,但是該方法在避讓過程中航向穩(wěn)定性差,路徑不平滑,避碰效果不佳;Chun 等[21]利用最小會遇距離(distance to closest point of approach,DCPA)、最小會遇時間(time to closest point of approach,TCPA)和船舶領域構建船舶碰撞危險度模型,結合PPO 算法對特定避碰場景進行訓練并得到符合《避碰規(guī)則》的避碰策略,但是針對特定場景適用的模型很難推廣到復雜的會遇局面中。
綜上,已有研究中較好地解決了遵守《避碰規(guī)則》以及避讓靜態(tài)障礙物和單一目標船等問題,但在處理多船避碰時還存在避讓實時性差、決策動作震蕩嚴重、路徑不平滑、普遍假設目標船保向保速等問題,特別是利用深度強化學習算法得到的避碰模型只針對特定會遇場景有效,模型泛化能力較弱[21-23]。針對上述不足以及船舶避碰決策信息的高維性和動作的連續(xù)性等特點,結合《避碰規(guī)則》與良好船藝,利用雙延遲深度確定性策略梯度(twin delayed deep deterministic policy gradient,TD3)算法,提出1 種連續(xù)動作空間下的船舶自主實時避碰方法。該方法在隨機場景下利用神經(jīng)網(wǎng)絡對船舶避碰算法進行迭代訓練,提高模型的泛化能力,使其適用性更廣。
為確保船舶在航行過程中能夠安全有效的實時避讓具有碰撞危險的目標船舶,提出基于TD3 的船舶自主避碰方法,其流程框架見圖1。
圖1 船舶自主避碰框架Fig.1 Ship autonomous collision avoidance framework
首先,依據(jù)本船與目標船的實時航行信息,判斷2船之間是否存在碰撞危險;其次,確定船舶自主避碰問題的強化學習要素,根據(jù)本船實時觀測信息設計狀態(tài)空間,依據(jù)船舶操縱特性設計動作空間,結合非稀疏化思想,考慮船舶與環(huán)境的交互情況設計符合《避碰規(guī)則》與良好船藝的獎勵函數(shù);然后,在船舶隨機會遇場景下,結合強化學習要素,構成經(jīng)驗數(shù)組,利用Adam 優(yōu)化算法更新深度神經(jīng)網(wǎng)絡參數(shù),訓練得到船舶自主避碰網(wǎng)絡模型;最后,應用得到的避碰模型,實現(xiàn)2船會遇和多船會遇場景下的安全避碰。
強化學習以馬爾可夫決策過程(Markov decision process,MDP)作為基礎理論框架,是解決復雜序貫優(yōu)化決策問題的有效方法[24]。與其他機器學習算法相比,強化學習不需要事先給定標記過的訓練數(shù)據(jù),而是通過智能體(agent)與環(huán)境(environment)的不斷交互試錯來更新模型并習得策略。
船舶在航行中與環(huán)境發(fā)生交互得到連續(xù)避碰動作的過程可以視為序列決策過程,使用馬爾可夫決策過程可以對其建模,使用強化學習算法能夠?qū)ζ淝蠼狻H鐖D2 所示,船舶作為智能體是強化學習的學習者和決策者,環(huán)境代表與船舶相互作用的所有事物,在時刻t,船舶觀測得到環(huán)境的狀態(tài)st,依據(jù)此狀態(tài),船舶根據(jù)習得策略執(zhí)行動作at,此時,船舶根據(jù)航行環(huán)境轉(zhuǎn)移概率p進入下1 個狀態(tài)st+1,并獲得獎勵rt+1。通過在環(huán)境中不斷嘗試采樣,不斷更新船舶避碰策略,使其獲得最大累積獎勵Gt(見式(1)),從而學習到最優(yōu)避碰策略π*,見式(2)。
圖2 強化學習基本原理圖Fig.2 Reinforcement learning fundamentals diagram
式中:γ∈[0,1]為1個用于確定短期獎勵優(yōu)先級的折扣因子,對于距離當前時間步越遠的獎勵,其重要性越低,通過減小γ的值,即可降低遠期獎勵影響當前決策程度;E表示期望。
由式(2)可見:最優(yōu)避碰策略是指使累積獎勵Gt的期望最大化的策略,累積獎勵的期望一般以狀態(tài)值函數(shù)Vπ(s)和動作值函數(shù)Qπ(s,a)表示。Vπ(s)是對未來獎勵的預測,表示在狀態(tài)s下,執(zhí)行動作a會得到的未來獎勵期望值,見式(3);Qπ(s,a)主要用來評估船舶在當前狀態(tài)s下選擇動作a的好壞程度,見式(4)。
船舶避碰決策問題的強化學習基本要素主要為其在航行過程的狀態(tài),由1個狀態(tài)轉(zhuǎn)換到下1個狀態(tài)對應的動作及執(zhí)行動作后與環(huán)境交互所得到的獎勵。
判定船舶在航行過程中是否存在碰撞危險[2],首先設定以dc為半徑的碰撞危險監(jiān)測范圍圓,避碰模型會忽略監(jiān)測范圍以外的來船,然后設定船舶之間的安全距離ds,見圖3。碰撞危險監(jiān)測范圍半徑dc和安全距離ds可根據(jù)海況與會遇場景復雜程度進行適當調(diào)整,在寬闊水域,會遇場景簡單等條件下更大,較大的dc與ds意味著船舶會盡早采取更大幅度的避碰行動。
圖3 碰撞危險判斷示意圖Fig.3 Collision risk judgment diagram
當來船進入監(jiān)測范圍時,依據(jù)本船與目標船的和速度延長線是否穿越半徑為ds的圓來判斷是否具有碰撞危險。如圖3 所示,在t時刻,從本船位置坐標到半徑為ds的船舶安全距離圓繪制2條切線,βt定義為任1 條切線與相對位置矢量(即)之間的角度,見式(5)。
另外,當2船之間距離小于安全距離時,βt無法用式(5)計算。為此,在訓練時,為了能讓神經(jīng)網(wǎng)絡學到目標船不應進入本船的安全距離范圍內(nèi)這一策略,在訓練過程中當本船與目標船的距離小于安全距離時認定為存在碰撞危險,設置βt=π。但是在船舶避碰實際應用中,當本船與目標船的距離小于安全距離且本船已經(jīng)駛過DCPA點時,船舶間不存在碰撞危險,因此在避碰算法應用時設置βt=π/2。
圖3 中αt是相對位置矢量與相對速度矢量(即)之間的夾角。當αt<βt時,即表明與目標船存在碰撞危險,船舶應當采取避碰行動。具體來說,當船舶間距離大于安全距離時,若的延長線穿過半徑為ds的圓則表明存在碰撞危險。當本船與目標船的距離小于安全距離ds時,在算法訓練過程認為存在碰撞危險,并采取更大幅度的避碰行動。但在實際應用中,還需通過判斷本船是否已經(jīng)駛過DCPA點,即αt是否大于π 2 來確定是否存在碰撞危險,若大于π 2 則表明碰撞危險已經(jīng)消失。
式中:di為第i個區(qū)域內(nèi)的目標船距離;hi為第i個區(qū)域內(nèi)的目標船是否與本船存在碰撞危險。
式(6)所示的目標船狀態(tài)信息指明了目標船的相對位置以及2 船是否存在碰撞危險。但是,為了使避碰模型做出合理決策還需要2船的相對航向和相對速度信息,因此,將連續(xù)4個時刻的目標船狀態(tài)信息進行堆疊,構成自主避碰模型的可觀測目標船信息狀態(tài)空間,見式(7)。
另外目標船狀態(tài)信息中的2船距離信息在輸入到避碰算法時標準化到[-1,1],標準化方式見式(9)。
對距離信息進行標準化,一方面能夠使神經(jīng)網(wǎng)絡訓練速度加快,另一方面方便在避碰算法實際應用時可以根據(jù)航行條件與會遇場景復雜程度隨時調(diào)整碰撞危險監(jiān)測范圍圓半徑dc與安全距離ds的大小。
在船舶航行過程中遇到有碰撞危險的來船時,按照船員習慣做法通常采取改變航向的方式而不是改變航速大小以避免發(fā)生碰撞,并且頻繁改變航速大小容易對主機造成損害。為保證船舶自主避碰算法給出的決策動作,具有良好的可操縱性,選擇航向改變量作為動作空間,即at=Δψ。由于采用的TD3算法適用于連續(xù)動作空間,因此將本船避讓操作所采取的航向改變量設計為:Δψ∈[-ψmax,ψmax] ,左轉(zhuǎn)為負,右轉(zhuǎn)為正,ψmax為單次決策可執(zhí)行的最大轉(zhuǎn)向角,不同船舶可根據(jù)自身操縱性進行設置。
避讓船舶會依據(jù)可觀測的狀態(tài)信息做出避碰決策,當本船監(jiān)測范圍內(nèi)存在具有碰撞危險的船舶時進行轉(zhuǎn)向避讓,直至駛過讓清后繼續(xù)朝目標點航行。
船舶自主避碰算法的收斂性依賴于合理的獎勵函數(shù)設置,是船舶能夠?qū)W習到安全有效的避碰策略的依據(jù)。結合非稀疏獎勵思想設計獎勵函數(shù),使本船在無碰撞危險時朝向目標點航行,當本船與來船存在碰撞危險時采取符合《避碰規(guī)則》要求與良好船藝的避碰行動,進行安全有效的避讓,直至駛過讓清。
1)駛向目標點獎勵。當本船碰撞危險監(jiān)測范圍內(nèi)不存在需要避讓的船舶時,首要任務是成功到達目標點。為應對稀疏獎勵問題,采用基于勢能的塑形獎勵,以本船到達目標點為虹吸狀態(tài),當接近目標點時給予獎勵,遠離時給予懲罰,并且在到達目標點時給予1個較大的獎勵,獎勵函數(shù)見式(10)。
2)航向保持獎勵。為了使本船在無碰撞危險時能夠快速平滑的到達目標點,不發(fā)生偏航,以及存在碰撞危險時在避讓完成后能夠快速恢復航向,設計了航向保持獎勵函數(shù)。當本船偏離航向時,對其進行懲罰,特別是目標點的相對方位角絕對值超過半個羅經(jīng)點(π 32)時,持續(xù)得到值為rcourse的懲罰。航向保持獎勵函數(shù)見式(11)。
3)碰撞危險獎勵。當本船在航行中依據(jù)狀態(tài)信息判定與來船存在碰撞危險時,本船應采取避讓行動,保持與目標船的距離始終大于安全距離ds。為此設置為當目標船進入碰撞危險監(jiān)測范圍圓后,判斷2 船之間是否存在碰撞危險,若存在碰撞危險給予懲罰,若本船與目標船發(fā)生碰撞,則獲得1個較大的懲罰,獎勵函數(shù)見式(12)。
4)規(guī)則量化獎勵。當船舶間存在碰撞危險時,《避碰規(guī)則》明確要求了讓路船與直航船應當采取的行動。由于本文主要研究開闊水域避碰過程中的讓路行動,因此簡要分析《避碰規(guī)則》第13~16 條中被要求采取行動船舶的避碰策略(見圖4),船舶的當前航向用實線箭頭表示,虛線箭頭則表示讓路船為避讓來船可能采取的轉(zhuǎn)向方向。在對遇局面下,構成碰撞危險的2 船各應向右轉(zhuǎn)向,各從他船的左舷駛過;在交叉相遇局面下,《避碰規(guī)則》明確指出如果當時環(huán)境條件許可,讓路船應避免橫越他船的前方;在追越局面下,《避碰規(guī)則》沒有明確讓路船的具體行動,但是結合良好船藝的要求,當與被追越船航向會聚時,追越船應適當?shù)馗淖兒较?,從被追越船的船艉駛過,當船舶間沒有發(fā)生航向會聚時,可以根據(jù)本船的計劃航線采取行動,如果被追越船在計劃航線左側(cè)時,追越船右轉(zhuǎn)進行避讓,反之則左轉(zhuǎn)進行避讓。
圖4 船舶會遇避碰策略Fig.4 Collision avoidance strategy under the situation of ship encounter
通過分析3 種會遇局面下《避碰規(guī)則》的要求,結合駕駛員在避碰時的習慣做法,在開闊水域?qū)τ龊徒徊婢置嫦逻M行右轉(zhuǎn)避讓來避免形成緊迫局面是有效的,而在追越局面下追越船要依靠2 船的航向是否會聚來采取左轉(zhuǎn)或右轉(zhuǎn)的避讓行動。考慮到設置獎勵函數(shù)時難以對《避碰規(guī)則》詳細量化,因此將右轉(zhuǎn)避讓策略作為神經(jīng)網(wǎng)絡的學習目標,此設置可以保證在開闊水域滿足對遇、交叉相遇和右轉(zhuǎn)追越的場景。在左轉(zhuǎn)追越場景中,通過取目標船和目標點相對于本船方位角的相反數(shù),輸出避讓動作的負值,實現(xiàn)船舶的左轉(zhuǎn)避讓。
因此,對構成碰撞危險的目標船進行右轉(zhuǎn)避讓時給予獎勵,相反則給予懲罰,同時設置規(guī)則量化獎勵值遠小于碰撞危險獎勵值,保證本船以安全避讓來船為最終目的,獎勵函數(shù)見式(13)。
式中:λrule為調(diào)整獎勵大小的系數(shù);ψmax為單次避讓決策的最大轉(zhuǎn)向角度;訓練時設置λrule=2。
綜上所述,為使船舶安全有效的避讓目標船并到達目標點,設置了4 個獎勵函數(shù),其中Rgoal與Rcourse使本船快速平滑的向目標點航行,Rdanger和Rrule使本船周圍存在其他船舶并有碰撞危險時能夠快速有效的采取符合《避碰規(guī)則》的安全避讓行動。由于該避碰模型適用于多船避碰,需要考慮在碰撞危險監(jiān)測范圍內(nèi)避讓多個目標船獲得的獎勵,因此總的獎勵函數(shù)設置見式(14)。
式中:n為處于本船碰撞危險監(jiān)測范圍內(nèi)的目標船數(shù)量;Rdangers為第s艘目標船產(chǎn)生的碰撞危險獎勵;Rrules為第s艘目標船產(chǎn)生的規(guī)則量化獎勵。
基于策略的深度強化學習算法可以分為隨機性策略和確定性策略。隨機性策略通過概率分布來表示,即在狀態(tài)st下以一定的概率選擇動作at;而確定性策略根據(jù)狀態(tài)st直接選擇動作at,這是1 個確定性過程,即中間沒有出現(xiàn)概率,不需要進行選擇。因此,確定性策略深度強化學習算法相比于隨機性策略,可以在低采樣數(shù)據(jù)下提高計算效率。
TD3算法是1種無模型(model-free)確定性策略的深度強化學習算法,適用于具有連續(xù)動作空間的決策任務。TD3主要針對DDPG算法對Q值的過高估計等問題進行改進,使其訓練更穩(wěn)定,性能更強。目前,TD3 已經(jīng)成為支持高維空間連續(xù)型控制任務的高性能算法,相比DQN、DDPG、PPO、SAC等算法擁有更好的決策效果[25-26]。
因此,為了保障船舶避碰決策的高效性,針對船舶避碰決策狀態(tài)空間的高維性和動作的連續(xù)性等特點,選取TD3 算法構建基于深度強化學習的船舶避碰決策模型。
TD3 算法使用了Actor-Critic 結構,因此避碰模型中包括策略網(wǎng)絡與價值網(wǎng)絡,策略網(wǎng)絡依據(jù)狀態(tài)信息輸出避碰動作,價值網(wǎng)絡輸出Q值來評判動作的好壞程度,算法同時為策略網(wǎng)絡和價值網(wǎng)絡分別搭建了各自的目標網(wǎng)絡,克服訓練的不穩(wěn)定性。
結合船舶自主避碰模型的狀態(tài)空間st=[]。其中:為連續(xù)4個時刻觀測到的目標船信息,設計了含有4個隱藏層的策略網(wǎng)絡,網(wǎng)絡結構見圖5。使用前2 層LSTM 網(wǎng)絡處理連續(xù)4 個時刻的目標船信息,其中第1 層為一維卷積LSTM 網(wǎng)絡,卷積運算包含128 個通道,卷積核大小為2,步長為1;第2 層LSTM網(wǎng)絡包含128個神經(jīng)元;經(jīng)過LSTM網(wǎng)絡處理后與目標點信息合并輸入到2 層的全連接網(wǎng)絡,每個全連接層包含256 個神經(jīng)元,并采用ReLU非線性激活函數(shù)。輸出層是包含1個神經(jīng)元的全連接層,使用雙曲正切函數(shù)作為激活函數(shù),將輸出標準化到[-1,1]之間,與ψmax相乘后輸出動作at。價值網(wǎng)絡采用類似的網(wǎng)絡結構,與策略網(wǎng)絡的主要區(qū)別在于第1個全連接層的輸入要增加當前時刻的動作at,并且輸出層不使用任何激活函數(shù),直接得到Q值。價值網(wǎng)絡和策略網(wǎng)絡均采用Adam優(yōu)化算法訓練。
圖5 船舶自主避碰策略網(wǎng)絡結構Fig.5 Actor network structure of ship autonomous collision avoidance
為了緩解價值網(wǎng)絡對Q值的過高估計,TD3 算法同時訓練2 個完全相同的價值網(wǎng)絡,每次計算目標Q值時總是選擇其中較小的值,降低高估誤差。同時,為了降低目標Q值計算的方差,并緩解確定性策略對動作值函數(shù)局部“窄峰”的過擬合傾向,在船舶觀測狀態(tài)sj+1下目標策略輸出的基礎上添加1個隨機高斯噪聲η?,這種方式被稱為目標策略平滑。綜上,目標Q值與價值網(wǎng)絡的損失函數(shù)見式(15)~(16),其中損失函數(shù)使用了平滑平均絕對(huber)誤差,見式(17)。
式中:yj為第j個訓練樣本的目標Q值;lQ為價值網(wǎng)絡的損失函數(shù);rj第j個訓練樣本當前時刻的獎勵值;sj為第j個訓練樣本當前時刻的狀態(tài)信息;sj+1為第j個訓練樣本下1個時刻的狀態(tài)信息;aj為第j個訓練樣本當前時刻船舶采取的避碰動作;c為策略平滑噪聲的截斷邊界值;θi為第i個價值網(wǎng)絡的參數(shù);θ′i與?′分別為第i個目標價值網(wǎng)絡參數(shù)和目標策略網(wǎng)絡參數(shù)。
此外,為了減少目標值計算的方差對策略學習的負面影響,算法降低了策略網(wǎng)絡參數(shù)?與目標網(wǎng)絡參數(shù)?′和θ′i的更新頻率,以保證價值網(wǎng)絡經(jīng)過充分學習降低方差之后再影響策略網(wǎng)絡和目標網(wǎng)絡,即每更新m次價值網(wǎng)絡再更新1 次策略網(wǎng)絡,梯度??J默認來自價值網(wǎng)絡中的Qθ1,見式(18),并采用軟更新方式更新目標網(wǎng)絡,見式(19)。
式中:ω為系數(shù),用來控制目標網(wǎng)絡參數(shù)的更新速度。
船舶自主避碰策略的學習過程是TD3算法中深度神經(jīng)網(wǎng)絡的收斂過程,其中神經(jīng)網(wǎng)絡的輸入為本船在航行過程中觀測到的實時狀態(tài)信息,策略網(wǎng)絡依據(jù)價值網(wǎng)絡對策略好壞的評判來更新網(wǎng)絡參數(shù),價值網(wǎng)絡通過最小化誤差損失函數(shù)來更新網(wǎng)絡參數(shù)。另外TD3 算法使用了經(jīng)驗回放技術去除樣本間的相關性和依賴性,同時通過隨機場景對模型進行訓練以增強泛化能力,船舶自主避碰算法流程見圖6。
圖6 船舶自主避碰算法訓練流程Fig.6 Training process of ship autonomous collision avoidance algorithm
為了驗證避碰算法的效果,首先介紹船舶避碰訓練環(huán)境搭建與模型參數(shù)設置;然后將訓練好的船舶避碰模型應用于常見的2 船會遇場景中,分析船舶的避碰效果;最后船舶在多船會遇場景下進行避碰實驗,展現(xiàn)模型的良好性能。
基于深度強化學習環(huán)境OpenAI Gym,在Windows 10 平臺上搭建船舶自主避碰決策仿真實驗環(huán)境,硬件環(huán)境和軟件環(huán)境具體信息見表1。
表1 實驗環(huán)境信息Tab.1 Experimental environment conditions
針對船舶自主避碰的強化學習任務,設計了1個12 n mile×12 n mile的正方形作為航行訓練區(qū)域,設置本船起點(0,0),目標點(10,10),航速12 n mile/h,dc=4 n mile,ds=4/3 n mile,本船膨化圓半徑τ=0.25 n mile,依據(jù)船舶操縱特性,設置最大轉(zhuǎn)向角ψmax=5°,決策時間間隔為15 s[2]。為了讓訓練得到的船舶避碰算法普遍適用于各種會遇場景,在訓練區(qū)域中隨機生成x艘船舶(x∈[1,7]),并且目標船的位置、航向和航速均隨機設置,模擬船舶遇到各種會遇場景,并對避碰失敗場景著重訓練。當本船到達目標點或者發(fā)生碰撞則對場景重置并開始下1回合訓練。
為了降低模型的訓練難度,實驗中采用跳幀(frame skipping)操作,即相鄰2 次決策之間的f幀都重復上1 次的動作,綜合權衡避碰性能與訓練難度,確定f=2。同時,為了在訓練時提高模型的探索能力,采用輸出動作加入高斯噪聲η~N(0,σ)的方法來實現(xiàn),并在正式訓練之前讓本船在環(huán)境中進行隨機探索。為了使避碰算法能夠快速平穩(wěn)的收斂,在訓練時設置批量采樣大小和更新次數(shù)隨著迭代次數(shù)增加而增大。TD3算法的相關訓練參數(shù)設置見表2。
表2 船舶避碰算法訓練參數(shù)Tab.2 Training parameters of ship collision avoidance algorithm
基于上述實驗環(huán)境對船舶自主避碰算法進行了150 萬次迭代訓練,結果見圖7,累積獎勵隨著算法不斷迭代訓練慢慢增大,在迭代122 萬次后趨于平穩(wěn),此時累積獎勵值大小在91.867上下波動,波動范圍在[-16.293,18.169]之間,收斂效果較好。
圖7 累積獎勵變化曲線Fig.7 Total reward curve
為驗證提出的船舶自主避碰算法能按照《避碰規(guī)則》要求和良好船藝在2 船會遇局面下安全有效的避讓目標船,分別對《避碰規(guī)則》中定義的3 種會遇局面進行仿真驗證,并與改進人工勢場[2](artificial potential field,APF)避碰算法進行比較,均設置本船(own ship,OS)起點坐標(0,0),目標點(goal)坐標(10,10),船速12 n mile/h,航向45°,每次最大轉(zhuǎn)向角度ψmax=5°,船舶間安全距離ds=2 n mile。特別的,改進APF 算法中的參數(shù)設置為Ros=0.5 n mile,Rts=0.5 n mile,dsafe=1 n mile,這樣設置可以保證2種避碰算法的安全距離都為2 n mile,其他參數(shù)均采用文獻[2]的原始設置。
1)追越局面。追越局面下設置目標船(target ship,TS)起始位置(3.2,3.4),航速5 n mile/h,航向45°,在2種避碰算法中,均設置本船的碰撞危險監(jiān)測范圍半徑dc=4 n mile。由2船相對位置可知,目標船位于本船船首方向,且在本船與目標點連線的左側(cè),舷角-1.736°,2船航向不發(fā)生會聚,結合《避碰規(guī)則》要求與良好船藝,本船進行右轉(zhuǎn)避讓。2種避碰算法仿真實驗的船舶航行軌跡見圖8,本船避碰過程中航向變化量見圖9,圖10繪制了2船距離隨時間的變化曲線。
圖8 追越局面船舶軌跡圖Fig.8 Ship trajectory diagram of overtaking situation
圖9 追越局面本船航向變化曲線Fig.9 Course change curve of own ship in overtaking situation
圖10 追越局面船舶間距離變化曲線Fig.10 Curve of distance between ships in overtaking situation
由追越局面仿真結果可知,在t=360 s,距離目標船3.969 n mile時,本船監(jiān)測到與來船存在碰撞危險,并按照《避碰規(guī)則》要求和船員良好船藝迅速右轉(zhuǎn)40°避讓來船;隨后為避免過快恢復航向而與目標船再次構成碰撞危險,本船開始緩慢向左轉(zhuǎn)向,并在t=2 700 s,航向恢復到朝向目標點;在t=3 735 s,2 船之間的距離達到最小值2.022 n mile,此時本船已經(jīng)從目標船的艉部駛過;在t=4 680 s本船達到目標點。
在改進APF 避碰算法中,本船在t=345 s 發(fā)現(xiàn)目標船,并迅速右轉(zhuǎn)15°,之后本船航向在56°~61°之間震蕩,從t=795 s開始本船航向在57°~62°之間震蕩,在120 s之后,航向又在60°~65°之間震蕩;在t=1 935 s,本船開始恢復航向;在t=2 760 s,本船與目標船達到最近距離1.861 n mile,目標船進入船舶安全距離圓內(nèi),因此本船迅速右轉(zhuǎn)16°使目標船駛出安全距離范圍,最后恢復航向并到達目標點。
同時,為了驗證訓練得到的避碰模型對于左轉(zhuǎn)場景下的適用性,設置目標船起始位置(3.6,3.2),航速4 n mile/h,航向45°,本船dc=4 n mile。此時目標船位于本船船首方向,舷角3.366°,在本船與目標點連線的右側(cè),2 船航向未發(fā)生會聚。圖11 分別為追越局面左轉(zhuǎn)場景下2 種避碰算法的船舶軌跡圖、船舶間距離隨時間變化圖和本船航向變化圖。
圖11 追越局面左轉(zhuǎn)場景仿真結果Fig.11 Simulation results of left turn scenario in overtaking situation
在船舶避碰過程中,由于改進APF 避碰算法的輸入并不是全局狀態(tài)信息,只在與目標船構成碰撞危險時才會輸入來船的狀態(tài)信息并形成斥力,因此本船的航向改變量小且震蕩嚴重,而且由于目標點引力與目標船斥力的動態(tài)變化,導致在引力大于斥力時容易使目標船進入本船的安全距離范圍。與改進APF 算法相比,基于TD3 的船舶避碰算法在追越局面下航向改變幅度大,變化快速平穩(wěn),震蕩較小,避碰路徑更加平滑,并且在避讓過程中2 船之間的距離始終大于安全距離2 n mile。
2)對遇局面。對遇局面下設置目標船(TS)初始位置(8.5,8.5),航速10 n mile/h,航向225°,2種避碰算法的本船dc=6 n mile。依據(jù)《避碰規(guī)則》,構成對遇局面的2 船應各自右轉(zhuǎn)從對方船的左舷駛過,為了達到共同行動的目的,目標船也使用本文提出的基于TD3的避碰算法。2種避碰算法的仿真結果見圖12~15:圖12 為船舶不同時刻的航行軌跡圖,圖13為本船的航向變化信息,圖14為目標船的航向變化信息,圖15為2船間距離隨時間的變化曲線。
圖12 對遇局面船舶軌跡圖Fig.12 Ship trajectory diagram of head-on situation
圖13 對遇局面本船航向變化曲線Fig.13 Course change curve of own ship in head-on situation
圖14 對遇局面目標船航向變化曲線Fig.14 Course change curve of target ship in head-on situation
圖15 對遇局面船舶間距離變化曲線Fig.15 Curve of distance between ships in head-on situation
由仿真結果可知,在t=990 s,本船與目標船之間的距離達到5.971 n mile,形成對遇局面,依據(jù)本文提出的避碰算法,本船迅速右轉(zhuǎn)38.5°以避讓來船,此時目標船也向右轉(zhuǎn)向37°進行避讓;隨后,本船開始緩慢恢復航向,并在t= 1 395 s航向恢復至朝向目標點,135 s之后目標船航向恢復;在t= 2 160 s本船與目標船左舷對左舷以最小距離2.345 n mile 安全通過;在t= 4 365 s 本船到達目標點,整個避讓過程中本船采取的行動安全有效,2船之間距離始終大于2 n mile。
由改進APF 避碰算法的船舶避碰仿真結果可知,本船在t=990 s發(fā)現(xiàn)來船并右轉(zhuǎn)10.8°,之后本船航向又減少至49°附近;從t=1 275 s開始,本船航向邊震蕩邊增大,并在585 s后達到最大值80°,隨后航向開始恢復;在t=2 055 s,本船與目標船的距離達到最小值1.871 n mile,105 s 后本船航向突然增加30°,產(chǎn)生1個較大的波動,波動過后本船朝向目標點航行,并于t=4 245 s到達目標點。
由對比結果可知,改進APF 避碰算法在對遇局面下比本文算法提前到達目標點,但是船舶間不能滿足設定的安全距離,且航向變化幅度小,由于在判定目標船無危險后斥力消失而導致本船過快恢復航向又構成危險的情況,使本船航向震蕩較多。相反,本文提出的避碰算法在對遇局面下航向變化幅度大且平穩(wěn),并滿足安全距離要求。
3)交叉相遇局面。交叉相遇局面下設置目標船(TS)初始位置(9,0),航速12 n mile/h,航向315°,本船dc=6 n mile。2種避碰算法仿真的船舶航行軌跡見圖16,圖17為本船航向隨時間的變化曲線,2船距離的變化曲線見圖18。
圖16 交叉相遇局面船舶軌跡圖Fig.16 Ship trajectory diagram of crossing situation
圖17 交叉相遇局面本船航向變化曲線Fig.17 Course change curve of own ship in crossing situation
圖18 交叉相遇局面船舶間距離變化曲線Fig.18 Curve of distance between ships in crossing situation
由TD3 避碰算法的仿真結果可知,本船在t=720 s 發(fā)現(xiàn)與來船形成交叉相遇局面,2 船相距5.817 n mile,本船作為讓路船在《避碰規(guī)則》的約束下迅速向右轉(zhuǎn)向55°,在t=990 s,本船開始緩慢恢復航向,于t= 1 620 s,2 船間距離達到最小值2.237 n mile;在t=1 980 s,本船航向恢復到朝向目標點,之后本船從目標船的艉部駛過,實現(xiàn)對來船的安全避讓;在t=4 590 s,本船到達目標點,整個避讓過程2船間的距離始終大于安全距離2 n mile。
由改進APF 避碰算法的仿真結果可知,本船在t=645 s發(fā)現(xiàn)來船,此時2船相距5.959 n mile,30 s后本船以相對較慢的速度向右轉(zhuǎn)向58°,轉(zhuǎn)向過程中震蕩嚴重;在t= 1 560 s,2 船之間距離達到最小值1.999 n mile,隨后本船開始恢復航向;在t=4 500 s,本船到達目標點。
在交叉相遇局面下,改進APF 避碰算法比追越和對遇局面效果好,能夠大幅度的避讓來船,但是航向變化速度相比本文算法慢,且震蕩情況依然存在。本文避碰算法避讓行動迅速、改向幅度大,路徑相對更加平滑。
綜上,通過在船舶追越、對遇和交叉相遇局面下的避碰仿真實驗結果可以得出,提出的避碰算法能夠使本船在與目標船舶構成碰撞危險時做出安全有效的避碰決策。由于本文避碰算法的輸入為全局的狀態(tài)信息,即使與目標船不存在碰撞危險時也會關注來船的實時動態(tài),因此相比于改進APF算法,本文算法的航向變化快速平穩(wěn),轉(zhuǎn)向幅度大,避碰路徑更加平滑,并且與目標船的距離始終大于安全距離。
在船舶實際航行過程中,會遇到與多艘船舶構成碰撞危險的局面,相比2船避讓,多船避讓局面更為復雜。為驗證提出的避碰算法在復雜會遇場景下仍具有良好性能,與改進APF 避碰算法進一步進行多船避讓仿真對比實驗。
1)多船避讓仿真實驗。在避讓多船的仿真實驗中,本船的初始航行參數(shù)不變。在本文算法中設置本船碰撞危險監(jiān)測圓半徑dc=4 n mile,安全距離ds=4/3 n mile。在改進APF 避碰算法中依據(jù)文獻[2],將本船的碰撞危險檢測距離設置為6 n mile,Ros=0.5 n mile,Rts=1/3 n mile,dsafe=0.5 n mile,這樣設置可以保證2 種避碰算法的安全距離都為4 3 n mile,其他設置均來自文獻[2],另外2 種算法中本船每次轉(zhuǎn)向的最大幅度均設置為5°。目標船的初始設置見表3,為了驗證2 種算法的可靠性,將引入目標船的不協(xié)調(diào)行動,具體為:在t=1 035 s,目標船左轉(zhuǎn)30°干擾本船的行動。
表3 多船會遇場景目標船初始設置Tab.3 Initial setting of target ship in multi-ship encounter scenario
多船會遇仿真實驗中船舶航行軌跡見圖19,圖20 為航行過程中本船航向的變化曲線,2 種算法下本船與目標船距離隨時間的變化曲線見圖21~22。
圖19 多船會遇場景船舶軌跡圖Fig.19 Ship trajectory diagram of multi-ships encounter scenario
圖20 多船會遇場景本船航向變化曲線Fig.20 Course change curve of own ship in multi-ships encounter scenario
圖21 TD3避碰算法下本船與目標船距離變化曲線Fig.21 Curve of distance between own ship and target ships under TD3 collision avoidance algorithm
在圖19(a)中,最初本船朝向目標點航行,在t=675 s,本船發(fā)現(xiàn)與目標船1相距3.816 n mile,形成交叉相遇局面,本船依據(jù)《避碰規(guī)則》迅速向右轉(zhuǎn)向51°,避免橫越目標船1 的前方;在t=990 s,本船發(fā)現(xiàn)目標船2 且相距3.925 n mile,經(jīng)過計算,2 船之間無碰撞危險,本船未做出反應。
圖19(b)中,在t=1 035 s,目標船1 與目標船2突然左轉(zhuǎn)30°,這導致本船與2艘目標船之間重新構成碰撞危險,本船迅速右轉(zhuǎn)33°同時避讓2船;在t=1 215 s,本船與目標船1達到最近距離1.355 n mile,駛過讓清目標船1。
圖19(c)中,從t=1 755 s開始,本船逐漸恢復航向;在t = 2 015 s,本船與目標船2 達到最近距離1.637 n mile,駛過讓清目標船2,180 s后本船航向恢復至朝向目標點;在t=2 340 s本船發(fā)現(xiàn)目標船3,距離達到3.906 n mile,由于目標船3 未按照《避碰規(guī)則》進行右轉(zhuǎn)避讓,本船迅速右轉(zhuǎn)44°以避免緊迫局面。
在圖19(d)中,本船與目標船舶3 在t=3 420 s達到最小距離1.376 mile;180 s 后,目標船4 與本船距離達到3.953 n mile 且未進行避讓,本船右轉(zhuǎn)35°以避免緊迫局面發(fā)生;隨后本船開始恢復航向,并在t=5 670 s到達目標點。
由改進APF 避碰算法的仿真結果可知,本船在與目標船1 相距5.939 n mile 時,開始緩慢右轉(zhuǎn)進行避讓,并在t=645 s航向發(fā)生震蕩,此時本船與目標船2的距離達到5.973 n mile,但并不存在碰撞危險;在t=1 035 s,由于目標船1 和目標船2 的不協(xié)調(diào)行動,本船繼續(xù)右轉(zhuǎn)40°避讓2船,隨后開始恢復航向,并在t= 1 245 s 與目標船1 達到最小距離1.209 n mile,570 s后與目標船2達到最小距離1.045 n mile;在航向恢復過程中,又與目標船3構成碰撞危險,航向緩慢變化至64°,并在t=3 045 s 與目標船3 達到最小距離1.131 n mile;在t=3 060 s,本船迅速右轉(zhuǎn)39°避讓目標船4,1 305 s 后與目標船4 達到最小距離1.186 n mile;最后在t=4 905 s本船到達目標點。
由圖20可知:改進APF算法在多船會遇場景下依然有航向震蕩的情況,這是由于APF 算法不能從全局去認識避碰過程,只能依靠實時的碰撞危險判斷來指導航向變化。由于引力與斥力的不協(xié)調(diào)動態(tài)變化,導致在某些會遇局面下避碰行動緩慢,甚至使來船不能保持在安全距離之外。相比于改進APF避碰算法,使用本文提出的基于TD3的避碰算法,在本船避讓過程中航向變化快速平穩(wěn),波動較小,避碰路徑光滑。由圖21可知:在整個避讓過程中,本船與各目標船之間的距離始終保持在安全距離4 3 n mile之外,表明提出的避碰算法在多船會遇場景下能夠安全有效的指導船舶進行避讓。
2)避碰成功率對比實驗。為了進一步驗證本文提出的避碰算法的性能,在多船會遇場景下,對船舶避碰成功率和平均避碰路徑長度這2個指標與改進APF避碰算法進行比較。2種避碰算法的初始設置與多船避讓仿真實驗一致。
在實驗中,首先生成1 張12 n mile×12 n mile 大小的實驗地圖,并在地圖中隨機添加多艘目標船,目標船初始位置的x、y坐標均從0~12 隨機選取,為了讓實驗更真實,每生成1艘目標船,就判斷與本船的距離是否大于5 n mile,若不是則刪除該目標船信息并重新生成。目標船的航向通過生成各自的目標點而得到,但是目標船不會因為到達目標點而停船,目標點位置的x,y坐標從0~10 隨機選取,目的是讓目標船的航向更多的指向本船與本船目標點之間區(qū)域。目標船的航速大小在3~17 n mile/h 之間隨機生成。另外,設置本船起點坐標(0,0),目標點坐標(10,10),船速12 n mile/h,航向45°。在生成完1張實驗地圖之后,本文避碰算法與改進APF 算法在實驗地圖中自動進行避碰,設定本船與目標船的距離小于0.25 n mile或碰撞路徑長度超過30 n mile為失敗,避碰結束后保留是否成功與路徑長度數(shù)據(jù)。通過此方式進行1 000 次避碰實驗,即生成1 000 張實驗地圖分別對2種算法進行驗證。
為了提高實驗結果的可信度,在2~4,5~7,8~10 艘目標船的情況下分別進行3 次上述實驗過程,總共進行了9 000張實驗地圖的避碰規(guī)劃,取指標平均值并記錄,實驗結果見表4。
表4 對比實驗結果數(shù)據(jù)表Tab.4 Comparison test results data table
由表4 可見:提出的TD3 避碰算法的船舶避碰成功率高,特別是避碰2~4 艘目標船時成功率達到了99.233%,即使在8~10 艘目標船的情況下,依舊有94.166%的成功率。而改進APF 避碰算法在3 種實驗場景中均比本文算法成功率低,特別是在目標船增加到4 艘以上時,改進APF 算法的避碰性能下降嚴重。在避碰路徑對比上,本文算法的平均路徑長度要比改進APF 算法更長,這是由于本文避碰算法的輸入為全局的狀態(tài)信息,即使在本船沒有碰撞危險時,也會關注目標船的動態(tài),避免過快恢復航向又造成碰撞危險的產(chǎn)生,所以TD3 避碰算法的路徑更加安全可靠,路徑也會更長。
針對船舶自主避碰問題,基于TD3 算法提出了1種《避碰規(guī)則》約束下的、符合良好船藝的、能自主學習適應環(huán)境特點的船舶自主避碰方法。
1)提出的基于TD3 的避碰方法采用碰撞危險監(jiān)測范圍內(nèi)的全局狀態(tài)信息作為輸入,保證輸入神經(jīng)網(wǎng)絡中航行信息的統(tǒng)一性和完整性,并使用連續(xù)動作空間供算法選取避碰決策動作,具有避碰決策航向變化快、幅度大與路徑平滑的特點。
2)避碰算法通過隨機場景訓練并融合了LSTM網(wǎng)絡提取航行信息特征,提高了模型的泛化能力,適用于對遇、追越、交叉相遇以及多船會遇場景。
3)考慮《避碰規(guī)則》與良好船藝設計獎勵函數(shù),實現(xiàn)了船舶安全有效的避讓目標船。避碰算法在復雜會遇場景下有較高的避碰成功率。
4)在訓練中通過跳幀、隨機探索、批量大小和迭代更新次數(shù)動態(tài)增大等方式加快神經(jīng)網(wǎng)絡的訓練速度,提升算法穩(wěn)定收斂的速度。
但是,在提出的避碰算法中船舶是作為單智能體進行避碰決策的,暫未考慮船舶間實時交互的協(xié)同避讓,今后可針對多船協(xié)同避讓開展進一步研究;《避碰規(guī)則》的適用場景為開闊水域,針對特定的受限水域應對船舶《避碰規(guī)則》進行改進和修正,才可以保障模型的適用性;在后續(xù)研究中增加船舶轉(zhuǎn)向耦合變速的策略以及會遇局面的自動識別方法可以進一步提升模型的性能。