Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
479,88 KB
Nội dung
http://www.ebook.edu.vn Bùi Thế Tâm VI.1 Quy hoạch rời rạc Chương 6 THUẬT TOÁN NHÁNH CẬN 1. TƯ TƯỞNG CỦA THUẬT TOÁN NHÁNH CẬN 1.1. Trong các phương pháp giải bài toán qui hoạch nguyên, phương pháp nhánh cận là một trong các phương pháp có hiệu quả. Phương pháp nhánh cận được Land A.H và Doig A.G xây dựng năm 1960 giải bài toán qui hoạch nguyên (trình bày Tiết 2), đến 1963 được Little J.D, Murty K.G, Sweeney D.W và Karen C sử dụng thành công giải bài toán người du lịch (trình bày trong Tiết 3). Năm 1979 Giáo sư Hoàng Tụy đã ứng dụng thành công phương pháp này vào giải bài toán qui hoạch lõm. Đây là thuật toán ứng dụng rộng rãi để giải các bài toán tối ưu khó. Xét bài toán qui hoạch rời rạc ( ) min ,ZfX= (1) XG ∈ ( G là tập hữu hạn ) (2) 1.2. Tư tưởng của phương pháp nhánh cận gồm các phép xây dựng sau cho phép giảm bớt khối lượng lựa chọn. 1. Tính cận dưới. Tìm cận dưới của hàm mục tiêu ( ) f x trên tập các phương án G (hoặc trên tập con G ′ nào đó của G ) tức là số ( ) G ζ hay ( ) G ζ ′ sao cho: ( ) ( ) f xG ζ ≥ với x G ∀ ∈ ( hay ( ) ( ) f xG ζ ′ ≥ với x G ′ ∀ ∈ ). 2. Chia thành các tập con (rẽ nhánh ). Chia dần dần tập phương án G thành cây các tập con (các nhánh). Việc chia nhánh thực hiện theo sơ đồ nhiều bước sau: Bước 0. Đặt 0 GG≡ . Bằng một cách nào đó 0 G được chia thành một số hữu hạn các tập con ( thường là không giao nhau) 1 11 1 12 , , , r GG G. Bước 1k ≥ . Có tập 12 , , , k kk k r GG G cần chia nhánh. Ta chọn tập () k k G ϑ theo một qui tắc nào đó và chia thành một số hữu hạn các tập con : () () () ,1 , 2 , ( ) , , , kk k kk ksk GG G ϑϑ ϑ , gồm có () s k tập. Khi đó, tập cần chia nhánh tiếp theo là 12 1 1 , , , , , , kk k kk k k k r GG G G G ϑϑ −+ , () () ()() ,1 , 2 , , , , kk k kk ksk GG G ϑϑ ϑ Ta đánh số lại là 1 11 1 12 , , , k kk k r GG G + ++ + . 3. Tính lại đánh giá Nếu tập 12 GG⊂ thì ( ) ( ) 12 min min XG XG f XfX ∈∈ ≥ . Vì vậy khi chia tập G ′ thành 12 , , , s GG G ′ ′′ sao cho 1 ' s i i GG = ′ = ∪ thì cận của bất kì tập i G ′ đều có ( ) ( ) ( ) , 1, , i GGis ζζ ′′ ≥= . Trong các tình huống cụ thể ta thường nhận được các đánh giá tốt , tức là đối với một i nào đó ( ) ( ) . i GG ζζ ′ ′ http://www.ebook.edu.vn Bùi Thế Tâm VI.2 Quy hoạch rời rạc 4. Tính phương án Đối với các bài toán cụ thể có thể chỉ ra các phương pháp khác nhau để tìm ra các phương án trong các tập con được chia liên tiếp. Phương pháp này dựa trên đặc thù của mỗi bài toán cụ thể. Nhờ phương án mới tìm được ở mỗi bước ta có thể cải tiến cận trên (ban đầu gán cho cận trên giá trị là + ∞ ) bằng cách gán cho cận trên giá trị hàm mục tiêu tốt nhất tại thời điểm đó. 5. Tiêu chuẩn tối ưu. Giả sử 1 s i i GG = = ∪ và phương án XG ϑ ∈ thỏa mãn điều kiện: ( ) ( ) ( ) , 1, , i f XG G is ϑ ζζ =≤ ∀= thì X là phương án tối ưu của bài toán (1)-(2). Qui tắc này được ứng dụng ở giai đoạn chia nhánh . 6. Đánh giá độ chính xác của lời giải xấp xỉ. Giả sử () 1, , 1 ,min s ii is i GG G ζζ = = == ∪ . Nếu X là một phương án của bài toán xuất phát thì ( ) ( ) min xG f XfX ζ ∈ ≤≤. Nếu () fX ζ − đủ nhỏ thì X có thể lấy làm lời giải xấp xỉ với đánh giá độ xấp xỉ là () fX ζ ∆= − . 1.3. Lược đồ tổng quát của phương pháp nhánh cận. Chia tập phương án G thành cây tập con. Bước 0. Tính () ( ) 0 GG ζζ = . Nếu tìm được phương án X sao cho ( ) ( ) f XG ζ = thì X là phương án tối ưu. Ngược lại, chia 0 G = 1 11 1 12 r GG G∪∪∪, tức là chia thành các tập con (thường là không giao nhau). Bước 1k ≥ . Tính các đánh giá ( ) , 1, , k ik Gi r ζ = . Nếu tìm được phương án X , k r XG∈ sao cho ( ) ( ) ( ) , kk ri fX G G ζζ =≤ với 1, 2, , k ir ∀ = , thì X là phương án tối ưu, quá trình kết thúc. Ngược lại, chọn () k k G ϑ để chia, theo tiêu chuẩn () ( ) ( ) 1, , min k kk i k ir GG ϑ ζζ = = . Ta chia tập () k k G ϑ thành một số tập con () () () ()() ,1 , 2 , kk k k kk k ksk GG G G ϑϑ ϑ ϑ = ∪∪∪ . Tập cần chia tiếp theo là 12 1 1 , , , , , , kk k kk k k k r GG G G G ϑϑ −+ , () () () ,1 ,2 , , , , k kk k kk ks GG G ϑϑ ϑ Sau đó ta đánh số lại là 1 11 1 12 , , , k kk k r GG G + + ++ và sang bước k+1. http://www.ebook.edu.vn Bùi Thế Tâm VI.3 Quy hoạch rời rạc 2. PHƯƠNG PHÁP LAND VÀ DOIG GIẢI BÀI TOÁN QUI HOẠCH NGUYÊN 2.1. Xét bài toán qui hoạch nguyên tuyến tính sau: () 1 min n jj j Z fX cx = == ∑ (3) với các điều kiện ràng buộc ij j=1 , 1, , n jii axRb i m= ∑ (quan hệ thứ tự { } ,, i R ∈ ≤≥= ) (4) 0 , 1, , . jj x djn≤≤ = (5) j x nguyên 1 1, , j n = 1 nn ≤ (6) trong đó j d là cận trên của biến j x (có thể j d = +∞ ). Giả thiết tập tất cả các điểm x thỏa mãn (4)-(5) là bị chặn. Nếu 1 nn= , ta có bài toán qui hoạch nguyên hoàn toàn, còn nếu 1 nn< thì có bài toán qui hoạch nguyên bộ phận. Ngoài ra, bài toán tìm max có thể qui về bài toán tìm min bằng cách đổi dấu hàm mục tiêu. Có nhiều phương pháp giải bài toán qui hoạch nguyên tuyến tính, trong đó có phương pháp nhánh cận. A.H Land và A.G Doig (1960) là những người đầu tiên áp dụng phương pháp nhánh cận để giải bài toán qui hoạch tuyến tính nguyên. 2.2. Nội dung phương pháp 1. Cho tập 0 GG≡ xác định bởi (4) - (6). 2. Cho các tập () k k G ϑ , 1, , , k r ϑ = và 1, 2, k = . xác định bởi (4),(6) và ràng buộc bổ sung: , 1, , jjj kk hxd jn ϑϑ ≤≤ = . (7) 3. Tính cận. Đối với 0 G ước lượng () ( ) 0 0 GfX ζ = với 0 X là lời giải của bài toán qui hoạch tuyến tính (3)-(5). Đối với k G ϑ thì () k k GfX ϑ ζ ϑ = , trong đó k X ϑ là lời giải của bài toán qui hoạch tuyến tính (3),(4) và (7). Nếu ( ) k G ϑ =∅ thì ( ) k G ϑ ζ = +∞ . 4. Tính phương án. Nếu 0 X thỏa mãn điều kiện nguyên (6), thì 0 X là nghiệm tối ưu của bài toán ban đầu, thuật toán dừng. http://www.ebook.edu.vn Bùi Thế Tâm VI.4 Quy hoạch rời rạc Nếu k X ϑ thỏa mãn điều kiện nguyên (6) thì nó là phương án tối ưu của bài toán (3), (4), (7), (6) và nó cũng là một phương án của bài toán ban đầu. Lấy k X ϑ để cải tiến cận trên. 5. Chia nhánh. Cần chia nhánh khi () k X k ϑ không thỏa mãn điều kiện nguyên (6). Giả sử () 1 ,1 r k x rn k ϑ ≤≤ là một thành phần không nguyên của phương án này, khi đó tập hợp () k k G ϑ chia thành hai tập hợp () () () ,1 , 2 kk k kk k GG G ϑϑ ϑ = ∪ , trong đó () () () () () () ,1 ,2 |, |, 1 kk rr kk kk rr kk k GXXGxx k k GXXGxx k ϑϑ ϑϑ ϑ ϑ =∈ ≤ =∈ ≥ + Chú ý rằng nếu tất cả j c trong (3) là nguyên với 1 jn ≤ và 1 0 j ckhijn=≥ thì cận dưới ( ) k G ϑ ζ có thể dùng đánh giá mạnh hơn ( ) ( ) kk GfX ϑϑ ζ ′ = , ở đây kí hiệu ] [ f là số nguyên nhỏ nhất mà lớn hơn hay bằng f . 2.3. Giải ví dụ bằng số Xét bài toán qui hoạch nguyên tuyến tính sau: min -x 1 -x 2 (8) 2x 1 + 11 x 2 ≤ 38 x 1 + x 2 ≤ 7 (9) 4 x 1 - 5x 2 ≤ 5 x 1 , x 2 ≥ 0 (10) x 1 , x 2 nguyên (11) Bước 0. Giải bài toán (8)-(10), tìm được nghiệm 0 45 4,2 99 X = . Cận dưới () () ][ 00 77GfX ζ ′ ==−=− . Phương án 0 X không thỏa mãn điều kiện nguyên (11). Chúng ta chia 0 G thành hai tập hợp 011 12 GGG= ∪ , trong đó { } {} 10 11 10 21 |,4 |,5 GXXGx GXXGx = ∈≤ = ∈≥ http://www.ebook.edu.vn Bùi Thế Tâm VI.5 Quy hoạch rời rạc Bước 1. Giải hai bài toán quy hoạch tuyến tính: cực tiểu (8) trên hai tập hợp 1 1 G và 1 2 G . Trong bài toán đầu tiên cực tiểu trên miền 1 1 G đạt tại điểm 8 4, 2 11 , do đó ( ) 1 1 8 66 11 G ζ ′ =− =− . Tập 1 2 G là trống nên ( ) 1 2 G ς = +∞ . Chọn 1 1 G để chia nhánh ta được: { } {} 112 1,1 1 2 1 112 1,2 1 2 2 |,2 |,3 GXXGx G GXXGx G =∈≤≡ =∈≥≡ 12 23 GG = =∅ Bước 2. Giải các bài toán qui hoạch tuyến tính: 1) Tìm cực tiểu (8) trên 2 1 G được () 2 1 2 33 3,2 5 5 1 44 XG ζ ′ = ⇒=−=− 2) Tìm cực tiểu (8) trên 2 2 G được () 2 2 2 11 2,3 5 5 2 22 XG ζ ′ = ⇒=−=− 3) 12 23 GG==∅, ( ) 2 3 G ζ ′ = +∞ Chọn 2 1 G để chia nhánh : { } {} 223 1,1 1 1 1 223 1,2 1 1 2 |,3 |,4 GXXGx G GXXGx G =∈≤≡ =∈≥≡ Đánh số lại 232 32323 1,1 1 1,2 2 2 3 3 4 ,,,G GG GGGGG≡ ≡=≡ Bước 3. Giải các bài toán qui hoạch tuyến tính: 1) Tìm cực tiểu (8) trên 3 1 G được () () ][ 3 1 3 3, 2 5 5 1 XG ζ ′ = ⇒=−=− 2) 3 2 G =∅ ( ) 3 2 G ζ ′ ⇒=+∞ 3) Tìm cực tiểu (8) trên 3 3 G được () 3 3 32 11 2,3 5 5 32 22 XX G ζ ′ == ⇒ =−=− 4) 32 43 GG==∅ ( ) 3 4 G ζ ′ ⇒=+∞ http://www.ebook.edu.vn Bùi Thế Tâm VI.6 Quy hoạch rời rạc Phương án () 3 3, 2 1 XX == thỏa mãn điều kịên nguyên (11). Đồng thời ( ) ( ) ( ) ( ) { } {} ( ) 3333 1234 min , , , min 5, , 5, 5GGGG fX ζ ζζζζ ′ ′′′′ ==−∞−∞≤=− . Vậy phương án tối ưu của bài toán ban đầu là ( ) 3, 2X = . Ta có cây phân nhánh sau: 3. PHƯƠNG PHÁP NHÁNH CẬN GIẢI BÀI TOÁN NGƯỜI DU LỊCH 3.1. Phát biểu bài toán. Có n thành phố, đánh số từ 1 đến n . Xuất phát từ một trong n thành phố này, chẳng hạn thành phố 1, một người du lịch muốn tới thăm n -1 thành phố còn lại, mỗi thành phố đúng một lần, rồi trở về thành phố xuất phát. Cho biết ij c là chi phí (hoặc là khoảng cách) đi từ thành phố i đến thành phố j . Giả thiết 0, , ij ii cijc>∀≠ =∞, với mọi i ( có thể ij ji cc ≠ ). Hãy tìm hành trình với tổng chi phí nhỏ nhất? Ký hiệu ma trận , 1, , ij ij n Cc = = , 1 ij x = hoặc 0 tùy thuộc người du lịch có đi từ thành phố i tới thành j hay không. Khi đó bài toán người du lịch có thể viết dưới dạng: 1 1 6 G ζ ′ = − 0 7 G ζ ′ = − 123 23 4 GGG ζ ≡≡ ′ =+∞ 12 1,1 1 5 GG ζ ≡ ′ =− 123 1,2 2 3 5 GGG ζ ≡≡ ′ =− 23 1,1 1 5 GG ζ ≡ ′ =− 23 1,2 2 GG ζ = =∅ ′ =+∞ http://www.ebook.edu.vn Bùi Thế Tâm VI.7 Quy hoạch rời rạc 11 min i j i j nn ij cx == ∑∑ (12) {} ij 1 ij 1 ij ij 1, 1, 2, , (13) 1, 1, 2, , (14) 0;1 , , 1, 2, , (15) 1, 2 i j n (16) n j m i ij xi n xj n xijn uu nx n = = == == ∈= −+ ≤− ≤≠≤ ∑ ∑ trong đó i u nhận giá trị nguyên hay thực. 3.2. Thuật toán nhánh cận Tập tất cả các phương án của bài toán (tập 0 S )sẽ được chia nhỏ dần thành nhiều tập con rời nhau, mỗi tập con bao gồm những phương án đi qua và không đi qua một số cặp thành phố nhất định sẽ được ấn định dần trong quá trình giải bài toán. Mỗi tập con này được gắn với một số thực không âm (cách tìm số này xem ở phần tiếp theo), biểu thị cận dưới của chi phí đối với mọi phương án thuộc tập này. Tập con k S có cận dưới nhỏ nhất sẽ có nhiều khả năng chứa phương án tối ưu, vì thế tập k S sẽ được chọn để chia nhỏ tiếp (phân nhánh). Khi phân nhánh 12kk k SS S = ∪ sao cho một tập 2k S bắt buộc đi qua thêm một cặp thành phố rs x nào đó (cách chọn xem ở phần tiếp theo), một tập 1k S không được đi qua cặp thành phố rs x . Khi một tập con nào đó chỉ gồm một phương án duy nhất thì ta sẽ tính được chi phí C của phương án này và nhờ đó có thể cải tiến được phương án tốt nhất hiện biết, giá trị hàm mục tiêu của bài toán ứng với phương án tốt nhất hiện biết gọi là giá trị kỷ lục. Tập con nào có cận dưới lớn hơn hay bằng giá trị kỷ lục sẽ bị loại (không cần xem xét tiếp nữa), vì chắc chắn tập này không chứa phương án nào tốt hơn phương án tốt nhất hiện biết. Quá trình giải kết thúc khi không còn tập con nào cần xem xét tiếp. Khi đó, phương án tốt nhất hiện biết sẽ là phương án tối ưu của bài toán. Tính hữu hạn của thuật toán được suy ra từ tính hữu hạn của tập 0 S . Thủ tục tính cận Bổ đề. Phương án tối ưu * x vẫn còn là tối ưu nếu ma trận chi phí C được thay bởi ma trận C ′ với , ( , 1, 2, , ) ij ij i j cc ij n α β ′ =−− = (17) trong đó , ij α β là các số thực bất kỳ. Chứng minh. Xét một phương án bất kỳ x của bài toán. Do * x là phương án tối ưu nên * ij ij 11 11 nn nn ij ij ij ij cx cx == == ≤ ∑∑ ∑∑ Từ các hệ thức (12) và (17) ta có: http://www.ebook.edu.vn Bùi Thế Tâm VI.8 Quy hoạch rời rạc () *** ij ij ij 11 11 11 1 1 ij ij 11 1 1 11 nn nn nn n n ij i j ij ij i j ij ij ij i j nn n n nn ij i j ij ij i i ij cx c x cx cx cx α βαβ αβ == == == = = == = = == ′ =−− = −− ′ ≤−−= ∑∑ ∑∑ ∑∑ ∑ ∑ ∑∑ ∑ ∑ ∑∑ điều này chứng tỏ * x vẫn còn là phương án tối ưu. Các số , ij α β cần được chọn sao cho ij 0, ,cij ′ ≥∀ và trên mỗi hàng, mỗi cột của ma trận C ′ có ít nhất một số 0. Chẳng hạn có thể chọn i α là số nhỏ nhất trong hàng i của C và j β là số nhỏ nhất trong cột j của ma trận thu được từ C bằng cách trừ các phần tử trên hàng i cho i α , trừ các phần tử trên cột j cho j β . Phép toán (17) được gọi là phép rút gọn ma trận hay thủ tục rút gọn và hằng số 11 nn ij ii γ αβ == =+ ∑∑ được gọi là hằng số rút gọn và đó chính là một cận dưới cho giá trị hàm mục tiêu của bài toán, vì mỗi phương án của người du lịch sẽ chứa đúng một phần tử của mỗi hàng và đúng một phần tử của mỗi cột trong ma trận chi phí . Tương tự, nếu tập con các phương án, ký hiệu là p S thu được từ tập ban đầu 0 S bằng cách cố định một số biến ij x ở giá trị 1 hay 0 (nghĩa là cho phép đi qua hay cấm không được đi qua một số cặp thành phố nào đó) thì để tính cận dưới cho p S ta chỉ việc tiến hành thủ tục rút gọn trên ma trận tương ứng với p S . Thủ tục phân nhánh Giả sử ta cần phân nhánh tập 0p SS⊂ . Cách hay dùng là phân chia tập này thành hai tập con rời nhau , p p SS ′′′ với { } {} |,0, |,1 pprs pprs SxxSx SxxSx ′ =∈ = ′′ =∈ = . trong đó, rs x là biến chưa cố định ở giá trị 0 hay 1 trong tập p S . Cặp ( ) ,rs dùng để phân nhánh được chọn sao cho tập p S ′ ′ có nhiều khả năng chứa phương án tối ưu, còn tập p S ′ thì không. Nói cách khác, ( ) ,rs được chọn sao cho hiệu số các cận dưới của p S ′′ và p S ′ là lớn nhất có thể được. Để giải quyết vấn đề này, ta chỉ cần xét tập các phương án ban đầu 0 S , vì mọi bài toán con nhận được về sau có cùng cấu trúc như đối với bài toán ban đầu. Giả sử ma trận chi phí C đã được rút gọn , nghĩa là 0, , ij cij≥∀ và trên mỗi hàng , mỗi cột của C có ít nhất một số 0. Tập 0 S được chia thành hai tập rời nhau 1 S và 2 S với http://www.ebook.edu.vn Bùi Thế Tâm VI.9 Quy hoạch rời rạc { } {} 10 20 |,0, |,1 rs rs SxxSx SxxSx =∈ = =∈ = Trong tập 2 S cấu trúc bài toán không thay đổi, trừ ra hàng r và cột s bị loại, bởi vì đã đi từ r đến s thì không thể đi từ r đến bất cứ nơi nào khác, và cũng không được phép đi từ bất cứ đâu vào s . Các hàng và cột còn lại chỉ chứa các phần tử không âm, vì thế ứng với 2 S một cận dưới đối với giá trị hàm mục tiêu tăng thêm là ( ) 2 rs Sc γ = . Trong tập 1 S do cố định 0 rs x = nên từ các điều kiện (14), (15) suy ra phải có một ( ) 1 rj x js=≠ và một ( ) 1 is x ir=≠. Vì thế ( ) 1 min min rj is js ir Scc γ ≠≠ =+ là một cận dưới đối với giá trị mục tiêu tăng thêm. Ta sẽ chọn biến rs x sao cho hiệu giữa các cận dưới này là lớn nhất, nghĩa là đạt ( ) ( ) { } 12 (,) max rs SS γγ − (18) Nếu 0 rs c > thì ( ) 1 0S γ = (do trên hàng r và cột s của C đều chứa số 0), còn () 2 0 rs Sc γ =>, từ đó ( ) ( ) 12 0SS γγ − < . Vì thế để có (18) ta chỉ cần xét các cặp ( ) ,rs với 0. rs c = Trong trường hợp này ( ) 2 0S γ = và ( ) 1 0S γ ≥ . Điều này có nghĩa là thay cho (18) ta có thể chọn biến rs x để phân nhánh theo qui tắc () ( ) 0 ,max ,min min pq p jiq jq ip c rs pq c c θθ ≠≠ = ==+ . Lập luận trên đây cũng đúng cả khi các tập phương án i S về sau được chia thành các tập 1 , rr SS + , nhưng thay cho mức tăng của các cận dưới ( ) 2 S γ và () 1 S γ ta xét mức tăng của các cận dưới () r S γ và ( ) 1r S γ + tương ứng. Ngăn cấm tạo các chu trình con Nếu tập được xét không phải là 0 S mà là { } 11 2 2 01 2 | , , , , kk p ij i j i j k SxxSx x x δ δδ =∈ = = =, thì qui tắc chọn biến để phân nhánh về cơ bản vẫn như trước, tuy nhiên cần tiến hành một số thay đổi . Trước hết, đó là việc thực hiện các lựa chọn bắt buộc. Chẳng hạn, nếu 0, 1, , 1, 1, , uj x jvvn==−+thì tất nhiên phải có 1 uv x = . Cũng làm vậy đối với các cột . Một số loại lựa chọn bắt buộc khác: khi đã cố định 1 rs x = thì phải có 0 sr x = bằng cách đặt sr c =∞. Hơn nữa, nếu đường đi dài nhất trong p S chứa cạnh ( ) ,rs gồm ít nhất 2 và nhiều nhất 2n − cạnh () 12 1 1 1 13 uuvv i i i r rs si i i xxxx x vn +− == = = == = ≤≤− http://www.ebook.edu.vn Bùi Thế Tâm VI.10 Quy hoạch rời rạc (không có cạnh nào có dạng 1 1 ki x = hay 1 v ij x = ), thì để ngăn cấm tạo chu trình con dạng ( ) 12 1 , , , , , , u ii i rsi ta đặt 1 si c = ∞ , còn để ngăn cấm tạo chu trình con dạng ( ) 12 , , , , , , uu v rsi i i r ++ ta đặt v ir c = ∞ . Hơn nữa, ta cần có 1 0 v ii x = bằng cách đặt 1v ii c =∞. Để tìm 1 i ta có thể đi ngược từ r và để tìm v i ta có thể đi xuôi từ s theo danh sách các biến đã cố định ở giá trị 1 trong tập p S . Ở mỗi bước lặp, trước khi tính các cận dưới cho các tập mới, cần thực hiện những lựa chọn bắt buộc nêu trên. Có như vậy mới thu được những cận dưới chính xác và tránh được những phân nhánh vô ích. 3.3. Giải ví dụ bằng số Giải bài toán người du lịch với ma trận chi phí ( không đối xứng ) như sau(n=6) 123456 1 3 93 13 33 9 2 4 77 42 21 16 34717 361628 4399080 56 7 528468833 25 6 3 88 18 46 92 ∞ ∞ ∞ ∞ ∞ ∞ Bước lặp 0. Tập đầu tiên 0 S là tập hợp tất cả các hành trình có thể. Vì ban đầu chưa biết một phương án nào nên cận trên β = +∞ . Tính cận dưới cho 0 S . Từ ma trận (19) trừ mỗi phần tử của các hàng 1, 2, 3, 4, 5, 6 cho số nhỏ nhất trên hàng tương ứng là 3, 4, 16, 7, 25, 3 ta được một ma trận mới. Tiếp theo, trừ mỗi phần tử của các cột 3, 4 của ma trận mới cho số nhỏ nhất trên cột tương ứng là 15, 8 ta được ma trận rút gọn (20) (chưa kể các số mũ ở trên các phần tử bằng 0). y y y y y i1 i2 r s i3 i4 (19) [...]... , (6, 3), 81 S 2 , (6, 3) , 129 S3 , (4 ,6) , 81 S 4 , (4, 6) , 113 S5 , (2,1), 84 S7 , (1,4), 104 S6 , (2,1) , 101 S8 , (1, 4) , 112 S9 , (5,1), 103 S11 , (1,4), 104 http://www.ebook.edu.vn S10 , (5,1) , 129 S12 , (1, 4) , 114 VI. 16 Bùi Thế Tâm Quy hoạch rời rạc BÀI TẬP Bài 1 Tìm phương án tối ưu cho bài toán người du lịch với ma trận chi phí 1 2 3 4 5 6 1 2 ∞ 7 30 30 26 25 3 4 5 20 13 ∞ 35 5 21 16 25... 18 12 46 27 48 ∞ 0 18 5 27 43 16 ∞ 16 1 6 23 5 5 9 5 ∞ Đáp số: hành trình tối ưu là 1 – 4 – 3 – 5 – 6 – 2 – 1, trị tối ưu là 63 Bài 2 Tìm phương án tối ưu cho bài toán người du lịch với ma trận chi phí 1 2 3 4 5 6 1 2 ∞ 31 15 23 10 16 ∞ 24 7 12 17 12 3 4 5 34 3 ∞ 15 20 33 16 10 32 25 40 23 25 54 ∞ 50 3 ∞ 6 18 20 13 28 21 ∞ Đáp số: hành trình tối ưu là 1 – 6 – 3 – 2 – 5 – 4 – 1, trị tối ưu là 63 http://www.ebook.edu.vn... thể đi từ 6 tới bất cứ nơi nào khác và cũng không được phép đi từ đâu vào 3 Hơn nữa, đã đi theo cạnh (6, 3) thì không được đi từ 3 đến 6 nữa, vì vậy ta cần cấm cạnh (3 ,6) bằng cách đặt c 36 = ∞ Từ ma trận (20) ta thu được ma trận tương ứng với tập S1 (chưa kể các số mũ trên các số 0) http://www.ebook.edu.vn VI.12 Bùi Thế Tâm 1 2 1 ∞ 2 015 3 31 4 32 3 5 4 5 2 03 ∞ 1 83 21 Quy hoạch rời rạc 6 30 6 30 17... Bước lặp 6 Các tập cần xét chỉ còn S9 Chọn cung để phân nhánh Với mỗi số 0 trong ma trận (25) ta tính số θ ( p, q ) Cạnh (1,4) sẽ được chọn để phân nhánh Tập S9 được chia thành hai tập: http://www.ebook.edu.vn VI.15 Bùi Thế Tâm Quy hoạch rời rạc - Tập S11 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (5,1), (1,4) và không đi qua cung (2,1) - Tập S12 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (5,1)... VI.13 Bùi Thế Tâm Quy hoạch rời rạc Bước lặp 3 Các tập cần xét là S2 , S3 , S4 với cận dưới tương ứng là 129, 81, 113 Tập S3 có cận dưới nhỏ nhất sẽ được chọn để chia nhánh Chọn cung để phân nhánh Với mỗi số 0 trong ma trận (22) ta tính số θ ( p, q ) Cạnh (2,1) sẽ được chọn để phân nhánh Tập S3 được chia thành hai tập: - Tập S5 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (2,1) - Tập S6 gồm các hành... 1, 4, 6, http://www.ebook.edu.vn Bùi Thế Tâm Quy hoạch rời rạc VI.14 3 Từ ma trận này ta trừ cột 1 đi số 20 ta được cận dưới của tập S7 là 84 + 20 = 104 và ma trận tương ứng là 2 5 3 ∞ 0 5 0 ∞ Chọn hai cung cuối cùng (3,5) và (5,2) ta được một hành trình của người du lịch là (1,4), (4 ,6) , (6, 3), (3,5), (5,2), (2,1) (phương án tốt nhất hiện biết) với giá trị hàm mục tiêu là 13 + 7 + 18 + 16 + 46 + 4... việc xét về sau, ta chỉ cần xét tập S6 Bước lặp 5 Các tập cần xét chỉ còn S6 Chọn cung để phân nhánh Với mỗi số 0 trong ma trận (23) ta tính số θ ( p, q) Cạnh (5,1) sẽ được chọn để phân nhánh Tập S6 được chia thành hai tập: - Tập S9 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (5,1) và không đi qua cung (2,1) - Tập S10 gồm các hành trình đi qua cung (6, 3), (4 ,6) và không đi qua cung (2,1), (5,1)... j ≠q i≠ p θ ( 2,1) = 12, θ ( 6, 3) = 48, Ta thấy số 0 ở ô (6, 3) có số mũ lớn nhất, nghĩa là θ ( 6, 3) = max θ ( p, q ) Vì thế ta chọn cặp (6, 3) để phân nhánh Khi đó, tập tất cả các c pq =0 hành trình được phân thành hai tập con: tập S1 gồm các hành trình chứa cạnh (6, 3), tập S2 gồm các hành trình không chứa cạnh (6, 3) Tính cận cho tập S 2 không chứa cạnh (6, 3) Vì cạnh (6, 3) không có mặt trong hành trình,...Bùi Thế Tâm Quy hoạch rời rạc VI.11 1 2 3 4 5 6 ∞ 1 12 2 0 3 31 4 32 5 3 6 00 03 75 2 30 6 ∞ 58 30 17 12 ∞ 12 018 12 1 ∞ 83 58 21 49 032 48 02 85 048 35 ∞ 00 89 (20) ∞ Tổng các hằng số rút gọn là 3 + 4 + 16 + 7 + 25 + 3 + 15 + 8 = 81 Vì vậy, cận dưới cho tất cả các hành trình thuộc tập S0 là 81 Điều này có nghĩa... là S2 , S4 , S5 , S6 với cận dưới tương ứng là 129, 113, 84, 101 Tập S5 có cận dưới nhỏ nhất sẽ được chọn để chia nhánh Chọn cung để phân nhánh Với mỗi số 0 trong ma trận (24) ta tính số θ ( p, q ) Cạnh (1,4) sẽ được chọn để phân nhánh Tập S5 được chia thành hai tập: - Tập S7 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (2,1), (1,4) - Tập S8 gồm các hành trình đi qua cung (6, 3), (4 ,6) , (2,1) và không . Tâm VI. 16 Quy hoạch rời rạc BÀI TẬP Bài 1. Tìm phương án tối ưu cho bài toán người du lịch với ma trận chi phí 1234 56 12743 163 0 26 27 161 3025 32013 355 0 421 162 5 1818 512 462 748 5 62 35595 ∞ ∞ ∞ ∞ ∞ ∞ . Tâm VI.15 Quy hoạch rời rạc - Tập 11 S gồm các hành trình đi qua cung (6, 3), (4 ,6) , (5,1), (1,4) và không đi qua cung (2,1) - Tập 12 S gồm các hành trình đi qua cung (6, 3), (4 ,6) , (5,1). với ma trận chi phí ( không đối xứng ) như sau(n =6) 1234 56 1 3 93 13 33 9 2 4 77 42 21 16 34717 361 628 4399080 56 7 528 468 833 25 6 3 88 18 46 92 ∞ ∞ ∞ ∞ ∞ ∞ Bước lặp 0. Tập đầu tiên 0 S