Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
0,92 MB
Nội dung
MỤC LỤC • MỤC LỤC i • Lời cảm ơn ii • Lời nói đầu iii 1 QUY HOẠCH NGUYÊN 1.1 Giới thiệu 1 1.2 Quy hoạch nguyên trong thực tế 6 2 PHƯƠNG PHÁP NHÁNH CẬN 2.1 Giới thiệu thuật toán trên ví dụ 30 2.2 Chia nhánh, đặt cận, chạm đáy 34 2.3 Thuật toán nhánh - và - cận 36 3 GIẢI BÀI TOÁN NGUYÊN TRÊN MATLAB 3.1 Giới thiệu Matlab 39 3.2 Lập trình thuật toán trên bài toán nguyên 40 3.3 Giải bài toán nguyên trên Matlab 44 TÀI LIỆU THAM KHẢO 49 i Lời cảm ơn Tôi chân thành cám ơn công lao to lớn của PGS. TS Trần Huệ nương - Giảng viên hướng dẫn của tôi, người giới thiệu tôi đến với đề tài này và giúp tôi đạt được những kết quả tốt. Cô đã hỗ trợ tôi trong cả khi thành công và thất bại, động viên tôi tập trung bất cứ khi nào tôi nản chí; nếu không có những sự giúp đỡ ấy của Cô thì tôi nghĩ luận văn này không bao giờ hoàn thành. Viết luận văn Thạc sỹ là một quá trình vất vả, mất nhiều tháng liên tục. Tuy nhiên, tôi đã nhận được sự giúp đỡ, khuyến khích của những bạn bè, bạn học, Giáo sư. Với tất cả niềm vui tôi xin cám ơn tất cả. Điều quan trọng nhất, tôi không thể làm được luận văn này nếu không có sự giúp đỡ của gia đình. Luận văn không thể hoàn thành mà không có tình yêu, sự nhẫn nại, sự hỗ trợ giúp đỡ. Tôi chân thành cám ơn. TP. Hồ Chí Minh, ngày 01 tháng 05 năm 2009. Nguyễn Hữu Thương ii Lời nói đầu Chuyên ngành quy hoạch tuyến tính được các nhà Toán học trên thế giới nghiên cứu và phát triển kể từ sau đại chiến thế giới lần thứ hai. Người tiên phong trong lĩnh vực này là G.B.Dantzig. Có nhiều bài toán thực tế thuộc các lĩnh vực khác nhau có thể mô tả toán học bằng quy hoạch tuyến tính. Quy hoạch nguyên (IP - Integer Programming) rất phổ biến trong thực tế. Mảng bài toán này có vẻ đơn giản nhất mà cũng quan trọng nhất trong các bài toán chọn quyết định (có liên quan nhau nhưng đều ở dạng có hoặc không). Một số ý tưởng để giải IP là phương pháp mặt phẳng cắt của Gomory công bố năm 1958, phương pháp nhánh - và - cận (branch - and - bound method) xuất hiện trong [Land - Doig 1960]. Tác giả đã lựa chọn phương pháp nhánh - và - cận với những ưu điểm rõ rệt để trình bày trong luận văn này. Luận văn gồm ba chương: Quy hoạch nguyên, phương pháp nhánh - và cận và Một số ứng dụng của phương pháp nhánh cận giải quy hoạch nguyên. Tuy nhiên, luận văn cũng không tránh khỏi thiếu sót. Rất mong nhận được sự đóng góp của Quý Thầy Cô và các bạn đồng nghiệp. iii Chương 1 Quy hoạch nguyên 1.1 Giới thiệu Quy hoạch nguyên (Integer programming - IP) là bài toán quy hoạch trong đó tất cả hoặc một phần các biến bị ràng buộc chỉ lấy giá trị nguyên. Tương ứng tên cụ thể cho từng trường hợp là quy hoạch nguyên hoàn toàn (pure integer programming) và quy hoạch nguyên bộ phận (mixed integer programming - MIP). Tuy vậy, thuật ngữ "Quy hoạch nguyên" thực tế chỉ dành cho lĩnh vực toán nghiên cứu lớp bài toán quy hoạch tuyến tính nguyên. Vì vậy hai thuật ngữ được hiểu như nhau. Lớp bài toán này rất phổ biến trong thực tế. Mảng bài toán này có vẻ đơn giản nhất mà cũng quan trọng nhất trong lớp này là các bài toán chọn quyết định (có liên quan nhau nhưng đều ở dạng "có" hoặc "không" (yes - or - no decision). Chẳng hạn bài toán bổ nhiệm: Giả sử có tập S gồm m người và tập D gồm m việc hoặc chức vụ. Cước phí của việc bổ nhiệm người i ∈ S vào việc j ∈ D là c ij . Bài toán đặt ra là tìm cách chia cho mỗi người đúng một việc sao cho tổng cước phí là nhỏ nhất. Đặt biến là x ij = 1 nếu người i được việc j, 0 trường hợp khác thì bài toán trở thành min i∈S j∈D c ij x ij , 1 i∈S x ij = 1, i ∈ S (mỗi người chỉ được đúng một việc), j∈D x ij = 1, j ∈ D (mỗi việc chỉ dành cho đúng một người). Nhiều bài toán khác quyết định có - không như vậy, chẳng hạn đầu tư không? có mở đại lý ở thành phố A không? có nhận thực hiện dự án không? Vì các biến (quyết định) chỉ nhận hai giá trị (biến 0-1) nên bài toán có tên là quy hoạch nguyên nhị phân (binary integer programming - BIP). Nếu bài toán có n biến và các ràng buộc cho thấy miền chấp nhận được là giới nội trong R n , thì bài toán "chỉ có" hữu hạn nghiệm chấp nhận được, không như quy hoạch tuyến tính (tổng quát) có miền này là cả một tập lồi đa diện. Tuy vậy, sẽ rất sai lầm nếu nghĩ rằng quy hoạch nguyên dễ giải hơn, hoặc hơn nữa nghĩ rằng có thể điểm diện (enumeration) các phương án (tức là nghiệm) chấp nhận được để chọn phương án tối ưu. Chẳng hạn BIP với n biến có 2 n phương án chấp nhận được. Nhưng đây là số khổng lồ nếu n lớn. Trong lịch sử Trung Hoa cổ đại đã có minh hoạ rất hay là nhà vua không đủ thóc, dù vét hết kho trong nước, để thưởng 2 64 hạt thóc theo ước muốn (được vua ban) của người nghĩ ra cờ tướng làm vua thích thú (bàn cờ đó có 64 ô). Nguyên nhân vì miền chấp nhận được, tuy hữu hạn, của quy hoạch nguyên không có các đỉnh để thực hiện phương pháp đơn hình, đã biết là rất hiệu quả. Chính vì vậy quy hoạch tuyến tính dễ giải hơn. Người ta có thể giải mọi quy hoạch tuyến tính với nhiều ngàn biến và ràng buộc bằng máy tính trong vài giờ, nhưng đến nay vẫn không đảm bảo giải được với thời gian tương tự bất kỳ dù chỉ là BIP với 100 biến. Người ta thấy rằng ở quy hoạch tuyến tính thì độ phức tạp tính toán tăng rõ theo số ràng buộc nhưng với quy hoạch nguyên thì số biến ảnh hương quyết định. Một số ý tưởng tự nhiên để giải IP (quy hoạch nguyên) là giải quy hoạch tuyến tính tương đương, tức là IP nhưng bỏ đi ràng buộc giá trị biến phải nguyên (quy hoạch tuyến tính này gọi là LP - nới lỏng (LP relaxation) của IP) rồi làm tròn nghiệm tối ưu thành nghiệm nguyên. Nó sẽ xấp xỉ nghiệm tối ưu của IP. Cách này có thể áp dụng trong thực tế, nhưng phải cẩn thận hai nguy cơ sau đây. Một là nghiệm làm tròn có thể thậm chí 2 không chấp nhận được đối với IP như ví dụ sau Ví dụ 1.1.1 Xét quy hoạch nguyên max z = x 2 , −x 1 + x 2 1 2 , x 1 + x 2 3 1 2 , x 1 0, x 2 0, x 1 , x 2 nguyên. Hình 1.1: Nghiệm tối ưu làm tròn không chấp nhận được 3 H.1.1 cho thấy điểm A(3/2, 2) nới lỏng, B(1, 2) và C(2, 2) là hai nghiệm làm tròn từ A nhưng không chấp nhận được. Nghiệm tối ưu của IP là D(1, 1) và E(2, 1). Nguy cơ thứ hai là nghiệm làm tròn có thể chấp nhận được nhưng có thể có giá trị mục tiêu rất xa mục tiêu tối ưu của IP như ví dụ sau đây cho thấy. Ví dụ 1.1.2 Xét quy hoạch nguyên max z = x 1 + 5x 2 , x 1 + 10x 2 20, x 1 2, x 1 0, x 2 0, x 1 , x 2 nguyên. H.1.2 cho thấy điểm A(2, 7/4) là nghiệm tối ưu của LP - nới lỏng (với mục tiêu z = 11). B(2, 1) là nghiệm làm tròn cho IP, chấp nhận được và ứng mục tiêu z = 7, xa với mục tiêu tối ưu của IP là z = 10 đạt tại điểm C(0, 2). Bài tập: "Chứng minh rằng nếu quy hoạch nguyên tuyến tính có ít nhất một ràng buộc đẳng thức thì nghiệm làm tròn từ LP nới lỏng không thể là nghiệm chấp nhận được của quy hoạch nguyên" cho thấy trường hợp nghiệm làm tròn không chấp nhận được là rất phổ biến. Có thể nghĩ rằng dữ liệu của bài toán đã là xấp xỉ nên tính không chấp nhận được này có thể "tha thứ". Nhưng nhiều bài toán IP thực tế có dữ liệu chính xác. Chẳng hạn ràng buộc kiểu lựa chọn đúng một trong n quyết định "có" còn lại là "không" 4 Hình 1.2: Nghiệm tối ưu làm tròn xa nghiệm tối ưu của IP là ràng buộc với hệ số chính xác x 1 + x 2 + . . . + x n = 1, x j = 0 hoặc 1. Hơn nữa ở bài toán nhị phân với biến có ý nghĩa là "có" hay "không" thì giá trị không nguyên là vô nghĩa rồi, nên không thể làm tròn đi nữa. Vì quy hoạch nguyên hay gặp như thế, lại không thể nhận được từ làm tròn nghiệm nhận được từ LP - nới lỏng của nó, nhu cầu tìm các thuật toán riêng là rất lớn, vẫn đang rất được quan tâm nghiên cứu hiện nay. Do giải quy hoạch nguyên khó và tính toán phức tạp nên với các bài toán cỡ lớn cách tiếp cận tốt nhất là dùng các thuật toán phán đoán (heuristic algorithm), tuy không đảm bảo đi đến nghiệm tối ưu trong mọi trường hợp, nhưng thường rất hiệu quả. Với các bài toán không lớn quá, đã có nhiều thuật toán giải chính xác. Cách tiếp cận chung là kết hợp việc giải các LP - nới lỏng với điểm diện ẩn (implicit emmeration), tức là điểm diện các nghiệm chấp nhận được nhưng ở mỗi bước tìm cách loại bỏ số đáng kể các nghiệm không thể là tối ưu không cần điểm diện. Trước khi trình bày phương pháp chính là phương pháp nhánh - và - cận ở mục sau, Mục giới 5 thiệu Để kết thúc mục này, ta đã thấy nhiều trường hợp may mắn là giải quy hoạch tuyến tính (không nguyên) bằng thuật toán đơn hình ta nhận được nghiệm tối ưu là nguyên. Đó là bài toán dòng trên mạng với các dữ liệu nguyên, mà trường hợp riêng là các bài toán sau với dữ liệu nguyên: bài toán dòng cực đại, bài toán đường ngắn nhất, bài toán vận tải. Nếu khi giải LP - nới lỏng của quy hoạch nguyên mà gặp may mắn như vậy thì ta được luôn nghiệm tối ưu của quy hoạch nguyên. 1.2 Quy hoạch nguyên trong thực tế Ý tưởng giải một bài toán nguyên trong thực tế: Bước 1. Giải bài toán tuyến tính gốc sau khi bỏ đi điều kiện biến nguyên, Bước 2. Giả sử được nghiệm tối ưu x k = t. Nếu nghiệm tối ưu đạt được thoả ràng buộc nguyên thì kết thúc bước lặp. Ngược lại đến bước 3, Bước 3. Chia bài toán thành hai phần: LP1: x k ≤ [t] max z = cx, Ax ≤ b, x k ≤ [t], x ≥ 0. LP2: x k ≥ [t] + 1 6 max z = cx, Ax ≤ b, x k ≥ [t] + 1, x ≥ 0. Bước 4. Giải LP1 và LP2 một cách riêng rẽ, Bước 5. Nếu với bất kỳ bài toán con, nghiệm tối ưu nguyên đạt được thì bài toán không chia nhánh nữa. Mặt khác quay trở lại Bước 3. Ví dụ 1.2.1 (Bài toán Balo - knapsack problem) Một nhà thám hiểm chỉ được mang theo một ba lô trọng lương không quá b, Có n loại vật dụng nên mang theo. Loại vật j có trọng lượng mỗi vật là a j và giá trị sử dụng mỗi vật là c j . Hỏi ông phải mang thế nào để có giá trị sử dụng lớn nhất? Gọi x j là số lượng vật j mang theo thì mô hình toán học của bài toán balo này là quy hoạch nguyên sau: max z = n j=1 c j x j , n j=1 a j x j ≤ b, x j ≥ 0 và nguyên, j = 1, . . . , n. 7 [...]... ta thấy nghiệm tối ưu của LP6 cũng là nghiệm tối ưu của bài toán do giá trị mục tiêu z = 21 là tốt nhất Tập nghiệm tối ưu: x∗ = (0, 1, 1, 1)z ∗ = 21 Sơ đồ cây cho quá trình giải bài toán bằng phương pháp nhánh - và - cận có dạng như sau: 28 29 Chương 2 Phương pháp nhánh - và - cận 2.1 Giới thiệu thuật toán trên ví dụ Phương pháp nhánh - và - cận (branch - and - bound method) xuất hiện đầu tiên trong... Nghiệm đạt được không nguyên nên không là nghiệm tối ưu của bài toán ban đầu Giải LP3 và LP2 vẫn chưa đạt nghiệm nguyên, vì vậy chúng ta sẽ chọn bài toán con và rẽ nhánh 1 trong các biến theo tiêu chuẩn sau: • Chọn bài toán con mà chưa từng chọn trước đây, • Chọn bài toán con với giá trị mục tiêu cao nhất Trong trường hợp này, ta rẽ nhánh bài toán LP3 với x2 = 0 hoặc x2 = 1 thành hai bài toán con LP4 và... w22 , w24 là biến phụ, A1 , A2 là biến giả Giải bài toán đơn hình dạng bảng, ta có: 15 Nghiệm tối ưu của LP7: x1 = 4, x2 = 0, so sánh với giá trị mục tiêu của bài toán gốc và điều kiện ràng buộc biến nguyên thì nghiệm của LP7 cũng là nghiệm tối ưu của bài toán Vì tất cả các biến trong LP7 có giá trị nguyên, nên không rẽ nhánh LP7 thêm nữa Bài toán đạt nghiệm nguyên chấp nhận được tại LP2, LP6, LP7 đều... hình bài toán: max z = 8x1 + 11x2 + 6x3 + 4x4 , 5x1 + 7x2 + 4x3 + 3x4 ≤ 14, xj ∈ {0, 1}, j = 1, , 4 Theo đó, ta giải bài toán trên bằng phương pháp đơn giản (bỏ đi điều kiện nguyên) , bài toán có dạng: Sau khi thêm biến, ta có: max z = 8x1 + 11x2 + 6x3 + 4x4 , 5x1 + 7x2 + 4x3 + 3x4 + w5 = 14, x1 + w6 = 1, x2 + w7 = 1, x3 + w8 = 1, 18 x4 + w9 = 1, với w5 , w6 , w7 , w8 , w9 la biến bù Phương pháp. .. = 4 nhưng tổng trọng lượng LP2 mang được là 10, LP6 là 11 và LP7 là 12, vậy nghiệm tối ưu của cả bài toán là LP7 với tối ưu giá trị sử dụng z = 4 và tối đa trọng lượng mang theo Tập nghiệm tối ưu cho bài toán gốc là: x∗ = (4, 0), z ∗ = 4 Sơ đồ cây cho quá trình giải bài toán bằng phương pháp nhánh - và - cận có dạng như sau: 16 Ví dụ 1.2.2 (Capital Budgeting problem) Giả sử chúng ta ước đầu tư một giá... được không nguyên nên không là nghiệm tối ưu của bài toán ban đầu Chúng ta thấy nghiệm không nguyên, nên chúng ta phải đảm bảo x1 nguyên và rẽ nhánh x1 = 0 hoặc x1 = 1 và chia thành hai bài toán con LP6 và LP7, LP6: x1 = 0, x2 = x3 = 1 Nghiệm tối ưu: x1 = 0, x2 = x3 = x4 = 1, z = 21 LP7: x1 = 1, x2 = x3 = 1 27 Nghiệm tối ưu: không chấp nhận được Bài toán có hai nghiệm tối ưu thoả ràng buộc biến nguyên. .. x2 ≤ 2, x1 , x2 ≥ 0 và nguyên Đầu tiên, ta giải bài toán trên bằng phương pháp đơn giản (bỏ đi điều kiện nguyên) , Sau khi thêm biến bù, ta có: 3x1 + 2x2 + w3 = 12, x2 + w4 = 2, với w3 , w4 là những biến bù Nghiệm cơ bản chấp nhận được là: x1 = x2 = 0, z = 0, Giải bài toán đơn hình dạng bảng: 8 Ta có nghiệm tối ưu: x1 = 8/3, x2 = 2 Vì nghiệm tối ưu đạt được không phải nghiệm nguyên, ta chọn x1 = 8/3(2... [Land - Doig 1960] và nhất là dạng hoàn thiện trong [Dakin 1965], nó trở nên có ưu thế rõ rệt trong việc giải bài toán nguyên Ta sẽ trình bày phương pháp thông qua ví dụụ Hình 2.1: Ví dụ 2.1.1 Xét quy hoạch nguyên (IP) 30 max z = 5x1 + 4x2 , x1 + x2 ≤ 5, 10x1 + 6x2 ≤ 45, x1 , x2 ∈ Z+ Gọi LP0 là quy hoạch tuyến tính tương ứng ở bước lặp 0, tức là thay x1 , x2 ∈ Z − + bằng x1 , x2 ≥ 0 có nghiệm tối ưu... trị chiết khấu kỳ hạn) là cj Chúng ta nên đầu tư như thế nào để tổng giá trị "present" đạt maximum Đây là dạng bài toán đầu tư "có - không" nên ta sẽ đưa về quy hoạch nguyên nhị phân: n max z = cj x j , j=1 n aj xj ≤ b, j=1 xj = 0 không đầu tư 1 đầu tư xj là nguyên, j = 1, , n 17 Ta xét bài toán cụ thể với khoản đầu tư mơ ước tối đa b = 14, 000 USD, có bốn mục tiêu đầu tư, mục tiêu đầu tư một a1 =... chia bài toán thành hai bài toán con (LP2 và LP3) bằng cách thêm hai ràng buộc mới x1 ≤ 2, x1 ≥ 3, bởi vì [x1 ] = [8/3] = 2 LP2: max z = x1 + x2 , 3x1 + 2x2 ≤ 12, x2 ≤ 2, x1 ≤ 2, x1 , x2 ≥ 0 Thêm biến bù: 3x1 + 2x2 + w5 = 12, x2 + w6 = 2, x1 + w7 = 2, 9 với w5 , w6 , w7 là những biến bù Giải bài toán đơn hình dạng bảng: Nghiệm tối ưu của LP2: x1 = x2 = 2 Vì tất cả các biến trong LP2 có giá trị nguyên,