Ví dụ minh họa tổng hợp dữ liệu dựa trên cụm cây phân cấp

Một phần của tài liệu (LUẬN án TIẾN sĩ) nghiên cứu giao thức định tuyến tiết kiệm năng lượng cho mạng sensor luận án TS truyền dữ liệu và mạng máy tính 62 48 15 01 (Trang 117 - 125)

Bất cứ khi nào nút gốc của cây (CH) nhận được thông tin từ tất cả các nút thành

viên trong cụm, nó sẽ chuyển tiếp đến BS sau khi thực hiện giải nén, tổng hợp và nén theo cách tương tự.

5.2. Đề xuất cải tiến thuật toán xây dựng cụm cây 5.2.1. Giai đoạn thiết lập cụm cây 5.2.1. Giai đoạn thiết lập cụm cây

Nội dung của giao thức DFTBC bao gồm bốn giai đoạn: (1) phân chia vùng và lựa chọn CH cho mỗi vùng, (2) xây dựng cụm dựa trên cây, (3) tổng hợp dữ liệu và (4) giai đoạn ổn định truyền dữ liệu.

1. Phân chia cụm và chọn nút CH cho mỗi cây

Đầu tiên, BS sẽ lấy thơng tin vị trí địa lý, số định danh và năng lượng còn lại của

các nút còn sống trong mạng bằng cách trao đổi thông điệp giữa BS và các nút

mạng. Sau đó, BS phân chia tồn bộ vùng cảm biến thành k cụm (k=5% tổng số nút mạng) cân bằng nhau về số nút trong mỗi cụm như được minh họa trên Hình 5.2 [70, 118]. 0 20 40 60 80 100 Trạm cơ sở (20 nút) (20 nút) (20 nút) (20 nút) 0 20 40 60 80 100 Nút cảm biến Nút cụm trưởng (Nút gốc) Cụm 1 Cụm 2 Cụm 3 Cụm 4 Cụm 5 (20 nút) (a) (b)

Hình 5.2: (a) Minh họa phân cụm mạng gồm 100-nút trong vùng 100m×100m, (b)

Trong thí dụ minh họa này chúng tơi giả sử mạng gồm 100 nút cảm biến được triển khai trong vùng diện tích 100m × 100m.

Hình 5.2(a) minh họa tơ-pơ mạng hoạt động trong một vịng, các nút trong mỗi cụm

được kết nối thành một cây tối thiểu và được truyền dữ liệu như Hình 5.2(b).

Trong mỗi vòng của DFTBC, BS sẽ chọn nút lãnh đạo (CH) cho mỗi cây trong mỗi cụm, chúng có năng lượng còn lại lớn hơn mức năng lượng trung bình Eavg được

tính theo (4.20) và hàm cost() được tính theo (4.7) với các hằng số ec1 (=100/J) và dc2 (=5/m).

Thuật toán Phân chia cụm và chọn nút CH (Thuật toán 5.1)

Input: Các nút mạng, biến k=5.

Output: Các biến Cluster1, ..., Clusterk chứa N/k nút mạng và CH1, ..., CHk chứa

nút lãnh đạo cụm tương ứng.

//Các nút cịn sống gửi thơng tin về vị trí và năng lượng cịn lại đến BS

1: for each nút i trong {Danh sách nút còn sống} do

2: Gửi thơng điệp HELLO có chứa năng lượng cịn lại và vị trí địa lý tới BS end for

//BS nhận thông tin từ các nút, phân chia cụm và chọn nút cụm trưởng như sau:

4: if (round là vòng đầu tiên) then

Chia toàn bộ vùng cảm biến thành năm cụm với số nút cân bằng nhau như Hình 5.2

end if

7: for each mỗi cụm (mạng con) trong mạng do

8: Tính mức năng lượng trung bình của mỗi cụm như trong (4.20) 9: Chọn CH, nút có giá trị hàm cost là lớn nhất như trong (4.7) 10: end for

2. Giai đoạn xây dựng cụm dựa trên cây

Trong phần này cây khung tối thiểu sẽ được xây dựng cho năm cụm dựa trên thuật toán Prim [27] để giải quyết vấn đề đồ thị vô hướng với giá được lựa chọn là

khoảng cách giữa các nút để lấy về tổng khoảng cách giữa các nút trong cụm là nhỏ nhất từ đó tiết kiệm được nguồn năng lượng pin trong khi truyền. Ứng với mỗi cụm,

đầu tiên ta sẽ kết nạp nút gốc (CH) vào cây, sau đó ta lần lượt kết nạp từng nút

ngồi cây có khoảng cách nhỏ nhất từ nó đến một nút trên cây mà khơng tạo thành chu trình. Thuật tốn sẽ kết thúc khi kết nạp được N/k nút vào cây.

Thuật toán xây dựng cụm dựa trên cây (Thuật toán 5.2)

Input: Các nút mạng trong cụm (biến Clusteri chứa N/k nút) Output: Cây TREEi.

1: label[CH] ← 0; //bắt đầu từ nút CH (nút gốc) của cây

2: label[others node] ← MAX; //đặt nhãn khoảng cách cho các nút khác = MAX 3: TREE[CH] ← BS; // nút CH sẽ liên kết với BS để truyền dữ liệu

//Duyệt tất cả các nút còn sống để chọn nút gia nhập cây

4: while ({Danh sách nút cịn sống trong cụm} != ∅) do

5: Tìm kiếm nút i trong {Danh sách nút còn sống} nút có label[i] là nhỏ nhất; 6: endNode ← node i; //chọn nút i có khoảng cách từ i đến nút CH nhỏ nhất

//Tính lại các nhãn khoảng cách cho các nút khác lưu vào biến label

7: for each nút j trong {Danh sách nút còn sống} do 8: if label[j] > d(j, endNode) and (j != endNode) then

9: label[j] = d(j, endNode); //lưu lại khoảng cách mới nhỏ hơn 10: TREE[j] = endNode; //nút j sẽ truyền dữ liệu tới nút i trong cây end if

end for

13: Xóa nút endNode trong {Danh sách nút còn sống trong cụm } ; end while

14: Lập lịch TDMA, mã CDMA cho tất cả các nút trong cụm để truyền dữ liệu; 15: Quảng bá lịch TDMA, mã CDMA và thông tin cây tới các nút còn sống trong mạng;

16: return;

3. Giai đoạn tổng hợp dữ liệu

Sau khi BS chọn CH và xây dựng cây khung nhỏ nhất, lập lịch TDMA, mã CDMA và phân bố lịch TDMA tới các nút không phải CH, mã CDMA tới tất cả các nút CH trong mạng. Các nút cảm biến nhận thông tin cây, lịch TDMA mã CDMA và bắt

đầu thu thập, tổng hợp và nén dữ liệu như Thuật toán 5.3. Trong Thuật tốn 5.3,

chúng tơi có sử dụng một số ký hiệu và kiến thức về mã nén phân tán, chúng được trình bày chi tiết trong Phụ lục 2 (Trang 144), chi tiết thuật toán gồm các bước như dưới đây:

Thuật toán Tổng hợp dữ liệu trên cây (Thuật toán 5.3)

Ký hiệu:

- TREE: thông tin về cây,

- H là ma trận kiểm tra chẵn lẻ nhị phân (xem Phụ lục 2, trường hợp 2)

- Z chứa 23 tập con được sử dụng để xác định dữ liệu ở bộ giải mã

- X, Y, S, V, A, F là các biến sử dụng trong chương trình

- ZS là phần tử có chỉ số nhị phân s trong tập Z (ví dụ, Z000 = (0000, 1111): 000, Z001 = (0111, 1000): 001), (xem Phụ lục 2, trường hợp 2, trang 146)

Input: Gói tin nén, thơng tin cảm biến, TREE, H, Z. Output: Gói tin đã tổng hợp và nén

// Giải nén sau khi nhận được gói dữ liệu từ các nút con trong cây

1: if (nút i trong {TREE} là nút cha) then 2: if (gói dữ liệu đã được nén) then

3: for each (10 bít trong gói dữ liệu được nén) do 4: Lấy Y ← 7 bít cao như thơng tin phụ

5: Lấy sX ← 3 bít thấp cịn lại

6: Tính tốn sY ← H*YT; V ← [sX ⊕ sY]T;

7: Tìm kiếm giá trị X trong tập ZV, cái mà có ZV ⊕ Y = X; 8: Thêm Y và X vào gói gữ liệu giải nén;

end for

10: end if

//Tổng hợp dữ liệu từ các nút con với dữ liệu cảm biến của chính nó

11: Biểu diễn dữ liệu cảm biến của n nút trong ma trận W = {w}n×v

12: A ← Chuyển vị hàng 1 của W

13: for each (i ← hàng từ 2 đến n trong W) do

//Nhân ma trận cột A với ma trận Wi, ta được ma trận U

14: Tính U ← A * Wi;

15: for each (j ← hàng từ 1 đến v trong U) do

16: Aj ← Lấy các phần tử trên đường chéo chính của U, (ujj); 17: Tính F ← F +∑pqupq (p,q=1,2,3,...v);

18: end for

// Tổng hợp dữ liệu giống với công thức (P1.3) và (P1.5) (xem Phụ lục 1).

19: for each (j ← từ 1 đến m) do 20: Mj = Aj/(1-F);

21: end if

// Nén dữ liệu không mất sử dụng DSC

22: if gói dữ liệu cần được nén trong bộ mã hóa then 23: for each (X = 14 bít trong gói dữ liệu) do

24: Đặt Y ← 7 bít cao từ X như thông tin phụ 25: Tính tốn sX ← H*XT

26: Thêm Y và sX vào trong gói dữ liệu mới; end fo

Hoạt động trong Thuật tốn 5.3 được chia thành ba cơng việc chính đó là: (1) giải nén gói dữ liệu nhận được từ các nút con; (2) tổng hợp dữ liệu nhận được từ các nút con thành một gói tin duy nhất và (3) nén gói tin sử dụng DSC. Cơng việc (1) và (2)

được thực hiện bởi các nút cha hoặc CH trong khi công việc (3) được thực hiện bởi

tất cả các nút.

Các câu lệnh từ dòng 3 đến dịng 10 sẽ giải nén gói tin để nhận được thông tin gốc bằng cách đọc một khối 10 bít, lấy 7 bít đầu đặt vào biến Y như "thơng tin phụ", sau

đó gán 3 bít cịn lại vào biến sX, dịng lệnh 6 tính H*YT đặt vào sY và tính [sX ⊕ sY]T

đặt vào biến V (ký hiệu YT là ma trận chuyển vị của ma trận Y). Dịng lệnh 7 tính ZV ⊕ Y đặt vào X và ghi Y, X vào gói gữ liệu giải nén (ZV là phần tử có chỉ số V trong tập Z).

Các dòng lệnh tổng hợp dữ liệu từ dòng 11 đến dòng 21 được thực hiện giống với Thuật tốn 4.3 từ dịng 10 đến dịng 19.

Các dòng lệnh từ dòng 22 đến 28 thực hiện nén dữ liệu theo DSC, dòng 23 đọc mỗi khối dữ liệu 14 bít sau đó tách ra thành 2 dãy, mỗi dãy 7 bít đặt ở các biến X và Y. Theo DSC, chúng ta không gửi cả 14 bít này mà chỉ gửi Y như "thơng tin phụ" và gửi sX = 3 bít nhờ sử dụng phép nhân H*XT (sX chính là chỉ số của tập con ZSx, xem Phụ lục 2, trường hợp 2). Câu lệnh dịng 26 sẽ ghi Y và sX vào gói tin nén (Y+sX = 10 bít thay vì Y + X = 14 bít, nhờ đó giảm được 4 bít).

5.2.2. Giai đoạn truyền dữ liệu

Sau khi hoàn thành chia vùng, xây dựng cụm dựa trên cây, các gói dữ liệu bắt đầu

được truyền từ các nút lá. Đầu tiên, các nút lá từ vị trí xa nhất trong mỗi cây sẽ bắt đầu truyền dữ liệu đến nút cha của nó trong khe TDMA. Các nút cha sẽ nhận dữ

liệu, giải nén và tổng hợp với gói dữ liệu mà nó quan sát được, nén rồi chuyển tiếp

đến nút cha ở mức cao hơn như được minh họa trên Hình 5.2(b). Bất cứ khi nào nút

gốc (CH) nhận được tất cả dữ liệu từ các nút con của nó, nó sẽ chuyển tiếp đến BS theo mã CDMA sau khi tổng hợp và nén theo cách tương tự. Sau một khoảng thời gian, vòng mới sẽ được bắt đầu bằng việc chọn lại nút gốc cũng như xây dựng lại cây khung tối thiểu mới cho mỗi nhóm.

5.3. Kết hợp với lập lịch ngủ 5.3.1. Đặt vấn đề 5.3.1. Đặt vấn đề

Đề xuất thứ hai của chúng tôi trong lược đồ định tuyến theo mơ hình cây khung nhỏ

nhất là lược đồ SSTBC. Trong lược đồ này, toàn bộ vùng cảm biến mạng được chia ra thành các cụm, mỗi cụm được chia thành các ô lưới ảo nhỏ, kích thước lưới ảo nhỏ hơn hoặc bằng một giá trị ngưỡng (Threshold), chúng được thiết lập bởi người dùng. Để tiết kiệm năng lượng, SSTBC chọn những nút có mức năng lượng cịn lại lớn nhất trong số các nút thuộc cùng một ô lưới ảo ở chế độ thức, các nút khác được lập lịch tắt các bộ thu phát sóng vơ tuyến khơng cần thiết của chúng (vào chế độ ngủ) vì các nút ở trong cùng một ơ lưới nhỏ gần nhau dù nó cùng thức thì cũng chỉ quan sát được các thơng tin gần như giống nhau. Hơn nữa, SSTBC còn giảm năng lượng tiêu thụ bằng cách giảm khoảng cách truyền đa chặng của các nút trong cụm dựa trên việc xây dựng cây khung nhỏ nhất.

5.3.2. Phân tích tiêu thụ năng lượng trong giao thức SSTBC

Đặt ψ biểu thị khoảng thời gian của giai đoạn thiết lập "set-up", và tdt (data

transmission) là khoảng thời gian của giai đoạn truyền dữ liệu, do vậy, khoảng thời gian cho mỗi vòng là tround = (ψ + tdt). Giả sử chúng ta coi khoảng thời gian từ khi mạng bắt đầu hoạt động cho đến khi nút đầu tiên trong mạng chết là thời gian sống của mạng cảm biến và ký hiệu là tfnd (dying time of the first node). Do đó, chúng ta có quan hệ giữa thời gian sống của mạng tfnd và t như được hiển thị trong Hình 5.3 dưới đây [62]:

tfnd = NR*tround = u*(ψ + tdt) (5.1) trong đó, NR là số vòng mà mạng đã hoạt động cho đến khi nút đầu tiên chết. Theo giao thức SSTBC, có m gói dữ liệu được truyền trong khoảng thời gian tdt, với:

tround = (ψ + m.Tframe) (5.2)

ở đây, Tframe là thời gian truyền của mỗi gói. Do đó, ta có thời gian sống của mạng

là:

Giai đoạn

thiết lập định trạng tháiGiai đoạn ổn Vòng

Thời gian

Thời gian

Vòng (t )

Xây dựng cây Khe chonút 1 Khe chonút 2 Khe chonút nn

ψ tdt ψ tdt

Giai đoạn ổn định truyền dữ liệu Giai đoạn

thiết lập

round

Một phần của tài liệu (LUẬN án TIẾN sĩ) nghiên cứu giao thức định tuyến tiết kiệm năng lượng cho mạng sensor luận án TS truyền dữ liệu và mạng máy tính 62 48 15 01 (Trang 117 - 125)