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