王天舒,楊曦晨,胡孔法**,胡晨駿
(1. 南京中醫藥大學人工智能與信息技術學院 南京 210023;2. 南京師范大學計算機科學與技術學院 南京210042)
隨著傳感器、無線通信、人工智能等技術的不斷發展,以及人們對生活水平要求的日益提高,國內外各大儀器制造廠商紛紛投入可穿戴設備的制造,并已逐步融入到人們的生產與生活之中。例如,2012 年谷歌公司研發的首個可穿戴設備谷歌眼鏡具有和智能手機一樣的功能,可以通過聲音完成拍照、視頻通話以及導航等工作[1];蘋果、Fitbit以及小米等公司研發的智能手環具有實時采集心率與監測睡眠的功能[2]。近年來,國家對中醫藥領域高度重視,先后發布了《中醫藥發展戰略規劃綱要(2016—2030 年)》[3]《“健康中國2030”規劃綱要》[4]和《中醫藥法》[5],并將中醫藥發展提升至國家戰略。而與中醫藥密切相關的可穿戴設備,可以實時采集與監測人體的健康信息,幫助醫生對病人進行診斷與治療。例如,脈象儀具有體積小易攜帶特點,可以實時采集人體脈搏信號。因此,中醫藥可穿戴設備大量引入并應用至各大中醫院是今后中醫藥發展的必然趨勢。
中醫藥可穿戴設備節點可以實時采集患者的脈搏等體征信息,并將這些信息發送至下一跳節點。然而,這些設備均通過電池供電,具有有限的續航時間[6]。因此,降低可穿戴設備節點的能耗是延長續航時間的有效途徑。實驗表明將可穿戴設備節點組織成簇并進行數據傳輸的方式可以優化數據傳輸路徑,有效減少節點的能量消耗[7]。

圖1 中醫可穿戴設備網絡
國內外許多學者致力于研究傳感器設備節點的高效分簇算法,以最大化網絡的生存周期[8-9]。Heinzelman 等[10]提出的LEACH(Low-Energy Adaptive Clustering Hierarchy,低能耗自適應分簇層次算法)是最著名的基于分簇的層次路由協議。該協議將網絡生存時間分成多個等長的時間段,每個時間段稱之為輪。在每一輪內,所有節點通過一個概率來判斷自己是否成為簇頭節點。成為簇頭的節點通過廣播自己的信息來通知周圍節點加入其所在的簇集。有些學者在LEACH 方法的基礎上針對網絡拓撲[11]與簇頭選取策略[12]進行改進。Neto 等[13]提出一種多跳簇頭模型,采用從下到上的策略,依次為每一層生成相應的簇頭,最終得到一個多層結構的網絡。Batr 等[14]提出一種基于MAC(Medium Access Control,媒體訪問控制)層消息的簇頭選擇算法LEACH-MAC,該算法根據MAC 層消息將所有傳感器設備節點按剩余能量大小排序,剩余能量大的節點具有更高概率被選舉成為簇頭。然而,這種算法只考慮剩余能量,忽略了節點的地理位置因素。
本文提出一種基于G-Means算法[15]的中醫藥可穿戴設備分簇方法,通過G-Means 算法對可穿戴設備節點進行分簇,使節點的采集數據按照高效成簇的方式傳輸,并將剩余能量更高的節點作為簇頭收集簇成員節點信息,優化設備節點的能量儲備,從而延長節點的生存時間。
在部署有可穿戴設備節點的中醫院內,節點通過自身傳感器采集病人的體征信息,并發送至相應醫生。可穿戴設備之間能夠互相傳輸數據,構成一個可穿戴設備的無線體感網絡。圖1給出了某中醫院內由可穿戴節點組成的無線體感網絡。中醫醫生一般依靠“望、聞、問、切”的手段來實現診斷。因此,在圖1中醫院為病人配備了采集病人圖像數據、病人聲音與氣味信號、病人身體情況的語音數據、脈搏信息的可穿戴設備。在同一時間,醫院可能會有多位病人前來看病,醫院可以在這些病人身上同時部署可穿戴設備。圖1 的中醫院內被部署大量可穿戴設備節點,這些節點被分割成多個簇集。每個簇集內部有一個節點被選舉為簇頭節點,負責管理所在的簇集。網絡中所有可穿戴設備節點采集相關數據,并將采集到的數據發送至對應簇頭節點。簇頭節點收集簇內所有節點的數據,通過數據融合算法對這些數據進行處理,并匯聚至相應中醫醫生所使用的觀測平臺。
在中醫可穿戴設備網絡中,設備節點是由電池供電的。因此,中醫可穿戴設備網絡具有有限的生存周期。在本文中,有限的網絡時間被等分成多個輪次,在每一輪時間內,提出的高效分簇方法將所有可穿戴設備節點劃分成多個簇集,并選舉出合適的簇頭節點。在不同的時間輪次內,網絡的分簇方案會根據所有設備節點的剩余能量與地理位置而產生變化。所有節點按照分簇方法所計算出的分簇方案進行數據采集與傳輸。
本文采用G-Means 算法對中醫藥可穿戴設備節點進行分簇,以保證所有簇集均服從正態分布。假設網絡中有m 個節點,節點集合標記為N={n1, n2, …ni,…,nm},節點ni的地理坐標為ni=(xi,yi)。網絡內節點的分簇步驟如下:
1)計算集合N 中所有元素的初始中心集。將中心集C初始化為空集,通過公式(1)計算N內所有元素的坐標中心,得到中心元素nc,并將nc加入C。

2)通過K-Means 更新中心集C,即C = K-Means(C,N),如算法1 所示。第2-4 行偽碼依次初始化變量r、Er與g 為1、0 與|C|。其中,r 代表循環次數,Er為循環停止條件,g 代表簇集數目。初始化工作完成后,從第5 行偽碼開始進入主體循環。第6 行偽碼更新循環的次數r,每循環一次,r 的值累加1。第7-9 行偽碼將g個簇集(Clusteri,1≤i≤g)初始化為空集,其中Clusteri的中心為C[i]。第10-12 行偽碼將N 中每個設備節點ni分配至與ni最近的中心所在的簇集。第13-15 行偽碼對中心集C 進行更新。第16 行偽碼計算所有設備節點至其中心的距離的平方和,并將和值賦值給循環的停止變量Er。第17 行偽碼判定是否滿足循環停止條件:若Er較Er-1沒有變化,結束循環;否則,繼續返回第5行偽碼。最后,第18行偽碼返回最終的中心集C與g個簇集(Cluster1, Cluster2, …, Clusteri, …, Clusterg)。其中,C的第i個元素C[i]是第i個簇集Clusteri的中心。
算法1 中心集C的更新


3)采用高斯分布測試算法,對每個簇集Clusteri進行依次檢測,判定其是否都服從高斯分布,具體過程如下:
?將簇集Clusteri中的第j 個設備節點記為nj,j=1,2,…,|Clusteri|。其中,nj的坐標為nj=(xnj,ynj)。
?設定臨界值δ=0.0001。
?設簇集Clusteri的初始中心集為IC,從Clusteri中隨機選取兩個元素作為初始中心,記為ic1與ic2,則IC = {ic1, ic2}。調用算法1(K-Means(IC, Clusteri))更新初始中心集,返回的中心集記為CC={c1,c2}。
?設中心節點c1的坐標為c1=(xc1,yc1),中心節點c2的坐標為c2=(xc2,yc2),計算連接c1與c2的向量v。

? 通過公式(3)依次計算Clusteri中每個節點nj到向 量v 的 投 影nj’。其 中Clusteri′ = {n1′, n2′, …, nj′,…,n|Clusteri|′}。

? 將Clusteri’轉 化 為 集 合O = {o1, o2,…, oi, …o|Clusteri|},O符合均值為0,方差為1的標準正態分布;

4)若中心集C 未更新,判定此時的|C|個簇集Cluster1, Cluster2, …, Cluster|C|為最終的分簇結果;否則若C有任意更新,則跳至第(2)步,繼續對C進行更新。
通過節點分簇方案,可穿戴設備網絡已被劃分為多個規模不等的簇集,并且簇集內的所有設備節點地位平等。由圖1 可知,在網絡的每個簇集內均存在一個簇頭節點,用來管理所在的簇集。合適的簇頭節點可以提高網絡的能效性。因此,本文結合節點的地理位置與剩余能量,提出一個高效的簇頭選舉方法。
算法2 簇頭選舉

簇頭選舉方法的具體過程如算法2 所示。Cluster是存儲網絡分簇結構的二維數組,數組的每一行代表一個簇集,行內的數據為該行對應簇集內所有設備節點的ID。圖2 給出簇頭選舉方法的示例,圖中Cluster數組共有4行數據,表明對應可穿戴設備網絡被分成4個簇集。Cluster 第一行內的數據為:(3,9,21,6,13,8),表明網絡的第1 個簇集內的節點為:(3,9,21,6,13,8)。

圖2 簇頭選舉
首先,算法2 的第2 行偽碼將Cluster 中每個簇集的設備節點進行重新排序。重新排序后首個節點與簇內所有節點距離最短,末位節點與簇內所有節點距離最長。例如,假設圖2中的Cluster已排完序,可知節點3與簇內所有節點(3,9,21,6,13,8)的總距離最大,節點8 與簇內所有節點的總距離最小。然后,從第3行偽碼開始進入循環,遍歷Cluster的每一行,從第5行偽碼開始進入第二層循環,遍歷Cluster 的每一行中的每一個節點,從而計算網絡內所有設備節點成為簇頭的權重值w。第6 行偽碼將Cluster 的第i 個簇集的第j個節點的權重值w[j]設置為j。例如,圖2 中此時Cluster中第一行節點的權重為w={1,2,3,4,5,6}。第7-9行偽碼根據節點之前已成為過簇頭的次數調整權重值:如果節點在過去的 m 輪內未成為過簇頭(節點的count屬性等于0),提高其權重值。第10-15行偽碼根據節點剩余能量調整權重值:如果節點剩余能量低于平均水平,降低其權重值;如果其剩余能量低于平均水平的一半,進一步降低其權重。例如,設圖2中所有設備節點的能量平均值為1,節點3的剩余能量為0.75,那么可知節點3 的權重值需要從1 降至0.5。第16-17行偽碼根據當前簇集中節點的權重值得到數組wc。例如,圖2 中節點3 的權重值w[1]為0.5,而w[1]<1,故3 不被添至數組wc 中;節點9 的權重值w[2]為2,則將其ID:9添至wc中2次。在遍歷完Cluster的第i個簇集后,第20 行偽碼從wc 中隨機選取一個數作為第i個簇集的簇頭。
實驗采用MATLAB 對本文所提出的可穿戴設備節點分簇方法進行仿真,并將該方法與LEACH 方法[10]、LEACH-MAC 方法[15]進行對比。實驗假設在某個中醫院分別部署50 個可穿戴設備節點(場景1)與100 個可穿戴設備節點(場景2)。這兩個場景的面積均為100 × 100 m2,中醫醫生的觀測平臺位于網絡的中心,設備節點的初始能量為0.5 J。表1 給出了實驗所用到的參數。其中,Eelec、εfs、εtr、EDA是設備節點在發送與接收數據時與能量消耗大小相關的參數,RDA是簇頭節點的數據融合率。在場景1 與場景2 下,本文所提出的方法與LEACH 方法的分簇結構、網絡生存時間、以及節點能耗進行比較分析。

表1 實驗參數
圖3 至圖5 分別給出本文提出的方法、LEACH 以及LEACH-MAC 在場景1 與場景2 下的分簇結構對比。圖中‘o’表示簇頭設備節點,‘*’表示簇成員設備節點,節點間的直線表示兩個設備節點之間互相通信。從圖3 中可以看出,本文所提方法的簇頭分布比LEACH 方法更為均勻,并且簇集內設備節點數目更均衡。例如,圖3(b)的網絡中包含13 個簇集,規模最大的簇集中有13 個傳感器節點,最小的簇集含有5 個傳感器節點,簇集中負載數目相差較小,且不會出現散點或負載過多情況。由圖4 的LEACH 方法與圖5 的LEACH-MAC 方法的分簇結構可知,其簇頭的分布不均勻,且簇集的規模相差較大。例如,圖4(b)的網絡中,規模最大的簇集中有19 個設備節點,規模最小的簇集僅僅包含一個簇頭設備節點(散點)。圖5(a)中LEACH-MAC 方法將網絡內傳感器節點分成三個簇集,且這三個簇集的節點數目不均衡,最小規模簇集僅包含2 個傳感器節點,而最大規模的簇集包含的傳感器節點數據高達28 個。簇集規模過大會導致其簇頭能量的大量消耗,而散點會造成簇頭設備節點數據融合功能的浪費。因此,本文提出的方法具有更優的分簇結果。
在中醫藥可穿戴設備網絡中,設備節點具有有限的能量供應。因此,減少設備節點的能量消耗是本文所提方法的主要目的。圖6 給出本文提出的方法與LEACH 方法、LEACH-MAC 方法在場景1 與場景2 下每一輪的能耗對比。
由圖6(a)可知,在場景1 下:本文所提方法每一輪所有節點所消耗的能量在0.026J上下浮動,LEACH 方法在場景1 下每一輪所有節點所消耗的能量均高于0.028J,而LEACH-MAC 方法在每一輪所有節點消耗的能量均高于0.03J。在本文所提方法中,所有節點在網絡前100 輪的能耗為0.0262 J±0.0011 J;在LEACH方法中,所有節點在網絡前100 輪的能耗為0.0306 J±0.0154 J;在LEACH-MAC 方法中,所有節點在網絡前100輪的能耗為0.033 J±0.0089 J。因此,在場景1中,本文所提方法所有節點在網絡前100輪的平均能耗比LEACH 方法與LEACH-MAC 方法分別降低14.4%與20.6%。

圖3 本文提出方法的分簇結構

圖4 LEACH的分簇結構

圖5 LEACH-MAC的分簇結構
由圖6(b)可知,在場景2 下:本文所提方法每一輪所有節點所消耗的能量在0.056 J 上下浮動,LEACH方法每一輪所有節點所消耗的能量均高于0.06 J,而LEACH-MAC 方法在每一輪所有節點消耗的能量均高于0.062 J。在本文所提方法中,所有節點在網絡前100 輪的能耗為0.0555 J ± 0.0015 J;在LEACH 方法中,所有節點在網絡前100 輪的能耗為0.062 J ±0.0024 J;在LEACH-MAC 方法中,所有節點在網絡前100 輪的能耗為0.0638 J±0.009 J。故在場景2 中,本文所提方法所有節點在網絡前100 輪的平均能耗比LEACH 方法與LEACH-MAC 方法分別降低10.5%與13%。
綜上所述,本文所提方法中所有節點所消耗的能量低于LEACH 與LEACH-MAC 方法所有節點的能耗。因此,本文方法相較于LEACH 與LEACH-MAC方法具有更高的能效性。
中醫藥可穿戴設備網絡的生存周期長度是衡量分簇方法的重要指標。圖7 給出本文提出的方法、LEACH 以及LEACH-MAC 在場景1與場景2下的網絡生存周期的對比。
由圖7(a)可知,場景1下本文所提方法中首個節點的失效時間為910 輪,而LEACH 與LEACH-MAC 方法分別于673 輪與732 輪已有節點開始失效。場景1 下本文所提方法50%節點的失效時間為933 輪,而LEACH 與LEACH-MAC 方法分別為822 輪與757 輪。因此在場景1 下,對于首個節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長35.2%與24.3%;對于50%節點的失效時間本文所提方法比LEACH與LEACH-MAC方法分別延長13.5%與23.2%。

圖6 本文提出方法與LEACH、LEACH-MAC方法的能耗對比

圖7 本文提出方法與LEACH、LEACH-MAC方法的網絡生存周期對比
由圖7(b)可知,場景2 下本文所提方法中首個節點的失效時間為849 輪,而LEACH 與LEACH-MAC 方法分別于687 輪與759 輪已有節點開始失效。場景2下本文所提方法50%節點的失效時間為889 輪,而LEACH 與LEACH-MAC 方法分別為798 輪與787 輪。因此在場景2 下,對于首個節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長23.6%與11.9%;對于50%節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長11.4%與13%。
因此,本文所提方法比LEACH 與LEACH-MAC方法在網絡生存周期方面更有優勢。
中醫藥可穿戴設備節點可以實時采集患者的脈搏等體征信息,并將這些信息匯聚至中醫醫生的觀測平臺。然而,這些設備均通過電池供電,具有有限的續航時間。為了延長中醫可穿戴設備的生存時間,本文提出一個高效的中醫藥可穿戴設備分簇方法,將設備節點所采集的數據按照高效成簇的方式傳輸。實驗結果表明,本文所提方法在兩種場景下簇頭節點分布均勻,簇集規模適中。
在場景1中,本文所提方法所有節點在網絡前100輪的平均能耗比LEACH 方法與LEACH-MAC 方法分別降低14.4%與20.6%;對于首個節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長35.2%與24.3%;對于50%節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長13.5%與23.2%。
在場景2中,本文所提方法所有節點在網絡前100輪的平均能耗比LEACH 方法與LEACH-MAC 方法分別降低10.5%與13%;對于首個節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長23.6%與11.9%;對于50%節點的失效時間本文所提方法比LEACH 與LEACH-MAC 方法分別延長11.4%與13%。
通過上述對比分析,本文所提方法具有更低的能耗與更長的網絡生存周期,更適用于中醫可穿戴設備網絡。