Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
490,5 KB
Nội dung
http://www.ebook.edu.vn Bùi Thế Tâm V.1 Quy hoạch rời rạc Chương 5 THUẬT TOÁN GOMORY THỨ BA Chương này trình bày thuật toán Gomory thứ ba nhằm xây dựng các lát cắt đảm bảo tất cả các Bảng đơn hình ở mỗi bước đều có tất cả các phần tử là nguyên 1. ẢNH HƯỞNG CỦA SAI SỐ LÀM TRÒN VÀ TƯ TƯỞNG CỦA THUẬT TOÁN GOMORY THỨ BA 1.1. Ảnh hưởng của sai số làm tròn có thể dẫn đến lời giải sai khi dùng phương pháp đơn hình giải bài toán quy hoạch tuyến tính. Khi giải bài toán quy hoạch tuyến tính nguyên ảnh hưởng sai số làm tròn tăng mạnh do các nguyên nhân sau : - Tăng khối lượng tính toán vì dùng nhiều lần l - phương pháp. - Khả năng mắc sai khi xử lý các số kiểu phần thập phân 0,999999 ≈ 1,000000 - Khả năng nhận lời giải không đúng vì số nguyên có thể nhận là không nguyên. Để tránh sai số làm tròn, Gomory đưa ra thuật toán thứ ba để giải bài toán quy hoạch tuyến tính nguyên toàn phần : 0 1 n ij j=1 ax (1) a , 1, 2, , (2) 0 , 1, 2, , (3) ên , 1, 2, , (4) n jj j ji j j mx cx xb i m xjn xnguy j n = ≡ == ≥= −= ∑ ∑ 1.2. Tư tưởng của thuật toán Gomory thứ ba Giả sử bài toán (L,C) ≡ (L 0 ,C) viết ở dạng bảng T 0 , l - chuẩn (phần tử khác không đầu tiên ở mỗi cột là số dương). Dùng l - phương pháp, ta nhận được dãy hữu hạn các bảng l - chuẩn T 0 , T 1 , , T s mà cái cuối cùng là chấp nhận được. Giả sử bảng xuất phát T 0 là nguyên hoàn toàn (tất cả các phần tử là số nguyên). Các bảng tiếp theo có thể không nguyên là do: ngoài các phép toán + , - , * khi chuyển từ T ν sang T ν+1 , ta còn dùng phép tính chia trên phần tử quay. Nếu phần tử quay trên tất cả các bước là (-1) thì các bảng T 1 , T 2 , vẫn là nguyên khi T 0 - nguyên, cuối cùng phương án tối ưu X s của bài toán (L s ,C) ứng với T s cũng là nguyên. Vậy X s là phương án tối ưu của bài toán quy hoạch tuyến tính nguyên gốc (L N ,C). Vì vậy, ta sẽ cải tiến định nghĩa lát cắt đúng sao cho nếu dòng tương ứng với nó chọn làm dòng quay thì phần tử quay bằng (-1). Chính xác hơn, bài toán tìm lát cắt đúng nguyên được phát biểu như sau: có bài toán (L,C), các điều kiện của nó viết dưới dạng bảng nguyên, không chấp nhận được, l - chuẩn 0 , ' ij n iQ jN Tx ∈∈ = , vì vậy l - giả phương án mở rộng : i ( ) ( ) '' ' 0 1 00 10 0 ' , , , , , , nn Xxxx xx x== http://www.ebook.edu.vn Bùi Thế Tâm V.2 Quy hoạch rời rạc ứng với T' không là phương án mở rộng. Cần xây dựng một hàm tuyến tính : 0 () ( ) jj jN Z Xr rx ∈ = +− ∑ (5) thỏa mãn các điều kiện sau : I. Điều kiện nguyên : r j - nguyên , 0 j N∀∈ (6) II. Điều kiện cắt : Z(X') = r 0 < 0 , ( ) ''' 1 , , n Xxx= (7) III. Điều kiện đúng: với mọi phương án X của bài toán (,) N L C thì Z(X) ≥ 0. (8) IV. Điều kiện giữ gìn tính nguyên. Nếu trong các số ( ) j rjN∈ có số âm , 0 1 j j j nj x x R x = # với j N∈ là cột của ma trận T' và j jN,r 0 ex min j l l j R R l r r ∈< = (9) thì 1 l r = − (10) Điều kiện (9) - (10) có nghĩa là nếu dòng Z(X) chọn làm dòng quay thì phần tử quay là (-1). 1.3. Lược đồ logic của thuật toán Gomory thứ ba Nếu thành công xây dựng lát cắt đúng nguyên thỏa mãn (5) - (10) thì lược đồ logic của thuật toán như sau. Bắt đầu từ bảng không chấp nhận được xuất phát T 0 , xây dựng dãy các bảng T 0 , T 1 , , T r , T r+1 , mà mỗi bảng đều là nguyên và l - chuẩn. Nếu T r là chấp nhận được thì l - giả phương án ứng với nó X r đồng thời là phương án tối ưu của bài toán (L N ,C). Nếu T r là không chấp nhận được thì xây dựng lát cắt đúng nguyên thỏa mãn (5) - (10). Viết dòng tương ứng ngay dưới bảng T r và lấy nó làm dòng quay. Sau đó, thực hiện một bước lặp của l - phương pháp để nhận được bảng mới T r+1 nguyên và l - chuẩn. http://www.ebook.edu.vn Bùi Thế Tâm V.3 Quy hoạch rời rạc 2. XÂY DỰNG LÁT CẮT ĐÚNG NGUYÊN, THUẬT TOÁN GOMORY THỨ BA 2.1. Cơ sở xây dựng lát cắt đúng nguyên : Định lý 1. Giả sử 0 λ > 00 () jj jT yd dy ∈ =+ − ∑ , trong đó T là tập hữu hạn; () 0 j j jT d d zy λλ ∈ =+ − ∑ , trong đó [x] - phần nguyên của x; { } 0, 0 j yjT≥∈∪ , y j - nguyên , jT ∈ . Khi đó : z ≥ 0 z - nguyên. Chứng minh. Tính nguyên của z trực tiếp suy ra từ định nghĩa phần nguyên và tính nguyên của y j ( jT∈ ). Để chứng minh z ≥ 0 ta dùng phản chứng, giả sử z < 0. Từ tính nguyên của z suy ra z ≤ -1. (11) Mặt khác: 00 () j j jT d yd y λλ λ ∈ =+ − ∑ , như vậy 00 0 () () jj jj jT jT dd yd d yy λλ λ λ λ ∈∈ =+ −++ − ∑∑ Theo giả thiết 0 () j j jT d d zy λλ ∈ =+ − ∑ suy ra 00 () j j jT d yd yz λλ λ ∈ =+ −+ ∑ , hay 00 j j jT d yd yz λλ λ ∈ + =+ ∑ (12) 0 10. d λ ≤ −< (do (11)) Điều này không thể sảy ra vì { } 0, 0 j yjT≥∈∪ (theo giả thiết), 0 λ > và định nghĩa phần lẻ , j d jT λ ∈ . Do vậy , 0z ≥ . Định lý được chứng minh. http://www.ebook.edu.vn Bùi Thế Tâm V.4 Quy hoạch rời rạc 2.2. Từ định lý trên ta xây dựng lát cắt đúng nguyên thỏa mãn (5) - (10). Giả sử cho bảng 0 ij , n iQ jN Tx ∈∈ = nguyên, không chấp nhận được, l - chuẩn và giả sử đối với k (1 ≤ k ≤ n): 0 0 0, () k kk kjj jN x x xxx ∈ < = +− ∑ Đặt: T = N 00 0 0 jN jN () () ax ax jkj k jj jkj dx jN yx yx jN md mx λ ∈∈ =∈ = =∈ == Như vậy: 0, 0 1, 0 j j j d d d λ ≥ = − < , và ta nhận được lát cắt đúng nguyên : 0 (; ) 1 (1)( ) 0 ên kj kj jN x zz X x z z nguy λ ∈ < ==−+−− ≥ − ∑ 2.3. Trong phần này ta sẽ chỉ ra trong một số trường hợp cụ thể nhận được bảng T 0 nguyên, l - chuẩn : Xét bài toán : 0 1 n ij j=1 ax (13) a , 1,2, , (14) 0 , 1, 2, , (15) ên , 1,2, , (16) n jj j ji j j mx cx xb i m xjn xnguy j n = ≡ ≤= ≥= −= ∑ ∑ trong đó c j , a ij , b i nguyên ( ) 1, , ; 1, ,imjn==. Đưa vào các biến mới, bài toán trên được viết lại như sau : http://www.ebook.edu.vn Bùi Thế Tâm V.5 Quy hoạch rời rạc 0 1 n ij j=1 ax ( )( ) a ( ), 1,2, , 0, 1, 2, , , 1, , ên , 1, 2, , , 1, , n jj j ni i j j j mx cx xb xi m xj nnnm x nguy j n n n m = + ≡−− =+ − = ≥= ++ −=++ ∑ ∑ Ta có các biến x 1 , , x n là biến phi cơ sở , viết bảng ' 0 T (chưa l - chuẩn). 1 -x 1 -x 2 -x j -x n x 0 0 -c 1 -c 2 -c j -c n x 1 0 -1 0 0 0 x 2 0 0 -1 0 0 # # # # # # x n 0 0 0 0 -1 x n+1 b 1 a 11 a 12 a 1j a 1n x n+2 b 2 a 21 a 22 a 2j a 2n # # # # # # x n+i b i a i1 a i2 a ij a in # # # # # # x n+m b m a n1 a m2 a mj a mn (Bảng ' 0 T ) a) Nếu bảng ' 0 T là l - chuẩn (ví dụ khi c j < 0 , 1, , j n = ) thì xem nó là bảng xuất phát T 0 (lấy ' 0 T làm T 0 xuất phát). b) Nếu ' 0 T không là l - chuẩn, nhưng tập các phương án của bài toán (13)-(15) là bị chặn thì ta giải bài toán quy hoạch tuyến tính với hàm mục tiêu n j j=1 x ∑ với ràng buộc (14)-(15) và tìm được: n j j=1 ax x 'mM= ∑ Rõ ràng, với mọi phương án của bài toán (13) - (16) ta đều có : [] n j j=1 x' M M ≤ ≡ ∑ Vì vậy, từ bài toán này ta có thể đưa vào biến mới : http://www.ebook.edu.vn Bùi Thế Tâm V.6 Quy hoạch rời rạc n 1j j=1 1 1 1.(-x ) (17) 0(18) ên (19) nm nm nm xM x x nguy ++ ++ ++ =+ ≥ − ∑ Viết dòng (17) xuống dưới bảng ' 0 T và chọn nó làm dòng quay. Cột quay chọn theo tiêu chuẩn: {} '' 1, , ex min lj jn Rl R ∈ = ( ' j R - là cột của ' 0 T ứng với biến phi cơ sở ( 1, , ) j x jn = ). Thực hiện một bước lặp của l - phương pháp, xóa dòng x n+m+1 (dòng cuối của bảng ' 0 T ) và nhận được bảng T 0 nguyên, l - chuẩn. Nếu sau này biến x n+m+1 đưa vào cơ sở thì dòng tương ứng không được phục hồi. 2.4. Thuật toán Gomory thứ ba Bước lặp 0.: Xây dựng bảng xuất phát 0 0 0ij , n iQ jN Tx ∈∈ = - nguyên , l - chuẩn. Nếu T 0 là chấp nhận được thì l - giả phương án mở rộng : ( ) ( ) 0000 00 0 0 1 00 10 0 , , , , , , nn Xxxx xxx== là phương án tối ưu mở rộng của bài toán (L N ,C) và thuật toán dừng. Nếu T 0 không chấp nhận được thì chuyển tới bước lặp đầu tiên. Bước lặp p (p ≥ 1). Cho bảng 0 1 P-1 1ij , n P P iQ jN Tx − − ∈∈ = - nguyên , l - chuẩn nhưng không chấp nhận được. Chọn k là chỉ số đầu tiên vi phạm tính chấp nhận được { } { } 1 0 min | 1,2, , , 0 P i kii nx − = ∈< Nếu 1 1 0, P kj P x jN − − ≥∀∈ thì bài toán (L N ,C) không giải được. Nếu 1 0 P kj x − ∃< thì ta chọn cột cột quay l theo công thức : 1 11 ,0 ex min Pkj PP lj jN x Rl R − −− ∈< = (20) và xây dựng lát cắt đúng nguyên (dòng quay) : 1 1 1 0 ( ) (21) 0 (22) ên P P P kj k nP j jN nP nP x x xx x x nguy λλ − − − + ∈ + + =+ − ≥ − ∑ (23) Quy tắc chọn λ như thế nào ta sẽ trình bày trong Mục 2.5. Viết dòng (21) vào cuối bảng T P-1 và lấy làm dòng quay. Thực hiện một bước lặp của l - phương pháp (loại x n+P khỏi cơ sở, đưa x l vào cơ sở), xóa dòng x n+P . Nếu l ≥ n+1 thì dòng x l không khôi phục nữa, ta sẽ nhận được bảng http://www.ebook.edu.vn Bùi Thế Tâm V.7 Quy hoạch rời rạc 0 P ij , n P P iQ jN Tx ∈∈ = là nguyên và l - chuẩn, trong đó : { } ( ) { } 1 \ PP NN l np − = ∪+ Nếu T P là chấp nhận được thì ( ) ( ) 0 1 00 10 0 , , , , , , PPPP PP P nn Xxxx xxx== là phương án tối ưu mở rộng của bài toán (L N ,C) . Nếu T P không châp nhận được thì chuyển tới bước (p+1). 2.5. Quy tắc chọn số λ . Số λ được chọn theo ba điều kiện sau I. Phần tử quay bằng (-1) : 1 1 P kl x λ − = − (24) II. Bảng T P phải là l - chuẩn : 1 11 0 P kj PP P jj l x RR R λ − −− = +> , (25) { } ( ) 1 \\{} PP jN np N l − ∀∈ + = III. Cột 0 P R phải là lexmin : 1 11 0 00 ex min P PP P k l x RR R l λ − −− =+ → (26) Chú ý : 1) 1 1 0 1 P PP l nP l R RR − − + − ==> − suy ra bất đẳng thức (25) đúng với j = n + p rồi. 2) Từ (24) và 1 0 P kl x − < (do(20)) suy ra 0 λ > 2.6. Xác định λ thỏa mãn (24) - (26) a) Điều kiện (24) có thể viết thành : 1 10 P kl x λ − − ≤<, do 0 λ > nên ta có : 1P kl x λ − ≥− (24') b) Điều kiện (25) có thể đơn giản hóa bằng cách sau. Nếu 1 0 P kj x − ≥ thì 1 1 0 P kj P l x R λ − − ≥ và điều kiện (25) đúng với bất kỳ 0 λ > . Do vậy, chỉ cần xét điều kiện (25) với : 1 \{ } P j Nl − ∈ mà 1 0 P kj x − < . http://www.ebook.edu.vn Bùi Thế Tâm V.8 Quy hoạch rời rạc Với mỗi 1P j N − ∈ , ta đặt : { } () min | 0. p-1 ij hj ix=> Từ (20) suy ra P-1 P-1 kj ( ) ax{h(j)|j N , x <0}hl m=∈ . Rõ ràng, nếu h(j) < h(l) thì với bất kỳ λ ta có : 1 11 0 P kj PP P jj l x RR R λ − −− = +> Do đó, trường hợp này (25) cũng đúng. Như vậy, chỉ cần xét (25) với : 1 \{ } P j Nl − ∈ mà 1 0 P kj x − < và h(j) = h(l). Khi đó, điều kiện (25) được viết lại là : 1 11' 1 0, P kj PP P jj l P x R RRjN λ − −− − =+ >∀∈ (25') { } 'P-1 11kj |\{},x0,()() PP NjjNl hjhl −− =∈ < = Nếu ' 1P N − =∅ thì (25') không cần thêm bất cứ điều kiện nào trên số 0 λ > . Bây giờ giả sử ' 1P N − ≠∅ . Khi đó đối với mỗi ' 1P j N − ∈ ta có thể tìm được số tự nhiên z j sao cho : 1111 (1) 0 PPPP jjl jjl R zR RzR −−−− −+ << − (27) Chú ý rằng 11PP jl R zR −− ≠ với z bất kỳ, vì nếu 11PP jl R zR − − = thì 01 P-1 ij , det 0 P iN jN x − ∈∈ = , điều này là không thể. Do đó 11 à PP jl R vR − − là không tỉ lệ với nhau. Có 4 khả năng : 1) 11 () () PP hl j hll x x −− = . Khi đó nếu chọn z j = 1 thì (27) thỏa mãn. 2) 11 () () PP hl j hll x qx r −− = + trong đó q, r là các số tự nhiên, 1 () P hll rx − < . Khi đó nếu chọn chọn z j = q thì (27) được thỏa mãn. 3) 11PP ij il x qx −− = , i = h(l) , h(l) + 1 , , h(l) + t ≡ s - 1, và 11PP s jsl x qx −− > trong đó q là số tự nhiên ≥2. Khi đó, nếu ta chọn z j = q thì (27) đúng. 4) 11PP ij il x qx −− = , i = h(l) , h(l) + 1 , , h(l) + t ≡ s - 1, và 11PP s jsl x qx −− < , trong đó q là số tự nhiên ≥ 2. Khi đó, ta chọn z j = q - 1 thì (27) đúng. http://www.ebook.edu.vn Bùi Thế Tâm V.9 Quy hoạch rời rạc Từ (27) và (25') suy ra cần chọn số λ thỏa mãn: 1 ' 1 , P kj jP x zjN λ − − −≤ ∀∈ , hay 1P kj j x z λ − ≥− , suy ra 1P kj j x z λ − ≥− . Vậy điều kiện (25') chuyển thành điều kiện sau: P-1 kj ' 1 j x ax - z P mjN λθ − ≥≡ ∈ (25'') trong đó z j - được chọn theo 4 khả năng đã trình bày ở trên. c) Xét điều kiện (26). Vì λ > 0 , 11 0 0, 0 PP kl xR −− < > nên điều kiện (26) được viết lại như sau : min λ → (26') Cuối cùng từ (24') , (25'') , (26') ta có : { } P-1 kl ax -x ,m λ θ = (28) 2.7. Giải ví dụ bằng số Giải bài toán quy hoạch nguyên sau: Max 43210 3663 xxxxx − − + = 3 984 96672 59224 41 321 4321 4321 ≤ ≤−+− ≥+++ ≤ − − − xx xxx xxxx xxxx 4- 8- 8 4321 ,,, xxxx nguyên. Sau khi thêm biến bù bài toán viết lại thành Max 43210 3663 xxxxx − − + = 43215 92245 xxxxx + + + − = 43216 66729 xxxxx + + + + − = 3217 9848 xxxx + − + = 418 483 xxx + + = 876543210 ,,,,,,,, xxxxxxxxx nguyên http://www.ebook.edu.vn Bùi Thế Tâm V.10 Quy hoạch rời rạc Từ đây ta có bảng đơn hình xuất phát (Bảng 1). Vì bảng đơn hình không là l- chuẩn nên ta phải thêm ràng buộc phụ 100 4321 =≤ + + + gzxxxx hay 43219 100 xxxxx −−−−= - và 0 9 ≥x và viết vào phía dưới bảng 1. Chọn dòng x 9 làm dòng quay. 1 -x 1 -x 2 -x 3 -x 4 x 0 0 -3 -6 6 3 x 1 0 -1 0 0 0 x 2 0 0 -1 0 0 x 3 0 0 0 -1 0 x 4 0 0 0 0 -1 x 5 5 4 -2 -2 -9 x 6 -9 -2 -7 -6 -6 x 7 8 -4 8 -9 0 x 8 3 -8 0 0 -4 Bảng 1 x 9 100 1 1* 1 1 Thực hiện một bước của đơn hình đối ngẫu từ vựng ta được bảng 2 là l-chuẩn. Vì x 7 <0 nên sinh ra lát cắt x 10 và chọn nó làm dòng quay. Bảng 2 x 10 -66 -1* -1 -2 -1 Tiếp tục dùng thuật toán đơn hình đối ngẫu từ vựng ta được bảng 3 là l- chuẩn và không chấp nhận được. Vì x 5 <0 nên sinh ra lát cắt x 11 và chọn nó làm dòng quay. 1 -x 1 -x 9 -x 3 -x 4 x 0 600 3 6 12 9 x 1 0 -1 0 0 0 x 2 100 1 1 1 1 x 3 0 0 0 -1 0 x 4 0 0 0 0 -1 x 5 205 6 2 0 -7 x 6 691 5 7 1 1 x 7 -792 -12 -8 -17 -8 x 8 3 -8 0 0 -4 [...]... Thế Tâm Quy hoạch rời rạc 1 -x10 -x9 -x3 -x4 x0 402 3 3 6 6 x1 66 -1 1 2 1 x2 34 1 0 -1 0 x3 0 0 0 -1 0 x4 0 0 0 0 -1 x5 -1 91 6 -4 -1 2 -1 3 x6 361 5 2 -9 -4 x7 0 -1 2 4 7 4 x8 53 1 -8 8 16 4 -1 * -1 -1 Bảng 3 x11 -1 5 0 Tiếp tục dùng thuật toán đơn hình đối ngẫu từ vựng ta được bảng 4 là l- chuẩn và không chấp nhận được Vì x7 . V.12 Quy hoạch rời rạc 1 -x 10 -x 11 -x 3 -x 12 x 0 312 3 0 0 3 x 1 51 -1 1 1 0 x 2 34 1 0 -1 0 x 3 0 0 0 -1 0 x 4 15 0 1 1 -1 x 5 4 6 5 1 -9 x 6 421 5 8 -5 -6 x 7 -6 0 -1 2. Quy hoạch rời rạc 1 -x 10 -x 9 -x 3 -x 4 x 0 402 3 3 6 6 x 1 66 -1 1 2 1 x 2 34 1 0 -1 0 x 3 0 0 0 -1 0 x 4 0 0 0 0 -1 x 5 -1 91 6 -4 -1 2 -1 3 x 6 361 5 2 -9 -4 x 7 0 -1 2. 1 -x 13 -x 11 -x 3 -x 12 x 0 297 3 0 0 3 x 1 56 -1 1 1 0 x 2 29 1 0 -1 0 x 3 0 0 0 -1 0 x 4 15 0 1 1 -1 x 5 -2 6 6 5 1 -9 x 6 396 5 8 -5 -6 x 7 0 -1 2 4 3 0 x 8 51 1 -8 12