Chứng minh.
Hj = [0, b] \ [0, a j ) = [0, b] ∩ ([0, X] \ [0, a
Xi > max{bi , aij , j ∈ J1 }, i = 1, . . . , n. Dựa vào Mệnh đề 1.6 ta có
với vjk Chú ý rằng, nếu ajk ≤ b k thì nếu ajk > bk ta có [0, b] ∩ [vjk vjk ≤ b và [0, b] ∩ [vjk , X] = [v jk , b]. Ngược lại, , X] = ∅. Suy ra Hj =v[∈Tj [v, b], với Tj = {v jk , k = 1, . . . , n|v Tj 6= ∅ do g j(b) ≥ g(b) ≥ 0, j
đối đa khối với tậ p đỉnh T = {∨ j∈J 1 z
z i= maxj∈J1 zj
i với mọi i = 1, ..., n.
(ii) Suy ra từ Mệnh đề 1.7.
Hệ quả 2.1. Điểm u = ∨j∈J1 uj , với uj = vjk j = ajkj ekj ∈ Tj , kj = argmin{ajk |ajk ≤ bk, k ∈ {1, . . . , n}} thuộc vào tập H.
Chứng minh. Suy ra trực tiếp từ lập luận trong chứng minh của Bổ đề 2.2 (i).
40
Kí hiệu V là tập tất cả các đỉnh chính của đối đa khối H. Khi đó,
H = z[∈V [z, b], V 6= ∅.
Chú ý 2.3.(i) Mỗi nghiệm tối ưu địa phương của bài toán (2.21) là một đỉnh
chính của đối đa khối H.
Thật vậy, giả sử x ∈ H là một nghiệm tối ưu địa phương của bài toán (2.21) và x không phải là một đỉnh chính của H. Khi đó, tồn tại z¯ ∈ V, z¯ 6= x sao cho
x ∈ [¯z, b]. Hơn nữa, do tính tối ưu địa phương của điểm x đối với bài toán (2.21)nên luôn tồn tại số ε > 0 sao cho f(x) ≤ f (y), với mọi y ∈ B(x, ε) ∩ H. Lấy
điểm x¯ = x −
thuẫn với điều giả sử.
Kết hợp với kết quả của Bổ đề 2.2, tập tất cả các nghiệm tối ưu địa phương của bài toán (2.21) cũng chính là tập tất cả các đỉnh chính V của đối đa khối H.
(ii) Chú ý rằng V ⊂ T, với T là tập đỉnh của H được xác định như trong chứng minh của Bổ đề 2.2 (i). Từ Mệnh đề 1.5, bài toán này tương đương với bài toán tối ưu đơn điệu rời rạc sau đây
min
v.đ.k.
(iii) Trong tính toán, để giải bài toán (2.22), thực tế rất khó để có thể
tìm được toàn bộ tập đỉnh chính V cũng như là tập đỉnh T của H khi cỡ bài toán lớn. Để giảm bớt khó khăn này, chúng ta xét tập hữu hạn
S = {x ∈ [0, b]|xi ∈ {0, aji , j ∈ J1 }, i ∈ {1, . . . , n}} ⊃ T ⊃ V. Khi đó
H ⊃ {x ∈ S | g(x) ≥ 0} ⊃ V
và như vậy bài toán
min
v.đ.k.
x ∈ S.
41
tương đương với bài toán (2.22) hay bài toán (2.21), theo nghĩa chúng có cùng nghiệm tối ưu toàn cục.
Bài toán (2.23) thuộc lớp các bài toán tối ưu đơn điệu rời rạc tổng quát và ta có thể áp dụng lược đồ nhánh-giảm-cận để giải toàn cục bài toán này.
2.2.3 Thuật toán toàn cục nhánh-giảm-cận (BRB) giải bài toán (SCEP)
Trong phần này chúng tôi sẽ thiết kế thuật toán dựa trên lược đồ nhánh- giảm-cận (BRB) để tìm nghiệm toàn cục cho bài toán (2.23) tức bài toán (SCEP). Chúng tôi cũng đề xuất một cải tiến cho thủ tục tìm điểm chấp nhận được (tính cận trên) của lược đồ nhánh-giảm-cận. Điểm chấp nhận được thu được thông qua quá trình tìm nghiệm địa phương của bài toán (2.21). Nghiệm địa phương này, theo Bổ đề 2.2, thuộc vào tập đỉnh chính của đối đa khối H.
Như đã đề cập ở Mục 1.2.2, lược đồ nhánh-giảm-cận gồm ba thủ tục chính là chia nhánh, cắt giảm và tính cận. Tùy thuộc vào từng bài toán ta có các bước cụ thể cho ba thủ tục này. Sau đây là chi tiết các thủ tục này khi áp dụng kĩ thuật nhánh-giảm-cận giải bài toán (2.23).
Thủ tục chia nhánh
Giả sử tại thời điểm hiện tại ta đang xét hộp B = [p, q], [p, q] ⊂ Rn . Thủ tục chia hộp B = [p, q] hoàn toàn giống như lược đồ nhánh-giảm-cận tổng quát đã trình bày trong Mục 1.2.2. Cụ thể, ta xác định chỉ số iB ∈ {1, ..., n} sao cho
qiB − p iB = max (qi − p i).
Đặt r iB = (q iB + p iB )/2 và chia B thành hai hộp con
B+ B−
Thủ tục cắt giảm
Giả sử tại thời điểm hiện tại ta đang xét hộp B = [p, q]. Trước khi tiến hành tính một cận dưới của f (x) trên hộp này ta sẽ tìm cách cắt hộp B nhiều nhất có thể mà vẫn không làm mất các nghiệm chấp nhận được tiềm năng, tức là giá trị hàm mục tiêu tại đó tốt hơn giá trị hàm mục tiêu hiện tại. Cụ thể là, nếu γ là giá trị hàm mục tiêu tốt nhất hiện tại của f(x), khi đó thay hộp [p, q] bằng một hộp nhỏ hơn [p0, q 0] = red γ [p, q] mà vẫn chứa các nghiệm chấp nhận được nằm trong B và thỏa mãn f (x) ≤ γ; sau đó, dùng S-hiệu chỉnh thu được redSγ [p, q] = [˜p,q˜], vớip˜ = dp 0eS vàq˜ = bq 0cS .
Đối với bài toán (2.23) ta có kết quả sau, có thể xem như một hệ quả trực tiếp từ Mệnh đề 1.11.
42
Mệnh đề 2.1. Nếu tồn tại một nghiệm chấp nhận được x ∈ [p, q] và f (x) ≤ γ thì g(q) ≥ 0 và f(p) ≤ γ. Điểm x này luôn thuộc hộp [p0, q0] xác định bởi
trong đó,
với mọi i = 1, . . . , n.
Theo Mệnh đề 2.1 ta thấy rằng, nếu g(q) < 0 hoặc f(p) > γ thì red Ngược lại, ta sẽ sử dụng công thức (2.24), (2.25) và (2.26) để tìm p0, q0.
Cụ thể, với mỗi i ∈ {1, . . . . , n}, nếu pi
pi = qi. Trong trường hợp còn lại, nếu pi < qi thì ta tính p0 = q − ηi = min j∈J1 ηij , với
= qi − a j
qi − p i
Sau khi thu được p0, nếu pi0 = q i thì từ (2.24) ta có qi0 = p i0 = q i, ngược lại ta tính
n
q0 = p 0+ i=1
P
Như đã đề cập ở trên, sau khi tính xong p0, q0 ta sẽ tính p˜ = dp 0eS và q˜ = bq 0cS . Vì vậy nếu p˜ q˜ thì [p 0, q0] ∩ S = ∅. Do đó ta có thể bỏ qua tập này bằng cách đặt redSγ [p, q] = ∅.
Thủ tục tính cận
Phần này mô tả cách tìm cận trên và cận dưới của f (x) trên hộp B = [p, q] sau khi được cắt giảm thông qua thủ tục cắt giảm ở phần trước. Chú ý rằng, khi đó p, q ∈ S.
Với bất kìx˜ ∈ H đặt I1 = {i ∈ {1, . . . , n}|x˜ i> 0} và
wi = max{y i|yi ∈ {0, aji , j ∈ J 1}, yi < x˜ i }, i ∈ I 1 .
43
Khi đó ta gọi z¯i = x˜ + (wi −x˜i )ei , i ∈ I1, là điểm lân cận dưới thứ i củax˜. Một số trường hợp sau đây có thể xử lí nhanh chóng
• Nếu g(q) < 0 thì không có x ∈ [p, q] chấp nhận được và min{f(x)|x ∈ [p, q]} = +∞; • Nếu g(p) ≥ 0 thì mọi giá trị x ∈ [p, q] là chấp nhận được và min{f(x)|x ∈ [p, q]} = f(p);
• Nếu f(p) > γ (γ là giá trị cận trên tốt nhất hiện tại) thì f(x) > γ ∀x ∈ [p, q] và ta có thể bỏ qua hộp [p, q]. Bỏ qua những trường hợp tầm thường trên, ta có
bổ đề sau Bổ đề 2.3. Giả thiết g(q) ≥ 0 > g(p) và f(p) ≤ γ.
(i) Gọi x(B) là giao đ iểm của đoạn thẳng {p + α(q − p), 0 ≤ α ≤ 1} nối p
và q với mặt g(x) = 0. Khi đó x(B) = p + λ(q − p), với λ = max min j∈J p i∈{1,...,n} qi −p i 6=0 Jp = {j ∈ J1 |p ∈ [0, aj )} = {j ∈ J1 |gj (p) < 0}. Và ta có g(bx(B)c S ) = 0. (ii) Đặt yi = p + (x(B) i − p i)ei , i = 1, . . . , n và đặt I = {i ∈ {1, . . . , n}|red S γ [yi, q] = [˜y i,q˜i ] 6= ∅}.
Nếu I = ∅ thì không có điểm chấp nhận được nào của bài toán (2.23) nằm trong hộp [p, q] thỏa mãn f(x) < γ, ngược lại ta có:
β(B) = min f(˜y i ). i∈I
sẽ là một cận dưới của f(x) trên B.
(iii) Với bất kìx˜ ∈ H đặt I1 = {i ∈ {1, . . . , n}|x˜ i> 0} và
wi = max{y i |yi ∈ {0, aji , j ∈ J 1 }, yi < x˜ i}, i ∈ I 1.
Khi đó, z¯i = x˜ + (wi −x˜i )ei, i ∈ I1 là “điểm lân cận dưới thứ i” của x˜. Nếu g(¯zi ) < 0 với mọi i ∈ I1 thìx˜ là một đỉnh chính của H, tức là,x˜ ∈ V.
44
Chứng minh. (i)
λ ≥ 0. Giả sử λ > 1. Khi đó theo định nghĩa của λ tồn tại một chỉ số j ∈ J cho
Vì vậy ta có q
gj (q) < 0; điều này mâu thuẫn với g(q) ≥ 0 và chứng tỏ λ ≤ 1.
Tiếp theo, ta sẽ chứng minh g(x(B)) = 0. Với những j ∈/ J
gj (x(B)) ≥ g
thỏa mãn λj ∗
gj (x(B)) ≥ g j
với mọi j ∈ Jp. Do đó g(x(B)) = min gj (x(B)) = g
nghĩa của S-hiệu chỉnh dưới dễ dàng suy ra g(bx(B)c S) = 0.
(ii) Ta sẽ chứng minh rằng, nếu y là điểm chấp nhận được của bài toán (2.23) và
y ∈ B thì y sẽ phải thuộc một trong các hộp [yi, q], i ∈ {1, ..., n}. Thật vậy,
nếu ngược lại, với bất kì i = 1, ..., n ta có y i
k ∈ {1, . . . , n} \ {i}) và do đó
g(y) = min j∈J 1
điều này mâu thuẫn với tính chấp nhận được của y.
Vì vậy
Từ đó
{x ∈ B ∩ S|g(x) ≥ 0, f(x) ≤ γ} ⊂
Suy ra, β(B) = min f(˜yi) là một cận dưới của f(x) trên B nếu I 6= ∅ và
i∈I
{x ∈ B ∩ S|g(x) ≥ 0, f(x) ≤ γ} = ∅
45
nếu I = ∅.
(iii) Vì x˜ ∈ H =
z1 ≤ x˜. Với i ∈ {1, . . . , n} \ I 1, 0 ≤ zi1 Giờ ta giả sử rằng tồn tại i1 ∈ I1 thỏa mãn zi11
cách xác định của w
lại có z¯ii1 = x˜ i
g(¯zi 1 ) ≥ g(z1) = 0, đây chính là mâu thuẫn. Và như vậyx˜ = z
Theo Bổ đề 2.3, các thủ tục tính cận dưới và cận trên của f(x) trên tập B
= [p, q] của bài toán (2.23) được mô tả chi tiết dưới đây.
Thủ tục tìm cận dưới
Cận dưới được tìm bằng cách sử dụng Bổ đề 2.3 (i) và (ii).
Thủ tục tìm cận trên
Về cơ bản ta có thể chọn bx(B)c S là điểm chấp nhận được của bài toán (2.23) với cận trên tương ứng f (bx(B)c S ) vì bx(B)c S ∈ S và g(bx(B)c S ) = 0. Cách tính này giống như cách tìm điểm chấp nhận được của lược đồ nhánh-giảm-cận truyền thống. Thuật toán nhánh-giảm-cận tr uyền thống áp dụng cho bài toán (2.23) cụ thể như sau:
Thuật toán 2.4: Tìm nghiệm tối ưu toàn cục của bài toán (2.23) (hay,
chính là nghiệm toàn cục của bài toán (SCEP)).
Khởi tạo. Nếu g(b) < 0 thì bài toán (2.23) có tập chấp nhận được bằng rỗng, thuật toán kết thúc. Ngược lại, g(b) ≥ 0, đặt P 1 := {B 1}, B 1 = [0, b],
R 1= ∅. Lấy γ = γ0 := f (bx(B1)cS ) là giá trị cận trên tốt nhất đầu tiên.
Gán k := 1, x := bx(B 1)cS . Bước 1. Với mỗi hộp B = [p, q] ∈ Pk
- Trường hợp 1: Nếu g(q) < 0 hoặc f(p) > γ thì cập nhật P k:= P k \B.
- Trường hợp 2: Nếu g(q) ≥ g(p) ≥ 0 và f(p) ≤ γ thì cập nhật nghiệm chấp nhận được x := p và giá trị cận mới γ := f(p) đồng thời gán
Pk := P k \ B.
- Trường hợp 3: Nếu g(q) ≥ 0 > g(p) và f(p) ≤ γ thì cắt giảm [p, q]
thành [˜p,q]˜ = red Sγ [p, q] theo thủ tục cắt giảm trình bày ở trên và gán
B := [˜p,q˜].
Bước 2. Nếu Pk = ∅, chuyển sang Bước 3. Ngược lại, với mỗi hộp B của
Pk, sử dụng Bổ đề 2.3 (i) và (ii) tính nghiệm chấp nhận được bx(B)c S
và cận dưới β(B).
Bước 3. Cập nhật lại giá trị cận trên tốt nhất γ và nghiệm chấp nhận được tương ứng x. Đặt Rk+1 = {B ∈ Rk ∪ Pk |β(B) ≤ γ}.
Bước 4. Nếu R
Bk thành hai hộp Bk1 và Bk2 theo thủ tục chia nhánh nêu ở đầu mục 2.2.3.
Lấy P k+1 = {B k1 , Bk2 }. Gán k := k + 1 và quay lại Bước 1.
Bước 5. Nếu Rk+1 = ∅ thì dừng thuật toán và kết luận x là một nghiệm tối ưu với giá trị tối ưu γ.
Kết quả sau đây về sự hội tụ của Thuật toán 2.4 có thể xem là một trường hợp đặc biệt của Định lí 1.4.
Định lí 2.4. Thuật toán 2.4 dừng sau hữu hạn bước lặp và cho kết quả là
nghiệm tối ưu toàn cục của bài toán (2.23).
Chứng minh. Xuất phát từ tính hữu hạn của tập S và phép cắt giảm S−
hiệu chỉnh, tổng số nút của cây nhánh cận là hữu hạn. Do đó thuật toán sẽ dừng sau hữu hạn bước lặp. Nghiệm thu được hiển nhiên là nghiệm tối ưu toàn cục do lược đồ nhánh cận.
Định lí 2.4 khẳng định Thuật toán 2.4 dừng sau hữu hạn bước lặp và cho kết quả là nghiệm tối ưu toàn cục của bài toán (2.23). Tuy nhiên, chúng ta có thể khai thác thêm các tính chất đặc biệt của bài toán này để cải tiến thủ tục tính cận với hi vọng đẩy nhanh được tốc độ của Thuật toán 2.4 (theo lược đồ BRB truyền thống). Tiếp theo chúng tôi sẽ đề xuất một cách tính cận trên mới (khác với cách tính cận trên trong Thuật toán 2.4) sử dụng trong lược đồ nhánh-cận-giảm cho việc giải toàn cục bài toán (2.23). Nội dung của thủ tục này như sau. Nếu x˜ là một điểm chấp nhận được của bài toán (2.23) thuộc vào tập H ∩[p, q] vàx˜ không phải là đỉnh chính của H (kiểm tra bằng Bổ đề 2.3 (iii)), ta sẽ di chuyển nó tới điểm chấp nhận được tốt hơn, chính là một trong những điểm lân cận dưới của x˜. Quá trình di chuyển này được thực hiện liên tục đến khi ta thu được một đỉnhchính của H thuộc [p, q].
Thủ tục: BOUNDING(B)
Đầu vào: B = [p, q].
Đầu ra: Cận dưới β(B), điểm chấp nhận được z.
Bước 1: Tính x(B) theo Bổ đề 2.3 (i).
47
Bước 2: Tính cận dưới β(B) theo Bổ đề 2.3 (ii).
Bước 3: Di chuyển bx(B)cS đến z là một đỉnh chính của H trong
B bằng cách sử dụng Bổ đề 2.3 (iii).
Phần này được khép lại với việc đề xuất hai thuật toán mới cho bài toán (SCEP).
Thuật toán 2.5: Tìm nghiệm tối ưu địa phương của bài toán (2.21) (hay, chính
là tìm nghiệm tối ưu địa phương của bài toán (SCEP)) trong trường hợp g(b) ≥ 0. Bước 1: Đặt B1 = [0, b]. Tính x(B 1) theo Bổ đề 2.3 (i).
Bước 2: Tính u theo Hệ quả 2.1.
Bước 3: Di chuyển bx(B1 )cS tới z1 là một đỉnh chính của H trong B 1
bằng cách sử dụng Bổ đề 2.3 (iii).
Bước 4: Di chuyển u tới z 2 là một đỉnh chính của H trong B 1 bằng cách
sử dụng Bổ đề 2.3 (iii).
Bước 5: Nếu f(z 1 ) ≤ f(z 2) thì gán z := z 1; ngược lại gán z := z 2. Kết luận z là nghiệm tối ưu địa phương thu được của bài toán (2.21).
Thuật toán 2.6: Tìm nghiệm tối ưu toàn cục cho bài toán (2.23) (hay,
chính là nghiệm toàn cục của bài toán (SCEP)).
Khởi tạo. Nếu g(b) < 0 thì bài toán (2.23) không chấp nhận được. Ngược lại,
g(b) ≥ 0 đặt γ = γ 0 := f (z), trong đó z là một nghiệm tối ưu địa phương thu được từ Thuật toán 2.5, là giá tr ị cận trên tốt nhất đầu tiên. Đặt P 1 := {B 1},
B 1= [0, b], R1 = ∅. Gán k := 1, x := z. Bước 1: Với mỗi hộp B = [p, q]
∈ Pk
- Trường hợp 1: Nếu g(q) < 0 hoặc f(p) > γ thì gán P k:= P k \ B.
- Trường hợp 2: Nếu g(q) ≥ g(p) ≥ 0 và f(p) ≤ γ, cập nhật nghiệm chấp nhận được mới x = p và giá trị cận trên tốt nhất hiện tại γ := f(p)
và gán
P k := P k \ B.
- Trường hợp 3: Nếu g(q) ≥ 0 > g(p) và f(p) ≤ γ, tính [˜p,q]˜ = redSγ [p, q] theo thủ tục cắt giảm đã biết và gán B := [˜p,q˜].
Bước 2: Nếu Pk = ∅, chuyển sang Bước 3. Ngược lại, sử dụng thủ tục BOUNDING(B) cho mỗi hộp B của Pk thu được cận dưới β(B) và nghiệm chấp nhận được z.
Bước 3: Cập nhật lại giá trị cận trên tốt nhất γ và nghiệm chấp nhận được tương ứng x. Đặt Rk+1 = {B ∈ Rk ∪ Pk|β(B) ≤ γ}.
48
Bước 4: Nếu R k+1 6= ∅ ta chọn Bk ∈ argmin {β(B)|B ∈ R
thành hai hộp con B k1 và B k2 theo thủ tục chia nhánh. Lấy Pk+1
Gán k := k + 1 và quay lại Bước 1.
Bước 5: Nếu Rk+1 = ∅ thì dừng thuật toán và x là một nghiệm tối ưu của bài toán với giá trị tối ưu γ.
Chú ý 2.4. Tương tự như Thuật toán 2.4, Thuật toán 2.6 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.23).
2.2.4 Kết quả tính toán thử nghiệm
Chúng tôi thử nghiệm tính hiệu quả của các thuật toán đề xuất. Dữ liệu sinh ra để thử nghiệm được thực hiện giống như đề xuất của Astorino và Miglionico [39]. Cụ thể:
• Các cảm biến và điểm đích được sinh ngẫu nhiên trên một vùng diện tích 100 × 100;
• Cận trên và cận dưới của bán kính cảm biến lần lượt là r imax = u i = 30
và r mini = l i = 0;
• Các giá trị α i , βi là: αi = 1, β i = 2 với mọi i = 1, . . . , n.
Chúng tôi tính toán thử nghiệm hai thuật toán là Thuật toán 2.4 và Thuật toán 2.6 cho bài toán (SCEP) với kích cỡ lần lượt là: n = 25, m = 5; n = 25, m
= 50; n = 75, m = 15. Với mỗi cặp giá trị của m và n, năm bộ dữ liệu được sinh
ra để thửnghiệm. Ta giới hạn thời gian mỗi lần chạy thử nghiệm là 3600s (CPU time). Sau thời gian này, nếu nghiệm tối ưu toàn cục chưa tìm được thì bài toán coi như không giải được với thuật toán đã chọn.
Kết quả về giá trị tối ưu (GOV), số bước lặp (#Iter.), thời gian tính toán (CPU time) được trình bày trong Bảng 2.2. Bên cạnh đó, để thấy được sự hiệu quả của thuật toán địa phương (Thuật toán 2.5) chúng tôi cũng báo cáo giá trị tối ưu địa phương (LOV) thu bởi thuật toán này cùng với thời gian tính toán tương ứng cho mỗi ví dụ. Độ chênh lệch (Gap) giữa LOV và GOV được xác định bởi công thức LOV−GOV .100%.
GOV
Tất cả các ví dụ đều được minh họa bằng các hình vẽ tương ứng với các nghiệm thu được.
Dựa trên kết quả số thu được ta rút ra một số kết luận sau.
• Mỗi thuật toán khi áp dụng giải các ví dụ số đều tiến hành kiểm tra điều kiện g(b) ≥ 0 ngay khi bắt đầu để xác định tính chấp nhận được của bài toán. Có hai
49
d o w n l o a d b y : s k k n c h a t