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