Giới thiệu ngôn ngữ AMPL (MathProg)

Một phần của tài liệu Đề xuất các thuật toán định tuyến đem lại hiệu quả năng lượng trong mạng cảm biến không dây (Trang 60)

MathProg là ngôn ngữ chuyên dụng cho GLPK để mô tả các bài toán quy hoạch, MathProg là tập con của ngôn ngữ AMPL (A Mathematical Programming Language) – ngôn ngữ phổ biến để mô tả các bài toán quy hoạch được hầu hết các phần mềm toán học hỗ trợ. MathProg còn được gọi là GMPL. Sau đây tác giả giới thiệu một số câu lệnh cơ bản sử dụng trong AMPL.

- Câu lệnh set: set name alias domain , attrib , . . . , attrib;

+ name: là ký hiệu đặt tên. + alias: là bí danh

+ domain: vùng làm việc đặt trong {... }

+ attrib , . . . , attrib: là những thuộc tính tùy chọn, cụ thể:

n là chỉ định kích cỡ của bộ dữ liệu là n

:= là biểu thức gán giá trị.

within là chỉ định các giá trị phải nằm trong một tập cha chỉ định.

default là giá trị mặc định gán cho tham số khi không có giá trị thích hợp. Ví dụ:

set V;

set E within V cross V;

set step{s in 1..maxiter} dimen 2 := if s = 1 then E else step[s-1] union set of {k in V, (i, k) in step[s-1], (k, j)

in step[s-1]}(i, j);

set A{i in I, j in J}, within B[i+1] cross C[j-1], within D diff E, default

{('abc',123), (321,'cba')};

- Câu lệnh tham số: param name alias domain , attrib , . . . , attrib ;

+ name là một tên của tham số;

+ alias là một bí danh của tham số

+ domain là vùng làm việc đặt trong {... }

+ attrib,. . . , attrib là thuộc tính tùy chọn của tham số (thuộc tính trên có thể bỏ qua), các thuộc tính tùy chọn của tham số là:

Integer là kiểu số nguyên

Binary là kiểu nhị phân

Symbolic là kiểu ký kí hiệu

Biểu thức quan hệ là <, <=, =, ==, >=, >, <>, != Biểu thức := là biểu thức gán giá trị cho tham số.

Biểu thức default là giá trị gán cho tham số khi không có giá trị thích hợp gán cho tham số.

Ví dụ:

param units{raw, prd} >= 0; param profit{prd, 1..T+1};

61

param N := 20, integer, >= 0, <= 100;

param comb 'n choose k' {n in 0..N, k in 0..n} :=

if k = 0 or k = n then 1 else comb[n-1,k-1] + comb[n-1,k];

param p{i in I, j in J}, integer, >= 0, <= i+j,

in A[i] symdiff B[j], in C[i,j], default 0.5 * (i + j);

param month symbolic default 'May' in {'Mar', 'Apr', 'May'};

- Khai báo biến: var name alias domain , attrib , . . . , attrib ;

+ name là một tên của tham số;

+ alias là một bí danh của tham số

+ domain là vùng làm việc đặt trong {... }

+ attrib,. . . , attrib là thuộc tính tùy chọn của tham số (thuộc tính trên có thể bỏ qua), các thuộc tính tùy chọn của tham số là:

Integer là Kiểu số nguyên

Binary là Kiểu nhị phân Các biểu thức: >=, <=, = Ví dụ:

var x; (khai báo biến x thực)

var x; y integer; z binary; (khai báo x thực, y nguyên, z là biến 0-1)

var x <=2, >=-2, integer; y; (khai báo x nguyên thỏa mãn -2≤ ≤ 2, y thực không âm)

(Biến y không khai báo ràng buộc thì ngầm định là >=0 )

- Khai báo ràng buộc: s.t. cụ thể:

s.t. name alias domain : expression , = expression ; s.t. name alias domain : expression , <= expression ; s.t. name alias domain : expression , >= expression ;

s.t. name alias domain : expression , <= expression , <= expression ; s.t. name alias domain : expression , >= expression , >= expression ;

Ví dụ:

s.t. abc: x + 2 * y <= 1; (abc là tên của ràng buộc) s.t. abc: x + y + z, >= 0, <= 1;

- Khai báo hàm mục tiêu: maximize hoặc minimize, cụ thể:

minimize name alias domain : expression ; maximize name alias domain : expression ;

Ví dụ:

minimize abc: x + 1.5 * (y + z); (abc là tên của hàm mục tiêu)

- Lệnh giải bài toán: solve

- Lệnh hiển thị: display

Ví dụ:

62

display: 'Bien x =', x, 'Bien y =', y, 'Bien z =', z; display sqrt(x ** 2 + y ** 2 + z ** 2);

- Lệnh kết thúc bài toán: end

- Viết ghi chú: dùng ký tự # hoặc cặp kí tự /* và */

#Ghi chú /* Ghi chú 1 Ghi chú 2 */

- Điều kiện if:

if b then x else y if b then x

- Vòng lặp For:

for domain : statement ;

for domain : f statement . . . statement g ;

Ví dụ:

for {(i,j) in E: i != j}

{ printf "flow from %s to %s is %g\n", i, j, x[i,j]; check x[i,j] >= 0;

}

for {i in 1..n}

{ for {j in 1..n} printf " %s", if x[i,j] then "Q" else "."; printf("\n");

}

for {1..72} printf("*");

Trên đây là một số câu lệnh cơ bản về MathProg, chi tiết được đề cập cụ thể tại tài liệu [20]

3.1.3. Mô hình toán học cho vấn đề định tuyến tối ƣu trong mạng cảm biến không dây.

3.1.3.1. Phƣơng pháp mô hình hóa toán học

Nhiều vấn đề phát sinh trong thực tế có thể giải được bằng cách áp dụng các phương pháp tối ưu toán học. Tuy nhiên, điểm mấu chốt ở đây là từ bài toán thực tế cần xây dựng được một mô hình tối ưu thích hợp dựa vào các dạng bài toán tối ưu đã biết. Sau đó cần áp dụng phương pháp tối ưu toán học và quy trình tính toán thích hợp để tìm ra lời giải cho mô hình đã đặt ra.

Các bước cần thiết tiến hành khi áp dụng phương pháp mô hình hoá toán học có thể được phát biểu một cách khái quát như sau:

Bước 1: Trước hết phải khảo sát bài toán thực tế và phát hiện vấn đề cần giải quyết.

63

Bước 2: Phát biểu các điều kiện ràng buộc và mục tiêu của bài toán dưới dạng định tính. Sau đó lựa chọn các biến quyết định / các ẩn số và xây dựng mô hình định lượng còn gọi là mô hình toán học.

Bước 3: Thu thập dữ liệu và lựa chọn phương pháp toán học thích hợp để giải quyết mô hình trên. Trong trường hợp mô hình toán học là mô hình tối ưu, cần lựa chọn phương pháp tối ưu thích hợp để giải mô hình.

Bước 4: Xác định quy trình giải / thuật toán. Có thể giải mô hình bằng cách tính toán thông thường trên giấy. Đối với các mô hình lớn, bao gồm nhiều biến và nhiều điều kiện ràng buộc cần tiến hành lập trình và giải mô hình trên máy tính để tìm ra phương án thỏa mãn mô hình.

Bước 5: Đánh giá kết quả tính toán. Trong trường hợp phát hiện thấy có kết quả bất thường, cần xem xét nguyên nhân, kiểm tra và chỉnh sửa lại mô hình hoặc dữ liệu đầu vào hoặc quy trình giải / thuật toán / chương trình máy tính.

Bước 6: Kiểm chứng các kết quả tính toán trên thực tế. Nếu các kết quả thu được, được coi là hợp lý, phù hợp với thực tế hay được các chuyên gia đánh giá là có hiệu quả hơn so với các phương án trước đây thì cần tìm cách triển khai phương án tìm được trên thực tế.

3.1.3.2. Xây dựng mô hình toán học cho vấn đề định tuyến tối ƣu.

Bài toán: Một mạng lưới cảm biến G(V,L)ở đây V là tập hợp các nút, L là tập hợp liên kết giữa các nút. Mỗi nút i được khởi tạo với mức năng lượng là Ei và năng lượng tiêu thụ để truyền một gói tin trên liên kết L(i,j) là elij. Lấy Qi là lượng dữ liệu được tạo ra hoặc nhận tại nút i. Lấy T là thời gian cho đến khi một nút hết năng lượng. Lấy qi,j là lưu lượng dữ liệu trên liên kết L(i,j) trong thời gian T. Vấn đề đặt ra là tối đa hóa thời gian hoạt động (sống) của mạng cảm biến.

Xây dựng mô hình toán:

Hàm mục tiêu: Maximize: T Các rằng buộc: ] ... 1 [ : 0 , 1 , QT q i N q N j j i N j i j        ] ... 1 [ : 1 , , el E i N q i N i j i j i      T N Q q N i i * * 1 0 ,   

64 ] ... 1 [ , : 0 , i j N qi j   

Mô hình toán trên, tác giả sẽ sử dụng công cụ GLPK kết hợp với ngôn ngữ lập trình AMPL để tìm nghiệm tối ưu cho vấn đề định tuyến tối ưu. Ví dụ, một mạng cảm biến với 5 nút mạng, thì mô hình toán sẽ được xây dựng trên GLPK như sau:

//---Main---

param n_sensors, integer, > 0;

param el{i in 1..n_sensors, j in 1..n_sensors}, >= 0; param E{i in 2..n_sensors}, >= 0;

param Q;

var q{i in 1..n_sensors, j in 1..n_sensors}, >= 0; var T;

s.t. forall{i in 2..n_sensors}: sum{j in 2..n_sensors} q[j,i]+Q*T =sum{j in 1..n_sensors} q[i,j];

s.t. forall2{i in 2..n_sensors}: sum{j in 1..n_sensors} el[i,j]*q[i,j] - E[i]<=0; s.t. forall3: sum{i in 2..n_sensors}q[i,1]=Q*(n_sensors-1)*T;

maximize obj: T ; solve;

display T; data;

param n_sensors := 5;

// Thiết lập mức năng lượng khởi tạo

param E :=2 2e+006,3 2e+006,4 2e+006,5 2e+006,; // Thiết lập giá trị Q param Q := 1 ; param el : 1 2 3 4 5 := 2 6730 1000000 6484 221 1249 3 263706484 1000000 4721 6673 4 9089 221 4721 1000000 730 5 9577 1249 6673 730 1000000 ; //---End code---

Để thiết lập năng lượng tiêu thụ elij truyền tải một gói tin trên liên kết L(i,j) như trên, tác giả sử dụng mô hình năng lương đơn giản [28]:

Công thức tính năng lượng: E(S)= αd2; E(D)=0; với α>0

65

ở đây S là nút nguồn, D là nút đích, E(S) là năng lượng sử dụng của nút S và d là khoảng cách từ S tới D. Từ Công thức trên cho thấy, năng lượng để truyền tải một đơn vị dữ liệu là tỉ lệ thuận với bình phương khoảng cách đến một địa điểm, và không có năng lượng tại các điểm đích, để đơn giản ta đặt α= 1.

Với bài toán tuyến tính tối ưu ở trên, có thể dễ dàng giải quyết với công cụ GLPK (tuy nhiên vấn đề này không phải luôn sẵn sàng và dễ dàng thực hiện bên trong các nút cảm biến. Do đó, phương pháp Heuristic được đề xuất đề giải quyết vấn đề trên.

3.2. Thuật toán Heuristic

3.2.1. Giới thiệu thuật toán Heuristic

Heuristic là phương pháp giải quyết vấn đề bằng cách đánh giá kinh nghiê ̣m, và tìm giải pháp qua thử nghiệm và rút tỉa khuyết điểm.

Từ Heuristic sử dụng trong thuật toán dùng để tìm giải pháp trong số những cái có thể, nhưng không đảm bảo rằng cái tốt nhất sẽ được tìm thấy, do đó họ có thể giả định đó là thuật toán xấp xỉ và không chính xác. Các thuật toán này thường tìm ra một giải pháp gần như tốt nhất và thường chúng tìm thấy nhanh chóng và dễ dàng. Thỉnh thoảng các thuật toán này có thể chính xác và thực sự tìm ra giải pháp tốt nhất, nhưng thuật toán vẫn được gọi là Heuristic, cho đến khi giải pháp tốt nhất này được chứng minh là phương pháp tốt nhất.

Có nhiều phương pháp để xây dựng một thuật toán Heuristic, trong đó người ta thường dựa vào một số nguyên lý sau:

+ Nguyên lý vét cạn thông minh: Trong một bài toán tìm kiếm nào đó, khi không gian tìm kiếm lớn, ta thường tìm cách giới hạn không gian tìm kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu.

+ Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán làm tiêu chuẩn chọn lựa làm hành động cho phạm vi cục bộ của từng bước (hay tưng giai đoạn) trong quá trình tìm kiếm lời giải.

+ Nguyên lý thứ tự: Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt nhất.

+ Hàm Heuristic: Trong việc xây dựng thuật toán Heuristic, người ta thường dùng các hàm Heuristic. Đó là hàm đánh giá thô, giá trị của hàm phụ thuộc vào giá trị hiện tại của bài toán tại mỗi bước giải. Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật toán.

3.2.2. Phƣơng pháp Heuristic (SP_RE) cho vấn đề định tuyến trong WSN

Phương pháp Heuristic được thực hiện để kéo dài thời gian hoạt động của WSN có một số đặc điểm sau:

66

+ Một vòng truyền dữ liệu được định nghĩa là khoảng thời gian một nút nguồn ngẫu nhiên truyền dữ liệu đến một nút đích ngẫu nhiên.

+ Thời gian hoạt động (thời gian sống) được định nghĩa là tổng số vòng gửi dữ liệu giữa các nút cảm biến cho đến khi nút đầu tiên hết năng lượng.

+ Đường đi ngắn nhất cho phương pháp được tính toán bằng cách sử dụng thuật toán Dijkstra [11].

Cụ thể, thuật toán SP_RE được phát biểu như sau:

Chúng ta hãy xác định một trọng số của một liên kết bất kỳ là:

) ( 1 ) ( j e i W

trong đó e(j) là năng lượng còn lại của nút j trên liên kết. Cho một nguồn nút s và một nút đích d, tìm một đường đi đơn từ s tới d sao cho tổng trọng số của tất cả các liên kết tham gia trong việc truyền tải dữ liệu là nhỏ nhất.

(Kết thúc thuật toán)

Hình 3.1 minh họa thuật toán SP_RE, với nút N1 là nguồn, nút N6 là đích sẽ có 2 con đường dẫn từ N1 đến N6 với tổng nghịch đảo mức năng lượng còn lại của 2 đường đi là:

-Tổng mức tiêu thụ năng lượng cho đường đi (1, 2, 3, 6) là:

-Tổng mức tiêu thụ năng lượng cho con đường (1, 4, 5, 6) là:

Do đó, các thuật toán SP_RE sẽ chọn đường dẫn (1, 2, 3, 6).

Hình 3.1. Phương pháp SP_RE N1 2 N2 1 N3 1 N6 1 N4 1 N5

67

3.3. Mô phỏng

Trong phần này tác giả sử dụng ngôn ngữ lập trình Visual C++ để mô phỏng mạng cảm biến không dây với việc sử dụng thuật toán Heuristic cho vấn đề định tuyến đường đi. Đồng thời, tác giả sử dụng phần mềm GNU Linear Programming Kit (GLPK) kết hợp với ngôn ngữ lập trình AMPL để tìm nghiệm của mô hình toán, sau đó so sánh đánh giá nghiệm của hai phương pháp.

3.3.1. Đặc điểm kênh vô tuyến [28]

Trong kênh vô tuyến, quá trình truyền sóng điện từ có thể được mô hình bằng quy luật hàm giảm công suất ở khoảng cách giữa bộ phát và bộ thu. Thêm vào đó, nếu giữa bộ phát và bộ thu không truyền theo đường truyền thẳng mà bị cản trở bởi chướng ngại vật thì khi đó song điện từ sẽ đến bộ thu bằng các đường khác nhau tại thời điểm khác nhau. Điều này gây ra hiện tượng phading đa đường. Vấn đề là ta sử dụng mô hình nào (mô hình đường truyền thẳng hay mô hình phading đa đường) trong mạng cảm biến. Ta biết công suất thu được tại bộ thu sẽ giảm khi khoảng cách giữa bên phát và bên nhận tăng lên. Theo “Wendi” thì cả hai mô hình này đều được sử dụng tùy thuộc vào khoảng cách giữa bên truyền và bên phát. Nếu khoảng cách giữa bên phát và bên thu nhỏ hơn khoảng cách dcross-over thì mô hình không gian được sử dụng (suy hao d2) và nếu ngược lại thì mô hình 2 đường dẫn được sử dụng (suy hao d4).

Điểm cắt (cross-over) được định nghĩa như sau:

Trong đó:

L 1: hệ số suy hao hệ thống không liên quan đến quá trình truyền hr: chiều cao của anten bên nhận so với mặt đất

ht: là chiều cao của anten phát so với mặt đất λ: là bước song của tín hiệu song mang

Nếu khoảng cách truyền nhỏ hơn dcross-over thì công suất truyền suy hao được tính như sau :

Trong đó :

Pr(d) : công suất nhận được ở khoảng cách d Pt: công suất bên truyền

Gt: hệ số khuếch đại của anten bên truyền G r: hệ số khuếch đại của anten bên nhận λ: là bước song của tín hiệu sóng mang

68

L 1:hệ số suy hao hệ thống không liên quan đến quá trình truyền d: khoảng cách giữa bên truyền và bên nhận

Phương trình này mô hình sự suy hao khi bên phát và bên thu có sự thông tin tầm nhìn thẳng (truyền thẳng không có chướng ngại vật), điều này chỉ xảy ra nếu như bên phát và bên thu gần nhau (d< dcross-over). Nếu khoảng cách (d> dcross- over) thì ta có công thức sau :

Trong đó :

Pr(d) : công suất nhận được ở khoảng cách d Pt: công suất bên truyền

Hr: chiều cao của anten bên nhận so với mặt đất ht: là chiều cao của anten phát so với mặt đất

Một phần của tài liệu Đề xuất các thuật toán định tuyến đem lại hiệu quả năng lượng trong mạng cảm biến không dây (Trang 60)

Tải bản đầy đủ (PDF)

(103 trang)