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 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ượng
khô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 x
1
, x
2
là số lượng vật một và hai mang
theo, 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 = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
, x
2
≥ 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ó:
3x
1
+ 2x
2
+ w
3
= 12,
x
2
+ w
4
= 2,
với w
3
, w
4
là những biến bù.
Nghiệm cơ bản chấp nhận được là:
x
1
= x
2
= 0, z = 0,
Giải bài toán đơn hình dạng bảng:
8
Ta có nghiệm tối ưu: x
1
= 8/3, x
2
= 2
Vì nghiệm tối ưu đạt được không phải nghiệm nguyên, ta chọn x
1
= 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êm
hai ràng buộc mới x
1
≤ 2, x
1
≥ 3, bởi vì [x
1
] = [8/3] = 2.
LP2:
max z = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
≤ 2,
x
1
, x
2
≥ 0.
Thêm biến bù:
3x
1
+ 2x
2
+ w
5
= 12,
x
2
+ w
6
= 2,
x
1
+ w
7
= 2,
9
với w
5
, w
6
, w
7
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: x
1
= x
2
= 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 = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
≥ 3,
x
1
, x
2
≥ 0.
Thêm biến bù:
3x
1
+ 2x
2
+ w
8
= 12,
x
2
+ w
9
= 2,
10
x
1
− w
10
+ A
1
= 3,
với w
8
, w
9
là những biến bù, w
10
là biến phụ, A
1
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: x
1
= 3, x
2
= 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ì
x
2
= [1 + 1/2] = 1, ta có thể chia nhánh LP3 thành hai bài toán con (LP4 và LP5) bằng
cách thêm các ràng buộc x
2
≤ 1, x
2
≥ 2.
LP4:
max z = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
≥ 3,
x
2
≤ 1,
x
1
, x
2
≥ 0.
11
Thêm biến bù:
3x
1
+ 2x
2
+ w
11
= 12,
x
2
+ w
12
= 2,
x
1
− w
13
+ A
1
= 3,
x
2
+ w
14
= 1,
với w
11
, w
12
, w
14
là những biến bù, w
13
là biến phụ, A
1
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: x
1
= 10/3, x
2
= 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ì
x
1
= [3 + 1/3] = 3, ta có thể chia nhánh LP4 thành hai bài toán con (LP6 và LP7) bằng
cách thêm các ràng buộc x
1
≤ 3, x
1
≥ 4.
LP5:
max z = x
1
+ x
2
,
12
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
≥ 3,
x
2
≥ 2,
x
1
, x
2
≥ 0.
Nghiệm của LP5 không chấp nhận được nên không xét LP5 nữa.
LP6:
max z = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
x
2
≤ 2,
x
1
≥ 3,
x
2
≤ 1,
x
1
≤ 3,
x
1
, x
2
≥ 0.
13
Thêm biến bù, biến phụ, biến giả:
3x
1
+ 2x
2
+ w
15
= 12,
x
2
+ w
16
= 2,
x
1
− w
17
+ A
1
= 3,
x
2
+ w
18
= 1,
x
1
+ w
19
= 3,
với w
15
, w
16
, w
18
, w
19
là những biến bù, w
17
là biến phụ, A
1
là 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 x
2
= 0 thì trùng nghiệm cơ bản. Nghiệm tối ưu của
LP6: x
1
= 3, x
2
= 1. Vì tất cả các biến trong LP6 có giá trị nguyên, nên không rẽ nhánh
LP6 thêm nữa.
LP7:
max z = x
1
+ x
2
,
3x
1
+ 2x
2
≤ 12,
14
x
2
≤ 2,
x
1
≥ 3,
x
2
≤ 1,
x
1
≥ 4,
x
1
, x
2
≥ 0.
Thêm biến bù:
3x
1
+ 2x
2
+ w
20
= 12,
x
2
+ w
21
= 2,
x
1
− w
22
+ A
1
= 3,
x
2
+ w
23
= 1,
x
1
− w
24
+ A
2
= 4,
với w
20
, w
21
, w
23
là những biến bù, w
22
, w
24
là biến phụ, A
1
, A
2
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: x
1
= 4, x
2
= 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 có giá trị mục
tiê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ậ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á 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 a
j
sẽ có giá trị "present" (giá trị
chiết khấu kỳ hạn) là c
j
. 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:
max z =
n
j=1
c
j
x
j
,
n
j=1
a
j
x
j
≤ b,
x
j
=
0 không đầu tư
1 đầu tư
x
j
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 a
1
= 5, 000 USD có giá trị c
1
= 8, 000 USD, mục tiêu đầu
tư hai a
2
= 7, 000 USD có giá trị c
2
= 11, 000 USD, mục tiêu đầu tư ba a
3
= 4, 000 USD
có giá trị c
1
= 6, 000 USD, mục tiêu đầu tư bốn a
4
= 3, 000 USD có giá trị c
1
= 4, 000
USD. 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 = 8x
1
+ 11x
2
+ 6x
3
+ 4x
4
,
5x
1
+ 7x
2
+ 4x
3
+ 3x4 ≤ 14,
x
j
∈ {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 = 8x
1
+ 11x
2
+ 6x
3
+ 4x
4
,
5x
1
+ 7x
2
+ 4x
3
+ 3x4 + w
5
= 14,
x
1
+ w
6
= 1,
x
2
+ w
7
= 1,
x
3
+ w
8
= 1,
18
x
4
+ w
9
= 1,
với w
5
, w
6
, w
7
, w
8
, w
9
la biến bù.
Phương pháp đơn hình dạng bảng:
Chuyển hàm mục tiêu từ max thành min, ta giải:
max z = − min −z = −8x
1
− 11x
2
− 6x
3
− 4x
4
,
x
1
x
2
x
3
x
4
w
5
w
6
w
7
w
8
w
9
−8 −11 −6 −4 0 0 0 0 0 0
5 7 4 3 1 0 0 0 0 14
1 0 0 0 0 1 0 0 0 1
0 1 0 0 0 0 1 0 0 1
0 0 1 0 0 0 0 1 0 1
0 0 0 1 0 0 0 0 1 1
Chọn cột xoay là cột 2, hàng xoay là hàng 3, ta có:
x
1
x
2
x
3
x
4
w
5
w
6
w
7
w
8
w
9
−8 0 −6 −4 0 0 11 0 0 11
5 0 4 3 1 0 −7 0 0 7
1 0 0 0 0 1 0 0 0 1
0 1 0 0 0 0 1 0 0 1
0 0 1 0 0 0 0 1 0 1
0 0 0 1 0 0 0 0 1 1
Chọn cột xoay là cột 1, hàng xoay là hàng 2, ta có:
19
x
1
x
2
x
3
x
4
w
5
w
6
w
7
w
8
w
9
0 0 −6 −4 0 8 11 0 0 19
0 0 4 3 1 −5 −7 0 0 2
1 0 0 0 0 1 0 0 0 1
0 1 0 0 0 0 1 0 0 1
0 0 1 0 0 0 0 1 0 1
0 0 0 1 0 0 0 0 1 1
Chọn cột xoay là cột 3, hàng xoay là hàng 1, ta có:
x
1
x
2
x
3
x
4
w
5
w
6
w
7
w
8
w
9
0 0 0 1/2 3/2 1/2 1/2 0 0 22
0 0 1 3/4 1/4 −5/4 −7/4 0 0 1/2
1 0 0 0 0 1 0 0 0 1
0 1 0 0 0 0 1 0 0 1
0 0 0 −3/4 −1/4 5/4 7/4 1 0 1/2
0 0 0 1 0 0 0 0 1 1
Hệ số trên hàng đầu không âm, nghiệm tối ưu là :
x
1
= x
2
= 1, x
3
= 0.5, x
4
= 0, z = 22
Chúng ta thấy nghiệm không nguyên, nên chúng ta phải đảm bảo x
3
nguyên và rẽ nhánh
x
3
= 0 hoặc x
3
= 1 và chia thành hai bài toán con LP2 và LP3,
LP2: x
3
= 0
Sau khi thêm biến, ta có:
max z = 8x
1
+ 11x
2
+ 4x
4
,
20
5x
1
+ 7x
2
+ 3x4 + w
10
= 14,
x
1
+ w
11
= 1,
x
2
+ w
12
= 1,
x
4
+ w
13
= 1,
với w
10
, w
11
, w
12
, w
13
la biến bù.
Chuyển hàm mục tiêu từ max thành min, ta giải:
max z = − min −z = −8x
1
− 11x
2
− 4x
4
,
x
1
x
2
x
4
w
10
w
11
w
12
w
13
−8 −11 −4 0 0 0 0 0
5 7 3 1 0 0 0 14
1 0 0 0 1 0 0 1
0 1 0 0 0 1 0 1
0 0 1 0 0 0 1 1
Chọn cột xoay là cột 2, hàng xoay là hàng 3, ta có:
x
1
x
2
x
4
w
10
w
11
w
12
w
13
−8 0 −4 0 0 11 0 11
5 0 3 1 0 −7 0 7
1 0 0 0 1 0 0 1
0 1 0 0 0 1 0 1
0 0 1 0 0 0 1 1
21
Chọn cột xoay là cột 1, hàng xoay là hàng 2, ta có:
x
1
x
2
x
4
w
10
w
11
w
12
w
13
0 0 −4 0 8 11 0 19
0 0 3 1 −5 −7 0 2
1 0 0 0 1 0 0 1
0 1 0 0 0 1 0 1
0 0 1 0 0 0 1 1
Chọn cột xoay là cột 3, hàng xoay là hàng 1, ta có:
x
1
x
2
x
4
w
10
w
11
w
12
w
13
0 0 0 4/3 4/3 5/3 0 21.667
0 0 1 1/3 −5/3 −7/3 0 2/3
1 0 0 0 1 0 0 1
0 1 0 0 0 1 0 1
0 0 0 −1/3 5/3 7/3 1 1/3
Hệ số trên hàng đầu không âm, nghiệm tối ưu là :
x
1
= x
2
= 1, x
3
= 0, x
4
= 0.667, z = 21.667
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.
LP3: x
3
= 1
Sau khi thêm biến, ta có:
max z = 8x
1
+ 11x
2
+ 6 + 4x
4
,
5x
1
+ 7x
2
+ 3x
4
+ w
14
= 10,
22