接近開關(guān)傳感器的GAT算法是一種依據(jù)節(jié)點的地理位置進行分簇,并對簇內(nèi)的節(jié)點選擇性的進行休眠的路由算法。其核心思想是:在各數(shù)據(jù)源到數(shù)據(jù)目的地之間存在有效通路的前提下,盡量減少參與數(shù)據(jù)傳輸?shù)墓?jié)點數(shù),從而減少用于數(shù)據(jù)包偵聽和接收的能量開銷。它將無線傳感器網(wǎng)絡劃分成若干個單元格(簇),各單元格內(nèi)任意一個節(jié)點都可以被選為代表,代替本單元格內(nèi)所有其他節(jié)點完成數(shù)據(jù)包向相鄰單元格的轉(zhuǎn)發(fā)。被選中的節(jié)點成為本單元格的簇頭節(jié)點;其他節(jié)點都進行休眠,不發(fā)送、接收和偵聽數(shù)據(jù)包。
接近開關(guān)傳感器的GAT算法通常分為虛擬單元格的劃分和虛擬單元格中簇頭節(jié)點的選擇兩個階段。
1、虛擬單元格的劃分。節(jié)點根據(jù)其位置信息和通信半徑將網(wǎng)絡區(qū)域劃分為若干虛擬單元格,并保證相鄰單元格中的任意兩個節(jié)點都可以直接通信,假設節(jié)點已知整個監(jiān)測區(qū)域的位置信息和本身的位置信息,節(jié)點可以通過計算得知自己屬于哪個單元格。
2、虛擬單元格中的簇頭節(jié)點的選擇。節(jié)點周期性進入睡眠和工作狀態(tài),從睡眠狀態(tài)喚醒后與本單元內(nèi)其他節(jié)點進行信息交換,以此確定自己是否需要成為簇頭節(jié)點,每個節(jié)點處于發(fā)現(xiàn)、活動以及睡眠三種狀態(tài)。在網(wǎng)絡初始化時,所有節(jié)點均處于發(fā)現(xiàn)狀態(tài),每個節(jié)點通過發(fā)送廣播消息通告自己的位置和ID等信息,然后每個節(jié)點將自身定時器設置為某個區(qū)間內(nèi)的隨機值Td,一旦定時器超時,節(jié)點發(fā)送消息聲明其進入活動狀態(tài),成為簇頭。節(jié)點如果在定時器超時前收到來自同一單元格內(nèi)其他節(jié)點設置定時器T。來設置自己處于活動狀態(tài)的時間。在T。超時前,簇頭節(jié)點定期廣播自己處于活動狀態(tài)的信息,以抑制其他處于發(fā)現(xiàn)狀態(tài)的節(jié)點進入活動狀態(tài);當T。超時后,簇頭節(jié)點重新回到發(fā)現(xiàn)狀態(tài),處于活動狀態(tài)的節(jié)點如果發(fā)現(xiàn)本單元格出現(xiàn)了更適合成為簇頭的節(jié)點,會自動進入睡眠狀態(tài)。
由于節(jié)點處于偵聽狀態(tài)時也會消耗很多熱量,所以讓節(jié)點處于睡眠狀態(tài)成為接近開關(guān)傳感器拓撲控制算法中常見的方法,接近開關(guān)傳感器的GAF算法的優(yōu)點是在節(jié)點密集型分布的網(wǎng)絡中休眠了部分節(jié)點,節(jié)省了網(wǎng)絡總能耗。但GAF算法沒有考慮移動節(jié)點的存在,實際應用環(huán)境中,簇頭節(jié)點很容易從一個單元格移動的另一個單元格,從而造成某些單元格內(nèi)沒有節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)包,最終造成大量丟包和重復發(fā)包,導致總能耗的增加。 |