基于層次聚類的數(shù)據(jù)匯聚方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及無線傳感器網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種基于層次聚類的數(shù)據(jù)匯聚 方法和基于層次聚類的數(shù)據(jù)匯聚系統(tǒng)。
【背景技術(shù)】
[0002] 隨著傳感器技術(shù)、嵌入式計(jì)算技術(shù)、通信技術(shù)、分布式信息處理技術(shù)、微電子制造 技術(shù)以及軟件編程技術(shù)的發(fā)展,促成了無線傳感器網(wǎng)絡(luò)的迅速興起。無線傳感器可以感知 一定網(wǎng)絡(luò)范圍內(nèi)的監(jiān)測(cè)對(duì)象的狀態(tài),并把收集到的數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)發(fā)。無線傳感器網(wǎng)絡(luò) 需要周期性的采集數(shù)據(jù)轉(zhuǎn)發(fā)到數(shù)據(jù)處理中心,為了保證實(shí)時(shí)性,數(shù)據(jù)轉(zhuǎn)發(fā)的周期很短,因此 在無線傳感器網(wǎng)絡(luò)中,存在大量的數(shù)據(jù)需要傳輸,可能會(huì)造成數(shù)據(jù)傳輸擁塞。同時(shí),由于距 離近的傳感器之間數(shù)據(jù)的相似性,會(huì)造成數(shù)據(jù)的冗余。另外,傳感器一般采用電池供電,能 量有限,不易補(bǔ)充。為了改善無線傳感器網(wǎng)絡(luò),下面兩種技術(shù)方案做了相關(guān)改進(jìn)。
[0003] 第一種主要通過四步完成:第一、各錨節(jié)點(diǎn)進(jìn)行第一次廣播,通過泛洪的方式向整 個(gè)網(wǎng)絡(luò)傳遞錨節(jié)點(diǎn)的坐標(biāo)及跳數(shù)信息,每個(gè)錨節(jié)點(diǎn)獲取其他錨節(jié)點(diǎn)的坐標(biāo)及跳數(shù)信息,每 個(gè)未知節(jié)點(diǎn)獲取距離最短的錨節(jié)點(diǎn)的坐標(biāo)及跳數(shù)信息;第二、根據(jù)每個(gè)錨節(jié)點(diǎn)與其它錨節(jié) 點(diǎn)位置和相隔跳數(shù)計(jì)算網(wǎng)絡(luò)中平均每跳距離,并將平均每跳距離作為一個(gè)校正值廣播至網(wǎng) 絡(luò)中;第三、各錨節(jié)點(diǎn)進(jìn)行第二次廣播,將校正值繼續(xù)以泛洪的方式在網(wǎng)絡(luò)中傳遞,未知節(jié) 點(diǎn)獲取距離最短的錨節(jié)點(diǎn)的校正值作為該未知節(jié)點(diǎn)的平均每跳距離,并計(jì)算未知節(jié)點(diǎn)到錨 節(jié)點(diǎn)的距離;第四、通過最小二乘法計(jì)算未知節(jié)點(diǎn)的坐標(biāo)。該技術(shù)方案采用洪泛的方式進(jìn)行 數(shù)據(jù)采集,因此效率比較低,會(huì)造成較高的網(wǎng)絡(luò)負(fù)載。
[0004] 第二種主要通過三步完成:第一、網(wǎng)絡(luò)初始化階段,匯聚節(jié)點(diǎn)在整個(gè)網(wǎng)絡(luò)中發(fā)送廣 播消息,所有節(jié)點(diǎn)根據(jù)接收到的信號(hào)強(qiáng)度RSSI(ReceivedSignalStrengthIndication, 接收的信號(hào)強(qiáng)度指示)計(jì)算出其到匯聚節(jié)點(diǎn)的近似距離并放在緩存中;第二、輪簇過程,節(jié) 點(diǎn)根據(jù)自身的剩余能量和每一輪的能量采集速率每周期時(shí)間進(jìn)行一次輪簇過程,每個(gè)節(jié)點(diǎn) 根據(jù)自身的剩余能量和能量采集速率值競(jìng)爭(zhēng)簇頭,每一輪包括成簇階段和簇間路由階段; 第三、成簇階段:節(jié)點(diǎn)根據(jù)自身剩余能量和能量采集速率進(jìn)行分簇和競(jìng)選簇頭。該算法雖然 可以盡可能延長(zhǎng)網(wǎng)絡(luò)的壽命,但是效率較低,不適用于大規(guī)模網(wǎng)絡(luò)。
[0005]綜上所述,現(xiàn)有的無線傳感器網(wǎng)絡(luò),由于距離近的傳感器之間數(shù)據(jù)的相似性,會(huì)造 成數(shù)據(jù)的冗余,傳輸效率較低。
【發(fā)明內(nèi)容】
[0006] 基于此,有必要針對(duì)現(xiàn)有的無線傳感器網(wǎng)絡(luò)傳輸效率較低的問題,提供一種基于 層次聚類的數(shù)據(jù)匯聚方法和系統(tǒng)。
[0007]-種基于層次聚類的數(shù)據(jù)匯聚方法,包括以下步驟:
[0008] (1)根據(jù)層次聚類算法將所有節(jié)點(diǎn)中兩兩之間的距離最短的兩個(gè)節(jié)點(diǎn)合并為一 類,根據(jù)合并的類以及其他節(jié)點(diǎn)重新進(jìn)行合并,直到將所有節(jié)點(diǎn)合并為一個(gè)類;
[0009] (2)對(duì)合并的類進(jìn)行分組,計(jì)算將節(jié)點(diǎn)分為不同組數(shù)時(shí)所有節(jié)點(diǎn)的總開銷,獲取總 開銷最小的分組數(shù);根據(jù)總開銷最小的分組數(shù)將合并的類的所有節(jié)點(diǎn)進(jìn)行分組;
[0010] (3)根據(jù)每個(gè)分組的節(jié)點(diǎn)尋找各個(gè)分組的聚合節(jié)點(diǎn),組成第一層聚合節(jié)點(diǎn),對(duì)第 一層聚合節(jié)點(diǎn)依據(jù)步驟(1)和(2)的方式進(jìn)行重新分組,并以分組的第一層聚合節(jié)點(diǎn)尋找 下一層的聚合節(jié)點(diǎn),直到最后一層的聚合節(jié)點(diǎn)少于設(shè)定的個(gè)數(shù)時(shí),確定最后一層的聚合節(jié) 占.
[0011] 其中,尋找分組的聚合節(jié)點(diǎn)方法包括:
[0012] si、選擇本組中的一個(gè)節(jié)點(diǎn),以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn);
[0013]s2、計(jì)算本組中其他節(jié)點(diǎn)到所述初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0014]s3、從本組中剩下的節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn),并以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn),計(jì)算本組 中其他節(jié)點(diǎn)到該初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0015]s4、判斷是否選擇所有節(jié)點(diǎn),若是,選擇鏈路總開銷最小對(duì)應(yīng)的節(jié)點(diǎn)作為匯聚組內(nèi) 節(jié)點(diǎn)數(shù)據(jù)的第一層聚合節(jié)點(diǎn),否則返回S3;
[0016] (4)將最后一層的聚合節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)數(shù)據(jù)發(fā)送至數(shù)據(jù)處理中心。
[0017] 一種基于層次聚類的數(shù)據(jù)匯聚系統(tǒng),包括:
[0018] 合并模塊,用于根據(jù)層次聚類算法將所有節(jié)點(diǎn)中兩兩之間的距離最短的兩個(gè)節(jié)點(diǎn) 合并為一類,根據(jù)合并的類以及其他節(jié)點(diǎn)重新進(jìn)行合并,直到將所有節(jié)點(diǎn)合并為一個(gè)類;
[0019] 分組模塊,用于對(duì)合并的類進(jìn)行分組,計(jì)算將節(jié)點(diǎn)分為不同組數(shù)時(shí)所有節(jié)點(diǎn)的總 開銷,獲取總開銷最小的分組數(shù);根據(jù)總開銷最小的分組數(shù)將合并的類的所有節(jié)點(diǎn)進(jìn)行分 組;
[0020] 尋找模塊,用于根據(jù)每個(gè)分組的節(jié)點(diǎn)尋找各個(gè)分組的聚合節(jié)點(diǎn),組成第一層聚合 節(jié)點(diǎn),對(duì)第一層聚合節(jié)點(diǎn)依據(jù)所述合并模塊和分組模塊的方式進(jìn)行重新分組,并以分組的 第一層聚合節(jié)點(diǎn)尋找下一層的聚合節(jié)點(diǎn),直到最后一層的聚合節(jié)點(diǎn)少于設(shè)定的個(gè)數(shù)時(shí),確 定最后一層的聚合節(jié)點(diǎn);
[0021] 其中,尋找模塊執(zhí)行所述尋找各個(gè)分組的聚合節(jié)點(diǎn)的過程包括:
[0022] si、選擇本組中的一個(gè)節(jié)點(diǎn),以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn);
[0023]s2、計(jì)算本組中其他節(jié)點(diǎn)到所述初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0024]s3、從本組中剩下的節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn),并以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn),計(jì)算本組 中其他節(jié)點(diǎn)到該初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0025]s4、判斷是否選擇所有節(jié)點(diǎn),若是,選擇鏈路總開銷最小對(duì)應(yīng)的節(jié)點(diǎn)作為匯聚組內(nèi) 節(jié)點(diǎn)數(shù)據(jù)的第一層聚合節(jié)點(diǎn),否則返回S3;
[0026] 發(fā)送模塊,用于將最后一層的聚合節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)數(shù)據(jù)發(fā)送至數(shù)據(jù)處理中心。
[0027] 上述基于層次聚類的數(shù)據(jù)匯聚方法和系統(tǒng),通過層次聚類算法將所有節(jié)點(diǎn)中兩兩 之間的距離最短的兩個(gè)節(jié)點(diǎn)合并為一類,距離最短的兩個(gè)節(jié)點(diǎn)之間的鏈路開銷相對(duì)較小, 根據(jù)合并的類以及其他節(jié)點(diǎn)重新進(jìn)行合并,直到將所有節(jié)點(diǎn)合并為一個(gè)類,然后按照總開 銷最小的分組數(shù)對(duì)類的節(jié)點(diǎn)進(jìn)行分組,并尋找各個(gè)分組的聚合節(jié)點(diǎn),通過聚合節(jié)點(diǎn)匯聚組 內(nèi)的各個(gè)節(jié)點(diǎn)的數(shù)據(jù),然后將所有數(shù)據(jù)發(fā)送至數(shù)據(jù)處理中心,從而可以減少數(shù)據(jù)的冗余,傳 輸效率較高。
【附圖說明】
[0028] 圖1為一實(shí)施例基于層次聚類的數(shù)據(jù)匯聚方法流程圖;
[0029] 圖2為一實(shí)施例無線傳感器數(shù)據(jù)轉(zhuǎn)發(fā)網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
[0030] 圖3為另一實(shí)施例基于層次聚類的數(shù)據(jù)匯聚方法流程圖;
[0031] 圖4為一實(shí)施例節(jié)點(diǎn)第一次合并示意圖;
[0032] 圖5為一實(shí)施例節(jié)點(diǎn)第二次合并示意圖;
[0033] 圖6為一實(shí)施例層次聚類分組示意圖;
[0034] 圖7為一實(shí)施例異步分布式算法流程示意圖;
[0035] 圖8為一實(shí)施例層次聚類分組結(jié)果示意圖;
[0036] 圖9為一實(shí)施例分組性能隨分組數(shù)的變化關(guān)系圖;
[0037] 圖10為一實(shí)施例異步分布式算法產(chǎn)生的樹形結(jié)構(gòu)示意圖;
[0038] 圖11為一實(shí)施例基于層次聚類的數(shù)據(jù)匯聚系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039] 下面結(jié)合附圖對(duì)本發(fā)明的基于層次聚類的數(shù)據(jù)匯聚方法和系統(tǒng)的【具體實(shí)施方式】 作詳細(xì)描述。
[0040] 一種基于層次聚類的數(shù)據(jù)匯聚方法,包括以下步驟:
[0041] (1)根據(jù)層次聚類算法將所有節(jié)點(diǎn)中兩兩之間的距離最短的兩個(gè)節(jié)點(diǎn)合并為一 類,根據(jù)合并的類以及其他節(jié)點(diǎn)重新進(jìn)行合并,直到將所有節(jié)點(diǎn)合并為一個(gè)類;
[0042] (2)對(duì)合并的類進(jìn)行分組,計(jì)算將節(jié)點(diǎn)分為不同組數(shù)時(shí)所有節(jié)點(diǎn)的總開銷,獲取總 開銷最小的分組數(shù);根據(jù)總開銷最小的分組數(shù)將合并的類的所有節(jié)點(diǎn)進(jìn)行分組;
[0043] (3)根據(jù)每個(gè)分組的節(jié)點(diǎn)尋找各個(gè)分組的聚合節(jié)點(diǎn),組成第一層聚合節(jié)點(diǎn),對(duì)第 一層聚合節(jié)點(diǎn)依據(jù)步驟(1)和(2)的方式進(jìn)行重新分組,并以分組的第一層聚合節(jié)點(diǎn)尋找 下一層的聚合節(jié)點(diǎn),直到最后一層的聚合節(jié)點(diǎn)少于設(shè)定的個(gè)數(shù)時(shí),確定最后一層的聚合節(jié) 占.
[0044] 其中,尋找分組的聚合節(jié)點(diǎn)方法包括:
[0045]si、選擇本組中的一個(gè)節(jié)點(diǎn),以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn);
[0046]s2、計(jì)算本組中其他節(jié)點(diǎn)到所述初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0047] s3、從本組中剩下的節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn),并以該節(jié)點(diǎn)為初始聚合節(jié)點(diǎn),計(jì)算本組 中其他節(jié)點(diǎn)到該初始聚合節(jié)點(diǎn)的鏈路總開銷;
[0048]s4、判斷是否選擇所有節(jié)點(diǎn),若是,選擇鏈路總開銷最小對(duì)應(yīng)的節(jié)點(diǎn)作為匯聚組內(nèi) 節(jié)點(diǎn)數(shù)據(jù)的第一層聚合節(jié)點(diǎn),否則返回S3;
[0049] (4)將最后一層的聚合節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)數(shù)據(jù)發(fā)送至數(shù)據(jù)處理中心。
[0050] 請(qǐng)參閱圖1,圖1為一實(shí)施例基于層次聚類的數(shù)據(jù)匯聚方法流程圖。
[0051] 一種基于層次聚類的數(shù)據(jù)匯聚方法,包括以下步驟:
[0052] 步驟S101 :根據(jù)層次聚類算法將所有節(jié)點(diǎn)中兩兩之間的距離最短的兩個(gè)節(jié)點(diǎn)合 并為一類,根據(jù)合并的類以及其他節(jié)點(diǎn)重新進(jìn)行合并,直到將所有節(jié)點(diǎn)合并為一個(gè)類;
[0053] 在步驟S101