陳海濤,龔廣偉,張 姣,趙海濤,熊 俊,魏急波,詹德川
1.國防科技大學(xué) 電子科學(xué)學(xué)院,長沙 410073
2.南京大學(xué) 人工智能學(xué)院,南京 210046
無線通信系統(tǒng)的信道開放性使其極易受到外界環(huán)境的惡意干擾,傳統(tǒng)的干擾規(guī)避技術(shù)主要通過配置網(wǎng)絡(luò)中的時、頻、空等資源來實現(xiàn)干擾規(guī)避,包括跳頻[1]、擴(kuò)頻[2]、傳輸速率自適應(yīng)(rate adaptive,RA)[3-4]、波束成形(beamforming)[5-6]等。然而,當(dāng)無線環(huán)境中干擾規(guī)律未知且動態(tài)變化時,這些規(guī)避策略往往難以準(zhǔn)確識別干擾信號進(jìn)行可靠干擾規(guī)避。
近年來,隨著人工智能技術(shù)的快速發(fā)展,基于強化學(xué)習(xí)的智能干擾規(guī)避方法受到了業(yè)界的廣泛研究。文獻(xiàn)[7]針對跳頻系統(tǒng),利用強化學(xué)習(xí)技術(shù),提出了一種基于Q 學(xué)習(xí)的認(rèn)知跳頻算法,在極大程度上降低了與干擾頻率“碰撞”的可能性。文獻(xiàn)[8]在DQN(deep Qlearning)算法架構(gòu)下引入經(jīng)驗回放和基于爬山策略(policy hill-climbing,PHC)的動態(tài)ε機(jī)制,提出動態(tài)ε-DQN 智能通信抗干擾決策方法,該方法具有決策速度快,通信平均成功率高等特點。文獻(xiàn)[9]設(shè)計了一種將信干噪比-平均意見得分(SINR-MOS)作為獎勵函數(shù)的方法,首先通過強化學(xué)習(xí)獲得最優(yōu)的信道切換策略,然后通過應(yīng)用Q 學(xué)習(xí)算法給出了兩種具體的干擾規(guī)避方法,兩種方法在點對點通信場景下具有較低的漏警概率和虛警概率。文獻(xiàn)[10]提出一種基于深度強化學(xué)習(xí)的認(rèn)知干擾規(guī)避方案,該方案在異構(gòu)寬帶頻譜部分可觀測的條件下表現(xiàn)出較強的抗干擾性能。但是,在這些基于強化學(xué)習(xí)的智能抗干擾方案中,為了達(dá)到規(guī)避干擾的目的,智能體需要與環(huán)境進(jìn)行不斷交互獲得學(xué)習(xí)經(jīng)驗來優(yōu)化干擾規(guī)避策略。而目前大量的研究都是基于訓(xùn)練生成的數(shù)據(jù)樣本作為智能體的輸入,數(shù)據(jù)樣本并不是來自于真實的網(wǎng)絡(luò)場景,缺乏真實性和說服力。因此,通過構(gòu)建模擬的網(wǎng)絡(luò)場景以獲取數(shù)據(jù)樣本作為智能體的輸入成為了一種可替代的方案。NS3 作為當(dāng)前最流行的網(wǎng)絡(luò)仿真器之一[11],提供了豐富的網(wǎng)絡(luò)模型,網(wǎng)絡(luò)協(xié)議以及各種用于網(wǎng)絡(luò)模擬的應(yīng)用程序接口(application programming interface,API),非常適合構(gòu)建各種復(fù)雜的網(wǎng)絡(luò)場景。此外,現(xiàn)有的研究強化學(xué)習(xí)算法的工具包主要包括OpenAI gym[12]、DeepMind Lab[13]、RL-Glue[14]、Project Malmo[15]。其中OpenAI gym 因其工具包簡單易懂,能夠兼容TensorFlow、Theano、Keras 等大多數(shù)學(xué)習(xí)框架下編寫的算法而受到學(xué)者們的廣泛青睞。此外,OpenAI gym 無需對智能體的結(jié)構(gòu)做任何假設(shè),對所有強化學(xué)習(xí)任務(wù)都提供了接口,具有較強的可擴(kuò)展性和可開發(fā)性。
為了有效研究通信網(wǎng)絡(luò)的智能化功能實現(xiàn),驗證和比較強化學(xué)習(xí)算法在不同網(wǎng)絡(luò)場景下的性能,需要構(gòu)建NS3 網(wǎng)絡(luò)仿真器到gym 的通用接口。Piotr 等人[16]提出的NS3-gym 框架為解決這一問題提供了很好的基礎(chǔ)。NS3-gym 是一款聯(lián)合NS3 和OpenAI gym 開發(fā)的用于在通信網(wǎng)絡(luò)中進(jìn)行強化學(xué)習(xí)算法研究的開源軟件框架。該框架提供了NS3 和OpenAI gym 之間進(jìn)行信息交互的接口,NS3中模擬的網(wǎng)絡(luò)場景產(chǎn)生的狀態(tài)數(shù)據(jù)作為智能體的輸入,智能體學(xué)習(xí)得到的干擾規(guī)避策略作為輸出,極大程度地模擬了真實網(wǎng)絡(luò)場景下智能體與環(huán)境之間的交互過程。
本文提出了一種基于NS3-gym 框架的智能干擾規(guī)避系統(tǒng)。針對不同的干擾場景,智能體利用強化學(xué)習(xí)算法與環(huán)境進(jìn)行不斷交互來學(xué)習(xí)得到最優(yōu)的干擾規(guī)避策略,從而達(dá)到可靠通信的目的。本文在Ubuntu20.04 系統(tǒng)中完成了智能干擾規(guī)避系統(tǒng)的仿真實現(xiàn),基于該系統(tǒng)分別對比分析了兩種強化學(xué)習(xí)算法在不同干擾場景下的抗干擾性能,驗證了所提系統(tǒng)架構(gòu)的有效性,并為進(jìn)一步在通信網(wǎng)絡(luò)中研究智能抗干擾算法提供了有效的仿真平臺與技術(shù)支撐。
如圖1 所示,NS3-gym 框架主要包括以下兩部分:NS3 網(wǎng)絡(luò)仿真器和gym 智能學(xué)習(xí)引擎。前者用于模擬真實的網(wǎng)絡(luò)場景,后者則提供強化學(xué)習(xí)算法框架并統(tǒng)一標(biāo)準(zhǔn)化界面。此框架可以實現(xiàn)NS3與gym的無縫銜接,在進(jìn)行網(wǎng)絡(luò)仿真的同時能夠與智能體進(jìn)行實時交互。下面將具體介紹該框架的結(jié)構(gòu)組成。
圖1 NS3-gym框架的體系結(jié)構(gòu)Fig.1 Architecture of NS3-gym framework
NS3 的基本模型如圖2 所示,在NS3 模擬的虛擬網(wǎng)絡(luò)中,網(wǎng)絡(luò)拓?fù)渲械墓?jié)點和信道被抽象成了各種C++類,節(jié)點和信道的連接操作被抽象成不同C++對象之間的關(guān)聯(lián)。通過這種抽象的概念,NS3能夠模擬出各種類型的網(wǎng)絡(luò)拓?fù)洹?/p>
圖2 NS3基本模型Fig.2 Basic model of NS3
其中節(jié)點(node)類是連接到網(wǎng)絡(luò)的基本實體,同時也是應(yīng)用程序(application)、協(xié)議棧(protocol stack)、網(wǎng)絡(luò)設(shè)備(net device)的容器。應(yīng)用程序是生成數(shù)據(jù)包(packet(s))流的用戶程序,協(xié)議棧主要包括網(wǎng)絡(luò)層面和傳輸層面的協(xié)議,網(wǎng)絡(luò)設(shè)備作為基本通信子網(wǎng)的實體,主要功能是管理節(jié)點和連接信道對象。網(wǎng)絡(luò)中信道的傳輸方式主要包括點對點、CSMA 和無線傳輸,在NS3中分別對應(yīng)著不同的C++類。另外,NS3為用戶提供了各種用于網(wǎng)絡(luò)模擬的應(yīng)用程序接口(API),在模擬腳本中用戶可以調(diào)用這些API來構(gòu)建自己的網(wǎng)絡(luò)場景。
在NS3-gym框架中,NS3構(gòu)建的模擬網(wǎng)絡(luò)場景將作為與智能體交互的“環(huán)境”,一個模擬場景包括具體的網(wǎng)絡(luò)模型以及模擬條件的改變。利用NS3 提供的通信組件與信道模型搭建出一個復(fù)雜的網(wǎng)絡(luò)模型,并通過調(diào)度適當(dāng)?shù)氖录ɡ玳_始/停止數(shù)據(jù)發(fā)送)來觸發(fā)模擬過程中某些參數(shù)或者條件的改變。
OpenAI gym是目前研究和開發(fā)強化學(xué)習(xí)算法的主流工具箱,它提供了一個API 用于智能體與環(huán)境的交互,只要所有的狀態(tài)、動作、回報能夠用數(shù)值表示,任何環(huán)境都可以被集成到gym中。
在gym中,最常用的兩個強化學(xué)習(xí)元素就是環(huán)境和智能體,強化學(xué)習(xí)的基本思想就是學(xué)習(xí)狀態(tài)和動作之間的映射關(guān)系,以使得累計獎勵達(dá)到最大。如圖3 所示,智能體在當(dāng)前時刻t從環(huán)境接收一個狀態(tài)st,at表示智能體在時刻t所采取的動作,該動作作用于當(dāng)前時刻的環(huán)境。在下一時刻,智能體接收到數(shù)值回報rt+1并轉(zhuǎn)移到新狀態(tài)st+1。在每一時刻,智能體完成從狀態(tài)到每種可能動作的選擇概率之間的映射,該映射關(guān)系被稱為智能體決策。強化學(xué)習(xí)反映了智能體面對環(huán)境狀態(tài)的改變,如何根據(jù)其經(jīng)驗改變策略從而實現(xiàn)在長期學(xué)習(xí)過程中得到的累計回報值最大。
圖3 強化學(xué)習(xí)Fig.3 Reinforcement learning
如圖1 所示,NS3-gym middleware 主要負(fù)責(zé)連接NS3 網(wǎng)絡(luò)仿真器與gym,并將狀態(tài)觀測值(如鏈路狀態(tài)、隊列長度等)和執(zhí)行動作在NS3 和gym 之間通過zeromq(zmq)sockets 的通信機(jī)制相互傳遞。NS3-gym middleware 包括環(huán)境網(wǎng)關(guān)和環(huán)境代理兩部分。前者位于NS3內(nèi)部,主要負(fù)責(zé)收集網(wǎng)絡(luò)狀態(tài)信息并轉(zhuǎn)化為結(jié)構(gòu)化的數(shù)值數(shù)據(jù),同時還要解析智能體傳遞過來的執(zhí)行動作,并調(diào)用相應(yīng)的回調(diào)函數(shù);后者在gym 中負(fù)責(zé)接收傳遞過來的狀態(tài)信息,并通過gym API傳遞給智能體進(jìn)行學(xué)習(xí)與決策。
為了研究無線通信網(wǎng)絡(luò)中的智能干擾規(guī)避技術(shù),構(gòu)建點對點通信下的干擾規(guī)避網(wǎng)絡(luò)場景如圖4所示,系統(tǒng)中包括一個干擾節(jié)點和一對無線通信節(jié)點。其中干擾節(jié)點在每個時隙隨機(jī)地選擇干擾信道發(fā)送特定干擾功率的干擾信號,干擾功率集合設(shè)為PJ=[pj1,pj2,…,pjQ],第k個時隙干擾功率為,最大干擾功率為pmax。系統(tǒng)收發(fā)節(jié)點對中的發(fā)送節(jié)點的發(fā)射功率可調(diào),并設(shè)定可調(diào)功率集合為PU={pu1,pu2,…,puL},背景噪聲功率為σ2。假設(shè)發(fā)送信號為x(t),噪聲為n(t),干擾信號為j(t),則接收信號y(t)可表示為:
圖4 點對點通信下的干擾規(guī)避網(wǎng)絡(luò)場景Fig.4 Interference avoidance network scenario of point-to-point communications
在點對點通信網(wǎng)絡(luò)場景中,基于信道選擇和功率控制構(gòu)建智能干擾規(guī)避模型,并將其建模成一個MDP(Markov decision process)過程[17]。MDP過程通常用狀態(tài)、動作、轉(zhuǎn)移概率和獎勵這四個元素來描述,將其定義為一個四元組(S,A,ρ,R),其中狀態(tài)空間S和動作空間A是離散的,MDP模型的具體元素如下:
(1)狀態(tài)
定義第k個時隙的狀態(tài)集為,其中表示當(dāng)前時隙通信節(jié)點對選擇的通信信道和發(fā)射功率,表示當(dāng)前時隙干擾所占用的信道和干擾功率。,M是網(wǎng)絡(luò)中總信道數(shù),。狀態(tài)空間記為S。
(2)動作
定義第k個時隙用戶對采取的動作為,其中為第k+1 個時隙用戶選擇的通信信道,為第k+1 個時隙用戶對采用的發(fā)射功率,動作空間大小為M×L,記為A。
(3)轉(zhuǎn)移概率
在MDP過程中,下一狀態(tài)是由當(dāng)前動作確定,因此狀態(tài)轉(zhuǎn)移概率為確定值,記為ρ:S×S×A→[0,1],表示給定當(dāng)前狀態(tài)sk∈S下選擇動作ak∈A轉(zhuǎn)移到下一狀態(tài)sk+1∈S的概率。
(4)獎勵函數(shù)
當(dāng)用戶在sk狀態(tài)執(zhí)行動作ak時,會獲得相應(yīng)的獎勵值Rk。定義第k個時隙的信干噪比(signal to interference plus noise ratio,SINR)為:
定義系統(tǒng)目標(biāo)是得到最優(yōu)的傳輸策略π,使系統(tǒng)的長期累計收益最大化,因此系統(tǒng)優(yōu)化問題可以建模為:
其中γ(0<γ≤1)是折扣因子,表示未來收益對當(dāng)前收益的重要程度,E[·]為求期望運算。
圖5為智能干擾規(guī)避仿真系統(tǒng),其中NS3模擬生成網(wǎng)絡(luò)場景和感知環(huán)境狀態(tài)信息,智能體基于網(wǎng)絡(luò)狀態(tài)信息進(jìn)行學(xué)習(xí)分析得到抗干擾決策。具體實施過程為:在NS3中,干擾節(jié)點產(chǎn)生具體的干擾樣式,如掃頻干擾、貪婪隨機(jī)干擾、隨機(jī)干擾、跟隨干擾等,通信節(jié)點對通過時分方式進(jìn)行頻譜感知和通信傳輸。通信節(jié)點對中的接收節(jié)點通過頻譜感知模塊感知的參數(shù)包括信道數(shù)、信道狀態(tài)、干擾功率、發(fā)射功率等,并將所收集的信息進(jìn)行融合之后上傳至NS3 環(huán)境網(wǎng)關(guān)的消息隊列中。gym 中的環(huán)境代理在接收到傳遞過來的數(shù)據(jù)后進(jìn)行數(shù)據(jù)解析,這些數(shù)據(jù)將作為智能體的狀態(tài)輸入,智能體利用強化學(xué)習(xí)算法給出相應(yīng)的規(guī)避策略。規(guī)避策略包括信道選擇和發(fā)射功率控制。當(dāng)學(xué)習(xí)得到干擾規(guī)避策略后,將通過NS3-gym middleware 傳輸?shù)椒抡婢W(wǎng)絡(luò)中進(jìn)行策略部署。在學(xué)習(xí)過程中,智能體與環(huán)境不斷進(jìn)行交互,學(xué)習(xí)干擾的變化規(guī)律,從而獲得最優(yōu)的通信策略。
圖5 智能干擾規(guī)避系統(tǒng)結(jié)構(gòu)Fig.5 Architecture of intelligent interference avoidance system
具體地,系統(tǒng)仿真實現(xiàn)的工作流如圖1中的信息流所示,表述如下:
(1)在NS3中搭建仿真網(wǎng)絡(luò)場景,主要包括初始化系統(tǒng)仿真參數(shù),創(chuàng)建網(wǎng)絡(luò)模型,設(shè)計干擾樣式,配置感知節(jié)點。
(2)在仿真中實例化NS3-gym 環(huán)境網(wǎng)關(guān),創(chuàng)建OpenGymGateway對象,并關(guān)聯(lián)相應(yīng)的回調(diào)函數(shù)。這些回調(diào)函數(shù)一方面用來收集網(wǎng)絡(luò)狀態(tài)信息,另一方面,當(dāng)接收到智能體傳過來的動作時,通過調(diào)用這些回調(diào)函數(shù)來執(zhí)行。
(3)創(chuàng)建NS3-gym環(huán)境代理,即在gym中使用Gym::make(‘ns3-gym’)函數(shù)創(chuàng)建。
基于上述流程,搭建基于NS3-gym的智能干擾規(guī)避框架。智能體通過Gym::step(action)函數(shù)與NS3 進(jìn)行交互,輸入(2)中收集的網(wǎng)絡(luò)狀態(tài)信息,并通過強化學(xué)習(xí)算法給出下一步的動作,相應(yīng)的動作會通過環(huán)境代理傳遞給環(huán)境網(wǎng)關(guān)。
(1)初始化系統(tǒng)仿真參數(shù)
首先初始化系統(tǒng)仿真參數(shù),具體的仿真參數(shù)包括節(jié)點個數(shù)、節(jié)點距離、仿真總時長、單步執(zhí)行時間間隔、openGym端口號、工作頻段等。
在NS3-gym 框架下有同步執(zhí)行和異步執(zhí)行兩種步驟執(zhí)行方式。同步執(zhí)行即以預(yù)定的時間間隔調(diào)度(基于時間的調(diào)度方式);異步執(zhí)行即由特定的事件觸發(fā)執(zhí)行(基于事件的調(diào)度方式),例如分組丟失。這里采取同步執(zhí)行方式,設(shè)置時間間隔為0.1 s。
(2)網(wǎng)絡(luò)模型設(shè)置
針對一個多信道的點對點無線通信場景,需要在鏈路層和物理層上分別配置網(wǎng)絡(luò)中的頻譜模型、傳播模型、信道衰落模型、移動模型。在NS3中所有的網(wǎng)絡(luò)模塊都為用戶提供了豐富的助手類,例如助手類MobilityHelper用來配置移動節(jié)點的移動模型。移動模型的設(shè)置分為兩部分:初始位置分布和后續(xù)移動軌跡模型。前者定義了一個移動節(jié)點的初始坐標(biāo),后者則定義了節(jié)點的移動路徑。在本文的仿真設(shè)計中,設(shè)置頻譜模型為多信道頻譜模型,設(shè)置傳播模型為自由空間傳播模型,設(shè)置信道衰落模型為Nakagami 衰落信道,設(shè)置節(jié)點為固定位置移動模型。表1 列出了網(wǎng)絡(luò)模型配置中用到的主要函數(shù)及說明。具體的代碼可參考NS-3的官方文檔系統(tǒng)。
表1 網(wǎng)絡(luò)模型配置涉及的主要函數(shù)列表Table 1 Main function list involved in network model configuration
(3)干擾樣式生成
為了驗證智能干擾規(guī)避系統(tǒng)的功能,本文以掃頻干擾為例,利用NS3 中的WaveformGenerator 類來生成相應(yīng)的干擾。掃頻干擾是一種周期性干擾模式,在每個時隙中依次采用干擾功率集合Pj中的干擾功率以一定的干擾樣式周期性地干擾m個信道,其中總信道數(shù)M為m的整數(shù)倍,當(dāng)一個掃頻周期結(jié)束之后,繼續(xù)重復(fù)上一個周期的干擾策略。在本例中,網(wǎng)絡(luò)中總信道數(shù)M=6,掃頻干擾周期T=6,每個周期內(nèi)的干擾信道樣式為[1;2;3;4;5;6],干擾功率集合Pj=[0.002,0.004,0.006,0.008,0.010,0.012],單位為W。
在網(wǎng)絡(luò)模擬過程中,需要根據(jù)設(shè)置的掃頻干擾圖案在特定的時間點發(fā)送干擾,并干擾相應(yīng)的信道,故需要調(diào)用NS3中的Schedule()函數(shù)。Schedule()函數(shù)有三個參數(shù),第一個參數(shù)是延遲時間,表示在調(diào)用Schedule()函數(shù)后延遲多少時間開始執(zhí)行其他動作。第二個參數(shù)是一個函數(shù)指針,NS3在延遲時間到期后會立即調(diào)用這個指針?biāo)赶虻暮瘮?shù)(即回調(diào)函數(shù))。第三個參數(shù)是回調(diào)函數(shù)形參,Schedule()函數(shù)最多同時支持6 個回調(diào)函數(shù)形參。根據(jù)設(shè)置的掃頻干擾圖案,當(dāng)信道標(biāo)識為1時(即occupied=1),表示信道被干擾,調(diào)用Schedule()函數(shù),Schedule()函數(shù)在延遲一段預(yù)設(shè)的時間后就會調(diào)用WaveformGenerator::Start來產(chǎn)生并發(fā)送干擾。表2列出了干擾樣式生成中用到的主要函數(shù)及說明。
表2 干擾樣式生成中涉及的主要函數(shù)列表Table 2 Main function list involved in interference pattern generation
(4)感知節(jié)點配置
為了感知環(huán)境信息,NS3將接收節(jié)點創(chuàng)建為感知節(jié)點,并利用助手類SpectrumAnalyzerHelper對感知節(jié)點進(jìn)行配置。首先利用NetDeviceContainer spectrumAnalyzers創(chuàng)建頻譜分析器這一網(wǎng)絡(luò)設(shè)備,頻譜分析器可以掃描整個頻段中的所有信道,并獲取被干擾信道的干擾功率譜密度,通過計算可以得到干擾功率大小。然后,通過spectrumAnalyzerHelper.SetPhyAttribute()函數(shù)設(shè)置輸入信號的解析時間和噪聲功率譜密度。最后通過spectrumAnalyzerHelper.Install(sensingNode)為感知節(jié)點安裝頻譜分析器。
為了將NS3 網(wǎng)絡(luò)仿真中的狀態(tài)參數(shù)轉(zhuǎn)變?yōu)橹悄荏w的輸入?yún)?shù),需要以下兩個步驟:
(1)創(chuàng)建OpenGymGateway對象。
(2)關(guān)聯(lián)下列代碼中的回調(diào)函數(shù),這些函數(shù)都定義在環(huán)境網(wǎng)關(guān)中。
其中GetObservationSpace()函數(shù)定義了觀察空間,GetActionSpace()函數(shù)定義了動作空間,其功能是分別將觀察和動作編碼為具體的數(shù)值。這兩個空間函數(shù)都是在環(huán)境初始化的時候創(chuàng)建的,并在初始化階段由環(huán)境網(wǎng)關(guān)發(fā)送給環(huán)境代理。GetReward()函數(shù)是獲取上一步得到的獎勵。GetGameOver()函數(shù)用來檢測是否達(dá)到預(yù)設(shè)的結(jié)束條件。GetExtraInfo()函數(shù)用來獲取與當(dāng)前狀態(tài)相關(guān)的其他信息。
環(huán)境代理從gym 中繼承了Ns3GymEnv 類,因此可以通過gym API 對其進(jìn)行訪問。在gym 中使用函數(shù)Gym::make(‘ns3-gym’)即可創(chuàng)建環(huán)境代理。環(huán)境代理是NS3與智能體之間進(jìn)行交互的中間橋梁,一方面,環(huán)境代理通過與NS3中的環(huán)境網(wǎng)關(guān)進(jìn)行交互獲取網(wǎng)絡(luò)中的狀態(tài)信息,并通過gymAPI傳遞給智能體進(jìn)行學(xué)習(xí)與決策;另一方面,環(huán)境代理將智能體下發(fā)的動作轉(zhuǎn)化為相應(yīng)的信息,并通過zmq的通信機(jī)制將信息傳遞給環(huán)境網(wǎng)關(guān)。
圖6 展示了NS3-gym 仿真環(huán)境創(chuàng)建過程。首先在當(dāng)前目錄下運行已有的Python 腳本,在Python 腳本中使用Gym::make(‘ns3-gym’)創(chuàng)建環(huán)境代理。接下來環(huán)境代理會運行一個位于當(dāng)前工作目錄下的NS3 的模擬腳本,建立zmq 連接,并等待NS3 發(fā)送過來的環(huán)境初始化指令。一旦收到指令,環(huán)境代理便返回一個環(huán)境對象env.object,里面記錄了當(dāng)前的環(huán)境變量以及數(shù)據(jù)格式等相關(guān)信息。在運行的NS3模擬腳本中,會分別創(chuàng)建環(huán)境網(wǎng)關(guān)和相應(yīng)的網(wǎng)絡(luò)模型并進(jìn)行初始化配置,初始化結(jié)束后由環(huán)境網(wǎng)關(guān)發(fā)送初始化指令給環(huán)境代理。
圖6 NS3-gym仿真環(huán)境創(chuàng)建過程Fig.6 Implementation of NS3-gym simulation environment
智能體與NS3之間的交互過程通過Gym::step(action)實現(xiàn),如圖7所示,具體流程為:智能體基于當(dāng)前的狀態(tài)和策略給出相應(yīng)的動作(action),并由環(huán)境代理將動作下發(fā)給環(huán)境網(wǎng)關(guān)。環(huán)境網(wǎng)關(guān)解析當(dāng)前動作并執(zhí)行,當(dāng)前動作作用于當(dāng)前網(wǎng)絡(luò)場景從而得到下一個狀態(tài)。當(dāng)該動作執(zhí)行步驟結(jié)束后環(huán)境網(wǎng)關(guān)會收到一個完成指令,環(huán)境網(wǎng)關(guān)通過調(diào)用回調(diào)函數(shù)來收集當(dāng)前的環(huán)境狀態(tài)(state)信息,包括:
圖7 智能體與NS3的交互過程Fig.7 Interaction between Agent and NS3
(1)observation:收集模擬中觀察到的變量和參數(shù)值,這里主要是信道數(shù)、信道狀態(tài)、干擾功率、發(fā)射功率。
(2)done:bool 類型的值,用來判斷是否達(dá)到預(yù)定的結(jié)束條件。
(3)reward:獲取上一步得到的獎勵。
(4)info:獲取與當(dāng)前狀態(tài)相關(guān)的其他信息。
本節(jié)首先生成掃頻干擾、貪婪隨機(jī)策略干擾、跟隨式干擾、隨機(jī)干擾四種典型的干擾樣式,并構(gòu)建相應(yīng)的干擾場景,對比分析兩種強化學(xué)習(xí)算法在這四種干擾場景下的性能。具體的仿真參數(shù)如表3所示。
表3 系統(tǒng)仿真參數(shù)Table 3 System simulation parameters
如圖8 所示,在NS3 中生成四種典型的干擾樣式。為了便于分析,將整個工作頻段劃分為M個頻率互不重疊的通信子信道(M=6)。圖中,橫坐標(biāo)表示時隙,縱坐標(biāo)表示信道,實心色塊代表當(dāng)前時隙存在干擾的信道,顏色深淺代表干擾功率的大小,顏色越深代表功率越大,白色代表當(dāng)前時隙無干擾且不被占用的通信信道。其中圖8(a)為掃頻干擾,掃頻周期T=6,每個時隙存在m=1 個干擾信道的掃頻干擾。圖8(b)為貪婪概率為ε=0.2 的貪婪隨機(jī)策略干擾,貪婪隨機(jī)策略干擾是指在每個時隙中隨機(jī)選擇干擾信道,使用P0=1-ε的概率選擇相同干擾信道,使用P1=ε的概率隨機(jī)選擇新信道。假設(shè)每個時隙生成一個(0,1)的隨機(jī)數(shù),如果這個隨機(jī)數(shù)小于ε,則重新隨機(jī)選擇一個干擾信道,如果這個隨機(jī)數(shù)大于ε,則繼續(xù)干擾原信道。圖8(c)為跟隨式干擾,跟隨式干擾是根據(jù)正在進(jìn)行通信的信道來選擇干擾策略,即干擾直接跟隨上一時隙通信所采用的信道。例如:當(dāng)前一個時隙選取f1信道進(jìn)行通信時,則后一個時隙就干擾f1信道。圖8(d)為隨機(jī)干擾,即每個時隙隨機(jī)干擾某個信道。
圖8 NS3中生成的四種典型的干擾樣式Fig.8 Four typical interference patterns generated by NS3
針對四種典型的干擾場景,本文分別采用了Q學(xué)習(xí)算法[18]、WoLF-PHC 算法[19]進(jìn)行學(xué)習(xí)與決策。Q 學(xué)習(xí)算法是一種基于價值迭代的強化學(xué)習(xí)算法,該算法的主要思想就是將“狀態(tài)”和“動作”構(gòu)建成一張Q表格(Q-table),然后根據(jù)Q值來選取能夠獲得最大收益的動作。WoLFPHC 算法是一種典型的策略梯度強化學(xué)習(xí)算法,其中“策略爬山法”(PHC)是一種適用于混合策略的梯度下降學(xué)習(xí)算法,通過引入“贏或快學(xué)習(xí)”(win or learn fast,WoLF)規(guī)則,即使用可變的學(xué)習(xí)率,在贏時減慢學(xué)習(xí)速率(讓智能體有更多時間適應(yīng)它的策略),而在輸時快速學(xué)習(xí)(對當(dāng)前策略進(jìn)行大幅調(diào)整),從而增強Agent適應(yīng)環(huán)境的能力。WoLF 規(guī)則的引入保證了WoLF-PHC 算法的收斂性。
本文研究了這兩種算法在不同干擾場景下的收斂性,并進(jìn)行了性能評估。本文的系統(tǒng)目標(biāo)是最優(yōu)傳輸策略π,使系統(tǒng)的長期累計收益最大,累計收益越大表示每次策略選擇得越好,通信過程受干擾的影響越小。本文仿真的總時隙數(shù)為10 000個,在仿真過程中,每50個時隙內(nèi)累計并統(tǒng)計一次獎勵值,即累計獎勵值。
如圖9 所示,當(dāng)經(jīng)歷一段時間后,WoLF-PHC 算法的累計獎勵值都能夠趨于穩(wěn)定,可見算法具有收斂性。WoLF-PHC 算法在掃頻干擾和貪婪隨機(jī)策略干擾的場景下性能較好,在隨機(jī)干擾的場景下性能最差。這是因為掃頻干擾具有周期性,且每個時隙只干擾一個信道,干擾規(guī)律簡單。而貪婪隨機(jī)策略干擾在下一個時隙使用P0=1-ε(P0=0.8)的概率選擇相同的干擾信道,使用P1=ε(P1=0.2)的概率隨機(jī)選擇新信道,因此貪婪隨機(jī)策略干擾總是傾向于占用相同的干擾信道。對于這兩種干擾場景,智能體能夠很容易地做出正確決策并規(guī)避干擾。但對于隨機(jī)干擾來說,下一個時隙干擾信道是隨機(jī)生成的,干擾規(guī)律復(fù)雜且不易學(xué)習(xí),算法性能也相應(yīng)較差。如圖10所示,當(dāng)算法達(dá)到收斂后,Q學(xué)習(xí)算法的性能與WoLF-PHC算法性能相近,在掃頻干擾和貪婪隨機(jī)策略干擾的場景下性能較好,在隨機(jī)干擾的場景下性能最差。值得注意的是,相較于Q 學(xué)習(xí),WoLF-PHC 算法能夠快速達(dá)到收斂,這表明該算法能夠快速地學(xué)習(xí)干擾規(guī)律并迅速適應(yīng)環(huán)境,采取最優(yōu)策略完成通信。而針對隨機(jī)干擾來說Q學(xué)習(xí)算法最終不能達(dá)到收斂,這是由于Q 學(xué)習(xí)算法采用的是恒定的學(xué)習(xí)率,收斂速度慢,不適用于干擾動態(tài)變化過快的場景。
圖9 WoLF-PHC算法在不同干擾場景下性能Fig.9 Performance of WoLF-PHC algorithm in different interference scenarios
圖10 Q學(xué)習(xí)算法在不同干擾場景下性能Fig.10 Performance of Q-learning algorithm in different interference scenarios
圖11、圖12 分別是WoLF-PHC 算法和Q 學(xué)習(xí)算法在掃頻干擾場景下的通信策略圖,分別對比了兩種算法在初始階段和收斂階段的傳輸策略。圖中,紅色方塊代表當(dāng)前時隙存在干擾的信道,顏色越深代表干擾功率越大,綠色方塊代表強化學(xué)習(xí)算法選擇的通信信道,顏色越深代表發(fā)送功率越大,黑色方塊代表通信信道與干擾信道重疊,此時通信信道被干擾。對于WoLF-PHC算法來說,當(dāng)算法達(dá)到收斂時能夠很好地規(guī)避干擾,而且能實現(xiàn)較小的信道切換代價和功率切換代價。對于Q學(xué)習(xí)算法來說,當(dāng)算法收斂時,也能比較好地規(guī)避干擾,但是相比于WoLF-PFC算法,Q學(xué)習(xí)算法的信道切換代價更大。
圖11 WoLF-PHC在掃頻干擾場景下的通信策略Fig.11 Communication strategy of WoLF-PHC algorithm in sweep interference scenario
如表4所示,統(tǒng)計了WoLF-PHC算法和Q學(xué)習(xí)算法在不同干擾場景下的通信成功率,兩種算法的通信成功率都隨著干擾規(guī)律的復(fù)雜度增加而下降。在掃頻干擾模式下,通過智能干擾規(guī)避策略學(xué)習(xí)得到的通信成功率最高,而針對隨機(jī)干擾模式學(xué)習(xí)得到的通信成功率最低。在掃頻干擾和貪婪隨機(jī)策略干擾場景下,WoLF-PHC算法的通信成功率高于Q 學(xué)習(xí)的通信成功率。在跟隨干擾和隨機(jī)干擾場景下,兩種算法的通信成功率接近。
表4 WoLF-PHC算法和Q學(xué)習(xí)算法在不同干擾場景下的通信成功率Table 4 Communication success rate of WoLF-PHC algorithm and Q-learning algorithm in different interference scenarios 單位:%
本文提出了一種基于NS3-gym 框架的智能干擾規(guī)避系統(tǒng)。在該系統(tǒng)中,NS3中生成基本的干擾規(guī)避網(wǎng)絡(luò)模型并感知環(huán)境頻譜信息作為狀態(tài)輸入,智能體利用強化學(xué)習(xí)算法學(xué)習(xí)得到最優(yōu)的干擾規(guī)避策略,并通過NS3-gym middleware 返回到仿真網(wǎng)絡(luò)中進(jìn)行資源配置。為了驗證無線通信網(wǎng)絡(luò)中的智能干擾規(guī)避策略,對點對點通信系統(tǒng)中的干擾規(guī)避問題進(jìn)行了數(shù)學(xué)建模和智能干擾規(guī)避仿真系統(tǒng)設(shè)計。仿真實驗構(gòu)建了四種不同的干擾場景,基于Q 學(xué)習(xí)和Wolf-PHC 兩種強化學(xué)習(xí)算法對智能干擾規(guī)避策略進(jìn)行了實現(xiàn),并對得到的系統(tǒng)抗干擾性能進(jìn)行了對比與分析。本文所提出的智能干擾規(guī)避系統(tǒng)為驗證通信網(wǎng)絡(luò)的智能化功能實現(xiàn),以及為進(jìn)一步在通信網(wǎng)絡(luò)中研究和對比智能抗干擾算法提供了有效的仿真平臺與技術(shù)支撐。