You are on page 1of 28

Chương II

Phương pháp đơn hình giải bài toán


quy hoạch tuyến tính

1. Mô hình quy hoạch tuyến tính


1.1. Phát biểu mô hình
Với mục đích tìm hiểu bước đầu, xét mô hình toán học sau đây, còn gọi là mô hình quy
hoạch tuyến tính hay bài toán quy hoạch tuyến tính (BTQHTT), mà trong đó chúng ta muốn tối
ưu hoá / cực đại hoá hay cực tiểu hoá hàm mục tiêu:
z = f(x) = c1x1 + c2x2 + .... + cnxn → Max (Min),
với các điều kiện ràng buộc

a11x1 + a12x2 + ... + a1nxn ≤ b1

a21x1 + a22x2 + ... + a2nxn ≤ b2


...
am1x1 + am2x2 + ... + amnxn ≤ bm
x1, x2, ..., xn ≥ 0 (điều kiện không âm).
Ví dụ 1. Xét BTQHTT: Max z = 8x1 + 6x2, với các ràng buộc
4x1 + 2x2 ≤ 60
2x1 + 4x2 ≤ 48
x1, x2 ≥ 0.

Cần tìm các giá trị của các biến quyết định x1, x2 để các ràng buộc được thoả mãn và hàm
mục tiêu đạt giá trị lớn nhất.

Bài toán này có ý nghĩa kinh tế như sau: Giả sử một xí nghiệp sản xuất hai loại sản phẩm I
và II. Để sản xuất ra một đơn vị sản phẩm I cần có 4 đơn vị nguyên liệu loại A và 2 đơn vị
nguyên liệu loại B, các chỉ tiêu đó cho một đơn vị sản phẩm loại II là 2 và 4. Lượng nguyên liệu
dự trữ loại A và B hiện có là 60 và 48 (đơn vị). Hãy xác định phương án sản xuất đạt lợi nhuận
lớn nhất, biết lợi nhuận / đơn vị sản phẩm bán ra là 8 và 6 (đơn vị tiền tệ) cho các sản phẩm loại I
và II.

16
1.2. Phương pháp đồ thị
Phương pháp đồ thị có ý nghĩa minh họa và giúp hiểu bản chất vấn đề.
Bước 1: Vẽ miền các phương án khả thi (còn gọi là miền ràng buộc) là tập hợp các phương
án khả thi (các phương án, nếu nói một cách ngắn gọn). Mỗi phương án được thể hiện qua bộ số
(x1, x2), thoả mãn tất cả các ràng buộc đã có kể cả điều kiện không âm của các biến (xem hình
II.1).
– Trước hết chúng ta vẽ đường thẳng có phương trình là 4x1 + 2x2 = 60 bằng cách xác định
hai điểm thuộc đường thẳng: (x1 = 0, x2 = 30) và (x1 = 15, x2 = 0).
Đường thẳng này chia mặt phẳng làm hai nửa mặt phẳng. Một phần gồm các điểm (x1, x2)
thoả mãn: 4x1 + 2x2 ≤ 60, phần còn lại thoả mãn: 4x1 + 2x2 ≥ 60. Ta tìm được nửa mặt phẳng thoả
mãn: 4x1 + 2x2 ≤ 60.
– Tương tự, có thể vẽ đường thẳng có phương trình là 2x1 + 4x2 = 48 bằng cách xác định
hai điểm thuộc đường thẳng là (x1 = 0, x2 = 12) và (x1 = 24, x2 = 0). Sau đó tìm nửa mặt phẳng
thoả mãn: 2x1 + 4x2 ≤ 48.

x2

30

4x1 + 2x2 = 60
A
12

8 B
2x1 + 4x2 = 48
4
C
O 3 6 15 24 x1

Hình II.1. Phương pháp đồ thị giải bài toán quy hoạch tuyến tính

– Lúc này, giao của hai nửa mặt phẳng tìm được trên đây cho ta tập hợp các điểm (x1, x2)
thoả mãn các ràng buộc. Tuy nhiên, để thoả mãn điều kiện không âm của các biến, ta chỉ xét các
điểm nằm trong góc phần tư thứ nhất. Vậy miền các phương án khả thi (nói vắn tắt hơn, miền
phương án) là miền giới hạn bởi tứ giác OABC (còn gọi là tập lồi đa diện vì là miền tạo nên bởi
giao của các nửa mặt phẳng).
Bước 2: Trong miền (OABC) ta tìm điểm (x1, x2) sao cho
z = 8x1 + 6x2 đạt giá trị lớn nhất.
Cách 1. Dùng đường đồng mức. Tùy theo giá trị của x1, x2 mà z có những mức giá trị khác
nhau.

17
– Vẽ đường đồng mức: 8x1 + 6x2 = c ở mức c = 24, (ta có thể chọn giá trị c bất kỳ, nhưng
chọn c = 24 là bội số chung của 6 và 8 để việc tìm tọa độ các điểm cắt hai trục tọa độ thuận lợi
hơn). Dễ dàng tìm được hai điểm nằm trên đường đồng mức này là (x1 = 0, x2 = 4) và (x1 = 3, x2 =
0). Các điểm nằm trên đường đồng mức này đều cho giá trị hàm mục tiêu z = 24.
– Tương tự, có thể vẽ đường đồng mức thứ hai: 8x1 + 6x2 = 48 đi qua hai điểm (x1 = 0, x2 =
8) và (x2 = 0, x1 = 6). Chúng ta nhận thấy, nếu tịnh tiến song song đường đồng mức lên trên theo
G
hướng của véc tơ pháp tuyến n (8, 6) thì giá trị của hàm mục tiêu z = 8x1 + 6x2 tăng lên.
Vậy giá trị z lớn nhất đạt được khi đường đồng mức đi qua điểm B(12, 6) (tìm được x1 =
12, x2 = 6 bằng cách giải hệ phương trình 4x1 + 2x2 = 60 và 2x1 + 4x2 = 48).
Do đó, trong các phương án khả thi thì phương án tối ưu là (x1 = 12, x2 = 6). Tại phương án
này, giá trị hàm mục tiêu là lớn nhất zmax = 8 × 12 + 6 × 6 = 132.
Nhận xét. Phương án tối ưu (nếu có) của một BTQHTT với miền phương án D, là một tập
lồi đa diện có đỉnh, luôn đạt được tại ít nhất một trong các đỉnh của D. Các đỉnh này còn được gọi
là các điểm cực biên của tập lồi đa diện D (chính xác hơn, điểm cực biên là điểm thuộc tập lồi đa
diện, mà không thể tìm được một đoạn thẳng nào cũng thuộc tập lồi đa diện nhận điểm đó là điểm
trong). Nhận xét trên đây là một định lý toán học (xem thêm chương VI) đã được chứng minh
một cách tổng quát. Nói một cách hình ảnh, muốn đạt được phương án tối ưu cho các BTQHTT
thì cần phải “mạo hiểm” đi xét các điểm cực biên của miền phương án.
Cách 2. Từ nhận xét trên, đối với BTQHTT có phương án tối ưu và có miền phương án D
là tập lồi đa diện có đỉnh, ta có thể tìm phương án tối ưu bằng cách so sánh giá trị của hàm mục
tiêu tại các điểm cực biên của D. Quay lại ví dụ 1, ta có giá trị z tại O(0, 0): z (0, 0) = 0, tại A(0,
12): z(0, 12) = 72, tại C(15, 0): z(15, 0) = 120 và tại B(12, 6): z(12, 6) = 132 (đạt zmax).
Nhận xét. Xét BTQHTT có phương án tối ưu và có miền phương án D là tập lồi đa diện có
đỉnh. Để tìm phương án tối ưu, ta xuất phát từ một điểm cực biên nào đó và tìm cách cải thiện
hàm mục tiêu bằng cách đi tới điểm cực biên kề tốt hơn. Tiếp tục như vậy cho tới khi tìm được
phương án tối ưu. Quy trình giải này bao gồm hữu hạn bước do số điểm cực biên là hữu hạn.
Đối với BTQHTT trong ví dụ 1, quy trình giải được minh hoạ như sau:

O(0, 0) → A(0, 12) → B(12, 6) dừng


z=0 z = 72 z = 132
hoặc:

O(0, 0) → C(15, 0) → B(12, 6) dừng


z=0 z = 120 z = 132
Quy trình giải BTQHTT tổng quát có sơ đồ khối giản lược như trình bày trên hình II.2. Trong
sơ đồ trên, vì mục đích trình bày vấn đề đơn giản, chúng ta không đề cập tới các trường hợp khi
BTQHTT có miền phương án là tập rỗng (lúc đó ta không tìm được phương án cực biên xuất phát)
cũng như khi ta không tìm được điểm cực biên kề tốt hơn mặc dù điều kiện tối ưu chưa thoả mãn (lúc
đó hàm mục tiêu z không bị chặn).

18
Sơ đồ khối

Bắt đầu

Nhập dữ liệu

Tìm điểm cực biên


xuất phát

Sai Tìm điểm


Kiểm tra điều kiện cực biên kề
tối ưu tốt hơn

Đúng

In và lưu trữ kết quả

Dừng

Hình II.2. Sơ đồ khối giải BTQHTT

2. Phương pháp đơn hình


2.1. Tìm hiểu quy trình tính toán
Phương pháp đơn hình là phương pháp số giải BTQHTT theo sơ đồ trên. Để giải ví dụ đã
cho, trước hết chúng ta cần đưa BTQHTT về dạng chính tắc bằng các biến bù không âm x3 và x4
như sau:
Max z = 8x1 + 6x2 + 0x3 + 0x4
với các ràng buộc
4x1 + 2x2 + x3 = 60
2x1 + 4x2 + x4 = 48

x1, x2, x3, x4 ≥ 0.


Chú ý. BTQHTT có dạng chính tắc là BTQHTT với các biến không âm, các ràng buộc có
dấu “=”, hệ số vế phải của các ràng buộc không âm. Ngoài ra, mỗi phương trình bắt buộc phải có
một biến đứng độc lập với hệ số +1.

Cách lập và biến đổi các bảng đơn hình

19
Để giải BTQHTT dạng chính tắc trên đây, cần lập một số bảng đơn hình như trong bảng
II.1. Trước hết, cần điền số liệu của bài toán đã cho vào bảng đơn hình bước 1:
– Cột 1 là cột hệ số hàm mục tiêu ứng với các biến cơ sở đã chọn. Phương án xuất phát có
thể chọn là x1 = x2 = 0 (đây chính là điểm gốc toạ độ O(0, 0) trên hình II.1), do đó x3 = 60, x4 =
48. Như vậy tại bước này chúng ta chưa bước vào sản xuất, nên trong phương án chưa có đơn vị
sản phẩm loại I hay loại II nào được sản xuất ra (chỉ “sản xuất” ra các lượng nguyên liệu dư thừa,
ta cũng nói là các “sản phẩm” loại III và IV), và giá trị hàm mục tiêu z tạm thời bằng 0.

Bảng II.1. Các bảng đơn hình giải BTQHTT

Hệ số hàm c1 = 8 c2 = 6 c3 = 0 c4 = 0
Biến cơ sở Phương án
mục tiêu cj x1 x2 x3 x4
Bảng đơn hình bước 1
0 x3 60 4 2 1 0
0 x4 48 2 4 0 1
Hàng z z0 = 0 z1 = 0 z2 = 0 z3 = 0 z4 = 0
Hàng Δj = cj – zj Δ1 = 8 Δ2 = 6 Δ3 = 0 Δ4 = 0
Bảng đơn hình bước 2
8 x1 15 1 1/2 1/4 0
0 x4 18 0 3 –1/2 1
Hàng z z0 = 120 z1 = 8 z2 = 4 z3 = 2 z4 = 0
Hàng Δj = cj – zj Δ1 = 0 Δ2 = 2 Δ3 = –2 Δ4 = 0
Bảng đơn hình bước 3
8 x1 12 1 0 1/3 –1/6
6 x2 6 0 1 –1/6 1/3
Hàng z z0 = 132 8 6 5/3 2/3
Hàng Δj = cj – zj 0 0 –5/3 –2/3

Các biến bù có giá trị lớn hơn 0 có nghĩa là các nguyên liệu loại tương ứng chưa được sử
dụng hết. Ta gọi các biến x3 và x4 là các biến cơ sở vì chúng có giá trị lớn hơn 0 còn x1 và x2 là
các biến ngoài cơ sở vì chúng có giá trị bằng 0. Với bài toán có hai ràng buộc, tại mỗi bước chỉ có
hai biến cơ sở.
– Cột 2 là cột các biến cơ sở. Trong cột 3 (cột phương án) cần ghi các giá trị của các biến
cơ sở đã chọn.
– Các cột tiếp theo là các cột hệ số trong các điều kiện ràng buộc tương ứng với các biến
x1, x2, x3 và x4 của bài toán đã cho.

Phân tích bảng đơn hình bước 1


– Hệ số ứng với biến x1 trên hàng thứ nhất là a11 = 4 có nghĩa là tỷ lệ thay thế riêng giữa
một đơn vị sản phẩm loại I và một đơn vị sản phẩm loại III là 4 (giải thích: xét phương trình (hay

20
ràng buộc) thứ nhất 4x1 + 2x2 + x3 = 60, x1 tăng một đơn vị thì x3 phải giảm bốn đơn vị nếu giữ
nguyên x2). Tương tự ta có thể giải thích được ý nghĩa của các hệ số aij khác cho trên hàng 1 và
hàng 2 trong bảng đơn hình bước 1.
– Chúng ta xét hàng z của bảng đơn hình. Để tính z1, cần áp dụng công thức
z1 = (cột hệ số của hàm mục tiêu)× (cột hệ số của biến x1) = 0×4 + 0×2 = (giá một đơn vị sản
phẩm loại III)×(tỷ lệ thay thế riêng loại I / loại III) + (giá một đơn vị sản phẩm loại IV)×(tỷ lệ
thay thế riêng loại I / loại IV) = tổng chi phí phải bỏ ra khi đưa thêm một đơn vị sản phẩm loại I
vào phương án sản xuất mới = 0. Các giá trị zj, với j = 1, 2, 3, 4, được tính tương tự và chính là
các chi phí khi đưa thêm một đơn vị sản phẩm loại xj vào phương án sản xuất mới. Còn z0 là giá
trị của hàm mục tiêu đạt được tại phương án đang xét: z0 = (cột hệ số của hàm mục tiêu)× (cột
phương án) = 0×60 + 0 × 48 = 0.
– Trên hàng Δj cần ghi các giá trị Δj , j = 1, 2, 3, 4, tính theo công thức Δj = cj –zj = lợi
nhuận / đơn vị sản phẩm – chi phí / đơn vị sản phẩm. Vậy Δj là "lãi biên" / một đơn vị sản phẩm
khi đưa một thêm một đơn vị sản phẩm loại xj vào phương án sản xuất mới. Nếu Δj > 0 thì hàm
mục tiêu còn tăng được khi ta đưa thêm các sản phẩm loại j vào phương án sản xuất mới. Có thể
chứng minh được Δj chính là đạo hàm riêng ∂z / ∂x j của hàm mục tiêu z theo biến xj . Như vậy,
x1 tăng lên 1 thì z tăng lên 8 còn x2 tăng lên 1 thì z tăng lên 6 .
Do Δ1 và Δ2 đều lớn hơn 0 nên vẫn còn khả năng cải thiện hàm mục tiêu khi chuyển sang
(hay “xoay sang”) một phương án cực biên kề tốt hơn (quay lại nhận xét ở mục 1.2, phần giải bài
toán bằng phương pháp đồ thị: điểm cực biên kề của điểm O(0, 0) có thể là A(0, 12) hay C(15,
0)).

Thủ tục xoay (pivotal procedure)


Bước 1: Chọn cột xoay là cột bất kỳ có Δj > 0. Lúc đó biến xj tương ứng với cột xoay được
chọn làm biến cơ sở mới do xj tăng kéo theo hàm mục tiêu tăng. ở đây ta chọn đưa x1 vào làm
biến cơ sở mới.
Bước 2: Chọn hàng xoay để xác định đưa biến nào ra khỏi tập các biến cơ sở (vì tại mỗi
bước số biến cơ sở là không thay đổi). Để chọn hàng xoay, ta thực hiện quy tắc “tỷ số dương bé
nhất” bằng cách lấy cột phương án (60, 48)T chia tương ứng cho cột xoay (4, 2)T để chọn tỷ số bé
nhất. Một điều cần chú ý là ta chỉ xét các tỷ số có mẫu số dương.
Vì Min {60/4, 48/2} = 60/4 đạt được tại hàng đầu, nên hàng xoay là hàng đầu (hàng tương
ứng với biến x3). Do đó cần đưa x3 ra khỏi tập các biến cơ sở.
Bước 3: Chọn phần tử xoay nằm trên giao của hàng xoay và cột xoay.
Bước 4: Xoay sang bảng đơn hình mới, xác định các biến cơ sở mới để điền vào cột biến
cơ sở, đồng thời thay các giá trị trong cột hệ số hàm mục tiêu. Sau đó, tính lại các phần tử của
hàng xoay bằng cách lấy hàng xoay cũ chia cho phần tử xoay để có hàng mới tương ứng.
Bước 5: Các phần tử còn lại của bảng đơn hình mới tính theo quy tắc “hình chữ nhật”:
(1)mới = (1)cũ – (2)cũ× (4)cũ/(3)cũ, trong đó (3) là đỉnh tương ứng với phần tử xoay (xem hình I.3).

21
(2) (3)
Chẳng hạn: nếu (1)cũ = 4,(2)cũ = 2,
(3)cũ = phần tử xoay = 4, (4)cũ = 2 thì
(1)mới = 4 – 2×2/4 =3

(1) (4)

Hình II.3. Quy tắc hình chữ nhật

Giải thích. Các bước xoay trên đây chỉ là phép biến đổi tương đương hệ phương trình
4x1 + 2x2 + x3 = 60 (2.1)
2x1 + 4x2 + x4 = 48 (2.2)
để có hệ
x1 + (1/2)x2 + (1/4)x3 = 15 (2.1’)
0x1 + 3x2 – (1/2)x3 + x4 = 18 (2.2’)

bằng cách lấy phương trình (2.1) chia cho 4 (phần tử xoay) để có (2.1’), rồi lấy (2.2) trừ bớt 2×
(2.1)/4 để có (2.2’). Đây chính là nội dung của bước 4 và bước 5. Còn việc thực hiện bước 3 sẽ
đảm bảo rằng giá trị của các biến cơ sở mới không âm (x1 = 15,
x4 = 18).
Áp dụng thủ tục xoay cho các phần tử nằm trên hàng 1 và 2 của bảng đơn hình bước 1, sau
đó tính các giá trị trên hàng zj và Δj tương tự như khi lập bảng đơn hình bước 1, chúng ta sẽ nhận
được bảng đơn hình bước 2.

Phân tích bảng đơn hình bước 2


Bảng bước 2 có thể được phân tích tương tự như bảng bước 1. Cần chú ý rằng lúc này ta
đang ở vị trí của điểm C(15, 0) vì x1 = 15 còn x2 = 0 (xem hình II.1). Tại điểm này giá trị của hàm
mục tiêu là z0 = 120 đã được cải thiện hơn so với bước 1. Ta thấy Δ2 = 2 > 0 nên còn có thể cải
thiện hàm mục tiêu bằng cách đưa biến x2 vào làm biến cơ sở mới. Thực hiện các bước xoay sang
phương án cực biên kề tốt hơn, chúng ta sẽ có bảng đơn hình bước 3.

Phân tích bảng đơn hình bước 3


Tại bảng đơn hình bước 3 ta thấy điều kiện tối ưu đã được thoả mãn (Δj ≤ 0, ∀j = 1,4 ) nên
không còn khả năng cải thiện phương án. Phương án tối ưu đã đạt được tại x1 = 12, x2 = 6, x3 = 0,
x4 = 0, tức là tại điểm cực biên B(12, 6) với giá trị zmax = 132 (xem thêm hình II.1).
Một số chú ý
– Điều kiện tối ưu cho các BTQHTT dạng Max là Δj ≤ 0, ∀j .
– Đối với các BTQHTT cần cực tiểu hoá hàm mục tiêu thì điều kiện tối ưu (hay tiêu chuẩn
dừng) là Δj ≥ 0, ∀j (nếu ∃ j* sao cho Δ j* < 0 thì cần tiếp tục cải thiện hàm mục tiêu bằng cách
chọn cột j* làm cột xoay).

22
– Trong thực tiễn giải các BTQHTT dạng tổng quát có thể xảy ra trường hợp không tìm
được phương án xuất phát (tức là không có phương án khả thi). Lúc này có thể kết luận mô hình
đã thiết lập có các điều kiện ràng buộc quá chặt chẽ, cần xem xét nới lỏng các điều kiện này.
– Trong trường hợp ta tìm được cột xoay mà không tìm được hàng xoay thì kết luận hàm
mục tiêu không bị chặn trên (đối với các BTQHTT dạng Max) hoặc không bị chặn dưới (đối với
các BTQHTT dạng Min).
Trong các trường hợp trên cũng phải dừng lại và kết luận mô hình quy hoạch tuyến tính đã
thiết lập không phù hợp với thực tế.

2.2. Khung thuật toán đơn hình


Sau đây là khung thuật toán của phương pháp đơn hình được phát biểu cho BTQHTT cực
đại hóa dạng chính tắc.
Bước khởi tạo
– Tìm một phương án cực biên ban đầu.
– Tính Δj = cj – zj, ∀j = 1,n , trong đó n là số biến của bài toán đang xét.
Các bước lặp
Bước 1: Kiểm tra điều kiện tối ưu. Nếu điều kiện tối ưu Δj = cj – zj ≤ 0, ∀j = 1,n đã được
thoả mãn thì in / lưu trữ kết quả của bài toán và chuyển sang bước kết thúc.
Bước 2: Nếu tồn tại một chỉ số j sao cho Δj > 0 thì tiến hành thủ tục xoay gồm năm bước
đã biết, tính lại các Δj, ∀j = 1,n và quay lại bước 1 (Chú ý: Trong trường hợp ta tìm được cột
xoay mà không tìm được hàng xoay thì kết luận hàm mục tiêu không bị chặn, in / lưu trữ kết quả
của bài toán và chuyển sang bước kết thúc).
Bước kết thúc. Dừng.

3. Cơ sở toán học của phương pháp đơn hình

3.1. Phát biểu bài toán quy hoạch tuyến tính dạng chính tắc
Xét BTQHTTdạng sau đây (với các ràng buộc đều có dấu =):
Max (Min) z = c1x1 + c2x2 + ... + cnxn
với hệ điều kiện ràng buộc

⎧a11 x1 + a12 x 2 + ... + a1n x n = b1



⎪a21 x1 + a22 x 2 + ... + a2n x n = b2
⎨a x + a x + ... + a x = b
⎪ m1 1 m2 2 mn n m

⎪x ≥ 0, ∀j = 1,n.
⎩ j

Chúng ta sử dụng các ký hiệu sau (T là ký hiệu chuyển vị):


– Véc tơ hệ số hàm mục tiêu c = (c1, c2, …, cn)T ∈ Rn,
– Véc tơ quyết định x = (x1, x2, …, xn)T ∈ Rn,
– Véc tơ hệ số vế phải b = (b1, b2, …, bm)T ∈ Rm,

23
– Ma trận hệ số các điều kiện ràng buộc

⎡ a11 a12 ... a1n ⎤


⎢a a22 ... a2n ⎥⎥
A = ⎢ 21 ∈ Rm×n,
⎢ ... ... ... ... ⎥
⎢ ⎥
⎣am1 am 2 ... amn ⎦

trong đó aj = (a1j, a2j, …,amj)T là véc tơ cột j của ma trận A, ∀j = 1,n .


Với các ký hiệu trên, BTQHTT được viết ngắn gọn là:

Max z = cTx, với x ∈ D = {x∈ Rn: Ax = b, x ≥ 0}. (2.3)

BTQHTT trên đây được gọi là BTQHTT dạng chuẩn tắc nếu hạng của A bằng m và b ≥ 0
(các tọa độ của b đều không âm). Ngoài ra, nếu A có m véc tơ cột là các véc tơ đơn vị độc lập
tuyến tính thì BTQHTT dạng chuẩn tắc trở thành BTQHTT dạng chính tắc. Trong trường hợp
BTQHTT dạng chính tắc, không làm giảm tính tổng quát, chúng ta luôn có thể coi m véc tơ cột aj
, ∀j = n − m + 1,n là các véc tơ đơn vị độc lập tuyến tính,
Ví dụ 2. Chúng ta xét lại ví dụ 1 của chương này.
Max z = 8x1 + 6x2 + 0x3 + 0x4
với các ràng buộc
4x1 + 2x2 + x3 = 60
2x1 + 4x2 + x4 = 48

x1, x2, x3, x4 ≥ 0.


Đây là BTQHTT dạng chính tắc. Giả sử ma trận A được phân rã theo khối dưới dạng A =
[N B] với B là ma trận khả nghịch. Chúng ta sẽ sử dụng các ký hiệu sau:
J = {1, 2, ..., n} là tập các chỉ số, JB = {j: aj là véc tơ cột của B} là tập chỉ số các biến cơ sở, JN = J
\ JB = {j : aj là véc tơ cột của N} là tập các chỉ số các biến ngoài cơ sở. Lúc đó, có thể viết véc tơ

( ) ( )
T T
quyết định dưới dạng x = x NT , x BT và véc tơ hệ số hàm mục tiêu c = cNT , cBT .

Trong ví dụ 2, ta có: JN = {1, 2}, JB = {3, 4}. Dễ dàng thấy, phương án ban đầu

(x )
T
x = T
N , x BT = (0, 0, 60, 48)T, trong đó xN = (x1, x2)T = (0, 0)T và xB = (x3, x4)T =

(c )
T
(60, 48)T. Véc tơ hệ số hàm mục tiêu là c = T
N , cBT = (8, 6, 0, 0)T với cN = (8 6)T,

cB = (0 0)T. Các véc tơ cột của ma trận ràng buộc A là:


⎡4 ⎤ ⎡2 ⎤ ⎡1 ⎤ ⎡0 ⎤
a1 = ⎢ ⎥ , a2 = ⎢ ⎥ , a3 = ⎢ ⎥ , a4 = ⎢ ⎥ .
⎣2 ⎦ ⎣4 ⎦ ⎣0 ⎦ ⎣1 ⎦

⎡4 2 ⎤ ⎡1 0 ⎤
Vậy A = (a1, a2, a3, a4) = [N B] với N = ⎢ ⎥,B= ⎢0 1 ⎥ .
⎣2 4 ⎦ ⎣ ⎦

24
⎡x ⎤
Cần chú ý rằng: Ax = b ⇔ [N B] ⎢ N ⎥ = b ⇔ NxN + BxB = b⇔ BxB = b ⇔ xB = B–1b.
⎣xB ⎦

Phương án cực biên


Đối với BTQHTT (2.3) dạng chính tắc luôn có thể tìm được một phương án xuất phát x =
(0, 0, …, 0, b1, b2, …, bm)T, trong đó n – m tọa độ đầu tiên đều bằng 0. Đây là một phương án cực
biên. Một cách tổng quát, xét một phân rã tùy ý của ma trận A = [N B] với B là ma trận vuông
được tạo nên từ m véc tơ cột độc lập tuyến tính của A, N là ma trận được tạo nên từ các véc tơ cột
còn lại. Lúc đó, một phương án cực biên của BTQHTT tương ứng với sự phân rã trên của A là

( )
T
một phương án có dạng x = x NT , x BT trong đó xN = 0, xB ≥ 0. Ma trận B được gọi là ma trận cơ
sở tương ứng với x (có thể xem thêm về vấn đề phương án cực biên trong chương VI). Như vậy,
một phương án cực biên không có quá m tọa độ dương. Phương án cực biên có đúng m tọa độ
dương được gọi là phương án cực biên không suy biến, nếu trái lại, đó là phương án cực biên suy
biến.

3.2. Công thức số gia hàm mục tiêu


Xét BTQHTT (2.3) dạng chính tắc, giả sử x là phương án cực biên tương ứng với phân rã
A = [N B], với B là ma trận cơ sở, còn x là một phương án khác. Đặt Δx = x – x là véc tơ số
gia các biến quyết định. Chúng ta tìm cách thiết lập công thức số gia hàm mục tiêu:

cT x – cTx = cT( x – x) = cTΔx.

⎡ Δx ⎤
Ta thấy ngay A x = Ax = b nên AΔx = 0. Ký hiệu Δx = ⎢ N ⎥ , ta có AΔx = 0 ⇔ [N
⎣ Δx B ⎦
⎡ Δx ⎤
B] ⎢ N ⎥ = 0 ⇔ NΔxN + BΔxB = 0 ⇔ BΔxB = –NΔxN ⇔ ΔxB = B–1NΔxN.
⎣ Δx B ⎦

⎡ Δx ⎤
Vậy cTΔx = (cNT ,cBT ) ⎢ N ⎥ = cNT ΔxN + cBT ΔxB = cNT ΔxN – cBT B–1NΔxN
⎣ Δx B ⎦

= ( cNT – cBT B–1N)ΔxN = ( cNT – cBT B–1N)ΔxN + ( cBT – cBT B–1B)ΔxB

⎡ Δx ⎤
= [ cNT – cBT B–1N, cBT – cBT B–1B] ⎢ N ⎥ .
⎣ Δx B ⎦

Đặt Δ = [ cNT – cBT B–1N, cBT – cBT B–1B] = [ΔN, ΔB], thì cTΔx = Δ×Δx. Đây chính là công thức
số gia hàm mục tiêu cần thiết lập.
Quay lại ví dụ 2, trong bảng đơn hình bước 1, chúng ta có:

⎡ −1
⎡1 0 ⎤ ⎡4 2 ⎤ ⎡1 0 ⎤ ⎡ 1 0 ⎤ ⎤
−1

Δ = ⎢(8,6) − (0,0) ⎢ ⎥ ⎢ ⎥ , (0,0) − (0,0) ⎢0 1 ⎥ ⎢0 1 ⎥ ⎥


⎢⎣ ⎣0 1 ⎦ ⎣ 2 4 ⎦ ⎣ ⎦ ⎣ ⎦ ⎥⎦

= (8, 6, 0, 0) = (Δ1, Δ2, Δ3, Δ4).

25
∂z
Nhận xét. Có thể chứng minh được rằng Δ j = , ∀j = 1, n. Chẳng hạn, tương ứng với
∂x j

bảng đơn hình bước 2 ta có: Δz = z(x + Δx) –z(x) = cT(x + Δx) – cTx = cTΔx = Δ Δx = Δ1Δx1 +
Δ2 Δx 2 + Δ3 Δx 3 + Δ4 Δx 4 = 0 Δx 1 + 2 Δx 2 + (–2)Δx3 + 0 Δx 4 . Rõ ràng
∂z ∂z ∂z ∂z
rằng, = Δ1 = 0 , = Δ2 = 2 , = Δ3 = −2 , = Δ4 = 0 .
∂x1 ∂x 2 ∂x 3 ∂x 4

3.3. Tiêu chuẩn tối ưu

( )
T
Xét phương án cực biên x của BTQHTT (2.3) dạng chính tắc: x = x NT , x BT (tương ứng
với phân rã A = [N B], với B là ma trận cơ sở). Lúc này, ∀ x ∈ D ta có:

cT x ≤ cTx ⇔ cT x – cTx ≤ 0 ⇔ cTΔx ≤ 0.

Vậy tiêu chuẩn để x là phương án tối ưu là: cTΔx ≤ 0, ∀Δx ⇔ Δ×Δx ≤ 0, ∀Δx

⎡ Δx ⎤
⇔ (ΔN, ΔB) ⎢ N ⎥ = ΔNΔxN + ΔBΔxB ≤ 0,∀Δx ⇔ ΔNΔxN ≤ 0,∀Δx (do ΔB = 0).
⎣ Δx B ⎦

Định lý 1. Xét BTQHTT (2.3) dạng chính tắc. Điều kiện đủ để một phương án cực biên x =

(x )
T
T
N , x BT (tương ứng với phân rã A = [N B], với B là ma trận cơ sở) là phương án tối ưu là ΔN

= cNT – cBT B–1N ≤ 0. Ngược lại, nếu x là phương án cực biên tối ưu không suy biến thì ta cũng có
ΔN = cNT – cBT B–1N ≤ 0.
Chứng minh
Điều kiện đủ. Nếu ΔN ≤ 0, thì ΔNΔxN ≤ 0, ∀ x ∈ D, (chú ý rằng xN = 0 luôn đúng, nên cũng
luôn có ΔxN = x N – xN ≥ 0). Do ΔB = 0 nên ΔNΔxN + ΔBΔxB ≤ 0, ∀Δx hay Δ × Δx ≤ 0,∀Δx. Vậy
cT x ≤ cTx, ∀ x ∈ D. Do đó x là phương án tối ưu.
Điều kiện cần. Sử dụng phương pháp chứng minh phản chứng, giả sử x là phương án cực
biên tối ưu không suy biến và điều kiện ΔN ≤ 0 không được thoả mãn. Lúc đó tồn tại chỉ số j* ∈
JN sao cho Δj* > 0. Xét phương án x = x + Δx. Chúng ta sẽ chỉ ra cách xây dựng x sao cho x là
phương án khả thi thỏa mãn cT x > cTx hay cTΔx < 0, từ đó suy ra x không phải là phương án tối
ưu.
Thật vậy, chọn ΔxN sao cho: Δxj = 0, ∀j ∈ JN, j ≠ j* và Δxj* = θ > 0.
⎡ Δx ⎤
Chọn ΔxB sao cho: AΔx = 0 ⇔[N B] ⎢ N ⎥ = 0 ⇔ NΔxN + BΔxB = 0 ⇔ BΔxB = –NΔxN
⎣ Δx B ⎦
⇔ ΔxB = –B–1NΔxN ⇔ ΔxB = –B–1θaj*.
⎡4 2 ⎤ ⎡ Δx 1 ⎤ ⎡4 2 ⎤ ⎡ θ ⎤ ⎡4 ⎤
Trong ví dụ 2, ta thấy: N Δ x N = ⎢ ⎥ ×⎢ ⎥ = ⎢ ⎥ × ⎢ ⎥ = θ× ⎢ ⎥ = θ× a 1 ,
⎣ 2 4 ⎦ ⎣ Δx 2 ⎦ ⎣ 2 4 ⎦ ⎣0 ⎦ ⎣2 ⎦
với j* = 1.

26
Để x là phương án khả thi, cần phải có x ≥ 0. Dễ thấy x N ≥ 0 theo cách xây dựng ΔxN.
Còn x B = xB + ΔxB = xB – B–1θaj* . Để x B ≥ 0 phải chọn θ theo quy tắc tỷ số dương bé nhất (như
đã biết ở mục 2.1 khi mô tả thủ tục xoay).
Trường hợp 1: B–1aj* ≤ 0. Lúc này, khi thực hiện “quy tắc tỷ số dương bé nhất” (lấy cột
phương án chia cho cột aj*) ta không nhận được một tỷ số nào có mẫu số dương. Để x B ≥ 0,
chúng ta có thể chọn θ > 0 và lớn tuỳ ý. Do đó cTΔx = θ Δj* → +∞ khi chọn θ → +∞. Điều này
chứng tỏ phương án x không phải là phương án tối ưu và BTQHTT (2.3) dạng chính tắc có hàm
mục tiêu không bị chặn trên.
Trường hợp 2: Véc tơ B–1aj* có tọa độ dương. Để cho dễ hiểu, xét lại ví dụ 1 và bảng đơn
hình II.1 (bước 2). Do x1 và x4 là các biến cơ sở và j* = 2 nên:

⎡4 0 ⎤ ⎡ 1 / 4 0⎤ ⎡ 1 / 4 0 ⎤ ⎡ 2 ⎤ ⎡1 / 2 ⎤
B= ⎢ ⎥ ⇒ B–1 = ⎢ ⎥ ⇒ B–1aj* = ⎢ ⎥×⎢ ⎥ =⎢ ⎥.
⎣2 1 ⎦ ⎣ −1 / 2 1 ⎦ ⎣ −1 / 2 1 ⎦ ⎣4 ⎦ ⎣ 3 ⎦

⎡15 ⎤ ⎡1 / 2 ⎤ ⎧⎪15 − (1 / 2)θ ≥ 0


Vậy: x B = xB + ΔxB = xB – B–1θaj* = ⎢ ⎥ – θ× ⎢ ⎥≥0⇔ ⎨
⎣18 ⎦ ⎣ 3 ⎦ ⎪⎩18 − 3θ ≥ 0.

⎧ 15 18 ⎫
Chọn θ = Min ⎨ , ⎬ = 6 theo “quy tắc tỷ số dương bé nhất” sẽ đảm bảo x B ≥ 0.
⎩1 / 2 3 ⎭
Do x là phương án cực biên không suy biến nên xB > 0 kéo theo θ > 0. Cuối cùng, ta có
T
c Δx = Δ×Δx = ΔNΔxN + ΔBΔxB = ΔNΔxN = Δj* Δxj* = θ×Δj* > 0. Do đó, phương án x không thể là
phương án tối ưu (đpcm). „
Nhận xét
– Nếu tồn tại chỉ số i* ∈ JB sao cho xi* = 0 (như đã biết, phương án cực biên x lúc này được
gọi là phương án cực biên suy biến), thì từ điều kiện x B = xB + ΔxB = xB – B–1θaj* ≥ 0 có thể xảy
ra trường hợp chọn được θ = 0. Do đó cTΔx = θΔj* = 0, tức là hai phương án x và x cho cùng một
giá trị hàm mục tiêu. Trong các trường hợp như vậy có thể xảy ra hiện tượng xoay vòng: Chẳng
hạn, khi chuyển từ x sang x , rồi lại chuyển từ x sang một phương án x nào đó mà vẫn chưa cải
thiện được giá trị của hàm mục tiêu. Sau đó, lại có thể xảy ra việc chuyển từ x về x. Như vậy quá
trình giải BTQHTT theo thuật toán đơn hình sẽ bị “treo” tại vòng lặp x → x → x → x. Để khắc
phục hiện tượng xoay vòng có thể áp dụng một số thủ tục tính toán. Cách đơn giản nhất là áp
dụng quy tắc tỷ số dương bé nhất với sự bổ sung sau: Nếu có nhiều chỉ số ứng với tỷ số dương bé
nhất, thì chọn ngẫu nhiên một trong các chỉ số đó để xác định hàng xoay tương ứng.
– Trong quá trình giải BTQHTT (2.3) dạng chính tắc khi xuất phát từ một phương án cực
biên, bằng thủ tục xoay ta luôn chuyển từ phương án cực biên này sang phương án cực biên khác
cho tới khi các dấu hiệu dừng được thỏa mãn (tức là khi tiêu chuẩn tối ưu được thỏa mãn hay khi
kết luận được BTQHTT đã cho có hàm mục tiêu không bị chặn trên).

3.4. Thuật toán đơn hình cho bài toán quy hoạch tuyến tính dạng chính tắc
Xét BTQHTT dạng chính tắc:
Max z = c1x1 + c2x2 + ... + cnxn + cn+1xn+1 + ... + cn+mxn+m

27
với các ràng buộc
a11x1 + a12x2 + ... + a1nxn + xn+1 = b1
a21x1 + a22x2 + ... + a2nxn + xn+2 = b2
...
am1x1 + am2x2 + ... + amnxn + xn+m = bm

x1, x2, ..., xn, xn+1, ..., xn+m ≥ 0

Bước khởi tạo


– Nhập các hệ số hàm mục tiêu c, ma trận ràng buộc A và các hệ số vế phải b.
– Đặt d1 = cn+1, ..., dm = cn+m , tức là cB = (d1, ..., dm)T.
– Đặt chỉ số biến cơ sở: r(1) = n + 1, ..., r(m) = n + m.
– Gán xr(i) = bi , ∀i = 1,m .
– Đặt flag = 2.

Các bước lặp


Bước 1:
– Tính cTx = z = d1xr(1) + ... + dmxr(m).
m
– Tính zj = ∑a
p =1
pj d p , ∀j = 1,n + m .

– Tìm Δ = [ΔN, ΔB] = [ cNT – cBT B–1N, cBT – cBT B–1B], trong đó ΔB = 0. Như vậy
m
Δj = cj – zj, với zj = ∑ a pj d p , ∀j ∈ N và Δj = cj – zj = 0, ∀j ∈ B, (tức là zN = cBT B–1N và
p =1
T –1
zB = c B B).
B

Bước 2: Nếu tồn tại chỉ số j ∈ N sao cho Δj > 0 thì thực hiện thủ tục xoay.
– Xác định cột xoay: chọn cột xoay s ứng với một chỉ số j có tính chất Δj > 0. Thông
thường chọn j ứng với Δj > 0 lớn nhất, hoặc chọn ngẫu nhiên.
– Xác định hàng xoay q theo quy tắc tỷ số dương bé nhất:
x r (q ) ⎧x ⎫
= M in ⎨ r ( i ) ⎬ , ∀a is > 0 .
aqs ⎩ a is ⎭
Trong trường hợp không tồn tại ais > 0, đặt flag = 0 và chuyển sang bước kết thúc.
– Xác định phần tử xoay aqs.
– Tính lại (để chuyển sang bảng đơn hình mới): bq: = bq/aqs, aqj: = aqj/aqs, ∀j.∀ i ≠ q tính lại bi
: = bi – bqais và aij = aij – aqj ais, ∀j.
– Đặt lại chỉ số các biến cơ sở: r(q) := s, dq := cs, xr(i) = bi ∀i = 1,m .
– Quay về bước 1.
Bước 3: Nếu Δj ≤ 0, ∀j ∈ N thì đặt flag = 1 và chuyển sang bước kết thúc.

28
Bước kết thúc
Ghi lại dữ liệu đầu vào của BTQHTT và kết quả cuối cùng. Nếu flag = 0 thì kết luận
BTQHTT có hàm mục tiêu không bị chặn trên. Còn nếu flag = 1 thì kết luận BTQHTT có phương
án tối ưu đã tìm được. Dừng.

4. Bổ sung thêm về phương pháp đơn hình


Xét BTQHTT dạng tổng quát:
Max (Min) z = c1x1 + c2x2 + .... + cnxn
với các điều kiện ràng buộc

a11x1 + a12x2 + ... + a1nxn Θ b1


a21x1 + a22x2 + ... + a2nxn Θ b2
...
am1x1 + am2x2 + ... + amnxn Θ bm
x1 Θ 0, x2Θ 0, ..., xn Θ 0.
Trong đó ký hiệu Θ có thể hiểu là ≤ , ≥ hoặc = đối với các ràng buộc. Đối với điều kiện về
dấu của các biến Θ 0 có thể hiểu là ≥ 0, ≤ 0 hoặc có dấu tuỳ ý. Muốn giải một BTQHTT có dạng
tổng quát, trước hết cần đưa nó về dạng chính tắc. Có thể nhắc lại vắn tắt, BTQHTT dạng chính
tắc là bài toán với các biến không âm, các ràng buộc với dấu “=”, hệ số vế phải của các ràng buộc
không âm. Ngoài ra, mỗi phương trình bắt buộc phải có một biến đứng độc lập với hệ số +1.

4.1. Đưa bài toán quy hoạch tuyến tính về dạng chính tắc
Ví dụ 3. Xét lại ví dụ 1, trường hợp các ràng buộc đều có dấu ≤.
Max z = 8x1 + 6x2, với các ràng buộc

⎧4x 1 + 2x 2 ≤ 60

⎨2x 1 + 4x 2 ≤ 48
⎪x , x ≥ 0.
⎩ 1 2

Đưa BTQHTT về dạng chính tắc như đã biết bằng cách thêm hai biến bù (slack variables)
x3 và x4. Ta có BTQHTT dạng chính tắc:
Max z = 8x1 + 6x2 +0x3 + 0x4

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x1 + 4x 2 + x 4 = 48
⎪x , x , x , x ≥ 0.
⎩ 1 2 3 4

Lúc này, trong hệ hai điều kiện ràng buộc đã có đủ hai biến đứng độc lập trong từng
phương trình với hệ số +1, nên đã có thể tìm được phương án cực biên xuất phát để bắt đầu quá
trình giải bài toán.
Ví dụ 4. Trường hợp có điều kiện ràng buộc với dấu ≥ hoặc =.

29
Max z = 8x1 + 6x2, với các ràng buộc

⎧4x 1 + 2x 2 ≤ 60

⎨2x 1 + 4x 2 ≥ 48
⎪x , x ≥ 0.
⎩ 1 2

Ta thêm hai biến bù x3 (slack variable) mang dấu +, x4 (surplus variable) mang dấu – để có
hệ điều kiện ràng buộc (mang dấu =)

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x1 + 4x 2 − x 4 = 48
⎪x , x , x , x ≥ 0.
⎩ 1 2 3 4

Phải thêm biến giả x5 (x5 gọi là lượng vi phạm của phương trình thứ hai) để được hệ điều
kiện ràng buộc

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x 1 + 4x 2 − x 4 + x 5 = 48
⎪x , x , x , x , x ≥ 0.
⎩ 1 2 3 4 5

Lúc này, do đã có đủ hai biến đứng độc lập trong từng phương trình với hệ số +1, nên
có thể tìm được phương án cực biên xuất phát để bắt đầu quá trình giải bài toán bằng phương
pháp đơn hình với hàm mục tiêu là Max z = 8x1 + 6x2 + 0x3 + 0x4 – Mx5 , trong đó M ≈ +∞
và biểu thức – Mx5 gọi là lượng phạt (đánh thuế). Bài toán đã được đưa về dạng chính tắc.
Lượng vi phạm x5 càng lớn thì hàm mục tiêu càng giảm, giá trị của hàm mục tiêu chỉ có thể
đạt Max khi x5 = 0.
Ví dụ 5. Trường hợp có biến không dương.
Max z = 8x1 – 6x2

⎧4x 1 + 2x 2 + x 3 ≤ 60

⎨2x 1 + 4x 2 − x 4 = 48
⎪x ≥ 0, x ≤ 0, x ≥ 0, x ≥ 0.
⎩ 1 2 3 4

Lúc này muốn giải bài toán bằng phương pháp đơn hình ta phải đổi biến x/2 = –x2. Ta có
BTQHTT với các biến đều không âm.
Max z = 8x1 + 6x/2

⎧4x 1 − 2x 2/ + x 3 ≤ 60

⎨2x1 − 4x 2 − x 4 = 48
/


⎩x1 , x 2 , x 3 , x 4 ≥ 0.
/

Ví dụ 6. Trường hợp có biến với dấu tuỳ ý.


Max z = 8x1 + 6x2, với các ràng buộc

30
⎧4x 1 + 2x 2 ≤ 60

⎨2x 1 + 4x 2 ≤ 48
⎪x ≥ 0, x cã dÊu tuú ý.
⎩ 1 2

Lúc này ta viết biến x2 dưới dạng x2 = x/2 – x//2 với

⎧⎪ x 2/ = max{0, x 2 } ⎧⎪x 2/ ≥ 0
⎨ // thì đảm bảo ⎨ //
⎪⎩ x 2 = max{0, − x 2 } ⎪⎩x 2 ≥ 0.

Các ràng buộc sẽ là

⎧4x 1 + 2x 2/ − 2x 2// + x 3 = 60

⎨2x 1 + 4x 2 − 4x 2 + x 4 = 48
/ //


⎩x1 , x 2 , x 2 , x 3 , x 4 ≥ 0.
/ //

Bài toán với hàm mục tiêu Max z = 8x1 + 6x/2 – 6x//2 + 0x3 + 0x4 và các điều kiện ràng buộc
trên là BTQHTT dạng chính tắc.
Kết luận. Bao giờ cũng đưa được BTQHTT bất kỳ (các biến có dấu tuỳ ý, các ràng buộc có
thể ≤ , ≥ hay =) về dạng chính tắc. Biến có dấu ≤ 0 được thay bằng một biến có dấu ≥ 0, biến có
dấu tuỳ ý được thay bới hiệu của hai biến đều có dấu ≥ 0. Ràng buộc ≤ được đưa về = bằng cách
thêm một biến bù (thiếu), ràng buộc ≥ đưa về ràng buộc = bằng cách thêm một biến bù (thừa) và
một biến giả, mỗi ràng buộc có dấu = có thêm một biến giả. Số biến giả của BTQHTT dạng chính
tắc nhận được chính là tổng số các ràng buộc ≥ và =.

4.2. Phương pháp đơn hình mở rộng


Phương pháp đơn hình mở rộng còn gọi là phương pháp đánh thuế M được áp dụng để giải
BTQHTT có biến giả.

Ví dụ 7. Xét BTQHTT: Max z = 8x1 + 6x2, với các ràng buộc


⎧4x 1 + 2x 2 ≤ 60

⎨2x 1 + 4x 2 ≥ 48 (2.4)
⎪x , x ≥ 0.
⎩ 1 2
hay: Max z = 8x1 + 6x2 +0x3 + 0x4, với các ràng buộc

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x 1 + 4x 2 − x 4 = 48 (2.5)
⎪x , x , x , x ≥ 0,
⎩ 1 2 3 4

Ta có thể đưa bài toán về dạng chính tắc sau gọi là bài toán M:
Max z = 8x1 + 6x2 +0x3 + 0x4 – Mx5 (trong đó M ≈ +∞)

31
với các ràng buộc
⎧4x 1 + 2x 2 + x 3 = 60

⎨2x 1 + 4x 2 − x 4 + x 5 = 48 (2.6)
⎪x , x , x , x , x ≥ 0.
⎩ 1 2 3 4 5
Cách 1. Có thể giải BTQHTT với các điều kiện ràng buộc (2.4) bằng phương pháp đồ thị
để nhận được kết quả: phương án tối ưu là (x1 = 0, x2 = 30) và zmax = 180.
Cách 2. Giải BTQHTT với các điều kiện ràng buộc (2.6) bằng cách lập bảng đơn hình như
thông thường nhưng chú ý hệ số M ≈ +∞ (xem bảng II.2).
Tại bảng đơn hình cuối cùng, ta thấy Δj ≤ 0, ∀j, nên phương án tối ưu đã đạt được với x2 =
30, x4 = 72, x1 = x4 = x5 = 0 và zmax = 180.

Bảng II.2. Các bảng đơn hình giải bài toán M

Hệ số hàm 8 6 0 0 –M
Biến cơ sở Phương án
mục tiêu x1 x2 x3 x4 x5
0 x3 60 4 2 1 0 0
–M x5 48 2 4 0 –1 +1
Hàng z z0 = –48M z1 = –2M z2 = –4M z3 = 0 z4 = M z5 = –M
Hàng Δj Δ1 = 8 + 2M Δ2 = 6+4M Δ3 = 0 Δ4 = –M Δ5 = 0
0 x3 36 3 0 1 1/2 –1/2
6 x2 12 1/2 1 0 –1/4 1/4
Hàng z 72 3 6 0 –3/2 3/2
Hàng Δj 5 0 0 3/2 –M–3/2
0 x4 72 6 0 2 1 –1
6 x2 30 2 1 1/2 0 0
Hàng z 180 12 6 3 0 0
Hàng Δj –4 0 –3 0 –M

Chú ý
– Một khi một biến giả đã được đưa ra khỏi cơ sở thì không bao giờ quay lại nữa (bạn đọc
hãy tự chứng minh điều này). Do đó ta có thể xoá cột biến giả đó đi khỏi bảng đơn hình.
– Nếu dấu hiệu dừng xuất hiện (Δj ≤ 0, ∀j) nhưng vẫn còn biến giả với giá trị dương trong
số các biến cơ sở thì điều này chứng tỏ bài toán ban đầu không thể có phương án khả thi (có thể
chứng minh điều này bằng phản chứng).
– Với ví dụ trên (xem bảng II.2) ta thấy quá trình giải chia làm hai pha: pha 1 nhằm giải bài
toán M cho tới khi biến giả (x5) được đưa ra khỏi tập các biến cơ sở để có được phương án cực
biên xuất phát cho BTQHTT với các ràng buộc (2.5) và pha 2 nhằm tìm phương án tối ưu cho bài
toán này.

32
4.3. Phương pháp đơn hình hai pha
Từ trước tới nay, chúng ta luôn giả sử rằng BTQHTT được xem xét luôn có phương án và
có thể biết được một phương án (cực biên) ban đầu của nó để khởi tạo quá trình giải. Trong mục
này chúng ta sẽ đi xét các trường hợp khi chưa biết BTQHTT có phương án hay không, cũng như
chưa biết được phương án cực biên ban đầu. Đối với những trường hợp này có thể sử dụng
phương pháp đơn hình hai pha. Chúng ta sẽ trình bày phương pháp đơn hình hai pha thông qua ví
dụ sau.
Ví dụ 8. Xét lại ví dụ 7.
Max z = 8x1 + 6x2, với các ràng buộc

⎧4x 1 + 2x 2 ≤ 60

⎨2x 1 + 4x 2 ≥ 48
⎪x , x ≥ 0.
⎩ 1 2
hay:
Max z = 8x1 + 6x2 + 0x3 + 0x4, với các ràng buộc
⎧4x 1 + 2x 2 + x 3 = 60

⎨2x1 + 4x 2 − x 4 = 48
⎪x , x , x , x ≥ 0.
⎩ 1 2 3 4
Trước hết cần trả lời câu hỏi BTQHTT dạng chuẩn tắc trên đây có phương án hay không,
nếu có thì cần tìm một phương án cực biên xuất phát của nó.
Pha 1. Tìm một phương án cực biên xuất phát bằng cách xét BTQHTT sau đây:
Min ω = x5, với các ràng buộc

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x 1 + 4x 2 − x 4 + x 5 = 48 (2.7)
⎪x , x , x , x , x ≥ 0.
⎩ 1 2 3 4 5
Mục đích của pha 1 là để giải BTQHTT với các ràng buộc (2.7) hay còn gọi là bài toán
ω. Nếu tìm được phương án tối ưu của bài toán ω với các biến giả đều nhận giá trị bằng 0 thì
điều này chứng tỏ BTQHTT với các ràng buộc (2.5) có phương án. Trong trường hợp đó dễ
dàng tìm được một phương án cực biên của nó (xem bảng II.3).
Tại bảng đơn hình cuối cùng, ta thấy Δj ≤ 0, ∀j, nên phương án tối ưu đã đạt được với x2 =
12, x3 = 36, x1 = x4 = x5 = 0 và ωmin = 0. Do đó chúng ta đưa ra kết luận là BTQHTT với các ràng
buộc (2.5) có phương án x1 = 0, x2 = 12, x3 = 36, x4 = 0.
Nhận xét. Một cách tổng quát, có thể khẳng định được rằng, nếu bài toán ω có phương án
tối ưu với giá trị hàm mục tiêu là 0 thì BTQHTT ban đầu có phương án, trong trường hợp trái lại
thì nó không có phương án. Nếu bài toán ω có giá trị tối ưu ωmin = 0, thì ta có ngay phương án
cực biên xuất phát cho BTQHTT ban đầu và chuyển sang pha 2 bằng cách bỏ các cột có biến giả
(cũng như các hàng ứng với biến cơ sở là biến giả) và thay lại các hệ số hàm mục tiêu.

33
Bảng II.3. Các bảng đơn hình giải bài toán pha 1

0 0 0 0 1
Hệ số hàm mục tiêu Biến cơ sở Phương án
x1 x2 x3 x4 x5
0 x3 60 4 2 1 0 0
1 x5 48 2 4 0 –1 +1
Hàng ω ω0 = 48 ω1 = 2 ω2 = 4 ω3 = 0 ω4= –1 ω5 = 1
Hàng Δj Δ1 = –2 Δ2 = –4 Δ3 = 0 Δ4 = 1 Δ5 = 0
0 x3 36 3 0 1 1/2 –1/2
0 x2 12 1/2 1 0 –1/4 1/4
Hàng ω ω0 = 0 0 0 0 0 0
Hàng Δj 0 0 0 0 1

Pha 2. Giải BTQHTT với các ràng buộc (2.5) căn cứ phương án cực biên vừa tìm được ở
pha 1 (xem bảng II.4): Max z = 8x1 + 6x2 +0x3 + 0x4, với các ràng buộc

⎧4x 1 + 2x 2 + x 3 = 60

⎨2x 1 + 4x 2 − x 4 = 48
⎪x , x , x , x ≥ 0.
⎩ 1 2 3 4

Nhận xét. Kết quả giải ví dụ trên bằng phương pháp đơn hình hai pha cũng giống với kết
quả đạt được khi giải bằng phương pháp đơn hình mở rộng. Tuy nhiên, khi sử dụng phương pháp
đơn hình hai pha, chúng ta tránh được sự phiền phức trong việc khai báo giá trị dương đủ lớn của
tham số M như trong phương pháp đơn hình mở rộng.

Bảng II.4. Các bảng đơn hình giải bài toán pha 2

8 6 0 0
Hệ số hàm mục
Biến cơ sở Phương án
tiêu x1 x2 x3 x4

0 x3 36 3 0 1 1/2
6 x2 12 1/2 1 0 –1/4
Hàng z z0 = 72 z1 = 3 z2 = 6 z3 = 0 z4 =–3/2
Hàng Δj Δ1 = 5 Δ2 = 0 Δ3 = 0 Δ4 = 3/2
0 x4 72 6 0 1 1
6 x2 30 2 1 1/2 0
Hàng z 180 12 6 3 0
Hàng Δj –4 0 –3 0

Tại bảng đơn hình cuối cùng, ta thấy Δj ≤ 0, ∀j, nên phương án tối ưu đã đạt được với x2 =
30, x4 = 72, x1 = x3 = 0 và zmax = 180.

34
4.4. Phương pháp đơn hình cải biên
Bảng II.5 là bảng đơn hình tổng quát ở bước lặp thứ k. Để hiểu bảng này chỉ cần so sánh nó
với các bảng đơn hình ngay trong bảng II.4 trên đây hoặc các bảng đơn hình của bảng II.1. Dễ
dàng nhận thấy rằng các biểu thức tính toán đều xoay quanh ma trận B–1, trong đó B là ma trận cơ
−1
sở ở bước k. Để chuyển sang bảng đơn hình ở bước lặp thứ k+1 tiếp theo, cần tính được B next ,
với Bnext là ma trận cơ sở ở bước k + 1.

Bảng II.5. Bảng đơn hình dạng tổng quát

cTN cBT
Hệ số hàm mục tiêu Biến cơ sở Phương án
xNT xBT

cB xB B–1b B–1N B–1B

Hàng z cBT B–1N cBT B–1B

Hàng Δj cNT – cBT B–1N cBT – cBT B–1B

Nội dung của phương pháp đơn hình cải biên (hay còn gọi là phương pháp đơn hình dạng
−1
ma trận nghịch đảo) là việc tính B next được dựa vào các thông tin cần thiết và tối thiểu nhất có
được từ B–1. Vì vậy các thông tin cần thiết, phải lưu trữ ở mỗi bước để tìm bảng đơn hình ở bước
sau, là ít hơn nhiều so với phương pháp đơn hình thông thường. Chúng ta trình bày ngắn gọn
phương pháp đơn hình qua ví dụ 9.
Ví dụ 9. Min z = –3x1 – 2x2 + 0x3 + 0x4 + 0x5 + 0x6
với các điều kiện ràng buộc
x1 + 2x2 + x3 =6
2x1 + x2 + x4 =8
–x1 + x2 + x5 =1
x2 + x6 =2
x1, x2, x3, x4, x5, x6 ≥ 0.
Xét bảng đơn hình bước 1 (bảng II.6), ta có
⎡1 0 0 0⎤
⎢0 1 0 0 ⎥⎥
B = [a3, a4, a5, a6] = ⎢ ⇒ B–1 = I, N = [a1, a2] =
⎢0 0 1 0 ⎥
⎢ ⎥
⎣0 0 0 1⎦
⎡1 2⎤
⎢2 1 ⎥⎥
= ⎢ ⇒ cNT – cBT B–1N = [–3, –2] – [0, 0, 0, 0] × I × N = [–3, –2] = [Δ1, Δ2].
⎢ −1 1⎥
⎢ ⎥
⎣0 1⎦

35
Bảng II.6. Bảng đơn hình bước 1

–3 –2 0 0 0 0
Hệ số hàm mục tiêu Biến cơ sở Phương án
x1 x2 x3 x4 x5 x6

0 x3 6 1 2 1 0 0 0
0 x4 8 2 1 0 1 0 0
0 x5 1 –1 1 0 0 1 0
0 x6 2 0 1 0 0 0 1

Hàng z 0 0 0 0 0 0

Hàng Δj –3 –2 0 0 0 0

Do Δ1 = –3, ta có thể đưa biến x1 vào cơ sở (ký hiệu j0 = 1 là chỉ số cột của biến đưa vào cơ sở).
Để xác định biến đưa ra khỏi cơ sở, ta tính xB = B–1b = Ib =[6, 8, 1, 2]T. Sau đó tính cột hệ
số tương ứng với cột xoay j0 = 1 đã xác định được ở trên là α = B–1a1 = Ia1 = [1, 2, –1, 0]T = [α1,
α2, α3, α4]T. áp dụng quy tắc tỷ số dương bé nhất, xét các tỷ số 6/1, 8/2, 1/–1 và 2/0. Tỷ số
dương bé nhất là 8/2, ứng với tọa độ thứ 2 nên cần đưa biến x4 ra khỏi cơ sở. Vậy chỉ số của hàng
xoay là i0 = 2 (ở đây r(2) = 4, xem lại thuật toán đơn hình mục 3.4, nên hàng xoay là hàng 2) và
biến đưa ra khỏi cơ sở là x4.
−1
Ta đi tìm B next . Có thể nhận thấy rằng Bnext = [a3, a1, a5, a6] = BV = [a3, a4, a5, a6]V, trong
đó V = [e1, α, e3, e4], với ei là véc tơ đơn vị dạng cột có tọa độ thứ i là 1, còn α là cột hệ số ứng
với biến đưa vào cơ sở. Trong ví dụ trên, α là cột hệ số ứng với biến x4. Có thể kiểm tra được:

⎡1 1 0 0 ⎤ ⎡1 0 0 0 ⎤ ⎡1 1 0 0⎤
⎢0 2 0 0 ⎥⎥ ⎢⎢0 1 0 0 ⎥⎥ ⎢⎢0 2 0 0 ⎥⎥
Bnext = ⎢ = ×
⎢0 −1 1 0 ⎥ ⎢0 0 1 0 ⎥ ⎢0 −1 1 0⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣0 0 0 1 ⎦ ⎣0 0 0 1 ⎦ ⎣0 0 0 1⎦

V–1 có thể tìm được từ V theo quy tắc: thay cột α = [α1, α2, α3, α4]T bởi cột
[–α1/α2, 1/α2, –α3/α2, –α4/α2]T = [–1/2, 1/2, 1/2, 0]T. Dễ dàng kiểm tra được:

⎡1 1 0 0 ⎤ ⎡1 −1 / 2 0 0⎤
⎢0 2 0 0 ⎥⎥ ⎢⎢0 1 / 2 0 0 ⎥⎥
V×V–1 = ⎢ × =I .
⎢0 −1 1 0 ⎥ ⎢0 1 / 2 1 0⎥
⎢ ⎥ ⎢ ⎥
⎣0 0 0 1 ⎦ ⎣0 0 0 1⎦

Một cách tổng quát hơn có thể kiểm nghiệm được rằng:

36
⎡1 α1 0 0 ⎤ ⎡1 −α1 / α 2 0 0⎤
⎢0 α2 0 0 ⎥⎥ ⎢⎢0 1 / α 2 0 0 ⎥⎥
V×V–1 = ⎢ × = I ⇒ V–1
⎢0 α3 1 0 ⎥ ⎢0 −α3 / α 2 1 0 ⎥
⎢ ⎥ ⎢ ⎥
⎣0 α4 0 1 ⎦ ⎣0 −α 4 / α 2 0 1⎦

⎡1 −α1 / α 2 0 0⎤
⎢0 1 / α 0 0 ⎥⎥
= ⎢ 2
.
⎢0 −α3 / α 2 1 0⎥
⎢ ⎥
⎣0 −α 4 / α 2 0 1⎦

Ta thấy V–1 là ma trận thu được từ V bằng cách thay cột 2 của V (cột có chỉ số trùng với
chỉ số của hàng xoay i0 = 2) bởi cột mới, thu được bằng cách lấy tất cả các phần tử của cột 2 nhân
với –1/α2, riêng tọa độ thứ i0 = 2 được thay bởi 1/α2.
−1
Từ phân tích trên, chúng ta nhận được công thức tính B next = V–1B–1, trong đó
V–1 được xác định theo quy tắc nhất định (chỉ cần tổng quát hóa quy tắc đã biết). Với ví dụ 9,
trong bảng đơn hình bước 1 chúng ta có Bnext = [a3, a1, a5, a6] và:

⎡1 −1 / 2 0 0⎤
⎢0 1 / 2 0 0 ⎥⎥
−1
B next =V B = ⎢
–1 –1
.
⎢0 1 / 2 1 0⎥
⎢ ⎥
⎣0 0 0 1⎦

Sau đây chúng ta tìm cách tóm tắt phương pháp đơn hình cải biên dưới dạng bảng (xem
bảng II.7). Trước hết, xét bảng đơn hình bước 1 (bảng II.6). Trong bảng này chúng ta bỏ đi hàng
zj, bỏ đi các cột tương ứng với các biến ngoài cơ sở x1 và x2 thì có bảng II.7. Cần thêm vào một
hàng mới cBT B–1 và một cột mới có các phần tử đều bằng 0, trừ phần tử cuối bằng 1. Ngoài ra,
viết thêm vào cột xoay α ứng với biến sẽ đưa vào cơ sở. Lúc đầu, ma trận cơ sở B là ma trận đơn
vị nên B–1 ≡ B. Xét ma trận B −1 (đọc là ma trận B–1 bao), thu được từ B bằng cách thêm vào cột
mới và các phần tử tương ứng của hàng Δj.
Bảng II.7. Bảng đơn hình cải biên bước 1

B−1
Hệ số hàm mục tiêu cB Biến cơ sở Phương án Cột α (x1)
B–1 Cột mới
0 x3 6 1 0 0 0 0 1
0 x4 8 0 1 0 0 0 2
0 x5 1 0 0 1 0 0 –1
0 x6 2 0 0 0 1 0 0
z = cBT xB = 0 Hàng cBT B–1 0 0 0 0 1 –3

Để tìm các số gia hàm mục tiêu, ta lấy –1 nhân với hàng cuối của ma trận B–1 bao, rồi lại
nhân với các cột tương ứng a1 và a2 trong ma trận A (đọc là ma trận A mở rộng), thu được bằng
cách thêm vào ma trận A hàng cuối là hàng – cT:

37
⎡1 2 1 0 0 0⎤ ⎡1 2⎤
⎢2 1 0 1 0 0⎥⎥ ⎢2 1 ⎥⎥
⎢ ⎢
A = ⎢ −1 1 0 0 1 0 ⎥ ⇒ [Δ1,Δ2] = – [0, 0, 0, 0, 1]× ⎢ −1 1 ⎥ =[–3, –2].
⎢ ⎥ ⎢ ⎥
⎢0 1 0 0 0 1⎥ ⎢0 1⎥
⎢3 2 0 0 0 0⎦⎥ ⎢3 2⎥⎦
⎣ ⎣
Thật vậy, do Δ1 = c1 – cBT B–1a1 và Δ2 = c2 – cBT B–1a2 nên
⎡a a2 ⎤
[Δ1, Δ2] = [c1, c2] – cBT B–1[a1, a2] = [– cBT B–1, –1] ⎢ 1 = [–3, –2].
⎣ −c1 −c2 ⎥⎦
Vậy cột α là cột ứng với biến x1, α = B–1a1 = Ia1 = [1, 2, –1, 0]T = [α1, α2, α3, α4]T có Δ1 =
–3. Với cột xoay đã xác định được, ta tìm được hàng xoay và phần tử xoay theo quy tắc thông
thường. Sau đó xoay sang bảng đơn hình cải biên mới dựa trên phần tử xoay đã tìm được, ma trận
B–1 ở bước mới cũng có thể tìm theo các quy tắc của thủ tục xoay. Riêng hàng cBT B–1 được tính
bằng cách lấy cột cB nhân (theo kiểu tích vô hướng) với các cột của B–1(xem bảng II.8).

Bảng II.8. Bảng đơn hình cải biên bước 2

B−1
Hệ số hàm mục tiêu cB Biến cơ sở Phương án Cột α (x2)
B–1 Cột mới
0 x3 2 1 –1/2 0 0 0 3/2
–3 x1 4 0 1/2 0 0 0 1/2
0 x5 5 0 1/2 1 0 0 3/2
0 x6 2 0 0 0 1 0 1
z = cBT xB = – 4/3 Hàng cBT B–1 0 –3/2 0 0 1 –1/2

Để tìm cột α trong bảng II.8, trước hết cần tìm số gia hàm mục tiêu cho các biến ngoài cơ
sở:

⎡a a4 ⎤
[Δ2, Δ4] = [c2, c4] – cBT B–1[a2, a4] = [– cBT B–1, –1] ⎢ 2
⎣ −c2 −c4 ⎥⎦

⎡2 0⎤
⎢1 1 ⎥⎥

= – [0, –3/2, 0, 0, 1]× ⎢1 0 ⎥ =[–1/2, 3/2].
⎢ ⎥
⎢1 0⎥
⎢2 0 ⎥⎦

Vậy ta xác định được biến đưa vào cơ sở là biến x2 và cột α để điền vào bảng II.8:

⎡1 −1 / 2 0 0 ⎤ ⎡ 2 ⎤ ⎡3 / 2 ⎤
⎢0 1 / 2 0 0 ⎥⎥ ⎢⎢1 ⎥⎥ ⎢⎢1 / 2 ⎥⎥
α = B a2 = ⎢
–1
× = .
⎢0 1 / 2 1 0 ⎥ ⎢1 ⎥ ⎢3 / 2⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣0 0 0 1 ⎦ ⎣1 ⎦ ⎣ 1 ⎦

38
Sau đó chuyển sang bước tiếp theo (xem bảng II.9).

Bảng II.9. Bảng đơn hình cải biên bước 3

B−1
Hệ số hàm mục tiêu cB Biến cơ sở Phương án Cột α
B–1 Cột mới

–2 x2 4/3 2/3 –1/3 0 0 0


–3 x1 10/3 –1/3 2/3 0 0 0
0 x5 3 –1 1 1 0 0
0 x6 2/3 –2/3 1/3 0 1 0

z = cBT xB = – 38/3 Hàng cBT B–1 –1/3 –4/3 0 0 1

Chúng ta đi tính các số gia hàm mục tiêu ứng với các biến ngoài cơ sở:

⎡a a4 ⎤
[Δ3, Δ4] = [c3, c4] – cBT B–1[a3, a4] = [– cBT B–1, –1] ⎢ 3
⎣ −c3 −c4 ⎥⎦

⎡1 0⎤
⎢0 1 ⎥⎥

= – [–1/3, –4/3, 0, 0, 1]× ⎢0 0 ⎥ = [1/3, 4/3].
⎢ ⎥
⎢0 0⎥
⎢0 0 ⎥⎦

Vậy phương án tối ưu đã tìm được là x1 = 10/3, x2 = 4/3, x3 = 0, x4 = 0, x5 = 3,


x6 = 2/3, với giá trị nhỏ nhất của hàm mục tiêu là zmin = –38/3.

Chú ý

– Phương pháp đơn hình cải biên cho phép tính ma trận nghịch đảo của ma trận cơ sở ở
bước k+1 theo công thức B k−1+1 = Vk−1B k−1 = ... = Vk−1 Vk−−11 ...V1−1B 1−1 . Hơn nữa dạng của các ma

trận Vi−1 ,∀i cũng rất đơn giản. Do đó có thể thấy, phương pháp đơn hình cải biên giảm được khối
lượng tính toán khá nhiều khi so sánh với phương pháp đơn hình.

– Có thể áp dụng phương pháp hai pha cho phương pháp đơn hình cải biên. Lúc này các
dấu hiệu dừng không có gì thay đổi: Nếu pha 1 kết thúc với phương án tối ưu chứa biến giả nhận
giá trị dương thì bài toán không có phương án. Nếu trong khi tiến hành pha 2, ta tìm được cột
xoay mà không tìm được hàng xoay thì bài toán có hàm mục tiêu không bị chặn. Bài toán sẽ có
phương án tối ưu nếu pha 2 kết thúc với dấu hiệu tối ưu (với BTQHTT dạng Min thì dấu hiệu tối
ưu là Δj ≥ 0, ∀j). Để trình bày vấn đề đơn giản, sau đây chúng ta phát biểu thuật toán đơn hình cải
biên một cách sơ bộ cho trường hợp đã biết một phương án xuất phát (BTQHTT dạng Min).

39
Khung thuật toán đơn hình cải biên

Bước khởi tạo


– Tìm một phương án cực biên ban đầu.
– Xác định các biến cơ sở xB, các hệ số hàm mục tiêu tương ứng cB. Xác định chỉ số của m
biến cơ sở: r(1), r(2), ..., r(m).
– Tìm ma trận cơ sở B ứng với các cột với chỉ số: r(1), r(2), ..., r(m), ma trận nghịch đảo B–
1
, ma trận bao B −1 với cBT B −1 là hàng cuối của ma trận bao.

– Thiết lập ma trận mở rộng A = [ N , B ] và tính các số gia hàm mục tiêu ứng với các
biến ngoài cơ sở theo công thức: Δ N = cNT – cBT B–1N = [– cBT B–1, –1] × N .
– Đặt k := 1.
Các bước lặp (bước lặp thứ k)
Bước 1: Kiểm tra điều kiện dừng.
– Nếu Δ N ≥ 0 thì bài toán có phương án tối ưu, ghi lại kết quả và chuyển sang bước 3.

– Nếu trái lại, tồn tại j ∈JN sao cho Δj < 0 thì chọn xj là biến đưa vào cơ sở.
– Thiết lập cột α = B–1aj. Tìm hàng xoay bằng quy tắc tỷ số dương bé nhất. Nếu không
chọn được hàng xoay (khi α ≤ 0) thì bài toán có hàm mục tiêu không bị chặn dưới, ghi lại kết quả
và chuyển sang bước 3.
Bước 2:
– Chọn được hàng i làm hàng xoay, đưa biến xr(i) ra khỏi cơ sở và tìm chỉ số của biến cơ sở
mới đưa vào r(i) := j. Xác định lại xB và cB, B và N.

– Thực hiện thủ tục xoay để tính lại B–1, tính lại cBT B −1 và ma trận bao B −1 . Tính các số gia

hàm mục tiêu ứng với các biến ngoài cơ sở theo công thức Δ N = cNT – cBT B–1N = [– cBT B–1, –1] N .
– Đặt k := k + 1, sau đó quay về bước 1.
Bước 3: Dừng và in ra kết quả.

40
Bài tập chương II

Bài 1. Xét BTQHTT dạng Max:


Max z = 6x1 + 4x2
với các điều kiện ràng buộc
2x1 + 3x2 ≤ 100
4x1 + 2x2 ≤ 120
x1, x2 ≥ 0.
a. Hãy giải bài toán bằng phương pháp đồ thị.
b. Hãy giải bài toán bằng phương pháp đơn hình.
c. Minh họa ý nghĩa kinh tế của bài toán trong một tình huống thực tế.

Bài 2. Xét BTQHTT dạng Min:


Min z = 3x1 – x2
với các điều kiện ràng buộc
x1 – 2x2 ≥ 4
x1 + x2 ≤ 8
– 4x1 + 2x2 ≤ 20
4≤ x1 ≤8
x2 ≤ 4
x1, x2 ≥ 0.
a. Hãy giải bài toán bằng phương pháp đồ thị.
b. Hãy giải bài toán bằng phương pháp đơn hình.

Bài 3. Xét BTQHTT dạng Max:


Max z = 5x1 + x2 + 6x3 + 2x4
với các điều kiện ràng buộc
4x1 + 4x2 + 4x3 + x4 ≤ 44
8x1 + 6x2 + 4x3 + 3x4 ≤ 36
x1, x2, x3, x4 ≥ 0.
a. Hãy giải bài toán bằng phương pháp đơn hình.
b. Giải bài toán bằng phương pháp đơn hình cải biên.
c. Giải bài toán bằng phần mềm Excel hay phần mềm Lingo.

41
Bài 4. Xét BTQHTT dạng Min:
Min z = 2x1 + x2 – x3 – x4
với các điều kiện ràng buộc
x1 – x2 + 2x3 – x4 = 2
2x1 + x2 – 3x3 + x4 = 6
x1 + x2 + x3 + x4 = 7

x1, x2, x3, x4 ≥ 0.


a. Hãy giải bài toán bằng phương pháp đơn hình mở rộng (phương pháp M).
b. Giải bài toán bằng phần mềm Excel hay phần mềm Lingo.

Bài 5. Xét BTQHTT dạng Min:


Min z = 3x1 + 2x2 + 8x3
với các điều kiện ràng buộc
4x1 – 3x2 + 12x3 ≥ 12

x1 + 4x3 ≤ 6
x2 – x3 = 2

x1, x2, x3 ≥ 0.
a. Hãy đưa bài toán về dạng chính tắc.
b. Hãy giải bài toán bằng phương pháp đơn hình mở rộng (phương pháp M).
c. Hãy giải bài toán bằng phương pháp đơn hình hai pha.
d. Giải bài toán bằng phương pháp đơn hình cải biên.
e. Giải bài toán bằng phần mềm Excel hay phần mềm Lingo.

Bài 6. Xét BTQHTT dạng Max:


Max z = x1 + x2
với các điều kiện ràng buộc
– x1 + x2 + x3 =1
x1 – 2x2 + x4 =0
– x1 + 2x2 + x5 = 3

x1, x2, x3, x4, x5 ≥ 0.


Xét phương án (0, 1, 0, 2, 1)T.
a. Tìm ma trận cơ sở B tương ứng với phương án.

42
b. Hãy viết công thức số gia hàm mục tiêu cho phương án trên và cho biết phương án đã
cho có phải là phương án tối ưu không?
c. Nếu phương án đã cho không phải là phương án tối ưu, hãy thực hiện thủ tục xoay và
cho biết ma trận cơ sở ở bước tiếp theo. Tìm số gia hàm mục tiêu tương ứng.
d. Giải thích tại sao bài toán trên có hàm mục tiêu không bị chặn trên?

Bài 7. Xét BTQHTT dạng chính tắc. Giả sử chúng ta đã biết một phương án tối ưu của nó là x*
và B là ma trận cơ sở tương ứng với x*. Chứng minh rằng nếu tồn tại chỉ số j ∈ JN sao
cho: cj – cBB–1aj = 0 thì bài toán đã cho có vô số phương án tối ưu. Hãy chọn một ví dụ
đơn giản minh họa trường hợp trên.

Bài 8. Hãy kiểm tra lại kết quả của ví dụ 3 chương I (Bài toán quy hoạch sử dụng đất trên địa bàn
xã Đông Dư, huyện Gia Lâm, tỉnh Hà Nội) bằng phần mềm Excel hay Lingo.

Bài 9. Hãy lập chương trình máy tính bằng ngôn ngữ Pascal hay ngôn ngữ C để giải BTQHTT
dạng chính tắc theo thuật toán đơn hình giải BTQHTT đã được phát biểu tại mục 3.4 của
chương II.

Bài 10. Hãy phát biểu thuật toán hai pha và lập chương trình máy tính bằng ngôn ngữ Pascal hay
ngôn ngữ C để giải BTQHTT dạng tổng quát. Chạy kiểm thử chương trình trên một số ví
dụ đã biết.

43

You might also like