關(guān)志艷
(山西大學(xué)商務(wù)學(xué)院信息學(xué)院,山西 太原 030031)
近年來(lái),信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展給人類社會(huì)和國(guó)民經(jīng)濟(jì)的各個(gè)領(lǐng)域帶來(lái)了巨大變化,尤其是物聯(lián)網(wǎng)的發(fā)展。無(wú)線傳感器網(wǎng)絡(luò)是物聯(lián)網(wǎng)的重要分支,被譽(yù)為“改變世界的十大技術(shù)之一”。[1]覆蓋控制是WSN中的一個(gè)基本問(wèn)題,直接影響著監(jiān)控質(zhì)量,不管是區(qū)域覆蓋、點(diǎn)覆蓋、柵欄覆蓋,只有傳感器節(jié)點(diǎn)將目標(biāo)覆蓋,才能達(dá)到WSN的基本要求。
人工魚(yú)群算法由李曉磊[2]博士于2002年首次提出,近些年應(yīng)用魚(yú)群算法解決實(shí)際工程優(yōu)化問(wèn)題越來(lái)越多。李曉磊等[3]引入生存機(jī)制和競(jìng)爭(zhēng)機(jī)制來(lái)對(duì)算法加以改進(jìn)。王錫淮等[4]設(shè)計(jì)了基于競(jìng)爭(zhēng)懲罰函數(shù)的適應(yīng)值函數(shù)來(lái)改進(jìn)人工魚(yú)群算法,算法的收斂速度和搜索效率都得到了提高。
本文將人工魚(yú)群算法應(yīng)用于無(wú)線傳感器網(wǎng)絡(luò)覆蓋中,目的希望通過(guò)魚(yú)群的覓食行為,聚群行為來(lái)調(diào)整。仿真實(shí)驗(yàn)證明,人工魚(yú)群算法對(duì)于隨機(jī)部署于WSN的節(jié)點(diǎn)有改善效果,從而提高有效覆蓋率。
人工魚(yú)描述可借助于面向?qū)ο蠓椒?,定義其是一個(gè)封裝了自身數(shù)據(jù)和行為的實(shí)體。人工魚(yú)所在的環(huán)境是問(wèn)題的解空間和其他人工魚(yú)的狀態(tài)。這與WSN監(jiān)測(cè)環(huán)境下部署節(jié)點(diǎn)高度吻合,每一個(gè)節(jié)點(diǎn)類比一條人工魚(yú),每個(gè)節(jié)點(diǎn)都封裝了自身屬性和移動(dòng)行為,節(jié)點(diǎn)在下一刻的位置取決于問(wèn)題當(dāng)前解的優(yōu)劣和其他同伴的狀態(tài)。
如圖1所示,假設(shè)人工魚(yú)節(jié)點(diǎn)Si的當(dāng)前位置在Xi,以Si的感知半徑RS為圓的區(qū)域可理解為人工魚(yú)的Visual視野范圍,在視野范圍內(nèi),若Xi位置狀態(tài)優(yōu)于當(dāng)前狀態(tài)X;則step向前一步到達(dá)Xnext,否則巡視視野內(nèi)的其他位置。將節(jié)點(diǎn)Si的鄰居節(jié)點(diǎn)(兩節(jié)點(diǎn)間距離小于2RS)當(dāng)作環(huán)境中的感知同伴,同伴影響對(duì)Si的狀態(tài)也會(huì)相應(yīng)調(diào)整自身狀態(tài)。
圖1 人工魚(yú)感知模型示意圖
覓食行為一般認(rèn)為人工魚(yú)通過(guò)視覺(jué)或味覺(jué)來(lái)感知水中食物量或濃度進(jìn)而選擇下一時(shí)刻位置。在WSN環(huán)境中,由于隨機(jī)部署節(jié)點(diǎn),必然會(huì)造成覆蓋盲區(qū)。覆蓋盲區(qū)吸引附近節(jié)點(diǎn)去填補(bǔ),覆蓋盲區(qū)等價(jià)為食物濃度。
圖2 覓食行為示意圖
行為描述[5]:設(shè)人工魚(yú)節(jié)點(diǎn)Si當(dāng)前狀態(tài)為Xi,在其感知范圍內(nèi)隨機(jī)選擇一個(gè)狀態(tài)Xj。
Xj=Xi+Visual·Rand()
.
(1)
其中,Rand()為[0,1]之間隨機(jī)數(shù),若Y(Xj)>Y(Xi),則向該方向前進(jìn)一步。Y=f(x) ,Y為食物濃度目標(biāo)函數(shù)值。
.(2)
反復(fù)嘗試Try-number以后,若仍不滿足Y(Xj)>Y(Xi),則保持原地不變。
偽代碼描述:
float fish_sensor:FS_prey()
{for(i=0;i {Xj=Xi+Rand()·Visual; if(Y(Xj)>Y(Xi)) else Xi/next=Xi+Rand()·step; } } (3) 其中:L、S分別為檢測(cè)區(qū)域的長(zhǎng)與寬。 圖3 蜂窩節(jié)點(diǎn)分布 偽代碼描述: float fish_sensor:FS_ swarm() { nf=0;Xc=0; for(j=0;j {if(dij {nf++; Xc= Xc+Xj;} else FS_prey(); } } 1) 初始化人工魚(yú)節(jié)點(diǎn)規(guī)模N,人工魚(yú)節(jié)點(diǎn)移動(dòng)最大步長(zhǎng)step,感知半徑視野Visual RS,迭代次數(shù)Try-number,擁擠度因子δ; 2) 隨機(jī)部署人工魚(yú)節(jié)點(diǎn),并自身獲取自動(dòng)位置坐標(biāo); 3) 計(jì)算網(wǎng)絡(luò)有效覆蓋率; 4) 對(duì)每個(gè)人工魚(yú)節(jié)點(diǎn)進(jìn)行評(píng)價(jià),并根據(jù)鄰居節(jié)點(diǎn)間的覆蓋盲區(qū)和重疊區(qū)進(jìn)行覓食行為和聚群行為判斷; 5) 執(zhí)行選擇的行為,更新人工魚(yú)節(jié)點(diǎn)位置; 6) 更新全局人工魚(yú)節(jié)點(diǎn)狀態(tài)。 在MATLAB環(huán)境下進(jìn)行實(shí)驗(yàn)仿真。在50 m×50 m的監(jiān)測(cè)區(qū)域,分布感知半徑視野Visual RS=10的人工魚(yú)節(jié)點(diǎn),據(jù)公式(3)可計(jì)算將需人工魚(yú)節(jié)點(diǎn)60個(gè),隨機(jī)分布人工魚(yú)節(jié)點(diǎn),假設(shè)人工魚(yú)節(jié)點(diǎn)移動(dòng)最大步長(zhǎng)step=1,迭代次數(shù)Try-number=100,擁擠度因子δ=0.01,由于節(jié)點(diǎn)的初始部署對(duì)人工魚(yú)群算法有一定影響,因此取50次隨機(jī)部署經(jīng)過(guò)人工魚(yú)群以觀察結(jié)果,圖4為兩次隨機(jī)部署節(jié)點(diǎn)后,分別經(jīng)過(guò)人工魚(yú)群算法后的節(jié)點(diǎn)分布改善情況,圖中可以觀察到隨機(jī)分布后的節(jié)點(diǎn)經(jīng)過(guò)人工魚(yú)群算法后,節(jié)點(diǎn)的分布更均勻化,由于隨機(jī)初始化節(jié)點(diǎn)位置對(duì)算法有很大的影響,并不是每次算法都可以取得很好的效果,因此取了50次隨機(jī)初始化,每次算法內(nèi)都迭代100次,經(jīng)過(guò)對(duì)50次初始化取均值得出經(jīng)過(guò)算法作用后,網(wǎng)絡(luò)覆蓋有效率提高5.23%。 圖4 人工魚(yú)群算法分布對(duì)比圖 本文研究了基本人工魚(yú)群算法在同構(gòu)無(wú)線傳感器網(wǎng)絡(luò)中的應(yīng)用,將隨機(jī)部署的節(jié)點(diǎn)抽象成封裝了自身數(shù)據(jù)和行為的人工魚(yú),可以根據(jù)自身及周邊環(huán)境的覆蓋盲區(qū)和重疊區(qū)為引導(dǎo)來(lái)指導(dǎo)人工魚(yú)節(jié)點(diǎn)的移動(dòng),人工魚(yú)節(jié)點(diǎn)規(guī)模,人工魚(yú)節(jié)點(diǎn)移動(dòng)最大步長(zhǎng),感知半徑視野,迭代次數(shù),擁擠度因子是基本人工魚(yú)群算法中重要的參數(shù),從仿真實(shí)驗(yàn)可以看出在常規(guī)參數(shù)設(shè)置后,人工魚(yú)算法對(duì)隨機(jī)部署的無(wú)線傳感器網(wǎng)絡(luò)有效覆蓋率有一定的提高,但也可以看出上述參數(shù)對(duì)算法效果的影響,并不是每一次算法都有改善作用,后續(xù)將深入對(duì)其中的擁擠度因子等參數(shù)的研究。2.2 聚群行為
3 算法流程
4 仿真性能
5 結(jié)束語(yǔ)