Chƣơng 2
THUẬT TOÁN NHÁNH CẬN XẤP XỈ NGOÀI GIẢI BÀI TOÁN QUY HOẠCH NGUYÊN TUYẾN TÍNH VÀ ỨNG DỤNG
Rõ ràng thuật toán xấp xỉ ngoài TTH trình bày trong mục 1.3.3.2. ở chương 1 có nhiều ưu điểm khi sử dụng nó giải cho lớp các bài toán quy hoạch tuyến tính tái tối ưu hóa hay quy hoạch tuyến tính nguyên. Chính vì vậy trong chương này, từ thuật toán Land-Doig (trình bày trong mục 1.2.2. ở chương 1) giải bài toán quy hoạch nguyên tuyến tính, chúng ta kết hợp với thuật toán xấp xỉ ngoài TTH xây dựng một thuật toán giải bài toán quy hoạch nguyên tuyến tính dạng chuẩn dưới đây.
2.1. Thuật toán nhánh cận xấp xỉ ngoài giải bài toán quy hoạch nguyên tuyến tính tuyến tính
29
Thuật toán nhánh cận xấp xỉ ngoài ILP
Bước chuẩn bị: Giải bài toán quy hoạch tuyến tính tương ứng với P0
bằng thuận toán xấp xỉ ngoài LP (bỏ qua điều kiện nguyên) và thu được phương án tối ưu 0
x . Giả sử 0
x là không nguyên.
Đặt cận dưới của P0 là f(x0) và danh mục các bài toán cần xét là
P0 P .
Nếu biết x là phương án chấp nhận được của bài toán thì đặt )
(x f
f và ngược lại, ta đặt f ∞.
Bước lặp k = 1, 2, . . .
1) Nếu P thuật toán kết thúc. Khi đó, nếu f thì f là giá trị tối ưu và x là phương án tối ưu của bài toán. Trong trường hợp ngược lại, bài toán không có phương án chấp nhận được.
2) Nếu P: Chọn Pk là bài toán có cận dưới nhỏ nhất trong P.Gọi
k
D là miền chấp nhận được, k
x là phương án tối ưu của bài toán quy hoạch tuyến tính tương ứng với nó.
2.1. Giả sử xtk là một thành phần không nguyên nào đó của k
x . Phân hoạch tập Dk thành hai tập: { : [ ]}, 1 k t t k k x D x x D { : [ ] 1} 2 k t t k k x D x x D .
Gọi Pk1 là bài toán
min{ ( ): } 1 k D x x f .
30 min{ ( ): } 2 k D x x f .
Đây là các bài toán quy hoạch nguyên tuyến tính.
2.2. Lần lượt giải các bài toán quy hoạch tuyến tính tương ứng với
) 2 , 1 (i P i k
(bỏ qua điều kiện nguyên) để tính cận dưới đúng cho bài toán Pki ,
chúng ta tiến hành như sau:
Theo định lý tái tối ưu hóa trong mục 1.3.3.2 chương 1, thì bài toán Pk1
sẽ có ít nhất một lời giải thỏa mãn chặt ràng buộc
] [ tk
t x x
Và bài toán Pk2 sẽ có ít nhất một lời giải thỏa mãn chặt ràng buộc
1 ] [ k t t x x
Do đó việc giải các bài toán quy hoạch tuyến tính tướng ứng (bỏ qua điều kiện nguyên) P (i1,2)
i
k để tính cận dưới đúng cho bài toán Pki , ta giải
các bài toán quy hoạch tuyến tính tương đương ( n-1 chiều) là P0(i1,2)
i
k (bỏ qua điều kiện nguyên) dưới đây bằng thuật toán xấp xỉ ngoài TTH (trình bày trong mục 1.3.3.2. của chương 1):
Pk01 là bài toán: min{ ( ): 0 }
1 k D x x f 0 2 k
P là bài toán: min{ ( ): 0 }
2 k D x x f Trong đó 0 { : [ ]} 1 k t t k k x D x x D và 0 { : [ ] 1} 2 k t t k k x D x x D
Khi đó, ta có thể gặp một trong các tình huống sau đây:
31 b) Tìm được phương án tối ưu ki
x là nguyên. c) Tìm được phương án tối ưu ki
x là không nguyên.
Trường hợp a): Bài toán Pki cũng không có phương án chấp nhận được, vì vậy ta loại bỏ việc xem xét tiếp theo.
Trường hợp b): Tính lại các kỷ lục theo công thức: : min{ , ( ki)}
x f f
f
Gọi x là kỷ lục tương ứng với giá trị này. Bài toán Pki đã xét xong. Trường hợp c): Đặt cận dưới của Pki là ( ki)
x
f , và kết nạp nó vào danh sách các bài toán cần xét:
: { } i k P P P
2.3. Loại bỏ khỏi P tất cả các bài toán có cận dưới lớn hơn hoặc bằng giá trị kỷ lục. Đặt: : \{ } i k P P P
và chuyển sang bước k + 1.
Các bước của thuật toán ILP này có thể dễ dàng lập trình chuyển sang các chương trình trên máy tính bằng các ngôn ngữ như Pascal, C, Basis, Java, ...