Tài nguyên cấp phát cho một người dùng là khung hình chữ nhật nhận

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số lớp bài TOÁN tối ưu KHÔNG lồi THUẬT TOÁN và ỨNG DỤNG (Trang 44)

và (i2 , j2 ) là đỉnh nếu anh ta được cấp hai nút này

Chú ý rằng, nếu ta có T + 2 biến nhị phân bao gồm y, z và x 1 , x2, . . . x T thỏa mãn

T T

T (y + z − 1) ≤ X xi ⇔ T (y + z − 1) − X xi ≤ 0

i=1 i=1

thì: y = z = 1 sẽ kéo theo xi = 1 với mọi i ∈ {1, . . . , T }. Áp dụng kĩ thuật này, ta thiết lập được ràng buộc tổng quát sau:

(|i 1 − i 2 | + 1)(|j 1 − j

trong đó,

I i1 i 2

Jj 1 j2 = {j | min{j 1, j 2 } ≤ j ≤ max{j 1, j2 }} .

Như vậy, bài toán phân bổ tài nguyên cho mạng OFDMA/TDD được phát biểu như sau:

max f(x) := K x ijk ≤ 1 v.đ.k. X k=1 (|i 1 − i 2| + 1)(|j ∀i1, i2 ∈ {1, . . . , M}; j xijk ∈ {0, 1}, i ∈ {1, . . . , M }, j ∈ {1, . . . , N }, k

Ta thấy rằng (RAP) thuộc lớp bài toán quy hoạch tuyến tính với biến 0-1. Trước khi trình bày thuật toán giải bài toán này chúng ta lưu ý rằng số biến nhị phân và số ràng buộc của bài toán sẽ tăng rất nhanh nếu số lượng người dùng, số lượng kênh con và số lượng khe thời gian tăng thêm một chút. Cụ thể, số lượng biến nhị phân của bài toán là

M ·N ·K,

và số lượng ràng buộc là

M ·N +K· MN(MN −1) .

2

2.1.2 Bài toán tối ưu DC đa diện tương đương với bài toán (RAP)

Chúng tôi áp dụng thuật toán DCA để giải bài toán (RAP). Trước hết, ta cần biểu diễn (RAP) dưới dạng một bài toán tối ưu DC tương đương.

Kí hiệu n = K · M · N và

S = {x ∈ R n

| x ∈ [0, 1] n

, x thỏa mãn ràng buộc (2.5), (2.6)}.

Rõ ràng S là một đa diện khác rỗng trong không gian R n . Tập đỉnh của S

được kí hiệu là V (S). Khi đó bài toán (RAP) có thể viết gọn lại như sau

α = min cT x | x ∈ S, x ∈ {0, 1}n

29

Xét hàm p(x) =

trên S, p(x) ≥ 0 với mọi x ∈ S, hơn nữa

Do đó bài toán (2.7) tương đương với bài toán

Định lí về hàm phạt sau đây cho phép đưa bài toán (2.8) về dạng một bài toán tối ưu DC.

Định lí 2.1. (Xem [45, Định lí 2]) Giả sử S là một đa diện lồi bị chặn khác rỗng, f

là một hàm lõm hữu hạn trên S và p là một hàm lõm không âm trên S. Khi đó tồn

tại một số τ0 ≥ 0 sao cho với mọi τ > τ 0 hai bài toán dưới đây có cùng tập nghiệm

tối ưu và cùng giá trị tối ưu: (P τ ) α(τ) = inf {f(x) + τ p(x) | x ∈ S}

(P ) α = inf {f (x) | x ∈ S, p(x) ≤ 0} .

Cụ thể là, nếu tập đỉnh của V (S) chứa trong {x ∈ S, p(x) ≤ 0}, thì τ 0= 0, ngược lại

τ0 = min n

trong đó T := min{p(x) | x ∈ V (S), p(x) > 0} > 0.

Theo kết quả của Định lí 2.1, với số τ đủ lớn (τ > τ 0), bài toán (2.7) được viết lại

dưới dạng tương đương sau

min {c T x + τ p(x) | x ∈ S}.

Bài toán (2.9) thực chất là một bài toán tối ưu DC dạng tổng quát min {g(x) − h(x) | x ∈ R

với các thành phần DC

g(x) = χ S (x) và h(x) = −c

Do tính tương đương, thay vì giải bài toán (2.7) ta giải bài toán (2.10). Dễ thấy

h(x) là hàm lồi đa diện nên bài toán (2.10) là bài toán tối ưu DC đa diện.

Như đã giới thiệu ở Mục 1.1.2, thuật toán DCA giải bài toán (2.10) sinh hai dãy 30

{x k } và {yk }, cụ thể

yk ∈ ∂h(xk ), xk+1 ∈ ∂g∗(yk),

trong đó, dưới vi phân ∂h(x k ) có thể được tính tường minh còn việc tính dưới vi phân

∂g∗ (yk ) sẽ đưa về việc giải một bài toán quy hoạch tuyến tính.

Thật vậy, ta có ∂h(x k) = ∂(−c trong đó và do −p(x k ) = nên ∂h(x k) = −c + d với d

Theo Ví dụ 1.2 (ii) và Ví dụ 1.3 (iv), việc tính xk+1 ∈ ∂g∗(yk ) tương đương với việc giải bài toán quy hoạch tuyến tính

min −hx, yk i | x ∈ S . (2.15)

Sau đây là thuật toán DCA áp dụng cho bài toán (2.10).

Thuật toán 2.1: Thuật toán DCA áp dụng cho bài toán (2.10).

Khởi tạo: Lấy > 0 đủ nhỏ và điểm xuất phát x0 . Gán k := 0 ; er := 1.

Bước 1: Tính yk ∈ ∂h(xk ) theo công thức (2.14).

Bước 2: Tính xk+1 bằng cách giải bài toán quy hoạch tuyến tính (2.15).

Bước 3: Cập nhật er := min

Bước 4: Nếu er < thì dừng thuật toán, kết luận xk+1 là nghiệm thu được

bởi DCA. Ngược lại gán k := k + 1 và quay lại Bước 1.

Chú ý 2.1. Thuật toán DCA áp dụng cho bài toán (2.10) đưa về việc giải một dãy các bài toán quy hoạch tuyến tính. Do đó có thể giải bài toán này một cách hiệu quả.

Bài toán (2.10) là một bài toán tối ưu DC đa diện nên theo [40, Mục 4.2], thuật toán DCA áp dụng cho nó sẽ dừng sau hữu hạn bước lặp, ngoài ra nghiệm thu được còn thỏa mãn một số tính chất đặc biệt như kết quả của định lí dưới đây (xem [40, 46, 55]).

31

Định lí 2.2.(i) Thuật toán DCA áp dụng cho bài toán (2.10) sinh ra một dãy {xk }

nằm trong V (S) sao cho dãy {cT xk + τp(x k )} giảm.

(ii) Tồn tại số thực không âm τ1 sao cho với mọi τ > τ 1 dãy {p(x k )} giảm.

Đặc biệt, nếu tại bước lặp r, x r là nghiệm chấp nhận được của bài toán (2.7)

thì xk , k ≥ r, cũng là nghiệm chấp nhận được của bài toán (2.7).

(iii) Dãy {xk } hội tụ đến x∗ ∈ V (S) sau hữu hạn bước lặp. Điểm x∗ là điểm tới

hạ n của bài toán (2.10) (tức là , ∂g(x

1

, i = 1, . . . , n, thì x∗ là một nghiệm tối ưu địa phương của bài toán (2.10).

2

2.1.3 Thuật toán toàn cục giải bài toán phân bổ tài nguyên cho mạng

không dây OFDMA/TDD (RAP)

Ở mục trước chúng tôi đã mô hình hóa bài toán (RAP) (chính là bài toán (2.7)) dưới dạng một bài toán tối ưu DC đa diện tương đương (bài toán (2.10)) theo nghĩa chúng có cùng tập nghiệm tối ưu toàn cục. Chúng tôi đã sử dụng DCA (Thuật toán 2.1) giải bài toán tối ưu DC đa diện này. Song, như đã biết, DCA là một tiếp cận địa phương, do đó nghiệm thu được từ Thuật toán 2.1 không chắc đã là nghiệm tối ưu toàn cục của bài toán (2.10), tức chưa chắc đã là nghiệm tối ưu toàn cục của bài toán (2.7).

Do tính chất nhị phân của bài toán, thuật toán nhánh cận là phù hợp để tìm nghiệm toàn cục của bài toán (2.7). Chi tiết về lược đồ nhánh cận có thể xem trong [56, 57]. Dưới đây là chi tiết thuật toán nhánh cận cổ điển áp dụng cho bài toán (2.7).

Thuật toán 2.2: Thuật toán nhánh cận giải bài toán (2.7).

Khởi tạo: Đặt R0 = [0, 1]n . Kí hiệu xR 0 là nghiệm của bài toán nới lỏng tuyến

tính của (2.7)

min cT x : x ∈ S, x ∈ R0 .

Nếu xR 0 ∈ {0, 1} n

thì dừng thuật toán và kết luận x R

0 ∈ S ∩ {0, 1} n

là nghiệm tối ưu toàn cục của bài toán (2.7) với giá trị tối ưu là cT xR0 . Ngược lại đặt cận trên γ0 := +∞, R := {R 0}, k := 0; là số dương đủ nhỏ và β0 := β(R 0 ) = cT xR 0 là một cận dưới đầu tiên tương ứng với hộp R0.

Bước 1: Gọi Rk là hộp chữ nhật thỏa mãn βk = β(Rk) = min{β(R) : R ∈ R} và x Rk là nghiệm của bài toán nới lỏng tuyến tính

tương ứng. Lúc này xRk ∈/{0, 1}n nên sẽ tồn tại j ∗ thỏa xRj∗k ∈ (0, 1). Khi đó, chọn chỉ số j ∗ thỏa mãn

max min{xjR , 1 − x jR } = min{x jR∗

j

và chia Rk thành hai hộp con Rk0 và Rk1 qua trục j ∗ xác định bởi Rki = {x ∈ Rk : xj ∗

= i}, i = 0, 1.

Bước 2: Gọi βki , xR k i (i = 0, 1) tương ứng là giá trị tối ưu và nghiệm tối ưu của bài toán tuyến tính nới lỏng của (2.7) hạn chế trên tập Rki :

min

Nếu xR

k i ∈ {0, 1}n thì xR

ki

của bài toán (2.7). Ta cập nhật giá trị cận trên tốt nhất tại thời điểm hiện tại γ0 := min{c T xR k i , γ 0} và nghiệm chấp nhận được x k tương ứng cT x k = γ 0.

Ngược lại xR k i ∈/ {0, 1}n , ta cập nhật R := R ∪ {Rki } và lưu lại giá trị cận dưới βki := β(Rki ) = cT xRk i tương ứng

của hộp Rki .

Bước 3: Cập nhật

R := R\{{R t : β(R t) ≥ γ 0 − , Rt ∈ R} ∪ R k }.

Bước 4: Nếu R = ∅ (tức là, γ 0 − β k ≤ ) thì dừng thuật toán. Kết luận xk là −nghiệm tối ưu

với giá trị tối ưu đạt được là cT xk = γ0 . Ngược lại, gán k := k + 1 và quay trở lại Bước 1.

Như đã biết theo tính chất của quá trình chia nhánh và lấy cận, Thuật toán 2.2 sẽ dừng sau hữu hạn bước lặp và cho nghiệm tối ưu toàn cục của bài toán (2.7). Tuy nhiên theo Định lí 2.2, ta có thể sử dụng Thuật toán 2.1 để tìm cận trên trong Thuật toán 2.2 với hi vọng sẽ nhanh chóng tìm ra được nghiệm chấp nhận được của bài toán (2.7) ngay trong những bước lặp đầu tiên và do đó tăng tốc được thuật toán nhánh cận cổ điển. Tính hiệu quả của việc kết hợp DCA vào lược đồ nhánh cận đã được khẳng định trong những công trình trước đây cho một số lớp bài toán khác nhau (xem [58, 59] và danh mục tài liệu tham khảo kèm theo). Chúng tôi sử dụng kĩ thuật này giải toàn cục cho bài toán (2.7). Dưới đây là nội dung chi tiết của thuật toán.

Thuật toán 2.3: Thuật toán nhánh cận kết hợp DCA giải bài toán (2.7).

Khởi tạo: Đặt R0 = [0, 1]n . Kí hiệu x R0 là nghiệm của bài toán tuyến tính nới lỏng của (2.7)

min cT x : x ∈ S, x ∈ R 0 .

Nếu xR 0 ∈ {0, 1}n thì dừng thuật toán và kết luận xR0 ∈ S ∩ {0, 1}n là nghiệm tối ưu toàn cục của bài toán (2.7) với giá trị tối ưu là

cT xR 0 .

33

Ngược lại, đặt R := {R 0}, k := 0; là số dương đủ nhỏ và β0 := β(R 0 ) = cT xR 0 là một cận dưới đầu tiên tương ứng với hộp R 0 . Dùng DCA giải bài toán(2.10) với điểm xuất phát

xR0 , thu được nghiệm x Rτ0 . Đặt UBτ := c T xRτ0 + τp(x Rτ0 ). Nếu x Rτ0 ∈ {0, 1}n thì γ 0 := UB τ , ngược lại γ 0 := +∞.

Bước 1: Gọi Rk là hộp chữ nhật thỏa mãn βk = β(Rk) = min{β(R) : R ∈ R} và x Rk là nghiệm của bài toán tuyến tính nới lỏng tương ứng. Lúc này xRk ∈/

{0, 1}n nên sẽ tồn tại j ∗ thỏa xjR∗k

max

j

và chia Rk thành hai hộp con Rk0

R ki = {x ∈ R k : xj ∗ = i}, i = 0, 1.

Bước 2: Gọi βki , xR k i (i = 0, 1) tương ứng là giá trị tối ưu và nghiệm tối ưu của bài toán tuyến tính nới lỏng của bài toán (2.7) hạn chế trên tập Rki :

min cT x : x ∈ S, x ∈ R ki .

(i) Nếu xR k i ∈ {0, 1} n thì xR k i ∈ S ∩ {0, 1} n là một nghiệm chấp nhận được của bài toán (2.7), cập nhật giá trị cận trên tốt nhất tại thời điểm hiện tại

γ0 := min{c Tx R ki , γ0} và nghiệm chấp nhận được xk tương ứng cT xk = γ 0.

(ii) Ngược lại xR k i ∈/ {0, 1}n , cập nhật R := R ∪ {Rki } và lưu lại giá trị cận dưới β(R ki ) = β ki tương ứng của hộp Rki .

(iii) Nếu

cT x Rk i + τp(x R ki ) < min{γ 0, UB τ }

thì ta khởi động lại DCA cho bài toán (2.10) với điểm xuất phát xRk i để thu được nghiệm x Rτk

i . Đặt U Bτ := cT xRτk

i + τp(x Rτk

i ). Nếu xRτk

i

thì cập nhật cận trên γ0 := min{c T xRτk i , γ 0} và nghiệm chấp nhận được xk tương ứng γ0 = c T xk.

Bước 3: Cập nhật

R := R\{{R t : β(R t) ≥ γ 0 − , Rt ∈ R} ∪ R k }.

Bước 4: Nếu R = ∅ (tức là, γ0 − βk ≤ ), thì dừng thuật toán. Kết luận xk là −nghiệm tối ưu với

giá trị tối ưu đạt được là cT x k = γ0 . Ngược lại, gán k := k + 1 và quay trở lại Bước 1.

34

download by : skknchat@gmail.com

Theo tính chất của lược đồ nhánh cận, định lí sau đảm bảo tính đúng đắn của Thuật toán 2.2 và Thuật toán 2.3, chi tiết chứng minh có thể xem trong [44, Định lí 7.6].

Định lí 2.3. Thuật toán 2.2 và Thuật toán 2.3 dừng sau hữu hạn bước lặp và cho

kết quả là - nghiệm tối ưu của bài toán (2.7).

Chú ý 2.2. Như đã biết sự hiệu quả của thuật toán DCA phụ thuộc vào

phân tích DC và cách chọn điểm xuất phát. Đối với Thuật toán 2.1 nếu ta có chiến lược chọn điểm khởi tạo tốt thì nghiệm thu được sẽ nhanh tiến vào miền chấp nhận được của bài toán (2.7). Cách làm sau tương tự như cách làm trong tài liệu [58, 59]. Xuất phát từ x 0 ta dùng DCA để giải bài toán tối ưu lõm dưới đây để thu được điểm khởi tạo cho Thuật toán 2.1:

n

min ( X

i=1

Chú ý rằng, bài toán (2.18) là một bài toán tối ưu DC đa diện đã biết giá trị tối ưu (bằng 0) và đặc biệt, tập nghiệm tối ưu toàn cục của nó là S ∩ {0, 1}n ,

cũng chính là tập chấp nhận được của bài toán (2.7).

2.1.4 Kết quả tính toán thử nghiệm

Các thuật toán được lập trình bằng C++, thử nghiệm trên máy tính cá nhân cấu hình Intel Core i3, CPU 2.2GHz, 4G RAM. Các bài toán quy hoạch tuyến tính sử dụng trong thuật toán DCA và trong quá trình tính cận dưới được giải bằng CLP solver, một solver mở trong thư viện COIN-OR (www.coin-or.org).

Để đánh giá sự hiệu quả của thuật toán, chúng tôi sinh 10 bộ dữ liệu ngẫu nhiêu cho bài toán (RAP) (bài toán (2.7)), số lượng biến tăng dần bằng cách thay đổi số lượng người dùng, khe thời gian và số lượng kênh con. Trong thử nghiệm này chúng tôi so sánh Thuật toán 2.3 (nhánh cận kết hợp DCA) với lược đồ nhánh cận cổ điển (Thuật toán 2.2). Lấy τ = 10 6 , = 5.10−2 và giới hạn 105 bước lặp được dùng cho mỗi lần chạy thuật toán, nếu sau 105 bước lặp thuật toán chưa dừng ta coi như thuật toán đó "thất bại" trong việc tìm −nghiệm tối ưu cho trường hợp cụ thể đó. Kết quả tính toán thử nghiệm Thuật toán 2.2 và Thuật toán 2.3 được tóm tắt trong Bảng 2.1, trong đó ta sử dụng các kí hiệu sau:

#Var: Số lượng biến

#Constr: Số lượng ràng buộc

#Iter: Số bước lặp

Từ Bảng 2.1, ta rút ra một số nhận xét sau:

• Thuật toán DCA tìm ra nghiệm chấp nhận được của bài toán (RAP) nhanh, chỉ trong lần chạy DCA đầu tiên hoặc thứ hai. Trong nhiều trường hợp, nghiệm thu

Bảng 2.1: Kết quả giải bài toán (RAP) bằng Thuật toán 2.2 và Thuật toán 2.3 No. M N 1 3 3 2 4 4 3 4 4 4 3 3 5 4 4 6 4 4 7 5 5 8 6 6 9 5 4 10 5 5

được này xấp xỉ nghiệm tối ưu toàn cục. Tuy nhiên để kiểm chứng tính tối ưu toàn cục chúng ta vẫn phải chạy thuật toán nhánh cận đến khi cận trên và cận dưới đủ gần nhau. Có thể thấy chất lượng nghiệm chấp nhận được thu bởi DCA là tốt và đáng tin cậy. Vì vậy khi yêu cầu về thời gian khắt khe, ta có thể sử dụng luôn kết quả thu được từ DCA.

• DCA cho kết quả trong thời gian ngắn giúp tăng tốc thuật toán nhánh cận cổ điển. Khi số biến càng lớn thì sự hiệu quả của thuật toán nhánh cận kết hợp DCA so với thuật toán sử dụng lược đồ nhánh cận truyền thống càng được thể hiện rõ.

2.2 Thuật toán giải bài toán năng lượng phủ cảm biến cho mạng cảm biến vô tuyến

Mạng cảm biến vô tuyến (Wireless sensor networks) bao gồm một tập hợp (số lượng từ chục đến hàng nghìn) các cảm biến (sensor nodes) sử dụng các liên kết vô tuyến hoạt động trên một vùng địa lí để thu thập dữ liệu từ môi trường xung quanh. Cảm biến có kích thước nhỏ và chỉ sử dụng năng lượng từ pin, có chức năng thu thập các thông tin chẳng hạn như: nhiệt độ, độ ẩm, ánh sáng,.... từ môi trường xung quanh

để gửi về cho người sử dụng thông qua một trạm thu nhận nào đó. Các cảm biến có thể hoạt động trong những điều kiện khắc nghiệt vì vậy nó được ứng dụng trong rất nhiều lĩnh vực, chẳng hạn như dự báo thiên tai (lũ lụt, cháy rừng, sóng thần,...), nông nghiệp, quân sự, y tế, thiết kế nhà ở, văn phòng thông minh,... Chi tiết về mạng cảm biến vô tuyến có thể xem trong [60] và danh mục các tài liệu tham khảo kèm theo. Một trong những bài toán thu hút được sự quan tâm nghiên cứu khi thiết kế một mạng cảm biến vô tuyến là bài toán phủ cảm biến (sensor coverage problem) [61], mục đích xác định số lượng tối thiểu các cảm biến sao cho mỗi điểm đích (target node) của vùng cần giám sát đều được thu thập thông tin bởi ít nhất một cảm biến. Tuy nhiên, để duy trì hoạt động của mạng hiệu quả thì việc sử dụng năng lượng một cách hữu hiệu

36

và tiết kiệm là một vấn đề quan trọng (xem chi tiết trong [62, 63, 64, 65, 66, 67, 68]). Gần đây, Astorino và Miglionico [39] đã nghiên cứu vấn đề này và đề xuất mô hình bài

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số lớp bài TOÁN tối ưu KHÔNG lồi THUẬT TOÁN và ỨNG DỤNG (Trang 44)