石 優(yōu),林 琳,吳 巖
(江蘇大學 計算機科學與通信工程學院,江蘇 鎮(zhèn)江 212013)
當前無線傳感器網絡(Wireless Sensor Networks,WSNs)技術發(fā)展迅速,該技術因具有設備組建方式靈活、網絡強度較高等特性得到廣泛應用,然而其大規(guī)模應用容易造成網絡擁塞等問題[1]。無線傳感器網絡節(jié)點經串聯(lián)后以“攜帶-發(fā)送”的方式傳輸數據,各節(jié)點均具有自主收集、接收和發(fā)送數據的能力,極大提高了網絡傳輸數據量。此外,由于無線傳感器網絡部署規(guī)模龐大、節(jié)點數量多、數據采集和轉發(fā)無固定時間限制,導致網絡節(jié)點可能會在某個時間點瞬間接收大量數據,這進一步增大了網絡傳輸數據量[2],因此對網絡吞吐量有較高要求[3]。當數據接收速率大于數據發(fā)送速率時,節(jié)點內消息隊列會迅速堆積形成網絡擁塞。嚴重的網絡擁塞會對無線傳感器網絡數據傳輸造成很大影響。發(fā)生網絡擁塞后,因為節(jié)點內的數據來不及發(fā)送出去,其他數據也無法進入節(jié)點內的消息隊列,所以消息被不斷丟棄和滯后,造成大量數據丟失、網絡延時加大以及網絡吞吐量縮減,從而降低網絡服務質量,甚至會引起網絡癱瘓,而網絡節(jié)點長期處于高負荷的滿隊列狀態(tài)也會大幅縮短其使用壽命[4]。因此,有效解決網絡擁塞問題至關重要。
由于無線傳感器網絡數據采集無固定時間和數據量大小限制,即數據采集具有不規(guī)律性,加上網絡節(jié)點持續(xù)移動造成網絡拓撲不斷變化,導致網絡節(jié)點擁塞情況更復雜,需要一種高效且自適應能力強的擁塞控制方案來解決上述問題。文獻[5]將比例-積分-微分(Proportional-Integral-Derivative,PID)控制器引入網絡擁塞控制問題,利用PID控制器適應性強、操作簡單和效率高等特性,有效縮短消息隊列長度,緩解了網絡擁塞。但是PID控制器自身具有諸多缺陷。研究人員提出多種PID控制器改進方案,但是其應用于無線傳感器網絡時仍存在不足。文獻[6]將信用分配小腦模型與PID控制器相結合提高計量效果,但由于未考慮PID控制器的參數無法與輸入量保持同步變化,因此其后期數據可信度較低。文獻[7]提出一種改進PID控制器,在不影響傳輸鏈路質量的前提下,提高了控制效果并降低能耗,但該PID控制器精度不高。文獻[8]將元啟發(fā)灰狼優(yōu)化算法與PID控制器相結合,利用元啟發(fā)算法優(yōu)秀的全局搜索能力提高了PID控制器自適應能力,但忽略其后期會陷入局部最優(yōu)的精度較低問題。文獻[9]將非線性自回歸移動平均算法引入PID控制過程,并實現(xiàn)其參數自整定,但是該算法收斂速度較慢。因此,在無線傳感器網絡的擁塞控制中引入PID控制器時,需考慮PID控制器自適應能力不高所導致計算精度較低的問題。
針對上述網絡擁塞控制方法計算精度不高的問題,本文結合網絡擁塞特征和模糊PID控制器與元啟發(fā)算法的特點,提出一種基于布谷鳥搜索(Cuckoo Search,CS)算法的模糊PID網絡擁塞控制方法。利用PID控制器的快速收斂能力調控無線傳感器網絡擁塞程度,使用模糊控制算法整定PID控制器參數,通過優(yōu)化其自適應能力提高計算精度,并采用布谷鳥搜索算法優(yōu)化模糊PID控制器所得丟包率進一步提升計算精度。
將傳統(tǒng)PID控制器引入無線傳感器網絡的擁塞控制中,可計算消息隊列的瞬時隊列長度與實時丟包率。由于網絡環(huán)境和數據收集具有不規(guī)律性,因此要求PID控制器具有較高精度。本文將模糊控制與傳統(tǒng)PID控制器相結合實現(xiàn)其參數自整定,從而提高其優(yōu)化精度。同時,重新計算實時丟包率,并在此基礎上,引入全局搜索性能優(yōu)異且收斂速度較快的元啟發(fā)布谷鳥搜索算法,進一步優(yōu)化實時丟包率的計算精度,并通過丟包率控制瞬時隊列長度以實現(xiàn)擁塞控制。根據上述思路,本文模型設計分為2個步驟:1)將無線傳感器網絡節(jié)點的隊列長度作為控制對象設計模糊PID控制器(FPID);2)采用布谷鳥搜索算法優(yōu)化調整FPID(CFPID)。
傳統(tǒng)PID控制算法是一種將主動隊列管理系統(tǒng)的各類算法轉化為控制器形式的經典控制算法,該算法可使控制對象的瞬時值保持接近期望值[10]。本文將PID控制器引入無線傳感器網絡,以隊列長度為控制對象,經過比例(P)、積分(I)和微分(D)調整,得到消息丟包率p[11],通過丟包率限制隊列長度從而對擁塞程度進行控制。本文PID控制系統(tǒng)結構如圖1所示,其中?表示多個控制步驟在此處結合同時控制下一步操作。
圖1 PID控制系統(tǒng)結構Fig.1 PID control system structure
在PID控制系統(tǒng)結構中,yd為期望隊列長度,y為瞬時隊列長度,k時刻瞬時隊列長度記為y(k),p為消息丟包率,隊列長度的控制偏差變量為e,在k時刻e的瞬時值表達式如下:
e(k)=yd-y(k)
(1)
以期望隊列長度yd作為PID控制器的輸入、丟包率p作為PID控制器的輸出對瞬時隊列長度進行控制,PID控制器的控制規(guī)則表示如下:
(2)
(3)
通過模糊控制算法對PID控制器進行參數整定,可優(yōu)化其自適應能力并提高擁塞控制計算精度。以下對基于模糊PID的擁塞控制器(FPID)設計原理和模糊規(guī)則進行介紹。
1.2.1 FPID控制器設計原理
在傳統(tǒng)PID控制器設計中,比例、積分和微分參數均固定,自適應調節(jié)能力較差,導致控制器精度較低[12]。本文利用模糊控制技術對PID控制器參數進行調整。模糊控制技術是根據模糊規(guī)則將控制對象進行模糊化、模糊推理和反模糊化,其無需精確的被控對象數學模型,能較好控制并優(yōu)化非線性變化與實時變化的復雜情況[13]。本文設計一種基于模糊PID的FRID控制器,FRID控制系統(tǒng)結構如圖2所示,該系統(tǒng)設計過程為:將模糊控制引入PID控制器并對其進行參數尋優(yōu),通過模糊規(guī)則和模糊推理獲得PID參數增量,并對初始參數進行加權調整得到新的PID參數,從而實現(xiàn)PID參數的自整定優(yōu)化。
圖2 FPID控制系統(tǒng)結構Fig.2 FPID control system structure
在FPID控制系統(tǒng)結構中,e為網絡節(jié)點內隊列長度的偏差量,ec為偏差變化率,Δkp、Δki、Δkd分別為由模糊推理所得比例、積分、微分參數增量。將隊列長度偏差量e和偏差變化率ec作為模糊控制器的輸入,參數增量Δkp、Δki、Δkd作為模糊控制器的輸出,得到最終的FPID整定參數形式如下:
kp=kp0+Δkp
(4)
ki=ki0+Δki
(5)
kd=kd0+Δkd
(6)
其中,kp0、ki0、kd0分別為比例、積分、微分參數初始值。
1.2.2 FPID控制器的模糊規(guī)則
在參數整定過程中,需考慮參數之間的關聯(lián)。將e、ec、Δkp、Δki、Δkd的模糊論域分別設置為[-3,3]、[-3,3]、[-3,3]、[-0.3,0.3]、[-0.3,0.3],并將輸入變量和輸出變量分為{NB(負大)、NM(負中)、NS(負小)、Z(零)、PS(正小)、PM(正中)、PB(正大)}7個等級。利用模糊控制器量化因子進行PID控制器參數整定的關鍵是確定系統(tǒng)的穩(wěn)定邊界[14]。當隊列長度的控制偏差量逐漸減小時,PID參數增益會隨之減小,系統(tǒng)逐步穩(wěn)定,確保最大偏差在穩(wěn)定區(qū)域內,并通過模糊校正讓系統(tǒng)自動收斂。設置量化因子ke=0.5、kec=1以及對應的比例因子kΔp=1、kΔi=1、kΔd=1[15]。
對參數增量Δkp、Δki、Δkd具體要求如下:
1)若網絡節(jié)點中消息隊列長度偏差量絕對值|e|為大(e取正大或者負大),則Δkp為正數,即增大kp,以提高調節(jié)響應速度;為防止出現(xiàn)較大的超調量,通常設置Δki=0用于限制積分;為防止隊列長度偏差量e的瞬間變化導致微分飽和并超出控制范圍,Δkd應取較小值。
2)若|e|和|ec|為中等大小(e和ec取正中或者負中),則Δki和Δkd取適中值,使系統(tǒng)具有較小的超調量。
3)若|e|較小(e取正小、負小或者零),則Δkp、Δki取正數,即kp、ki的值增加,以保證系統(tǒng)具有良好的穩(wěn)態(tài)性。
根據上述要求,本文結合使用三角形隸屬度函數和Sigmoid型隸屬度函數以提高控制效果。
三角形隸屬度函數的解析函數形式為:
(7)
Sigmoid型隸屬度函數的解析函數形式為:
(8)
將上述兩種函數結合使用后,輸入和輸出變量的隸屬度函數曲線如圖3~圖6所示,表1為FPID模糊規(guī)則。
圖3 ec的隸屬度函數曲線Fig.3 Degree of membership function curve of ec
圖4 Δkp的隸屬度函數曲線Fig.4 Degree of membership function curve of Δkp
圖5 Δki的隸屬度函數曲線Fig.5 Degree of membership function curve of Δki
圖6 Δkd的隸屬度函數曲線Fig.6 Degree of membership function curve of Δkd
表1 FPID模糊規(guī)則Table 1 FPID fuzzy rule
1.2.3 反模糊化
根據上述模糊規(guī)則,輸入隊列長度偏差量e和偏差變化率ec后得到的輸出變量為模糊變量,需通過反模糊化得到準確值。反模糊化的方法主要包括面積中心法[16]、最大隸屬度法和面積積分法[17]。本文采用面積中心法求出參數增量Δkp、Δki、Δkd的隸屬度,計算公式如下:
μ(Δkp)=min{μNB(e),μNB(ec)}
(9)
μ(Δki)=min{μNB(e),μNB(ec)}
(10)
μ(Δkd)=min{μNB(e),μNB(ec)}
(11)
經過模糊規(guī)則調整后,根據隊列長度偏差量e和偏差變化率ec的測量值可求得參數增量Δkp、Δki、Δkd,計算公式如下:
(12)
(13)
(14)
其中,μpj表示j時刻μ(Δkp)的值,Δkpj表示j時刻Δkp的值,μij表示j時刻μ(Δki)的值,Δkij表示j時刻Δki的值,μdj表示j時刻μ(Δkd)的值,Δkdj表示j時刻Δkd的值。將計算所得參數增量Δkp、Δki、Δkd代入式(4)~式(6)得到經過模糊控制更新后的PID控制器參數,即FPID控制器最終參數,再將其代入式(2)中,計算得到更新后的丟包率p。
FPID控制器相較傳統(tǒng)PID控制器精度有所提高,但其精度仍有提升空間。由于通過FPID控制器計算得到的丟包率趨近最優(yōu)解,卻并非最優(yōu)解[18],因此可利用布谷鳥搜索算法良好的尋優(yōu)能力對丟包率再進行優(yōu)化,得到丟包率準確值,從而更精準地控制隊列長度。
自然界中布谷鳥不筑巢,而是尋找其他鳥類的巢穴產卵,讓其他鳥類作為宿主幫助其孵化繁衍[19],宿主有一定概率能發(fā)現(xiàn)布谷鳥的蛋,然后宿主會選擇清除此蛋或者放棄巢穴[20]。布谷鳥搜索算法正是模擬布谷鳥上述特殊孵化繁衍方式提出的一種高效元啟發(fā)式優(yōu)化算法[21],該算法滿足如下規(guī)則:1)優(yōu)質的宿主巢將被傳遞到下一代;2)宿主有固定概率pa∈[0,1]發(fā)現(xiàn)布谷鳥的蛋并清除此蛋或放棄巢穴;3)每只布谷鳥每次只生1個蛋,并放置到隨機選擇的宿主巢中且宿主巢數量固定。
基于上述規(guī)則,為得到最佳的消息丟包率,以FPID模型中消息丟包率p為目標對象,建立基于布谷鳥搜索的模糊PID控制器模型(CFPID),其結構如圖7所示。
圖7 CFPID控制器模型結構Fig.7 CFPID controller model structure
消息丟包率p隨著參數增量Δkp、Δki、Δkd的變化而改變,其表達式記為p(k)。將p(k)作為布谷鳥搜索的目標函數,以萊維飛行路徑為搜索路徑,通過不斷迭代更新,計算出PID參數變化時消息丟包率p(k)的最大值。布谷鳥搜索路徑公式更新如下:
(15)
(16)
布谷鳥搜索算法的具體步驟如下:
(17)
2)計算p(k)在各時間點的值,利用Levy(s,λ)對時間點進行更新,計算時間點的目標函數值r并與pa進行對比,若r>pa,則記錄r為當前最優(yōu)值時間點,同時更新鳥巢時間點,否則時間點不變。
3)若滿足最大迭代次數,則繼續(xù)下一步,否則返回步驟2。
4)輸出全局最優(yōu)解,選擇最佳丟包率。
布谷鳥搜索算法的偽代碼如下:
輸入Δkp,Δki,Δkd,M,N
輸出pa
1.While (迭代次數m 2.生成N個隨機鳥巢位置k0,i(i=1,2,…,N) 3.計算初始巢的目標函數值p(k0,i) 4.Levy-flights尋找新巢位置kx,j(i=1,2,…,N) 5.計算新巢目標函數值p(kx,j) 6.If(p(kx,j)>pa)then 7.pa=p(kx,j) 8.End If 9.保留最好的pa解以及解的位置 10.m←M+1 11.End While 在布谷鳥搜索算法中,最大迭代計算次數為M,由于其中無嵌套循環(huán),因此每次迭代計算最優(yōu)解的計算復雜度不超過O(M),最大種群規(guī)模為N,算法的空間復雜度為O(N)。 本文在PID控制器的基礎上增加模糊控制器和布谷鳥搜索算法,構建出基于布谷鳥搜索的模糊PID擁塞控制方法。將本文提出的CFPID方法與傳統(tǒng)PID方法、IBLUE方法[21]3種控制方法在無線傳感器網絡擁塞控制時的隊列長度、丟包率和吞吐量進行對比,以驗證本文方法的可行性。實驗采用MATLAB R2018a軟件,具體參數設置如表2所示。 表2 實驗參數設置Table 2 Experimental parameter setting 將網絡節(jié)點數量設置為100,圖8為采用CFPID方法、PID方法和IBLUE方法所得節(jié)點內消息隊列長度隨傳輸時間的變化。消息隊列長度直接反映消息隊列的傳輸流暢性,如果該長度超過期望值,則說明發(fā)生擁塞,需要進行丟包調整,但是隊列長度太短又會導致網絡資源利用度較低,因此,需將隊列長度保持在期望值附近??梢钥闯?當數據傳輸開始時,3種控制方法的消息隊列長度均迅速增加,隨后超過期望值從而引發(fā)網絡擁塞。在感應到網絡擁塞后,控制機制立刻開始調節(jié)隊列長度。其中:PID和IBLUE方法均在隊列長度達到最高點后才啟動控制機制,且將隊列長度收斂到期望值的速度較慢;CFPID方法采用比PID方法、IBLUE方法更快的收斂速度和更小的震蕩幅度將隊列長度控制到期望值,表現(xiàn)出更好的控制性能。 圖8 網絡節(jié)點數量為100時3種方法所得隊列長度隨傳輸時間的變化Fig.8 The change of queue length obtained by three methods with transmission time when the number of network nodes is 100 為觀測復雜場景中CFPID方法的控制性能,將網絡節(jié)點數量從100調整為200,增加了整體網絡的數據傳輸負荷以及單個節(jié)點的工作量,再次對比采用CFPID方法、PID方法和IBLUE方法所得節(jié)點內消息隊列長度隨傳輸時間的變化,結果如圖9所示??梢钥闯?當節(jié)點數量增加后,數據傳輸消息量和網絡節(jié)點的工作負荷大幅增加,3種控制方法得到的節(jié)點內消息隊列長度曲線均出現(xiàn)明顯震蕩,單位時間內單個節(jié)點待傳輸數據包數量增多,主要體現(xiàn)在震蕩幅值增大和收斂時間增加。其中:PID方法所得消息隊列長度曲線震蕩幅度最大;IBLUE方法的收斂速度變慢,位于CFPID和PID方法之后;CFPID方法所得消息隊列長度曲線震蕩幅度小于PID和IBLUE方法,且收斂速度最快,說明其在復雜場景中控制能力仍較強。 圖9 網絡節(jié)點數量為200時3種方法所得隊列長度隨傳輸時間的變化Fig.9 The change of queue length obtained by three methods with transmission time when the number of network nodes is 200 當網絡節(jié)點分布密度增大時,網絡中數據總量會提高,節(jié)點內消息隊列中待傳輸數據包增多,從而造成隊列長度增加。當隊列長度超過期望值時,會加劇網絡擁塞,此時需進行丟包操作,即以一定的消息丟包率丟棄掉節(jié)點內部分數據包來控制隊列長度,丟包率隨隊列長度的變化而改變,并將隊列長度控制為接近期望值。而丟包率的變化會使消息隊列長度不斷變化,導致網絡出現(xiàn)波動,網絡不穩(wěn)定會間接影響整體網絡工作狀態(tài)。因此,丟包率的收斂速度和穩(wěn)定性決定網絡性能。 在本文實驗中,將初始節(jié)點數量設置為100,圖10為CFPID方法、PID方法和IBLUE方法控制下節(jié)點丟包率隨傳輸時間的變化??梢钥闯?隨著傳輸時間的增加,當消息隊列大幅增長時,CFPID方法較PID方法和IBLUE方法控制更迅速,能采用最大丟包率限制隊列長度進一步增加,有效抑制了網絡擁塞的加重,且經過少量震蕩后以最快速度找到平衡點,僅需小幅調整就能讓隊列長度維持在相對穩(wěn)定的狀態(tài)。 圖10 網絡節(jié)點數量為100時3種方法控制下丟包率隨傳輸時間的變化Fig.10 The change of packet loss rate with transmission time under the control of three methods when the number of network nodes is 100 為觀測復雜場景中節(jié)點內消息丟包率的收斂速度和穩(wěn)定性,將網絡節(jié)點數量增加到200,網絡整體數據量和各網絡節(jié)點的待傳輸數據包均增加,再次對比CFPID方法、PID方法和IBLUE方法控制下節(jié)點丟包率隨傳輸時間的變化,結果如圖11所示。可以看出:隨著網絡節(jié)點數量和整體數據量的增加,3種方法控制下的丟包率均出現(xiàn)不同程度的震蕩;PID方法控制下丟包率震蕩幅度最大;IBLUE方法控制下丟包率收斂速度明顯變慢,使得其收斂周期明顯增長;CFPID方法控制下的丟包率能在適度震蕩后保持較快的收斂速度,說明其在復雜場景中具有較好的控制能力,且自適應調節(jié)能力較強。 圖11 網絡節(jié)點數量為200時3種方法控制下丟包率隨傳輸時間的變化Fig.11 The change of packet loss rate with transmission time under the control of three methods when the number of network nodes is 200 增加節(jié)點數量可間接增大網絡傳輸的消息數量。圖12為CFPID方法、PID方法和IBLUE方法控制下網絡吞吐量隨節(jié)點數量的變化。吞吐量是評價網絡性能的指標,受硬件設備計算性能的影響,吞吐量大小變化不會過于明顯。由圖12可以看出:隨著節(jié)點數量的增加,網絡傳輸的消息數量增大,且節(jié)點間數據傳輸時間縮短,造成吞吐量增大;當節(jié)點數量增加時,3種方法控制下網絡吞吐量都呈現(xiàn)出不同程度的增大;當節(jié)點數量較少時,CFPID方法控制下網絡吞吐量最大,且隨著節(jié)點數量的增長,IBLUE和PID方法控制下網絡吞吐量的增幅低于CFPID方法,說明CFPID方法在后期具有較強的抗干擾性,在復雜場景下具備較好的自適應調節(jié)性能。 圖12 3種方法控制下網絡吞吐量隨節(jié)點數量的變化Fig.12 The change of network throughput with the number of nodes under the control of three methods 本文針對無線傳感器網絡擁塞控制方法計算精度較低的問題,將模糊控制、PID控制器和布谷鳥搜索算法相結合,提出一種新的網絡擁塞控制方法。使用PID控制器計算丟包率并控制節(jié)點的隊列長度,利用模糊控制調整PID參數來提高計算精度,同時給出相應的模糊規(guī)則,并采用布谷鳥搜索算法進一步提高丟包率的準確性。實驗結果表明,該方法較PID、IBLUE等傳統(tǒng)控制方法所得網絡吞吐量更高。后續(xù)將融合更多元啟發(fā)式優(yōu)化算法并優(yōu)化PID控制器模糊規(guī)則,以進一步提高布谷鳥搜索算法的計算速率。2 實驗結果與分析
2.1 隊列長度對比
2.2 丟包率對比
2.3 吞吐量對比
3 結束語