Tải bản đầy đủ (.pdf) (52 trang)

Phương pháp nhánh và cận trong tối ưu rời rạc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (446.09 KB, 52 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC
CAO TRẦN DŨNG
PHƯƠNG PHÁP NHÁNH VÀ CẬN
TRONG TỐI ƯU RỜI RẠC
LUẬN VĂN THẠC SĨ TOÁN HỌC
Thái Nguyên - Năm 2012
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC
CAO TRẦN DŨNG
PHƯƠNG PHÁP NHÁNH VÀ CẬN
TRONG TỐI ƯU RỜI RẠC
Chuyên ngành: TOÁN ỨNG DỤNG
Mã số : 60.46.36
LUẬN VĂN THẠC SĨ TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC
GS.TS. TRẦN VŨ THIỆU
Thái Nguyên - Năm 2012
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
i
Mục lục
Mục lục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
LỜI NÓI ĐẦU 1
1 PHƯƠNG PHÁP NHÁNH VÀ CẬN TRONG TỐI ƯU
RỜI RẠC 4
1.1 Bài toán quy hoạch nguyên tuyến tính . . . . . . . . . . . . 4
1.2 Sơ đồ tổng quát của phương pháp nhánh cận . . . . . . . . 10
1.3 Thuật toán Land-Doig giải quy hoạch nguyên tuyến tính . . 14
2 BÀI TOÁN CÁI TÚI 23
2.1 Nội dung bài toán . . . . . . . . . . . . . . . . . . . . . . 23


2.2 Thuật toán nhánh và cận . . . . . . . . . . . . . . . . . . 26
2.3 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . . . 30
3 BÀI TOÁN NGƯỜI DU LỊCH 33
3.1 Phát biểu bài toán . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Thuật toán nhánh và cận . . . . . . . . . . . . . . . . . . . 35
3.2.1 Thủ tục tính cận . . . . . . . . . . . . . . . . . . . 36
3.2.2 Thủ tục phân nhánh . . . . . . . . . . . . . . . . . 38
3.3 Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . . . 41
Kết luận 48
Tài liệu tham khảo 49
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1
LỜI NÓI ĐẦU
Tối ưu rời rạc (Discrete Optimization), còn gọi là tối ưu tổ hợp (Com-
binatorial Optimization), đề cập tới các bài toán tối ưu trong đó một phần
hay toàn bộ biến nhận các giá trị nguyên hay rời rạc (không liên tục). Các
bài toán tối ưu rời rạc đã và đang được quan tâm nghiên cứu cả về lý
thuyết lẫn phương pháp giải, vì chúng có những ứng dụng đa dạng, phong
phú trong thực tiễn và nhiều vấn đề lý thuyết cũng như thực tiễn có thể
diễn đạt dưới dạng một bài toán tối ưu rời rạc.
Một lớp bài toán tối ưu rời rạc đáng chú ý là bài toán tối ưu với các biến
số chỉ nhận hai giá trị 0 hoặc 1, gọi là qui hoạch 0 - 1 hay qui hoạch biến
Boole. Nhiều bài toán điển hình của tối ưu rời rạc được phát biểu dưới
dạng bài toán qui hoạch 0 - 1, như bài toán phân việc, bài toán cái túi, bài
toán người du lich, bài toán phân hoạch tập, phủ tập, sắp xếp tập, bài toán
cây Steiner trên đồ thị, . Hơn nữa về nguyên tắc, mọi bài toán với biến số
nguyên hay rời rạc bị chặn đều có thể đưa được về bài toán qui hoạch 0 - 1.
Có nhiều phương pháp giải bài toán tối ưu rời rạc, trong đó đáng chú
ý và có hiệu quả hơn cả là các phương pháp nhánh cận, đặc biệt đối với
một số bài toán điển hình của tối ưu rời rạc: bài toán qui hoạch 0 - 1, bài

toán cái túi, bài toán người du lịch. Cho đến nay phương pháp nhánh cận
với nhiều cải tiến khác nhau vẫn là công cụ chủ yếu để giải các bài toán
tối ưu rời rạc.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2
Mục tiêu của luận văn này là tìm hiểu và trình bày lược đồ tổng quát
của phương pháp nhánh cận trong tối ưu rời rạc và áp dụng lược đồ đó
vào giải một số bài toán tối ưu rời rạc điển hình nói trên. Nội dung đề cập
tới trong luận văn được trình bày một cách chặt chẽ về mặt toán học, các
thuật toán giải nêu ra đều có kèm theo ví dụ số minh hoạ.
Việc tìm hiểu phương pháp nhánh cận trong tối ưu rời rạc sẽ giúp ích
cho việc đi sâu tìm hiểu sau này về nội dung và phương pháp giải các bài
toán của tối ưu rời rạc nói chung và những ứng dụng của chúng nói riêng.
Nội dung luận văn được chia thành ba chương.
Chương 1 với tiêu đề "Phương pháp nhánh cận trong tối ưu rời rạc"
giới thiệu về bài toán qui hoạch nguyên tuyến tính và bài toán qui hoạch
tuyến tính 0 - 1 như trường hợp riêng quan trọng. Tiếp đó trình bày lược
đồ tổng quát của phương pháp nhánh cận và áp dụng lược đồ đó vào bài
toán qui hoạch nguyên tuyến tính.
Chương 2 với tiêu đề "Bài toán cái túi" trình bày nội dung và ý nghĩa
thực tiễn của bài toán cái túi. Đó là bài toán qui hoạch tuyến tính 0 - 1 với
một ràng buộc chính duy nhất, dạng đẳng thức hay bất đẳng thức tuyến
tính. Bài toán này tuy đơn giản, nhưng lại là bài toán điển hình trong tối
ưu rời rạc. Phương pháp nhánh cận là phương pháp thích hợp nhất để giải
bài toán nầy. Thuật toán nhánh cận trình bày ở chương này khá độc đáo.
Cách tính cận chỉ dựa trên việc giải bài toán qui hoạch tuyến tính đơn giản.
Chương 3 với tiêu đề "Bài toán người du lịch" trình bày nội dung và ý
nghĩa của bài toán người du lịch. Đó là một bài toán rất quen thuộc và có
tầm quan trọng đặc biệt trong tối ưu rời rạc, vì nó là mô hình toán học
cho nhiều vấn đề thực tiễn khác nhau và là một trong những bài toán khó,

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3
hiện vẫn được nhiều người quan tâm nghiên cứu. Thuật toán nhánh cận
đầu tiên của Little, Murty, Sweeney và Karel được giới thiệu ở chương này
có nhiều ý tưởng độc đáo, đặc biệt trong cách phân nhánh và cách tính cận.
Do thời gian và kiến thức còn hạn chế nên luận văn này mới chỉ đề
cập tới những nội dung cơ bản của phương pháp nhánh và cận trong tối
ưu rời rạc, chưa đi sâu vào các chi tiết thực thi thuật toán. Trong quá
trình viết luận văn cũng như trong xử lý văn bản chắc chắn không tránh
khỏi những sai sót nhất định. Tác giả luận văn rất mong nhận được sự góp
ý của các thầy cô và các bạn đồng nghiệp để luận văn được hoàn thiện hơn.
Nhân dịp này tác giả xin bày tỏ lòng biết ơn sâu sắc đến thầy hướng
dấn GS-TS Trần Vũ Thiệu đã tận tình giúp đỡ trong suốt quá trình làm
luận văn Tác giả xin trân trọng cảm ơn các thầy, cô giáo Trường Đại học
Khoa học- Đại học Thái Nguyên, Viện Toán học-Viện Khoa học và Công
nghệ Việt Nam, đã giảng dạy và tạo mọi điều kiện thuận lợi trong quá
trình tác giả học tập và nghiên cứu.
Tác giả cũng xin chân thành cảm ơn Ban giám hiệu, tổ toán –tin Trường
THPT Số 1 TP Lào Cai và tập thể bạn bè đồng nghiệp cùng gia đình đã
quan tâm giúp đỡ, động viên tác giả hoàn thành tốt luận văn này.
Thái Nguyên, tháng 07 năm 2012.
Người thực hiện
Cao Trần Dũng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4
Chương 1
PHƯƠNG PHÁP NHÁNH VÀ
CẬN TRONG TỐI ƯU RỜI RẠC
Chương này giới thiệu về bài toán qui hoạch nguyên tuyến tính và
lược đồ tổng quát của phương pháp nhánh cận trong tối ưu rời rạc. Cuối

chương, áp dụng lược đồ nhánh cận vào bài toán qui hoạch nguyên tuyến
tính. Nội dung của chương dựa chủ yếu trên các tài liệu [1], [4] và [6].
1.1 Bài toán quy hoạch nguyên tuyến tính
Qui hoạch nguyên tuyến tính (Integer Linear Programming Problem,
viết tắt ILP) là bài toán tìm cực tiểu (hay cực đại) của một hàm tuyến
tính trên một tập hợp điểm rời rạc, thường là tập điểm nguyên:
(ILP) min

f(x) = c
T
x : Ax = b, x
j
≥ 0 nguyên, j = 1, , n

,
trong đó A ∈ R
m.n
, b ∈ R
m
và c ∈ R
n
cho trước.
Khi chỉ có một số, chứ không phải tất cả, các biến là nguyên thì ta
gọi đó là bài toán qui hoạch nguyên hỗn hợp (Mixed Integer Programming
Problem, viết tắt MIP).
Cũng như trong qui hoạch tuyến tính, f được gọi là hàm mục tiêu, tập
D =

x ∈ R
n

: Ax = b, x
j
≥ 0 nguyên, j = 1, , n

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
5
gọi là miền ràng buộc hay miền chấp nhận được. Điểm x ∈ D gọi là một
nghiệm chấp nhận được hay một phương án của bài toán. Một phương án
đạt cực tiểu (hay cực đại) của hàm mục tiêu gọi là một nghiệm tối ưu hay
một phương án tối ưu. Nghiên cứu cấu trúc tập ràng buộc D và xây dựng
các thuật toán tìm nghiệm tối ưu của bài toán ILP là đối tượng của qui
hoạch nguyên tuyến tính.
Sau đây là hai ví dụ đơn giản về bài toán qui hoạch nguyên tuyến tính.
Ví dụ 1.1. Giả sử ta cần đưa qua sông 3 kiện hàng với trọng lượng lần
lượt là 3 tạ, 2 tạ và 4 tạ và trị giá mỗi kiện hàng tương ứng là 1, 2 và 3
triệu đồng. Nhưng chỉ có một chiếc thuyền nhỏ, mỗi chuyến chở được tối
đa 5 tạ. Hỏi nên xếp lên thuyền những kiện hàng nào để số hàng chuyển
được có trị giá lớn nhất?
Bằng cách đưa vào các biến số:
x
j
=

1 nếu chọn kiện j
0 nếu ngược lại
, j = 1, 2, 3,
ta có thể diễn đạt vấn đề nêu trên như một qui hoạch nguyên ILP như sau:

x
1

+ 2x
2
+ 3x
3
→ max
3x
1
+ 2x
2
+ 4x
3
≤ 5
0 ≤ x
j
≤ 1, nguyên, j = 1, 2, 3.
Nếu đòi hỏi rằng các kiện hàng 1 và 2 không được xếp cùng nhau trên
thuyền thì phải đặt bài toán như thế nào? Trả lời: thêm vào bài toán trên
bất đẳng thức:
x
1
+ x
2
≤ 1
(Vì thế, nếu x
1
= 1 thì x
2
= 0, còn nếu x
2
= 1 thì x

1
= 0).
Nếu đòi hỏi rằng chỉ một trong 3 kiện hàng được xếp lên thuyền thì mô
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
6
hình bài toán ra sao? Trả lời: thêm vào mô hình ban đầu đẳng thức:
x
1
+ x
2
+ x
3
= 1
(Vì thế, hoặc x
1
= 1 , x
2
= x
3
= 0 hoặc x
2
= 1 , x
1
= x
3
= 0 hoặc
x
3
= 1, x
1

= x
2
= 0). Như vậy ta đã thấy qui hoạch nguyên ILP rất tiện
dùng để mô hình hoá các ràng buộc lôgic (chẳng hạn, nếu sự kiện A xảy
ra thì sự kiện B không xảy ra, ).
Ví dụ 1.2. Một hãng hàng không dự định mua một số máy bay Airbus
A-3200 và Boing 777 để mở rộng hoạt động. Mỗi máy bay Airbus giá 5
triệu đô và có thời gian sử dụng 6 năm, mỗi máy bay Boing giá 9 triệu đô
và có thời gian sử dụng 8 năm (các con số có tính ước lệ). Hãng ước tính
chỉ cần mua tối đa 6 máy bay và số tiền để mua máy bay không quá 46
triệu đô. Hỏi hãng nên mua bao nhiêu máy bay mỗi loại để tổng thời gian
phục vụ của chúng được lâu nhất?
Bằng cách đưa vào hai biến: x
1
là số máy bay Airbus cần mua và x
2
là số máy bay Boing cần mua, ta có thể diễn đạt vấn đề này như một bài
toán nguyên tuyến tính ILP sau (Đáp số: 2 Airbus và 4 Boing, f
max
= 44
năm):
















6x
1
+ 8x
2
→ max
x
1
+ x
2
≤ 6
5x
1
+ 9x
2
≤ 46
x
1
, x
2
≥ 0, nguyên
Một lớp qui hoạch nguyên quan trọng là bài toán qui hoạch tuyến tính
0 - 1. Đó là bài toán qui hoạch tuyến tính, trong đó mọi biến chỉ lấy giá
trị 0 hay 1. Bài toán này còn được biết với tên gọi bài toán nhị nguyên
tuyến tính hay bài toán qui hoạch tuyến tính biến Boole.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
7
. Nhiều bài toán tối ưu rời rạc có thể diễn đạt dưới dạng một qui hoạch
tuyến tính 0 - 1. Chẳng hạn: bài toán phân việc, bài toán cái túi, bài toán
người du lịch, bài toán phân hoạch tập, phủ tập, sắp xếp tập, bài toán cây
Steiner trên đồ thị Một số ứng dụng trong công nghiệp như định vị tiện
ích (facility location), bài toán với phụ phí cố định, bài toán xếp lịch, thiết
kế mạng được diễn đạt và giải bằng kỹ thuật qui hoạch tuyến tính 0 -
1.
Qui hoạch tuyến tính 0 - 1 có nhiều ứng dụng trong thực tiễn, đặc biệt
trong lập kế hoạch triến khai các dự án với hạn chế về các nguồn lực (vốn,
lao động, vật tư, v.v ).
Để minh hoạ ta nêu đại diện mô hình bài toán “cái túi” nhiều chiều:
(MKP) x
0
= c
1
x
1
+ c
2
x
2
+ + c
n
x
n
→ max
với các điều kiện:


a
i1
x
1
+ a
i2
x
2
+ + a
in
x
n
≤ b
i
, i = 1, 2, , m
x
j
∈ {0, 1} , j = 1, 2, , n,
trong đó a
ij
, b
i
, c
j
∈ Z (i = 1, 2, , m; j = 1, 2, . . . , n) là những số cho
trước và x
j
(j = 1, 2, , n) là biến nhị nguyên (biến 0 - 1).
Trong mô hình trên a
ij

biểu thị lượng tài nguyên i cần dùng để thực
hiện dự án j, b
i
biểu thị lượng tài nguyên i có thể sử dụng và c
j
biểu thị
lợi ích thu được khi thực hiện dự án j. Biến quyết định x
j
= 1 nếu dự án
j được chọn thực hiện và x
j
= 0 nếu trái lại.
Qui hoạch tuyến tính 0 - 1 còn được chú ý là vì về nguyên tắc, mọi bài
toán với biến nguyên hay rời rạc bị chặn đều có thể đưa được về bài toán
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
8
với biến 0 - 1. Sau đây nêu một vài cách biến đổi đáng chú ý.
• Đưa biến nguyên về biến 0 - 1
Cho một bài toán tối ưu rời rạc, ta có thể diễn đạt nó theo nhiều mô
hình toán học khác nhau. Về mặt tính toán, một cách diễn đạt 0 - 1 tốt
là rất quan trọng. Nếu giả thiết các biến nguyên trong bài toán là bị chặn
thì có thể đưa bài toán đó về một qui hoạch 0 - 1. Nhưng cách đưa thế
nào cho khéo mới là quan trọng. Để thấy rõ vấn đề này, ta hãy lấy ví dụ
về bài toán cái túi:
(KP) x
0
= 16x
1
+ 24x
2

+ 7x
3
+ 2x
4
→ max
với các điều kiện









4x
1
+ 7x
2
+ 3x
3
+ x
4
≤ 27
x
j
≥ 0, j = 1, 2, 3, 4
x
j
nguyên, j = 1, 2, 3, 4.

Các biến x
1
, x
2
, x
3
, x
4
trong bài toán là không âm và nguyên. Ràng
buộc của bài toán cho thấy 0 ≤ x
1
≤ 6, 0 ≤ x
2
≤ 3, 0 ≤ x
3
≤ 9, 0 ≤
x
4
≤ 27. Có một cách đơn giản để thực hiện phép đổi biến số là đặt
x
1
=

6
i=1
λ
i
, λ
i
∈ {0, 1} , i = 1, , 6, tức là x

1
trong bài toán đã xét
được thay bởi

6
i=1
λ
i
, λ
i
∈ {0, 1} , i = 1, , 6.
Áp dụng ý tưởng này cho các biến x
2
, x
3
, x
4
còn lại ta nhận được 6 + 3
+ 9 + 27 = 45 biến nhị nguyên trong bài toán cái túi 0 - 1 tương đương.
Cách biểu diễn này chưa phải là tối ưu.
Thật vậy, giả sử x ∈ Z
+
, p ∈ Z
+
và 0 ≤ x ≤ p . Ý tưởng tốt hơn là tìm
q ∈ Z
+
sao cho 2
q
≤ p < 2

q+1
và đặt
x =
q

i=1
2
i−1
λ
i
+ [ p − (2
q
− 1)]λ
q+1
, λ
i
∈ {0, 1} , i = 1, 2, , q + 1
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
9
Đối với bài toán cái túi đã xét ta có thể viết
x
1
= λ
1
+ 2λ
2
+ 3 λ
3
(q = 2)
x

2
= λ
4
+ 2λ
5
(q = 1)
x
3
= λ
6
+ 2λ
7
+ 4 λ
8
+ 2λ
9
(q = 3)
x
4
= λ
10
+ 2λ
11
+ 4λ
12
+ 8λ
13
+ 12λ
14
(q = 4)

λ
i
∈ {0, 1} , i = 1, 2, , 14.
Kết quả là trong bài toán cái túi 0 - 1 tương đương chỉ gồm 14 biến nhị
nguyên (thay cho 45 biến lúc đầu). Cụ thể là bài toán:
(KP) x
0
= 16λ
1
+ 32λ
2
+ 48λ
3
+ 24λ
4
+ 48λ
5
+ 7λ
6
+ 14λ
7
+
28λ
8
+ 14λ
9
+ 2λ
10
+ 4λ
11

+ 8λ
12
+ 16λ
13
+ 24λ
14
→ max
với các điều kiện: 4λ
1
+ 8λ
2
+ 12λ
3
+ 7λ
4
+ 14λ
5
+ 3λ
6
+ 6λ
7
+ 12λ
8
+

9
+ λ
10
+ 2λ
11

+ 4λ
12
+ 8λ
13
+ 12λ
14
≤ 27
λ
i
∈ {0, 1} , i = 1, 2, , 14.
• Đưa biến rời rạc về biến 0 – 1
Trong một số ứng dụng, biến x có thể lấy giá trị rời rạc hay liên tục.
Chẳng hạn, x ∈ X = {2} ∪ [5; 7] ∪ {10} ∪ [15; +∞) .
Giả sử x có cận trên M. Khi đó ta có thể viết x như là hàm của các
biến nhị nguyên :λ
1
, λ
2
, λ
3
, λ
4


1
+ 5λ
2
+ 10λ
3
+ 15λ

4
≤ x ≤ 2λ
1
+ 7 λ
2
+ 10λ
3
+ M λ
4
λ
1
+ λ
2
+ λ
3
+ λ
4
= 1, λ
j
∈ {0; 1} , j = 1, 2, 3, 4.
Nếu λ
1
= 1 thì 2 ≤ x ≤ 2, nếu λ
2
= 1 thì 5 ≤ x ≤ 7, nếu λ
3
= 1 thì
10 ≤ x ≤ 10, nếu λ
4
= 1 thì 15 ≤ x ≤ M

Cách biểu diễn dùng biến nhị nguyên đôi khi là công cụ hữu ích cho bài
toán tối ưu rời rạc. Nhờ dùng biến nhị nguyên, ta có thể diễn đạt được
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
10
rất nhiều bài toán tối ưu, nhưng ta không đảm bảo được rằng có thể giải
được hết các bài toán đó trong thời gian hợp lý, bởi lẽ số các nghiệm nhị
nguyên chấp nhận được và không chấp nhận được là cực kỳ lớn. Giả sử
có 100 biến nhị nguyên trong bài toán thì số nghiệm nhị nguyên cần xem
xét có thể lên tới cỡ 2
100
. Ta hãy thử hình dung lượng thời gian một máy
tính cỡ lớn cần dùng để kiểm tra tính chấp nhận được của 2
100
nghiệm 0
- 1 trong bài toán này nhiều như thế nào.
Mặc dầu vậy trên thực tế, người ta vẫn có thể giải trôi chảy các bài
toán qui hoạch tuyến tính 0 -1 cỡ lớn, nhờ dùng lược đồ nhánh cận cài đặt
trên phần mềm thương mại giải qui hoạch nguyên hỗn hợp (chẳng hạn,
người ta đã giải được bài toán thiết kế mạng với 150.000 biến, trong đó
2.000 biến 0 - 1 và 45.000 ràng buộc).
1.2 Sơ đồ tổng quát của phương pháp nhánh cận
Xét bài toán tối ưu rời rạc tổng quát :
min {f(x) : x ∈ D} (1.1)
trong đó f : R
n
→ R, và D ⊂ R
n
là một tập gồm hữu hạn phần tử. Bởi
vì D là tập hữu hạn nên bài toán (1.1) luôn có phương án tối ưu ký hiệu
là x


Xét hàm số γ : 2
D
\φ → R thỏa mãn hai điều kiện
i) γ(A) ≤ min {f(x) : x ∈ A}
ii) γ(A
1
) ≥ γ(A
2
), nếu A
1
⊂ A
2
⊂ D
Định nghĩa 1.1. Giá trị γ(A) trên tập A⊂D được gọi là cận dưới của tập
A.
Việc lựa chon γ(A) phụ thuộc vào từng bài toán cụ thể. Thông thường ta
chọn γ(A) sao cho việc tính toán γ(A) dễ hơn giải bài toán min {f(x) : x ∈ A}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
11
và sao cho γ(A) gần với giá trị tối ưu của bài toán này.
Trong nhiều trường hợp hai yêu cầu này đối lập nhau.
Ta phân hoạch D thành các tập con
D
(1)
1
, D
(1)
2
, , D

(1)
n
1
:
D = ∪
n
1
i=1
D
(1)
i
, D
(1)
i
∩ D
(1)
j
= φ nếu i = j (1.2)
Từ (i) và (ii) ta có:
f(x

) = min {f(x) : x ∈ D} ≥ min

γ(D
(1)
i
) : 1 ≤ i ≤ n
1

= γ(D

1
i
0
)
(1.3)
Giả sử x là phương án chấp nhận được bất kì, x* là phương án tối ưu.
Khi đó
f(x) − f(x

) ≤ f(x) − γ(D
(1)
i
0
) = ε(x) (1.4)
với số ε
0
cho trước, nếu:
ε(x) ≤ ε
0
(1.5)
Thì x có thể coi là lời giải gần đúng.
Định nghĩa 1.2. Phương án chấp nhận được x ∈ D thỏa mãn
f(

x
) − f(x

) ≤ ε
được gọi là phương án ε -tối ưu của bài toán.
Nếu ta tìm được x ∈ D sao cho:

f(x) = γ(D
(1)
i
0
) (1.6)
thì từ (1.4) suy ra:
f(x) = γ(D
(1)
i
0
)
tức là x là phương án tối ưu
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
12
Tập D
(1)
i
0
là có triển vọng chứa phương án tối ưu hơn các tập D
(1)
i
(i = i
0
)
của phân hoạch (1.2). Nếu không có thông tin nào khác về phương án tối
ưu của bài toán (1.1) thì điều kiện:
γ(D
(1)
i
0

) = min

γ(D
1
i
) : 1 ≤ i ≤ n
1

(1.7)
sẽ được nhận làm quy tắc chọn tập D
(1)
i
0
trong các tập D
(1)
1
, , D
(1)
n
1
của
phân hoạch (1.2) để điểm diện trước.
Giả sử có thể phân hoạch tập D
(1)
i
0
thành các tập con
D
(1)
i

0
= ∪
l(i
0
)
i=1
D
(2)
i
, D
(2)
k
∩ D
(2)
l
= φ khi k = l
Khi đó ta có một phân hoạch mới của D:
D
(1)
1
, , D
(1)
i
0
−1
, D
(1)
i
0
+1

, , D
(1)
n
1
, D
(2)
1
, , D
2
l(i
0
)
Sau khi thay đổi kí hiệu ta có:
D =
n
2

i=1
D
(2)
i
Theo tiêu chuẩn (1.7), trong phân hoạch mới ta lại tìm ra tập D
(2)
i
0

chứa cận dưới nhỏ nhất. Nếu tiêu chuẩn (1.5) hay (1.6) chưa được thỏa
mãn, thì ta lại có thể tiếp tục quá trình với tập D
(2)
i

0
Tóm lại ta có lược đồ sau đây:
Sơ đồ thuật toán nhánh cận
a) Bước chuẩn bị: Đặt D
(0)
1
= D, n
0
= 1. Chọn ε
0
là độ chính xác của
lời giải cần tìm
b) Bước k = 0,1,2. . . : Giả sử ở bước lặp này ta đã có phân hoạch
D =
n
k

i=1
D
(k)
i
Tìm γ(D
(k)
i
0
) = min

γ(D
(k)
i

) : 1 ≤ i ≤ n
k

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
13
Nếu ta tìm được x ∈ D thỏa mãn:
ε
k
(x) = f(x) − γ(D
(k)
i
0
) ≤ ε
0
thì x là phương án ε
0
tối ưu, thuật toán kết thúc.
Ngược lại, ta tiến hành phân hoạch tậpD
(k)
i
0
và thu được phân hoạch
của tập D cho bước k+1.
Bởi vì tập D là hữu hạn và
min




D

(k)
i



: 1 ≤ i ≤ n
k

≥ min




D
(k+1)
i



: 1 ≤ i ≤ n
k+1

.
Cho nên với k đủ lớn, ta sẽ thu được phân hoạch tập D thành các tập
con chỉ gồm một phần tử. Do đó, ta suy ra tính hữu hạn của thuật toán
này.
Chú ý rằng trong quá trình phân hoạch các tập D
(k)
i
0

ta có thể tìm được
các phương án chấp nhận được của bài toán. Kí hiệu

x
là phương án chấp
nhận được có giá trị hàm mục tiêu là nhỏ nhất trong số các phương án
chấp nhận được tìm được. Ta sẽ gọi

x
là lời giải tốt nhất hiện có, hay gọi
tắt là kỉ lục, còn giá trị

f = f(

x
) được gọi là giá trị kỉ lục.
Giả sử ở bước k ta đã có kỉ lục

x
. Khi đó, ta có thể loại khỏi quá trình
duyệt tất cả các tập con D
(k)
i
có giá trị cận dưới lớn hơn hoặc bằng giá trị
kỉ lục.
Khi áp dụng sơ đồ trên cho một bài toán tối ưu rời rạc cụ thể, ta cần
phải xây dựng được hai thủ tục chính sau:
1) Thủ tục phân hoạch tập D
(k)
i

0
ra thành các tập con (còn gọi là thủ
tục phân nhánh)
2) Thủ tục tính cận dưới γ(A).
Do vậy, từ sơ đồ tổng quát trên ta có thể thu được các thuật toán khác
nhau vơi hiệu quả khác nhau để giải bài toán đặt ra.
Sau đây ta sẽ trình bày một áp dụng của lược đồ trên vào việc giải bài
toán quy hoạch nguyên tuyến tính.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
14
1.3 Thuật toán Land-Doig giải quy hoạch nguyên
tuyến tính
Xét bài toán quy hoạch nguyên tuyến tính sau đây



















n
j=1
c
j
x
j
→ min,

n
j=1
a
ij
x
j
≤ b
i
, (i = 1, , m)
x
j
≥ 0, (j = 1, , n)
x
j
− nguyên(j = 1, , n)
(1.8)
Ký hiệu:
x = (x
1
, , x
n

)
T
, c = (c
1
, , c
n
)
T
, b = (b
1
, , b
m
)
T
,
A = (a
ij
)
(với T là ký hiệu chuyển vị véc tơ hay ma trận). Khi đó bài toán trên
được viết dưới dạng ma trận như sau:



c
T
x → min,
Ax ≤ b
x ≥ 0, nguyên
(1.9)
Để áp dụng lược đồ tổng quát trong mục trước, ta xác định hai thủ tục

chính là phân nhánh và tính cận. Ta xét cách xây dựng hai thủ tục này
của Land-Doig.
Đặt
D =

x : Ax ≤ b, x ≥ 0, nguyên

Ta có D là miền chấp nhận được của bài toán (1.9). Ta sẽ ký hiệu P
0
là bài toán (1.9)
Giải bài toán quy hoạch tuyến tính tương ứng với P
0
ta sẽ thu được
phương án tối ưu x
0
, x
0
nói chung không nguyên.
Ta có
f(x
0
) = min {f(x) : Ax ≤ b, x ≥ 0}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
15
≤ min

f(x) : Ax ≤ b, x ≥ 0, nguyên

= f


Vì thế giá trị f(x
0
) có thể dùng làm cận dưới cho giá trị tối ưu f

của
bài toán P
0
Như vậy ta đã có thủ tục để tính cận dưới: đặt giá trị cận dưới của
bài toán qui hoạch nguyên tuyến tính bằng giá trị tối ưu của bài toán quy
hoạch tuyến tính tương ứng với nó:
γ(D) = min {f (x) : Ax ≤ b, x ≥ 0} .
Ta phân chia tập chấp nhận được của bài toán P
0
thành hai tập bằng
cách đưa vào hai ràng buộc loại trừ lẫn nhau như sau:
Giả sử x
0
i
(1 ≤ i ≤ n) là một thành phần không nguyên nào đó của x
0
. Ký hiệu:
D
1
=

x ∈ D : x
i


x

0
i

(1.10)
D
2
=

x ∈ D : x
i


x
0
i

+ 1

, (1.11)
trong đó

x
0
i

là phần nguyên của x
0
i
Khi đó
D = D

1
∪ D
2
, D
1
∩ D
2
= φ. (1.12)
Như vậy, ta đã xác định được thủ tục phân hoạch theo các công thức
(1.10) - (1.12).
Gọi P
1
là bài toán
min {f(x) : x ∈ D
1
} .
Gọi P
2
là bài toán
min {f(x) : x ∈ D
2
} .
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
16
Rõ ràng đây là các bài toán quy hoạch nguyên tuyến tính.
Khi giải các bài toán quy hoạch tuyến tính tương ứng với các bài toán
P
i
(i = 1, 2), để tính cận dưới cho các tập D
i

, ta có thể gặp một trong các
tình huống sau đây:
1) Bài toán không có phương án chấp nhận được.
2) Tìm được phương án tối ưu x
i
nguyên.
3) Tìm được phương án tối ưu x
i
không nguyên.
Trường hợp 1): Bài toán P
i
cũng không có phương án chấp nhận được,
tức là D
i
= φ. Khi đó, ta có thể loại bỏ tập D
i
khỏi quá trình xét tiếp
theo.
Trường hợp 2): x
i
cũng là phương án của bài toán P
i
. Vì vậy x
i

phương án chấp nhận được của bài toán xuất phát. Trong trường hợp này,
ta có thể cải thiện được kỷ lục, còn tập D
i
cũng sẽ bị loại bỏ không cần
xét tiếp.

Trường hợp 3) Ta thu được cận dưới của tập D
i

γ(D
i
) = f(x
i
).
Tập D
i
cần được xem xét tiếp:
Ta có thể mô tả thuật toán Land-Doig để giải bài toán quy hoạch
nguyên tuyến tính (1.9) như sau:
Thuật toán Land-Doig
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
17
Bước chuẩn bị: Giải bài toán quy hoạch tuyến tính tương ứng với P
0
và thu được phương án tối ưu x
0
. Giả sử x
0
là không nguyên.
Đặt cận dưới của P
0
là f(x
0
) và danh mục các bài toán cần xét là
P = {P
0

}. Nếu biết x là phương án chấp nhận được của bài toán thì đặt
f = f(x) và ngược lại, ta đặt f = ∞.
Bước lặp k = 1,2,. . .
1) Nếu P = φ thuật toán kết thúc. Khi đó, nếu f < ∞ thì f là giá trị
tối ưu và x là phương án tối ưu của bài toán. Trong trường hợp ngược lại,
bài toán không có phương án chấp nhận được.
2) Nếu P = φ : Chon P
k
là bài toán có cận dưới nhỏ nhất trong P.
Gọi D
k
là miền chấp nhận được, x
k
là phương án tối ưu của bài toán quy
hoach tuyến tính tương ứng với nó.
2.1. Giả sử x
k
t
là một thành phần không nguyên nào đó của x
k
. Phân
hoạch tập D
k
thành hai tập:
D
k
1
=

x ∈ D

k
: x
t


x
k
t

,
D
k
2
=

x ∈ D
k
: x
t


x
k
t

+ 1

.
Gọi P
k

1
là bài toán:
min {f(x) : x ∈ D
k
1
}
và P
k
2
là bài toán:
min {f(x) : x ∈ D
k
2
} .
Đây là các bài toán quy hoạch nguyên tuyến tính.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
18
2.2. Lần lượt giải các bài toán quy hoạch tuyến tính tương ứng với P
k
i
(i = 1,2) để tính cận dưới cho bài toán P
k
i
. Khi đó, ta có thể gặp một
trong các tình huống sau đây:
a) Phát hiện bài toán không có phương án chấp nhận được.
b) Tìm được phương án tối ưu x
ki
là nguyên.
c) Tìm được phương án tối ưu x

ki
là không nguyên.
Trường hợp a): Bài toán P
k
i
cũng không có phương án chấp nhận được,
vì vậy loại bỏ khỏi việc xem xét tiếp theo.
Trường hợp b): Tính lại giá trị kỷ lục theo công thức:
f := min

f, f(x
k
i
)

Gọi
x là kỷ lục tương ứng với giá trị này. Bài toán P
k
i
đã xét xong.
Trường hợp c): Đặt cận dưới của P
k
i
là f(x
k
i
) , và kết nạp nó vào danh
sách các bài toán cần xét:
P := P ∪ {P
k

i
}
2.3. Loại bỏ khỏi P tất cả các bài toán có cận dưới lớn hơn hoạc bằng giá
trị kỷ lục. Đặt:
P := P \ {P
k
}
và chuyển sang bước k+1.
Ví dụ minh hoa
Giải bài toán quy hoạch nguyên tuyến tính P
0
sau đây bằng thuật toán
Land – Doig:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
19
























−x
1
− x
2
→ min
−4x
1
+ 2x
2
≤ −1
4x
1
+ 2 x
2
≤ 11
−x
2
≤ −
1
2
x
1

, x
2
≥ 0, nguyên
Giải
Miền chấp nhận được của bài toán P
0
là tam giác ABC có tọa độ ba
đỉnh là A(
3
2
;
5
2
), B(
1
2
;
1
2
), C(
5
2
;
1
2
).
Kí hiệu P
1
là bài toán quy hoạch tuyến tính (bỏ qua điều kiện nguyên
) tương ứng với bài toán quy hoạch nguyên đã cho P

0
. Giải P
1
ta được
phương án tối ưu: x
1
=
3
2
; x
2
=
5
2
với giá trị mục tiêu z = - 4.
Đó là cận dưới cho mọi phương án nguyên của bài toán quy hoạch nguyên
đang xét.
Vì biến x
1
có giá trị không nguyên nên ta chọn x
1
để phân nhánh. Ta
thu được bài toán quy hoạch tuyến tính mới.
Thêm vào P
1
ràng buộc x
1
≤ 1 ta được bài toán P
2
.

Thêm vào P
1
ràng buộc x
1
≥ 2 ta được bài toán P
3
.
Giải bài toán P
2
ta được phương án tối ưu x
1
= 1; x
2
=
3
2
với giá trị
mục tiêu z = −
5
2
.
Giải bài toán P
3
ta được phương án tối ưu x
1
= 2; x
2
=
3
2

với giá trị
mục tiêu z = −
7
2
.
Bài toán P
3
có giá trị hàm mục tiêu nhỏ hơn nên ta chọn P
3
để phân
nhánh, vì biến x
2
có giá trị không nguyên nên ta chọn x
2
để phân nhánh,
ta thu được hai bài toán quy hoạch tuyến tính mới.
Thêm vào P
3
ràng buộc x
2
≤ 1 ta được bài toán P
4
.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
20
Thêm vào P
3
ràng buộc x
2
≥ 2 ta được bài toán P

5
.
Bài toán P
5
không có phương án (miền ràng buộc rỗng) nên P
5
bị loại
(không cần xét tiếp nữa).
Giải bài toán P
4
ta được phương án tối ưu x
1
=
9
4
; x
2
= 1 với giá trị
mục tiêu z = −
13
4
.
Ta phải xét hai bài toán P
2
và P
4
do bài toán P
4
có giá trị hàm mục
tiêu nhỏ hơn nên ta chọn P

4
để phân nhánh.
Vì biến x
1
có giá trị không nguyên nên ta chọn x
1
để phân nhánh, ta
thu được hai bài toán quy hoạch tuyến tính mới.
Thêm vào P
4
ràng buộc x
1
≤ 2 ta được P
6
.
Thêm vào P
4
ràng buộc x
1
≥ 3 ta được P
7
.
Bài toán P
7
không có phương án (miền ràng buộc rỗng) nên P
7
bị loại
( không cần xét tiếp nữa).
Giải bài toán P
6

ta nhận được phương án tối ưu x
1
= 2; x
2
= 1 với giá
trị hàm mục tiêu z = - 3.
Phương án này có x
1
, x
2
nguyên nên ta nhận được giá trị kỉ lục của
hàm mục tiêu là - 3 và P
6
đã xét song (bị loại)
Bài toán P
2
có giá trị mục tiêu lớn hơn giá trị kỉ lục nên chắc chắn nó
không chứa phương án nguyên nào tốt hơn (giá trị mục tiêu nhỏ hơn) vì
thế P
2
cũng bị loại.
Đến đây không còn bài toán nào phải xem xét nữa nên phương án
nguyên đã nhận được là phương án tối ưu cần tìm của bài toán quy hoạch
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
21
nguyên đã cho.
Quá trình giải bài toán nêu trên được thể hiện trong sơ đồ vẽ ở hình
dưới đây
Tóm lại, chương này đã đề cập tới bài toán qui hoạch nguyên tuyến
tính nói chung và bài toán qui hoạch tuyến tính 0 - 1 nói riêng. Trình bày

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
22
lược đồ tổng quát của phương pháp nhánh cận cho bài toán tối ưu rời rạc,
Sau đó áp dụng lược đồ này để giải bài toán qui hoạch nguyên tuyến tính,
theo thuật toán Land - Doig.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

×