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ộitrong Rn, thì bài toán "chỉ có" hữu hạn nghiệm chấp nhận được, không như quy hoạchtuyến tính tổng quát có
Trang 1MỤ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
Trang 2Lờ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ênhướ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ếtquả 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 trungbấ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ậnvă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
Trang 3Lờ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ựcnà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ọngnhấ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ặckhô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ự đónggóp của Quý Thầy Cô và các bạn đồng nghiệp
Trang 4Chươ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à quyhoạch nguyên bộ phận (mixed integer programming - MIP) Tuy vậy, thuật ngữ "Quyhoạ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ạchtuyế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ấttrong 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àoviệc j ∈ D là cij Bài toán đặt ra là tìm cách chia cho mỗi người đúng một việc sao chotổng cước phí là nhỏ nhất Đặt biến là
xij =
(
1 nếu người i được việc j,
0 trường hợp khácthì bài toán trở thành
Trang 5i∈Sxij = 1, i ∈ S (mỗi người chỉ được đúng một việc),
P
j∈Dxij = 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 (binaryinteger 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ộitrong Rn, thì bài toán "chỉ có" hữu hạn nghiệm chấp nhận được, không như quy hoạchtuyế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ầmnế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ó 2n 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 264 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ềnchấ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ệnphươ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ộcbằ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 giantươ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ínhthì độ 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ínhtươ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ếntí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ànhnghiệ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í
Trang 6khô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
Trang 7H.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ụctiê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
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àngbuộ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 đượccủ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ấpnhậ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"
Trang 8Hình 1.2: Nghiệm tối ưu làm tròn xa nghiệm tối ưu của IP
Trang 9ta đượ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 xk = t Nếu nghiệm tối ưu đạt được thoả ràngbuộ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:
Trang 10max z = cx,
Ax ≤ b,
xk ≥ [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ánkhô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 theomộ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ọnglượng mỗi vật là aj và giá trị sử dụng mỗi vật là cj Hỏi ông phải mang thế nào để có giátrị sử dụng lớn nhất?
Gọi xj 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à quyhoạch nguyên sau:
Trang 11Ta xét và giải bài toán balo hai biến như sau: Một học sinh mang theo balo trọng lượngkhông quá 12kg, mang theo hai vật, trọng lượng vật một là 3kg, trọng lượng vật hai tươngứng là 2kg, giá trị sử dụng của cả hai vật là 1 Gọi x1, x2 là số lượng vật một và hai mangtheo, sao cho vật hai mang không quá hai cái Hỏi phải mang theo bao nhiêu để giá trị sửdụng lớn nhất? Mô hình bài toán:
max z = x1+ x2,3x1+ 2x2 ≤ 12,
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ó:
Trang 12Ta 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 + 2/3) mà
có giá trị phân số và chia bài toán thành hai bài toán con (LP2 và LP3) bằng cách thêmhai 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,
Trang 13vớ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,nên không rẽ nhánh LP2 thêm nữa
LP3:
max z = x1+ x2,3x1+ 2x2 ≤ 12,
Trang 14x1− w10+ A1 = 3,
với w8, w9 là những biến bù, w10 là biến phụ, A1 là biến giả
Giải bài toán đơn hình dạng bảng:
Nghiệm tối ưu của LP3: x1 = 3, x2 = 3/2
Nghiệm tối ưu đạt được không nguyên nên không là nghiệm tối ưu của bài toán Vì
x2 = [1 + 1/2] = 1, ta có thể chia nhánh LP3 thành hai bài toán con (LP4 và LP5) bằngcách thêm các ràng buộc x2 ≤ 1, x2 ≥ 2
LP4:
max z = x1+ x2,3x1+ 2x2 ≤ 12,
x2 ≤ 2,
x1 ≥ 3,
x2 ≤ 1,
x1, x2 ≥ 0
Trang 15với w11, w12, w14 là những biến bù, w13 là biến phụ, A1 là biến giả.
Giải bài toán đơn hình dạng bảng:
Nghiệm tối ưu của LP4: x1 = 10/3, x2 = 1
Nghiệm tối ưu đạt được không nguyên nên không là nghiệm tối ưu của bài toán Vì
x1 = [3 + 1/3] = 3, ta có thể chia nhánh LP4 thành hai bài toán con (LP6 và LP7) bằngcách thêm các ràng buộc x1 ≤ 3, x1 ≥ 4
LP5:
max z = x1+ x2,
Trang 17Thêm biến bù, biến phụ, biến giả:
Giải bài toán đơn hình dạng bảng, ta có:
LP6 có nhiều nghiệm tối ưu, khi x2 = 0 thì trùng nghiệm cơ bản Nghiệm tối ưu củaLP6: x1 = 3, x2 = 1 Vì tất cả các biến trong LP6 có giá trị nguyên, nên không rẽ nhánhLP6 thêm nữa
LP7:
max z = x1+ x2,3x1+ 2x2 ≤ 12,
Trang 19Nghiệ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àitoá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 có giá trị mụctiêu là z = 4 nhưng tổng trọng lượng LP2 mang được là 10, LP6 là 11 và LP7 là 12, vậynghiệ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ọnglượ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:
Trang 20Ví dụ 1.2.2 (Capital Budgeting problem) Giả sử chúng ta ước đầu tư một giá trị tối đa
b và có n mục tiêu đầu tư Đầu tư mục tiêu j yêu cầu aj sẽ có giá trị "present" (giá 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" đạtmaximum Đây là dạng bài toán đầu tư "có - không" nên ta sẽ đưa về quy hoạch nguyênnhị phân:
Trang 21Ta 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ụctiêu đầu tư, mục tiêu đầu tư một a1 = 5, 000 USD có giá trị c1 = 8, 000 USD, mục tiêu đầu
tư hai a2 = 7, 000 USD có giá trị c2 = 11, 000 USD, mục tiêu đầu tư ba a3 = 4, 000 USD
có giá trị c1 = 6, 000 USD, mục tiêu đầu tư bốn a4 = 3, 000 USD có giá trị c1 = 4, 000USD Hỏi phải đầu tư như thế nào để tổng giá trị "present" đạt max? Mô hình bài toán:
max z = 8x1+ 11x2+ 6x3+ 4x4,5x1+ 7x2 + 4x3+ 3x4 ≤ 14,
x1+ w6 = 1,
x2+ w7 = 1,
x3+ w8 = 1,
Trang 23Chúng ta thấy nghiệm không nguyên, nên chúng ta phải đảm bảo x3 nguyên và rẽ nhánh
x3 = 0 hoặc x3 = 1 và chia thành hai bài toán con LP2 và LP3,
LP2: x3 = 0
Sau khi thêm biến, ta có:
max z = 8x1+ 11x2+ 4x4,
Trang 27Nghiệ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 haibài toán con LP4 và LP5
LP4: x3 = 1, x2 = 0
Sau khi thêm biến, ta có:
max z = 8x1+ 6 + 4x4,5x1+ 3x4+ w18 = 10,
Trang 30Nghiệ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.
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
Trang 31Nghiệ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 ở LP4 và LP6 nhưng sosánh với giá trị mục tiêu thì ta thấy nghiệm tối ưu của LP6 cũng là nghiệm tối ưu củabà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:
Trang 33Chươ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[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)
Trang 34max 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 là x1 = 3.75, x2 = 1.25 và z = 23.75, xem H 2.1, ở đây
A là điểm tối ưu của LP0 còn các dấu • là miền chấp nhận được (cnđ) của IP Lấy bất
kỳ một biến mà ở A có giá trị không nguyên, chẳng hạn x1 = 3.75 Vì phần miền chấpnhận được của LP0 thoả 3 < x1 < 4 không thể chứa nghiệm chấp nhận được của IP nên
ta có thể bỏ qua không xét phần này và chia nhánh (branching) ra được hai miền và tươngứng là hai bài toán quy hoạch tuyến tính con ở bước 1 tiếp theo:
1 LP1 với miền chấp nhận được là miền chấp nhận được LP0, với x1 ≤ 3;
2 LP2 với miền chấp nhận được là miền chấp nhận được LP0, với x1 ≥ 4
x1 được gọi là biến chia nhánh (branching variable) H 2.2 (a) biểu diễn việc chia miền và(b) là sơ đồ cây của thuật toán ở bước đầu và đã được nghiệm tối ưu của IP
Đến đây ta biết nghiệm tối ưu của IP, phải nằm trong LP (hoặc LP2 (tức là trongmiền xác định của ít nhất một trong hay quy hoạch tuyến tính này) Ta đành giải bất kỳ,chẳng hạn LP1, là LP0 thêm ràng buộc x1 ≤ 3:
max z = 5x1+ 4x2,
Trang 35Hình 2.2:
x1+ x2 ≤ 5,10x1+ 6x2 ≤ 45,
Trang 36đã là 23 = [23.75] ([.] ký hiệu phần nguyên), với 23.75 là mục tiêu tối ưu của LP0 vàcũng là của IP, đều nguyên, nên mục tiêu tối ưu của IP, là số nguyên không thể tốt hơn[23.75] = 23 Vậy ta đã may mắn được một nghiệm tối ưu của IP ngay sau một bước.
Nếu ta không chọn (bất kỳ) LP1 như trên mà chọn LP2, thì dù đã chọn (bất kỳ vàmay mắn một phần) biến chia nhánh là x1, thuật toán kéo dài như sau Giải LP2 (là quyhoạch có được khi thay ràng buộc x1 ≤ 3 bởi x1 ≥ 4 ở LP1) bằng thuật toán đơn hình tađược x1 = 4, x2 = 0.8333, z = 23, 3333 Vì x2 = 0.8333 chưa nguyên, ta phải nhánh LP2
để được LP3, LP4 với ràng buộc bổ sung tương ứng x2 ≤ 0 và x2 ≥ 1, tức là:
1 Miền chấp nhận được LP3 là miền chấp nhận được LP0 thêm ràng buộc
- Nương 2000], Chương 8) Giả sử chọn ngẫu nhiên LP4 và giải ta thấy LP4 không cónghiệm chấp nhận được Tất nhiên sau này chẳng cần nhìn đến LP4 nữa, ta cũng nói nó
đã chạm đáy Tiếp theo còn LP3 và LP1, ta lại chọn bất kỳ, nhưng theo nguyên tắc mớilập hơn thì ta lấy LP3 và giải được nghiệm tối ưu của LP3 là x1 = 4.5, x2 = 0, z = 22.5
Vì x1 chưa nguyên ta phải chia nhánh để được bài toán con:
1 Miền chấp nhận được LP5 là miền chấp nhận được LP0 thêm ràng buộc
x1 ≥ 4, x2 ≤ 0, x1 ≤ 4;
2 Miền chấp nhận được LP4 là miền chấp nhận được LP0 thêm ràng buộc
x1 ≥ 4, x2 ≤ 0, x1 ≥ 5