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 (494.05 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Ĩ TỐN HỌC

Thái Ngun - 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LỜI NÓI ĐẦU
1

2

3

i
1

PHƯƠNG PHÁP NHÁNH VÀ CẬN TRONG TỐI ƯU
RỜI RẠC


4

1.1

Bài tốn quy hoạch ngun 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

BÀI TỐN CÁI TÚI

23

2.1

Nội dung bài tốn

. . . . . . . . . . . . . . . . . . . . . . 23

2.2

Thuật toán nhánh và cận


2.3

Ví dụ minh họa . . . . . . . . . . . . . . . . . . . . . . . . 30

. . . . . . . . . . . . . . . . . . 26

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.3

3.2.1

Thủ tục tính cận

. . . . . . . . . . . . . . . . . . . 36

3.2.2

Thủ tục phân nhánh


. . . . . . . . . . . . . . . . . 38

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 (Combinatorial Optimization), đề cập tới các bài tốn tối ưu trong đó một phần
hay tồ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 tố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 tố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 tốn qui hoạch 0 - 1.
Có nhiều phương pháp giải bài tố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 tố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 tố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 tố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 tốn học, các
thuật tố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 tố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

tốn qui hoạch ngun tuyến tính.
Chương 2 với tiêu đề "Bài tố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 tố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 tốn này tuy đơn giản, nhưng lại là bài tố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 tốn nầy. Thuật tố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 tốn qui hoạch tuyến tính đơn giản.
Chương 3 với tiêu đề "Bài tốn người du lịch" trình bày nội dung và ý
nghĩa của bài tốn người du lịch. Đó là một bài tố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 tố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 tốn. Trong q
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 Tố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 tốn qui hoạch ngun 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 tốn quy hoạch ngun 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 tố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) = cT x : Ax = b, xj ≥ 0 nguyên, j = 1, ..., n ,
trong đó A ∈ Rm.n , b ∈ Rm và c ∈ Rn cho trước.
Khi chỉ có một số, chứ khơng phải tất cả, các biến là ngun thì ta
gọi đó là bài tố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 ∈ Rn : Ax = b, xj ≥ 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 tốn tìm nghiệm tối ưu của bài tố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 tố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ố:

xj =

1 nếu chọn kiện j
, j = 1, 2, 3,
0 nếu ngược lại

ta có thể diễn đạt vấn đề nêu trên như một qui hoạch nguyên ILP như sau:

x1 + 2x2 + 3x3 → max
3x1 + 2x2 + 4x3 ≤ 5
0 ≤ xj ≤ 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:

x1 + x2 ≤ 1
(Vì thế, nếu x1 = 1 thì x2 = 0, cịn nếu x2 = 1 thì x1 = 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 tốn ra sao? Trả lời: thêm vào mơ hình ban đầu đẳng thức:

x1 + x2 + x3 = 1
(Vì thế, hoặc x1 = 1, x2 = x3 = 0 hoặc x2 = 1, x1 = x3 = 0 hoặc

x3 = 1, x1 = x2 = 0). Như vậy ta đã thấy qui hoạch nguyên ILP rất tiện
dùng để mơ hình hố 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: x1 là số máy bay Airbus cần mua và x2
là số máy bay Boing cần mua, ta có thể diễn đạt vấn đề này như một bài
tốn ngun tuyến tính ILP sau (Đáp số: 2 Airbus và 4 Boing, fmax = 44
năm):

6x1 + 8x2 → max






 x1 + x2 ≤ 6

5x1 + 9x2 ≤ 46







x1 , x2 ≥ 0, nguyên
Một lớp qui hoạch ngun quan trọng là bài tốn qui hoạch tuyến tính
0 - 1. Đó là bài tốn qui hoạch tuyến tính, trong đó mọi biến chỉ lấy giá
trị 0 hay 1. Bài tốn này cịn được biết với tên gọi bài tốn nhị ngun
tuyến tính hay bài tố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 tố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 tố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 tốn “cái túi” nhiều chiều:
(MKP)

x0 = c1 x1 + c2 x2 + ... + cn xn → max

với các điều kiện:

ai1 x1 + ai2 x2 + ... + ain xn ≤ bi , i = 1, 2, ..., m
xj ∈ {0, 1} , j = 1, 2, ..., n,
trong đó aij , bi , cj ∈ Z (i = 1, 2, . . . , m; j = 1, 2, . . . , n) là những số cho
trước và xj (j = 1, 2, . . . , n) là biến nhị ngun (biến 0 - 1).
Trong mơ hình trên aij biểu thị lượng tài nguyên i cần dùng để thực
hiện dự án j, bi biểu thị lượng tài nguyên i có thể sử dụng và cj biểu thị
lợi ích thu được khi thực hiện dự án j. Biến quyết định xj = 1 nếu dự án
j được chọn thực hiện và xj = 0 nếu trái lại.
Qui hoạch tuyến tính 0 - 1 cịn được chú ý là vì về ngun 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 tố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 tốn học khác nhau. Về mặt tính tố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 tố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 tốn cái túi:
(KP)
với các điều kiện

x0 = 16x1 + 24x2 + 7x3 + 2x4 → max

4x1 + 7x2 + 3x3 + x4 ≤ 27




xj ≥ 0, j = 1, 2, 3, 4



 x nguyên, j = 1, 2, 3, 4.
j

Các biến x1 , x2 , x3 , x4 trong bài tốn là khơng âm và nguyên. Ràng
buộc của bài toán cho thấy 0 ≤ x1 ≤ 6, 0 ≤ x2 ≤ 3, 0 ≤ x3 ≤ 9, 0 ≤

x4 ≤ 27. Có một cách đơn giản để thực hiện phép đổi biến số là đặt
x1 =

6
i=1 λi , λi


∈ {0, 1} , i = 1, ..., 6, tức là x1 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 x2 , x3 , x4 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 2q ≤ p < 2q+1 và đặt
q

2i−1 λi + [p − (2q − 1)]λq+1 , λi ∈ {0, 1} , i = 1, 2, ..., q + 1

x=
i=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 tốn cái túi đã xét ta có thể viết


x1 = λ1 + 2λ2 + 3λ3 (q = 2)
x2 = λ4 + 2λ5 (q = 1)
x3 = λ6 + 2λ7 + 4λ8 + 2λ9 (q = 3)
x4 = λ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)

x0 = 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 +

6λ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

2λ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

tố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 tố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 tố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 tốn thì số nghiệm nhị ngun cần xem
xét có thể lên tới cỡ 2100 . 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 2100 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
tố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 : Rn → R, và D ⊂ Rn 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 tốn (1.1) ln có phương án tối ưu ký hiệu
là x∗
Xét hàm số γ : 2D \φ → R thỏa mãn hai điều kiện
i) γ(A) ≤ min {f (x) : x ∈ A}
ii) γ(A1 ) ≥ γ(A2 ), nếu A1 ⊂ A2 ⊂ 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 tốn cụ thể. Thơng thường ta
chọn γ(A) sao cho việc tính tốn γ(A) dễ hơn giải bài tố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
(1)

(1)

(1)

D1 , D2 , ..., Dn1 :

(1)

(1)

(1)

1
D = ∪ni=1
Di , Di ∩ Dj = φ nếu i = j

(1.2)

Từ (i) và (ii) ta có:
(1)

f (x∗ ) = min {f (x) : x ∈ D} ≥ min γ(Di ) : 1 ≤ i ≤ n1 = γ(Di10 )
(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 đó
(1)

f (x) − f (x∗ ) ≤ f (x) − γ(Di0 ) = ε(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 tốn.
Nếu ta tìm được x ∈ D sao cho:
(1)

f (x) = γ(Di0 )

(1.6)

thì từ (1.4) suy ra:
(1)

f (x) = γ(Di0 )
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
(1)

(1)


Tập Di0 là có triển vọng chứa phương án tối ưu hơn các tập Di (i = i0 )
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 tốn (1.1) thì điều kiện:
(1)

γ(Di0 ) = min γ(Di1 ) : 1 ≤ i ≤ n1
(1)

(1.7)
(1)

(1)

sẽ được nhận làm quy tắc chọn tập Di0 trong các tập D1 , ..., Dn1 của
phân hoạch (1.2) để điểm diện trước.
(1)

Giả sử có thể phân hoạch tập Di0 thành các tập con
(1)

l(i )

(2)

(2)

(2)

Di0 = ∪i=10 Di , Dk ∩ Dl


= φ khi k = l

Khi đó ta có một phân hoạch mới của D:
(1)

(1)

(1)

(2)

2
D1 , ..., Di0 −1 , Di0 +1 , ..., Dn(1)1 , D1 , ..., Dl(i
0)

Sau khi thay đổi kí hiệu ta có:
n2

(2)

D = ∪ Di
i=1

(2)

Theo tiêu chuẩn (1.7), trong phân hoạch mới ta lại tìm ra tập Di0 có
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
(2)

mãn, thì ta lại có thể tiếp tục q trình với tập Di0

Tóm lại ta có lược đồ sau đây:
Sơ đồ thuật tốn nhánh cận
(0)

a) Bước chuẩn bị: Đặt D1 = D, n0 = 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
nk

(k)

D = ∪ Di
i=1

(k)

(k)

Tìm γ(Di0 ) = min γ(Di ) : 1 ≤ i ≤ nk

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)


εk (x) = f (x) − γ(Di0 ) ≤ ε0
thì x là phương án ε0 tối ưu, thuật toán kết thúc.
(k)

Ngược lại, ta tiến hành phân hoạch tậpDi0 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

(k)

Di

: 1 ≤ i ≤ nk ≥ min

(k+1)

Di

: 1 ≤ i ≤ nk+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 tốn
này.
(k)

Chú ý rằng trong q trình phân hoạch các tập Di0 ta có thể tìm được



các phương án chấp nhận được của bài tố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 q trình
(k)

duyệt tất cả các tập con Di

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:
(k)

1) Thủ tục phân hoạch tập Di0 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 tố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

tốn quy hoạch ngun 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 tốn Land-Doig giải quy hoạch ngun
tuyến tính

Xét bài tốn quy hoạch nguyên tuyến tính sau đây










n
j=1 cj xj
n
j=1 aij xj


→ min,
≤ bi , (i = 1, ..., m)
(1.8)



xj ≥ 0, (j = 1, ..., n)






xj − nguyên(j = 1, ..., n)
Ký hiệu:

x = (x1 , ..., xn )T , c = (c1 , ..., cn )T , b = (b1 , ..., bm )T ,
A = (aij )
(với T là ký hiệu chuyển vị véc tơ hay ma trận). Khi đó bài tốn trên
được viết dưới dạng ma trận như sau:

 cT 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 P0
là bài tốn (1.9)
Giải bài tốn quy hoạch tuyến tính tương ứng với P0 ta sẽ thu được
phương án tối ưu x0 , x0 nói chung khơng ngun.
Ta có

f (x0 ) = 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 (x0 ) có thể dùng làm cận dưới cho giá trị tối ưu f∗ của
bài tốn P0
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 tốn qui hoạch ngun tuyến tính bằng giá trị tối ưu của bài tố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 P0 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ử x0i (1 ≤ i ≤ n) là một thành phần khơng ngun nào đó của x0
. Ký hiệu:


D1 = x ∈ D : xi ≤ x0i
D2 = x ∈ D : xi ≥ x0i + 1 ,

(1.10)
(1.11)

trong đó x0i là phần nguyên của x0i
Khi đó

D = D1 ∪ D2 , D1 ∩ D2 = φ.

(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 P1 là bài toán

min {f (x) : x ∈ D1 } .
Gọi P2 là bài toán

min {f (x) : x ∈ D2 } .

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 tốn quy hoạch tuyến tính tương ứng với các bài toán

Pi (i = 1, 2), để tính cận dưới cho các tập Di , ta có thể gặp một trong các
tình huống sau đây:
1) Bài tốn khơng có phương án chấp nhận được.
2) Tìm được phương án tối ưu xi nguyên.
3) Tìm được phương án tối ưu xi khơng ngun.
Trường hợp 1): Bài tốn Pi cũng khơng có phương án chấp nhận được,
tức là Di = φ. Khi đó, ta có thể loại bỏ tập Di khỏi quá trình xét tiếp
theo.
Trường hợp 2): xi cũng là phương án của bài tốn Pi . Vì vậy xi là
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 Di 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 Di là

γ(Di ) = f (xi ).
Tập Di cần được xem xét tiếp:
Ta có thể mơ tả thuật tốn Land-Doig để giải bài tốn quy hoạch
ngun tuyến tính (1.9) như sau:
Thuật tố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 tốn quy hoạch tuyến tính tương ứng với P0
và thu được phương án tối ưu x0 . Giả sử x0 là không nguyên.
Đặt cận dưới của P0 là f (x0 ) và danh mục các bài toán cần xét là

P = {P0 }. 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 tố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 tốn khơng có phương án chấp nhận được.
2) Nếu P = φ : Chon Pk là bài tốn có cận dưới nhỏ nhất trong P.
Gọi Dk là miền chấp nhận được, xk là phương án tối ưu của bài tốn quy
hoach tuyến tính tương ứng với nó.
2.1. Giả sử xkt là một thành phần khơng ngun nào đó của xk . Phân
hoạch tập Dk thành hai tập:

Dk1 = x ∈ Dk : xt ≤ xkt

,

Dk2 = x ∈ Dk : xt ≥ xkt + 1 .
Gọi Pk1 là bài toán:

min {f (x) : x ∈ Dk1 }
và Pk2 là bài toán:

min {f (x) : x ∈ Dk2 } .
Đâ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 Pki
(i = 1,2) để tính cận dưới cho bài tốn Pki . Khi đó, ta có thể gặp một
trong các tình huống sau đây:
a) Phát hiện bài tốn khơng có phương án chấp nhận được.
b) Tìm được phương án tối ưu xki là nguyên.
c) Tìm được phương án tối ưu xki là không nguyên.
Trường hợp a): Bài tốn Pki 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 (xki )
Gọi x là kỷ lục tương ứng với giá trị này. Bài toán Pki đã xét xong.
Trường hợp c): Đặt cận dưới của Pki là f (xki ) , và kết nạp nó vào danh
sách các bài toán cần xét:

P := P ∪ {Pki }
2.3. Loại bỏ khỏi P tất cả các bài tốn có cận dưới lớn hơn hoạc bằng giá
trị kỷ lục. Đặt:

P := P \ {Pk }
và chuyển sang bước k+1.
Ví dụ minh hoa
Giải bài tốn quy hoạch ngun tuyến tính P0 sau đây bằng thuật tốn
Land – Doig:


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




19


−x1 − x2 → min







−4x1 + 2x2 ≤ −1




4x1 + 2x2 ≤ 11





−x2 ≤ − 12







x1 , x2 ≥ 0, nguyên
Giải
Miền chấp nhận được của bài toán P0 là tam giác ABC có tọa độ ba
đỉnh là A( 32 ; 52 ), B( 12 ; 12 ), C( 52 ; 21 ).
Kí hiệu P1 là bài tố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 P0 . Giải P1 ta được
phương án tối ưu: x1 = 23 ; x2 =

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 ngun
đang xét.
Vì biến x1 có giá trị khơng nguyên nên ta chọn x1 để phân nhánh. Ta
thu được bài tốn quy hoạch tuyến tính mới.
Thêm vào P1 ràng buộc x1 ≤ 1 ta được bài toán P2 .
Thêm vào P1 ràng buộc x1 ≥ 2 ta được bài toán P3 .
Giải bài toán P2 ta được phương án tối ưu x1 = 1; x2 =

3
2

với giá trị


3
2

với giá trị

mục tiêu z = − 52 .
Giải bài toán P3 ta được phương án tối ưu x1 = 2; x2 =
mục tiêu z = − 72 .
Bài tốn P3 có giá trị hàm mục tiêu nhỏ hơn nên ta chọn P3 để phân
nhánh, vì biến x2 có giá trị khơng nguyên nên ta chọn x2 để phân nhánh,
ta thu được hai bài tốn quy hoạch tuyến tính mới.
Thêm vào P3 ràng buộc x2 ≤ 1 ta được bài toán P4 .

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




20

Thêm vào P3 ràng buộc x2 ≥ 2 ta được bài tốn P5 .
Bài tốn P5 khơng có phương án (miền ràng buộc rỗng) nên P5 bị loại
(không cần xét tiếp nữa).
Giải bài toán P4 ta được phương án tối ưu x1 = 49 ; x2 = 1 với giá trị
mục tiêu z = −

13
4.


Ta phải xét hai bài toán P2 và P4 do bài tốn P4 có giá trị hàm mục
tiêu nhỏ hơn nên ta chọn P4 để phân nhánh.
Vì biến x1 có giá trị khơng ngun nên ta chọn x1 để 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 P4 ràng buộc x1 ≤ 2 ta được P6 .
Thêm vào P4 ràng buộc x1 ≥ 3 ta được P7 .
Bài tốn P7 khơng có phương án (miền ràng buộc rỗng) nên P7 bị loại
( khơng cần xét tiếp nữa).
Giải bài tốn P6 ta nhận được phương án tối ưu x1 = 2; x2 = 1 với giá
trị hàm mục tiêu z = - 3.
Phương án này có x1 , x2 nguyên nên ta nhận được giá trị kỉ lục của
hàm mục tiêu là - 3 và P6 đã xét song (bị loại)
Bài toán P2 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 ngun nào tốt hơn (giá trị mục tiêu nhỏ hơn) vì
thế P2 cũng bị loại.
Đến đây khơng cịn bài tố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 tốn quy hoạch

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




21

ngun đã cho.
Q trình giải bài tố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 ngun tuyến

tính nói chung và bài tố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 tố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 tốn Land - Doig.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




×