閆好明,劉 洋
(南陽農(nóng)業(yè)職業(yè)學(xué)院,河南 南陽 473000)
智慧化農(nóng)業(yè)生產(chǎn)主要通過數(shù)據(jù)采集、傳輸、處理、調(diào)控等智慧化手段來實(shí)現(xiàn)資源合理利用、生產(chǎn)成本降低、產(chǎn)量與品質(zhì)提高的目標(biāo)。其實(shí)現(xiàn)方法一般是利用傳感器與嵌入式技術(shù),采集農(nóng)業(yè)生態(tài)環(huán)境相關(guān)數(shù)據(jù),通過無線通信技術(shù)將收集到的數(shù)據(jù)經(jīng)過網(wǎng)關(guān)傳給服務(wù)器平臺(tái),實(shí)現(xiàn)數(shù)據(jù)的智能采集和農(nóng)業(yè)環(huán)境變量科學(xué)調(diào)控[1]。在智能農(nóng)業(yè)生產(chǎn)監(jiān)測(cè)過程中,需要處理的一個(gè)重點(diǎn)就是如何根據(jù)實(shí)際情況選擇合適的優(yōu)化策略,把傳感器節(jié)點(diǎn)部署到所監(jiān)測(cè)的農(nóng)業(yè)范圍內(nèi),以最大限度增加覆蓋率或減少節(jié)點(diǎn)數(shù)量,從而提高監(jiān)控區(qū)域的網(wǎng)絡(luò)服務(wù)質(zhì)量。人工魚群算法在全局情況下尋優(yōu)能力更強(qiáng),對(duì)于初值的要求不高且易于實(shí)現(xiàn),能較好地解決農(nóng)業(yè)監(jiān)測(cè)環(huán)境下的網(wǎng)絡(luò)覆蓋問題[2],但視野固定會(huì)使算法后期收斂緩慢,易陷入局部最優(yōu),需要進(jìn)一步優(yōu)化。本文針對(duì)農(nóng)業(yè)監(jiān)測(cè)環(huán)境下無線傳感器網(wǎng)絡(luò)最優(yōu)覆蓋問題,提出了一種改進(jìn)型人工魚群算法,并通過覆蓋問題仿真分析其可靠性。
人工魚群算法(Artificial Fish Swarm Algorithm,AFSA)是一種自上而下的新型尋優(yōu)方式,由我國學(xué)者李曉磊于2003年提出,是集群智能思想的具體應(yīng)用,具有全局范圍內(nèi)收斂性好、對(duì)初始值要求小等優(yōu)勢(shì)[3]。魚通常可以自己去找,或者跟著其他魚去尋找水中食物豐富的區(qū)域。因此,在尋找到的這個(gè)水域中,魚通常是最多的,而且食物也是最豐富的。人工魚群算法就是利用魚類尋求食物濃度最高水域的這一特征,構(gòu)造個(gè)體模型,模擬魚群在水中覓食、聚集、追尾及隨機(jī)這4種基本行為。魚類的這4 種行為都與尋找最優(yōu)問題的求解密切相關(guān),如何以一種簡單而有效的方式來構(gòu)建和實(shí)現(xiàn)這些行為求取最優(yōu)解,將是算法應(yīng)用中需要思考的關(guān)鍵問題。
傳感器節(jié)點(diǎn)的監(jiān)測(cè)模型體現(xiàn)了提供覆蓋的節(jié)點(diǎn)的感知能力,是研究網(wǎng)絡(luò)覆蓋控制的基礎(chǔ)[4]。由于傳感器節(jié)點(diǎn)在各種應(yīng)用環(huán)境中的功能和物理特性具有多樣性,難以對(duì)傳感器節(jié)點(diǎn)進(jìn)行統(tǒng)一描述,所以采用布爾感知模型作為傳感器模型,該模型是將傳感器節(jié)點(diǎn)覆蓋問題理想化。如果待監(jiān)測(cè)信息點(diǎn)與傳感器節(jié)點(diǎn)之間的歐式距離小于傳感器可監(jiān)測(cè)半徑,則認(rèn)為該信息點(diǎn)在節(jié)點(diǎn)可監(jiān)測(cè)范圍內(nèi),該信息點(diǎn)被節(jié)點(diǎn)監(jiān)測(cè)到的概率為1,否則設(shè)為0。因此,布爾感知模型又可稱為二進(jìn)制感知模型[5]。
布爾圓盤模型為理想傳輸環(huán)境下的節(jié)點(diǎn)感知模型,也叫全向感知模型。在無線傳感器網(wǎng)絡(luò)布置的二維平面上,以節(jié)點(diǎn)S為圓心,以Rs為半徑的圓形為節(jié)點(diǎn)的傳感覆蓋范圍。由于模型簡單實(shí)用,所以常用來分析傳感網(wǎng)絡(luò)的覆蓋性能。
節(jié)點(diǎn)S的坐標(biāo)假定為(x0,y0),傳感半徑Rs,任意目標(biāo)點(diǎn)Q的坐標(biāo)(x,y),S與Q之間的歐式距離為d,則圓盤模型的覆蓋函數(shù)如式(1)所示,模型表示如圖1所示。
圖1 布爾圓盤模型(全向感知模型)Fig.1 Boolean disk model(omnidirectional perception model)
由于農(nóng)業(yè)監(jiān)測(cè)環(huán)境的確定性,所以對(duì)網(wǎng)絡(luò)覆蓋問題分析采用網(wǎng)格化辦法。傳感器節(jié)點(diǎn)采用布爾感知模型,如果網(wǎng)格點(diǎn)與傳感器節(jié)點(diǎn)之間的歐式距離小于傳感器可監(jiān)測(cè)半徑,便認(rèn)為該網(wǎng)格點(diǎn)可以被節(jié)點(diǎn)監(jiān)測(cè)到[6]。當(dāng)監(jiān)測(cè)環(huán)境中的全部網(wǎng)格點(diǎn)都可以被至少一個(gè)節(jié)點(diǎn)監(jiān)測(cè)到時(shí),該農(nóng)業(yè)監(jiān)測(cè)網(wǎng)絡(luò)可以覆蓋整個(gè)農(nóng)業(yè)待監(jiān)測(cè)區(qū)域,獲取區(qū)域范圍內(nèi)的全部環(huán)境信息。
在節(jié)點(diǎn)有移動(dòng)能力的情況下,通過預(yù)先設(shè)定的算法實(shí)現(xiàn)節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的自組織和自適應(yīng)部署。利用隨機(jī)、確定或移動(dòng)的方式,傳感器網(wǎng)絡(luò)可以在監(jiān)測(cè)區(qū)域內(nèi)分布節(jié)點(diǎn)。節(jié)點(diǎn)的可移動(dòng)性分為兩類,一類是所有節(jié)點(diǎn)都可以移動(dòng),節(jié)點(diǎn)能量消耗較大;另一類是在固定網(wǎng)絡(luò)中增加一定數(shù)量可移動(dòng)節(jié)點(diǎn),以增強(qiáng)固定無線傳感器網(wǎng)絡(luò)的覆蓋和節(jié)點(diǎn)間的連接,從而提高網(wǎng)絡(luò)的覆蓋性能。
在農(nóng)業(yè)環(huán)境下,監(jiān)測(cè)范圍A是一個(gè)二維平面,將其劃分成單位長度為1 的(m×n)個(gè)網(wǎng)格,在此區(qū)域內(nèi)投放參數(shù)設(shè)置相同的移動(dòng)傳感器節(jié)點(diǎn)。設(shè)傳感器數(shù)目為N,有效監(jiān)測(cè)半徑均為RS,則傳感器節(jié)點(diǎn)集可以表示為S{S1,S2,S3,...,SN},其中Si={xi,yi,RS},表示以節(jié)點(diǎn)坐標(biāo)(xi,yi)為圓心,以RS為半徑的監(jiān)測(cè)圓。將目標(biāo)Q(x,y)被傳感器節(jié)點(diǎn)Si所能監(jiān)測(cè)到的事件定義為Hi,則事件發(fā)生的概率P{Hi}即為目標(biāo)點(diǎn)(x,y)被傳感器節(jié)點(diǎn)Si所覆蓋的概率Pcov(x,y,Rs)。
當(dāng)目標(biāo)點(diǎn)(x,y)到節(jié)點(diǎn)的距離小于傳感器有效監(jiān)測(cè)半徑RS時(shí),就認(rèn)為該目標(biāo)點(diǎn)在傳感器節(jié)點(diǎn)覆蓋范圍,可以被該節(jié)點(diǎn)監(jiān)測(cè)到并收集相關(guān)數(shù)據(jù)。故Pcov()x,y,Rs也可稱為節(jié)點(diǎn)RS對(duì)目標(biāo)點(diǎn)Q的感知度。
在節(jié)點(diǎn)集中只要有一個(gè)傳感器節(jié)點(diǎn)可以監(jiān)測(cè)到目標(biāo)點(diǎn)(x,y)的信息,就可以認(rèn)為該目標(biāo)點(diǎn)被節(jié)點(diǎn)集所覆蓋。因此,目標(biāo)點(diǎn)被節(jié)點(diǎn)集所覆蓋的概率為Hi的并集,假設(shè)所有的隨機(jī)事件Hi是相互獨(dú)立的,則傳感器節(jié)點(diǎn)集S的覆蓋率如下:
監(jiān)測(cè)范圍A數(shù)字離散化后共m×n個(gè)像素,用Δx×Δy來表示每個(gè)像素的面積,假設(shè)其面積為1。每個(gè)像素能否被有效監(jiān)測(cè)用節(jié)點(diǎn)集覆蓋率Pcov()x,y,Rs來衡量,則將節(jié)點(diǎn)集S的區(qū)域覆蓋率Rarea( )S定義為節(jié)點(diǎn)集S的覆蓋面積Aarea( )S與監(jiān)測(cè)區(qū)積As之比,即為:
最終目標(biāo)就是在監(jiān)測(cè)范圍內(nèi)找到一組最優(yōu)的節(jié)點(diǎn)分布使得覆蓋率最大。
傳統(tǒng)人工魚群算法雖然對(duì)于初值和參數(shù)設(shè)定要求不高,但由于魚類個(gè)體視野和步長的選擇具有隨機(jī)性,搜索精度難以提高,所以算法收斂速度減慢。由于魚群聚集愈多,魚食濃度愈高,所以當(dāng)前范圍內(nèi)最優(yōu)值的結(jié)果是以最優(yōu)解域臨近范圍內(nèi)魚群聚集較多的中心為目標(biāo)。根據(jù)魚群活動(dòng)情況的不同,聚集中心會(huì)不斷變化,故在算法迭代時(shí),可能受到局部最優(yōu)值干擾,忽略最優(yōu)解。因此,需要對(duì)其進(jìn)行改進(jìn)來達(dá)到尋優(yōu)精度更高、算法收斂速度更快、更加適合實(shí)際應(yīng)用的目的。
設(shè)魚類個(gè)體的當(dāng)前狀態(tài)信息為X=(x1,x2,…,xn),探索下一個(gè)狀態(tài)信息為Xv=(x1v,x2v,…,xnv),其表示公式如下:
求極值問題時(shí)可表示為:
式中:Rand()為隨機(jī)數(shù)產(chǎn)生函數(shù),Rand() ∈(0,1);Step為可移動(dòng)步長;Yv為Xv目標(biāo)函數(shù)值;Y為X狀態(tài)的目標(biāo)函數(shù)值。
當(dāng)前魚類個(gè)體的狀態(tài)信息和視野中目標(biāo)點(diǎn)的狀態(tài)信息決定了算法中的移動(dòng)步長。
步驟1:結(jié)合無線傳感器網(wǎng)絡(luò)環(huán)境、傳感器節(jié)點(diǎn)參數(shù)等,對(duì)人工魚群的參數(shù)進(jìn)行初始化設(shè)置,主要包括種群規(guī)模即傳感器節(jié)點(diǎn)個(gè)數(shù)N、魚類個(gè)體視野即傳感器節(jié)點(diǎn)可監(jiān)測(cè)范圍Visual、移動(dòng)步長即傳感器節(jié)點(diǎn)可移動(dòng)范圍Step、擁擠度因子δ、重復(fù)次數(shù)即每個(gè)節(jié)點(diǎn)移動(dòng)嘗試次數(shù)Try_number,設(shè)置變異因子pm、最優(yōu)人工魚狀態(tài)變化次數(shù)keepTimes,視步系數(shù)a,最大迭代次數(shù)值MAXgen,公告板。選取農(nóng)業(yè)監(jiān)測(cè)區(qū)域范圍,在其范圍內(nèi)隨機(jī)生成N條人工魚坐標(biāo)信息。
步驟2:結(jié)合式(6),計(jì)算魚群算法中各個(gè)個(gè)體當(dāng)前狀態(tài)的食物濃度值即農(nóng)業(yè)監(jiān)測(cè)網(wǎng)絡(luò)覆蓋率的值,用Yavg、Yi來表示。并在公告板中記錄最小的Yi值和當(dāng)前人工魚的狀態(tài)信息。
步驟3:對(duì)魚類個(gè)體執(zhí)行覓食、聚群、追尾等三種基本活動(dòng)的狀態(tài)信息和目標(biāo)函數(shù)結(jié)果進(jìn)行評(píng)價(jià)比較,判斷當(dāng)前個(gè)體值Yi是否≥魚群整體值Yavg,若是則執(zhí)行步驟4 適應(yīng)選擇視野,否則以初始化視野轉(zhuǎn)到步驟5,繼續(xù)執(zhí)行。
步驟4:測(cè)量每條人工魚自身到其他人工魚的距離,并求出平均值結(jié)合視步系數(shù)a確定傳感器節(jié)點(diǎn)即魚類個(gè)體的監(jiān)測(cè)范圍和可移動(dòng)區(qū)間,繼續(xù)執(zhí)行步驟5。
步驟5:對(duì)比傳感器節(jié)點(diǎn)視野范圍內(nèi)的目標(biāo)函數(shù)值,若優(yōu)于公告板中值則以自身狀態(tài)取代,并將keep-Times值設(shè)為0,轉(zhuǎn)到步驟7 繼續(xù)執(zhí)行;不然keepTimes+1,判斷keepTimes值是否已達(dá)到MAXbest,若是則執(zhí)行步驟6,否則轉(zhuǎn)到步驟7執(zhí)行。
步驟6:查找目標(biāo)函數(shù)值較差的全部人工魚即傳感器節(jié)點(diǎn)位置信息,對(duì)每個(gè)傳感器節(jié)點(diǎn)生成隨機(jī)數(shù)值Rand(1),Rand(1)∈(0,1)。若Rand(1)>pm,則用pm對(duì)其進(jìn)行變異,即用歷史最優(yōu)節(jié)點(diǎn)狀態(tài)來替換該節(jié)點(diǎn)狀態(tài)。直到所有具有較差目標(biāo)值的個(gè)體替換完成,令keepTimes=0;否則傳感器節(jié)點(diǎn)狀態(tài)信息保持不變;繼續(xù)執(zhí)行步驟7。
步驟7:在上述步驟基礎(chǔ)上,對(duì)于覆蓋問題模型不斷迭代求解,計(jì)算魚類個(gè)體最佳分布信息值和所求目標(biāo)函數(shù)值。當(dāng)其迭代次數(shù)達(dá)到設(shè)定最大值時(shí),則判斷算法求解結(jié)束,并在公告牌中更新并輸出當(dāng)前傳感器節(jié)點(diǎn)的分布信息和覆蓋率最大值。反之則不斷進(jìn)行迭代過程,每次次數(shù)加1,直到達(dá)到設(shè)定最大值為止。
在MATLAB R2020a 平臺(tái)進(jìn)行覆蓋問題模型的仿真,設(shè)農(nóng)業(yè)監(jiān)測(cè)環(huán)境目標(biāo)區(qū)域范圍為50 m×50 m,節(jié)點(diǎn)可監(jiān)測(cè)半徑為5 m,傳感器節(jié)點(diǎn)數(shù)目為35 個(gè),最大迭代次數(shù)為200次,魚類個(gè)體的視野為5 m,個(gè)體最大嘗試次數(shù)為10 次,擁擠度因子為0.618。初始情況下,將傳感器節(jié)點(diǎn)任意拋灑在監(jiān)測(cè)區(qū)域內(nèi),在仿真軟件中模擬其分布情況和覆蓋效果。傳感器節(jié)點(diǎn)隨機(jī)分布情況如圖2所示。
圖2 AFSA-WSN節(jié)點(diǎn)初始分布Fig.2 Initial distribution of AFSA-WSN nodes
在上述仿真環(huán)境條件下,采用基礎(chǔ)人工魚群算法對(duì)農(nóng)業(yè)監(jiān)測(cè)節(jié)點(diǎn)覆蓋問題進(jìn)行仿真求解。對(duì)圖2 中初始條件下傳感器節(jié)點(diǎn)的隨機(jī)分布位置進(jìn)行優(yōu)化后,最終得到的節(jié)點(diǎn)分布和覆蓋效果如圖3 所示。對(duì)比圖2和圖3可以看出,采用人工魚群算法對(duì)傳感器節(jié)點(diǎn)分布進(jìn)行優(yōu)化后,節(jié)點(diǎn)分布更加均勻合理,覆蓋程度大,對(duì)于目標(biāo)區(qū)域所需數(shù)據(jù)的監(jiān)測(cè)更加完整。結(jié)合輸出結(jié)果可以看出,隨著迭代次數(shù)的增加,節(jié)點(diǎn)覆蓋率由初始69%左右增加到88%,達(dá)到大幅度提升。
圖3 人工魚群算法優(yōu)化后傳感器節(jié)點(diǎn)分布情況Fig.3 Distribution of sensor nodes after optimization by artificial fish swarm algorithm
改進(jìn)后的人工魚群算法對(duì)傳感器節(jié)點(diǎn)網(wǎng)絡(luò)覆蓋優(yōu)化效果如圖4、圖5所示。對(duì)比圖3可以看出,改進(jìn)后的算法使傳感器節(jié)點(diǎn)在監(jiān)測(cè)區(qū)域內(nèi)的分布位置更加合理均衡,而常規(guī)人工魚群算法求解結(jié)果存在許多重復(fù)覆蓋區(qū)域,覆蓋盲區(qū)也比較多。
圖4 改進(jìn)AFSA-WSN傳感器節(jié)點(diǎn)初始分布情況Fig.4 Improvement of the initial distribution of AFSA-WSN sensor nodes
圖5 改進(jìn)AFSA-WSN最終傳感器節(jié)點(diǎn)分布情況Fig.5 Improvement of the final sensor node distribution of AFSA-WSN
對(duì)比了在相同的仿真環(huán)境和基本參數(shù)設(shè)置情況下,常規(guī)魚群算法和改進(jìn)后算法針對(duì)農(nóng)業(yè)監(jiān)測(cè)網(wǎng)絡(luò)覆蓋問題的優(yōu)化迭代過程。對(duì)比最終優(yōu)化結(jié)果,常規(guī)人工魚群算法在200 次迭代后監(jiān)測(cè)系統(tǒng)對(duì)于目標(biāo)區(qū)域的覆蓋率約為88%,而改進(jìn)后的魚群算法的覆蓋率達(dá)到97%以上,如圖6 所示。此外,改進(jìn)后的人工魚群算法收斂速度更快,由此可見改進(jìn)人工魚群算法更好地實(shí)現(xiàn)對(duì)農(nóng)業(yè)監(jiān)測(cè)網(wǎng)絡(luò)覆蓋問題的優(yōu)化。通過觀察優(yōu)化后的節(jié)點(diǎn)分布情況可知,相較優(yōu)化前的基本算法,其在監(jiān)測(cè)區(qū)域內(nèi)的分布更為合理,節(jié)點(diǎn)利用率更高。將兩種算法仿真結(jié)果經(jīng)20 次統(tǒng)計(jì)后取平均值,對(duì)照情況如表1 所示。從中可以看出,在相同迭代次數(shù)下,改進(jìn)后的人工魚群算法能取得更高的覆蓋率,說明其求解速度更快、效果更優(yōu)。
表1 改進(jìn)AFSA算法與AFSA算法仿真結(jié)果對(duì)比(20次統(tǒng)計(jì))Tab.1 Comparison of simulation results between improved AFSA algorithm and AFSA algorithm(20 statistics)
圖6 改進(jìn)AFSA與AFSA算法優(yōu)化過程對(duì)比Fig.6 Improvement of the AFSA and AFSA algorithm optimization process comparison
針對(duì)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的覆蓋問題,本文采用傳統(tǒng)人工魚群算法和改進(jìn)人工魚群算法進(jìn)行了優(yōu)化研究,以實(shí)現(xiàn)網(wǎng)絡(luò)傳感器應(yīng)用的高覆蓋率。將人工魚群算法思想應(yīng)用到農(nóng)業(yè)環(huán)境監(jiān)測(cè)覆蓋方面,提出了具體的求解步驟,并通過MATLAB 仿真軟件進(jìn)行了驗(yàn)證。根據(jù)傳統(tǒng)人工魚群算法中存在的不足,提出了改進(jìn)方法和求解步驟,并將MATLAB 仿真結(jié)果與基礎(chǔ)人工魚群算法和經(jīng)典智能優(yōu)化算法相對(duì)比,證明了改進(jìn)后的方法更優(yōu)。