Tải bản đầy đủ (.doc) (44 trang)

Một số phương pháp giải bài toán tối ưu

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 (325.43 KB, 44 trang )

I. MỞ ĐẦU
1. Lý do chọn đề tài
Tối ưu hóa là một ngành quan trọng trong lĩnh vực toán học, đặc biệt là toán
học ứng dụng. Trong thực tế, ta thường gặp những vấn đề nào đó mà có nhiều cách
giải quyết, một cách tự nhiên ta chọn cách giải quyết vấn đề một cách tối ưu nhất
chẳng hạn như nhanh nhất, tốn ít thời gian nhất hay là mang lại hiệu quả kinh tế cao
nhất Tối ưu hóa toán học ra đời nhằm giải quyết vấn đề trên. Tối ưu hóa ảnh
hưởng đến hầu hết các lĩnh vực khoa học công nghệ, kinh tế, xã hội. Có thể kể tới
rất nhiều ứng dụng hiệu quả trong đời sống thực tế của tối ưu hóa như quy hoạch
tài nguyên, quản trị kinh doanh, công nghệ thông tin, điều khiển tự động, phát triển
các hệ thống lớn, giải quyết các bài toán kinh tế Trên cơ sở dựa vào máy tính, lý
thuyết tối ưu xây dựng được những thuật toán hữu hiệu nhất để giải các bài toán
một cách tổng quát. Chính vì vậy, cùng với sự phát triển của công nghệ thông tin thì
lý thuyết tối ưu ngày càng phát triển mạnh mẽ. Công nghệ thông tin tạo điều kiện
thuận lợi để ứng dụng tối ưu hóa một cách rộng rãi và thiết thực. Khoảng từ thập
niên 80 của thế kỉ trước trở đi cùng với sự phát triển mạnh mẽ của công nghệ thông
tin, lý thuyết tối ưu đã có những bước tiến lớn, đặc biệt là đối với các lý thuyết phi
tuyến, toàn phương
Ngày nay, tối ưu hóa trở thành một môn học không thể thiếu trong hầu hết
các chương trình đào tạo đại học của các ngành như khoa học cơ bản, kỹ thuật-công
nghệ, kinh tế Trong chương trình đại học, tôi đã được học được một phần cơ bản
của tối ưu hóa như qui hoạch tuyến tính nhưng chưa đi sâu vào các vấn đề liên quan
của lĩnh vực này như qui hoạch động, qui hoạch nguyên, qui hoạch phi tuyến Vì
thế, tôi chọn đề tài "Một số phương pháp giải bài toán tối ưu " làm khóa luận tốt
nghiệp cuối khóa.
Trang 1
2. Mục tiêu của đề tài
- Trình bày và làm sáng tỏ lý thuyết về quy hoạch động và quy hoạch nguyên
trong bài toán quy hoạch tuyến tính.
- Trình bày vài lý thuyết cơ sở và phương pháp giải bài toán tối ưu phi tuyến.
- Nêu một vài ứng dụng của bài toán quy hoạch tuyến tính và bài toán phi


tuyến trong thực tế.
3. Đối tượng và phạm vi nghiên cứu
- Lý thuyết cơ sở và thuật toán để giải các bài toán của quy hoạch động, quy
hoạch nguyên, quy hoạch phi tuyến.
- Một số ví dụ cụ thể cho từng thuật toán.
4. Phương pháp nghiên cứu
- Trên cơ sở thu thập tài liệu sách, giáo trình và các tài liệu liên quan rồi tổng
hợp, làm sáng tỏ hơn và sắp xếp lại theo logic nội dung của đề tài.
- Thực hiện giải và tính toán số liệu, kiểm chứng kết quả.
- Trao đổi và thuyết minh về các nội dung nghiên cứu với người hướng dẫn
để làm sáng tỏ vấn đề.
Trang 2
II. NỘI DUNG
CHƯƠNG 1: QUI HOẠCH ĐỘNG
1.1. Giới thiệu về quy hoạch động
Quy hoạch động là một trong những phương pháp tối ưu hiện đại và mạnh
mẽ. Đối tượng của quy hoạch động là các quá trình nhiều bước nói chung và quá
trình phát triển theo thời gian nói riêng. Sự xuất hiện qui hoạch động gắn liền với
tên tuổi nhà bác học Mỹ R.Bellman mà trong những năm 50 của thế kỷ 20 đã áp
dụng cho một loạt các bài toán thực tế một công cụ mà sau này gọi là nguyên tắc tối
ưu. Chính nhờ tính đơn giản và tính tường minh của nguyên tắc này mà phương
pháp này tỏ ra đặc biệt hấp dẫn và đã được áp dụng để giải hàng loạt bài toán thực tế
trong các quá trình kỹ thuật cộng nghệ, tổ chức sản xuất, kế hoạch hoá kinh tế…
1.2. Các nguyên tắc cơ bản của quy hoạch động
Qui hoạch động là việc qui hoạch từng giai đoạn của quá trình nhiều giai
đoạn mà trong đó sau mỗi giai đoạn ta chỉ tối ưu hóa một bước. Tuy nhiên khi qui
hoạch một quá trình nhiều giai đoạn ở mỗi bước ta phải lựa chọn điều khiển trên cơ
sở không phải xuất phát từ lợi ích nhỏ hẹp của chính bước đó mà từ lợi ích chung
toàn bộ quá trình. Các nguyên tắc chính để giải bài toán qui hoạch động gồm:
Nguyên tắc tối ưu của R.Bellman: Dù trạng thái ban đầu và điều khiển ban đầu có

dạng như thế nào thì điều khiển tiếp theo cũng là tối ưu đối với trạng thái thu được
trong kết quả tác động đến những điều khiển ban đầu.
Nguyên tắc lồng: Ta lồng bài toán đang xét vào họ các bài toán. Họ các bài toán
này nhờ có các tham số nên ta giải được. Giải những bài toán thuộc họ này với
những tham số khác nhau cho đến khi gặp được tham số tương ứng với bài toán
xuất phát thì xong.
Dựa trên hai nguyên tắc trên mà ta có thể viết ra một dãy các phương trình truy
toán cho phép chuyển việc giải một bài toán phức tạp n biến số về việc giải bài toán
1 biến số.
Trang 3
1.3. Phương trình truy toán của quy hoạch động
Xét bài toán phân bổ tài nguyên:
Có một loại tài nguyên trữ lượng b cần phân phối cho n đơn vị sản xuất. Biết
rằng nếu phân phối cho đơn vị thứ j một lượng tài nguyên
j
x
thì hiệu quả mang lại
là
j
c
(
j
x
), j=
1,n
. Hãy lập kế hoạch phân phối lượng tài nguyên b cho n đơn vị sao
cho tổng hiệu quả là lớn nhất.
Mô hình bài toán có dạng:
1
( ) max

n
j j
j
c x
=


(1.1)
1
n
j
j
x b
=


(1.2)
0, 1,
j
x j n≥ =
(1.3)
Ta gọi bài toán (1.1) - (1.3) là
( )
n
P b
và hiệu quả tối ưu của nó là
( )
n
f b
Ta lồng bài toán

( )
n
P b
vào một họ các bài toán sau:
Thay vì xét n đơn vị, ta xét k đơn vị đầu tiên (k<n) với lượng tài nguyên là
,( )b
α α

1
( ) max
n
j j
j
c x
=


(1.4)
1
n
j
j
x
α
=


(1.5)
0, 1,
j

x j k≥ =
(1.6)
Kí hiệu bài toán (1.4) - (1.6) là
( )
k
P
α
, hiệu quả tối ưu là
( )
k
f
α
Với mỗi cặp giá trị (k,
α
) ta có một bài toán tương ứng
Khi k tăng từ 1 đến n ,
α
tăng từ 0 đến b thì ta có một họ các bài toán.
Theo nguyên tắc tối ưu của Bellman ta giải bài toán
( )
k
P
α
.
Trang 4
Giả sử
k
x
là lượng tài nguyên phân phối cho đơn vị thứ k, theo giả thiết ta được hiệu
quả

( )
k k
c x
. Lượng tài nguyên còn lại
k
x
α

sẽ được phân phối tối ưu cho k-1 đơn vị
còn lại, hiệu quả tối ưu
1
( )
k k
f x
α


.
Hiệu quả tổng cộng của k đơn vị là:
( )
k k
c x
+
1
( )
k k
f x
α



Cần tìm giá trị
k
x
phù hợp sao cho tổng trên là lớn nhất có thể được

( )
k
f
α
= max{
( )
k k
c x
+
1
( )
k k
f x
α


},
0
k
x
α
≤ ≤
(1.7)
(1.7) là phương trình truy toán của quy hoạch động.
Từ phương trình quy hoạch động, ta có điều kiện đầu:

0
( ) 0f
α
=
với
α
bất kì. Từ đó
có được
1 1
( ) ( )f c
α α
=
với
α
thay đổi

2
( )f
α
= max{
( )
k k
c x
+
1 2
( )f x
α

},
2

0 x
α
≤ ≤
Cứ như vậy ta sẽ nhận được đến
( )
k
f
α
, lại cho k và
α
thay đổi ta sẽ đi tới
( )
n
f b
1.4. Các ví dụ :
Ví dụ 1 : Xét bài toán phân bổ tài nguyên như sau:
Cần phải chuyên chở hàng từ thành phố A đến thành phố B. Mạng các con
đường nối 2 thành phố này được vẽ trên hình ở dưới .
- Ta đồng nhất A=1, B=10.
- Trên hình vẽ, đỉnh của mạng cho ta tương ứng các thành phố.
- Chi phí chuyển hàng từ thành phố s (s=1,2, ,9) đến thành phố j (j=2,3 ,10)
được viết trên các cung đường của mạng.
Hãy tìm hành trình nối các thành phố A và B sao cho tổng chi phí chở hàng là
nhỏ nhất.
Trang 5
Giải:
Ta chia tập tất cả các đỉnh ra thành các tập con :
Tập con 1 gồm đỉnh số 1: (1)
Tập con 2 gồm các đỉnh có các cung đi từ đỉnh 1 vào đỉnh (2,3,4)
Tập con 3 gồm các đỉnh có các cung đi từ các đỉnh tập con 2 vào đỉnh (5,6,7)

Tập con 4 gồm các đỉnh có các cung đi từ đỉnh tập con 3 vào đỉnh (8,9)
Tập con 5 gồm các đỉnh có các cung đi từ đỉnh tập con 4 vào đỉnh (10)
Bất kì hành trình nào đi từ thành phố 1 đến thành phố 10 đều chứa 4 cung
đường.Mỗi cung đường trong chung nối 2 đỉnh thuộc 2 tập con tương ứng.Vì vậy
quá trình giải bài toán tìm hành trình tối ưu được chia ra 4 giai đoạn.
Theo nguyên tắc của quy hoạch động ta đánh số các giai đoạn từ dưới lên.Ta
đưa vào các ký hiệu sau:
- Gọi n là kí hiệu bước (giai đoạn): n=1,2,3,4
( )
n
f s
là chi phí nhỏ nhất để chuyển hàng từ thành phố s đến thành phố cuối
cùng, nếu từ thành phố s đến thành phố cuối cùng còn n giai đoạn.
( )
n
j s
là kí hiệu thành phố mà từ thành phố s cần đi qua để đạt được chi phí
nhỏ nhất là
( )
n
f s
.
j j
c s
là chi phí chuyển hàng từ thành phố s đến thành phố j.
Ở đây tất cả các kí hiệu đều mang ý nghĩa:
f- thực hiện hàm số hiệu quả điều khiển
s- trạng thái của hệ thống (chỉ số thành phố đang xét)
n- chỉ số này mang thông tin di động là từ thành phố s đến thành phố cuối
cùng còn n bước.

Trang 6
1
2
4
3
5
6
7
8
9
1
0
4
3
11 1
6
5
3
5
9
8
7
12
4
4
3
6
4
n=1
n=2n=3

n=4
Ta có ngay
0
(10)f
=0 vì không chuyển hàng từ thành phố 10 đi
* Xét n=1 rõ ràng hàng có thể lấy từ thành phố 8 hoặc 9;
1 8.10 0 1
1 9.10 0 1
(8) (10) 5 0; 8; ( ) 10
(9) (10) 3 0; 9; ( ) 10
f c f s f s
f c f s f s
= + = + = =
= + = + = =
* n=2 ta phải đưa ra các giả thuyết về vị trí có hàng.
Giả thuyết 1: hàng ở thành phố 5
2: hàng ở thành phố 6
3: hàng ở thành phố 7
{ } { }
{ } { }
2 58 1 59 1
2
2 69 1
2
2 78 1 79 1
2
(5) min (8), (9) min 9 5,8 3 11
5; (5) 9
(6) (9) 5 3 8
6; (6) 9

(7) min (8), (9) min 7 5,12 3 12
7; (7) 8
f c f c f
s j
f c f
s j
f c f c f
s j
= + + = + + =
= =
= + = + =
= =
= + + = + + =
= =
Khi n=1:
10
1
( )f s
j(s)
8 5+0 5 10
9 3+0 3 10
Khi n=2:
8 9
2
( )f s
2
( )j s
5 9+5 8+3 11 9
6 5+3 8 9
7 7+5 12+3 12 8

Khi n=3:
8 6 7
3
( )f s
3
( )j s
2 3+11 4+8 12 6
3 1+11 6+8 12 5
4 4+11 6+8 4+12 14 6
Trang 7
j
s
j
s
j
s
Khi n=4:
2 3 4
4
( )f s
4
( )j s
1 4+12 11+12 3+14 16 2
4
(1) 16f =
. Do đó hành trình cần tìm là 1->2->6->9->10.
Ví dụ 2: Giải bài toán quy hoạch động sau
4
1
4

1
( ) max
60
0, 1,2,3,4
i i
i
i
i
i
g x
x
x i
=
=

=
≥ =


Với các số liệu cho trong bảng sau:
i
g
i
x
1
g
2
g
3
g

4
g
0 0 0 0 0
15 16 30 24 18
30 46 36 40 52
45 62 54 60 64
60 80 74 90 78
Áp dụng công thức :
( )
k
f
α
= max{
( )
k k
c x
+
1
( )
k k
f x
α


,
0
k
x
α
≤ ≤

Với
0
(0) 0f =
,
α
biến đổi từ 0,15,30,45,60 và k biến đổi từ 0,1,2,3,4
1 1
1 1
1 1
1 1
1 1
(0) (0) 0
(15) (15) 16
(30) (30) 46
(45) (45) 62
(60) (60) 80
f g
f g
f g
f g
f g
= =
= =
= =
= =
= =
+ k=2. Ta có:
Trang 8
j
s

{ } { }
{ }
{ }
2 2
2
2
2
2 2 1 2 1
0 15 0 15
2 2 1 2 1 2 1
0 30
0 30
2 2 1 2 1 2
0 45
(15) max (0) (15), (15) (0) max 0 16,30 0 30
(30) max (0) (30), (15) (15), (30) (0)
max 0 46,30 16,36 0 46.
(45) max (0) (45), (15) (30), (30
x x
x
x
x
f g f g f
f g f g f g f
f g f g f g
≤ ≤ ≤ ≤
≤ ≤
≤ ≤
≤ ≤
= + + = + + =

= + + +
= + + + =
= + +
{ }
{ }
2
1 2 1
0 45
) (15), (45) (0)
max 0 62,30 46,36 16,54 0 76.
x
f g f
≤ ≤
+ +
= + + + + =
{ }
{ }
2
2
2 2 1 2 1 2 1 2 1 2 1
0 60
0 60
(60) max (0) (60), (15) (45), (30) (30), (45) (15), (60) (0)
max 0 80,30 62,36 46,74 0 92
x
x
f g f g f g f g f g f
≤ ≤
≤ ≤
= + + + + +

= + + + + =
+ k=3 ta có:
{ } { }
{ }
{ }
3 3
2
3
3
3 3 2 3 2
0 15 0 15
3 3 2 3 2 3 2
0 30
0 30
3 3 2 3
0 45
(15) max (0) (15), (15) (0) max 0 30,24 0 30.
(30) max (0) (30), (15) (15), (30) (0)
max 0 46,24 30,40 0 54.
(45) max (0) (45), (15)
x x
x
x
x
f g f g f
f g f g f g f
f g f g f
≤ ≤ ≤ ≤
≤ ≤
≤ ≤

≤ ≤
= + + = + + =
= + + +
= + + + =
= + +
{ }
{ }
{ }
3
3
3
2 3 2 3 2
0 45
3 3 2 3 2 3 2 3 2 3 2
0 60
0 60
(30), (30) (15), (45) (0)
max 0 76,24 46,30 40,60 0 76.
(60) max (0) (60), (15) (45), (30) (30), (45) (15), (60) (0)
max 0 92,24 76,40 46,
x
x
x
g f g f
f g f g f g f g f g f
≤ ≤
≤ ≤
≤ ≤
+ +
= + + + + =

= + + + + +
= + + +
{ }
0 30,90 0 100.+ + =
+ k=4 ta xét ngay với a =60 vì không cần các giá trị trung gian của
4
( ), 45f
α α

{ }
{ }
4
4
4 4 3 4 3 4 3 4 3 4 3
0 60
0 60
(60) max (0) (60), (15) (45), (30) (30), (45) (15), (60) (0)
max 0 100,18 76,52 54,64 30,78 0 106
x
x
f g f g f g f g f g f
≤ ≤
≤ ≤
= + + + + +
= + + + + + =
4
(60)f
ứng với
4 3
30, (30)x f=

3
(30)f
ứng với
3 2
15, (15)x f=
2
(15)f
ứng với
2 1
15, 0x x= =
Vậy ta có phương án tối ưu
1 2 3 4 4
0, 15, 15, 30, (60) 106x x x x f= = = = =
.
Trang 9
CHƯƠNG 2: QUI HOẠCH NGUYÊN
2.1 Phát biểu bài toán quy hoạch tuyến tính nguyên và các bài toán tiêu biểu
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 nguyên hay bài toán quy hoạch tuyến tính
nguyên (BTQHTT nguyên), 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 với điều kiện các biến quyết định là các biến
nguyên với các điều kiện ràng buộc:
( )
1 1 2 2
z c x c x c x Max Min
n n
= + + + →
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2

1 1




0
nguyên, 1, ,
n n
n n
m m mn n m
j
j
a x a x a x b
a x a x a x b
a x a x a x b
x
x j n n n
+ + + ≤


+ + + ≤




+ + + ≤





= ≤


Khi
1
n
=n ta có bài toán quy hoạch tuyến tính nguyên hoàn toàn.
Khi
1
n
<n ta có bài toán quy hoạch tuyến tính nguyên bộ phận.
Trong trường hợp tổng quát, bài toán quy hoạch tuyến tính nguyên có thể bao gồm
các ràng buộc dạng ≥, ≤ hoặc =; các biến có thể có dấu ≥ 0, ≤ 0 hoặc dấu tùy ý
Các bài toán quy hoạch tuyến tính nguyên rất hay và có nhiều ứng dụng
trong thực tế. Trong đó có bài toán quy hoạch nguyên tiêu biểu là bài toán cái túi
được phát biểu như sau:
Bài toán cái túi:
Một người du lịch muốn mang theo một túi với tổng trọng lượng không vượt
quá b (kg). Có n loại đồ vật mà anh ta muốn đem theo, biết rằng trọng lượng một đồ
vật loại j là
j
a
và có giá trị là
j
c
. Hãy xác định số lượng đồ vật mỗi loại mang theo
để tổng trọng lượng không vượt quá b nhưng giá trị của túi là lớn nhất.
Mô hình bài toán như sau:
Gọi
j

x
là số đơn vị đồ vật loại j cần đem theo. Khi đó
Trang 10
1
1
( ) max
0; 1,
nguyên, 1,
n
j j
j
n
j j
j
j
j
f x c x
a x b
x j n
x j n
=
=
= →





≥ =



=






2.2. Phương pháp cắt Gomory giải bài toán quy hoạch tuyến tính nguyên
2.2.1. Ý nghĩa của phương pháp cắt
Xét bài toán qui hoạch tuyến tính L có dạng:
( )
1 1 2 2
z c x c x c x Max Min
n n
= + + + →
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2




0
n n
n n
m m mn n m
j
a x a x a x b
a x a x a x b

a x a x a x b
x

+ + + =

+ + + =




+ + + =




Gọi bài toán L' là bài toán nguyên tương ứng. Đó là bài toán L và thêm vào
ràng buộc x
j
nguyên với mọi
{1,2, ,n}.j J∈ ⊆
Nếu J={1,2, ,n} thì L' là bài toán QHTT nguyên hoàn toàn.
Liệu có thể dùng những thuật toán đối với bài toán L để giải bài toán L' được
không?
Để trả câu hỏi này, ta xét định lý sau đây:
Định lý 2.1.
Nếu L là một đa diện lồi, L' là tập các điểm nguyên của L và R là bao lồi của L' thì:
a/ R là một đa diện lồi, nguyên.
b/ R' =L' (R' là tập các điểm nguyên của R)
c/ Tập R* các đỉnh của R thõa mãn điều kiện R*


R'.
Trang 11
Chứng minh:
a/ Vì L là một đa diện lồi nên L giới nội, do đó L' hữu hạn, suy ra R cũng là một đa
diện lồi, hơn nữa tập R* các đỉnh của R thõa mãn điều kiện R*

R'.
Nghĩa là R là một đa diện lồi nguyên.
b/ Từ định nghĩa của R suy ra L'

R, suy ra L'

R'.
Chỉ cần chứng minh R'

L'. Thật vậy, R=L nên R'

L'.
c/ Từ R*

L' và L'=R' nên R*

R'.
2.2.2. Phương pháp cắt
Giả sử x(L) là nghiệm tối ưu của bài toán L không thỏa điều kiện nguyên, tức
là x(L)

L'. Khi đó bất đẳng thức:
,
n

j j
j 1
A x A x β
=
< >= ≤

gọi là lát cắt đúng nếu thoả mãn các điều kiện sau:
- Điều kiện cắt: x(L) không thoả mãn bất đẳng thức, tức là <A, x(L)> > β
- Với mọi x

L'

<A,x>
β≤
.
Như vậy việc giải bài toán quy hoạch tuyến tính nguyên là một quá trình gồm
nhiều bước:
a) ở bước thứ r giải bài toán phụ thuộc vào L
r
với r=0,1, với
0
L
=L và
L'
0
=L'
1
=L'
2
=

b) Tập các điểm nguyên của tất cả các đa diện lồi là như nhau. Do đó nếu
phương án tối ưu x(
r
L
) của bài toán L
r
thỏa mãn điều kiện nguyên thì nó cũng là
phương án tối ưu
( ')x L
của bài toán xuất phát
'L
và quá trình kết thúc.
c) Nếu x(
r
L
) không thỏa mãn điều kiện nguyên thì x(
r
L
) không phải là
phương án của bài toán L
r+1
tức là X
1
( )
r r
L L
+

. Khi đó chuyển sang bước r+1.
Chuyển từ bước thứ r sang bước thứ r+1 tức là chuyển từ bài toán

r
L
sang
1r
L
+
khi
x(
r
L
) không nguyên được thực hiện nhờ một lát cắt đúng
,
r r
A x< >≤
β
.Việc bổ sung
lát cắt này vào ràng buộc của bài toán
r
L
sẽ chuyển đa diện lồi
r
L
thành
1r
L
+
.
Trang 12
2.2.3 Thuật toán Gomory:
Xét bài toán

1 1 2 2
z c x c x c x Max
n n
= + + + →
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2




0
nguyên (j=1,2, ,n)
n n
n n
m m mn n m
j
j
a x a x a x b
a x a x a x b
a x a x a x b
x
x
+ + + =


+ + + =





+ + + =






Giả sử x(L) là nghiệm tối ưu của bài toán tương ứng nhưng bỏ qua điều kiện
nguyên. Ta biểu diễn hàm mục tiêu theo các biến không cơ sở và gọi N là tập các chỉ
số của biến không cơ sở đó
ij
( ), , , ,
j io j
j N
x x x x i 0 1 n

= + − =

Ta ký hiệu:
[x] là phần nguyên của số thực x.
{x}= x-[x] là phần thập phân của x.
Ta có định lý sau
Định lý 2.2. Nếu :
1/
ij
( ) ( ), , , ,
j i io j
j N
z z x x x x i 0 1 n


= = − + − =

2/ x là nghiệm của nguyên L'.
Thì : z
i
nguyên và z
i
0≥
.
Chứng minh
-
j
z
nguyên:
Trang 13
Từ
0
( )
i i ij j
j N
z x x x

= + −

suy ra
[ ]
{ }
{ }
( )

( )
0 0i i i ij ij j
j N
x x x x x x

 
= + + + −
 

Kết hợp với giả thiết 1) ta suy ra
[ ]
( )
0i i i ij ij
j N
z x x x x

 
= − + + −
 

.
Do giả thiết 2) ta có
,
i j
x x
nguyên nên suy ra
j
z
nguyên
- Chứng minh

j
z

0. Giá sử
j
z
<0, từ 1) ta có:
{ }
{ }
0
( ) ( )( ) 0
i i i ij j
j N
z z x x x x

≡ = − + − − <

Vì
{ }
{ }
[
)
0
1; 0, 0,1
i j ij
x x x− > − ≥ ∈
nên -1<
j
z
<0 tức là

j
z
không nguyên. Điều này mâu
thuẫn với chứng minh trên , do đó
j
z

0
Hệ quả 2.3
Giả sử x(L) không thỏa mãn điều kiện nguyên, như vậy đối với i nào đó
(1
i
≤ ≤
n)
0i
x
không nguyên. Khi đó từ giả thiết 1/ và z
i
0

tạo nên một lát cắt đúng
Chứng minh:
- Mọi phương án của bài toán L' đều thỏa giả thiết 1/ và và z
i
0

. Do đó điều
kiện đúng của lát cắt được thỏa mãn.
Đặt vào giả thiết 1/ phương án tối ưu không nguyên x(L). Do
( ) 0,

j
x L j N= ∈
suy ra
{ }
0
( ( )) 0 0
j i
z x L x= − + <
trái với và z
i
0≥
, tức là điều kiện cắt thỏa mãn.
Thuật toán Gomory
Bước 0: Bỏ qua ràng buộc nguyên, giải bài toán quy hoạch tuyến tính thông thường
bằng phương pháp đơn hình được một lời giải tối ưu.
Bước 1: Kiểm tra điều kiện nguyên:
+ Nếu nguyên thì đó là nghiệm của bài toán → dừng
+ Nếu không nguyên chuyển sang bước 2.
Bước lặp thứ k
Bước 2: Xây dựng lát cắt hợp cách tương ứng, chọn lát cắt sâu theo định nghĩa nêu
trên:
Trang 14
{ }
1 0
( { })
k
n k i jk k
k N
x x x x
+ +


= − − −

N
k
là tập chỉ số của các biến phi cơ sở,
1
0
n k
x
+ +

và nguyên.
Bước 3: Đưa biến vào phần cuối cùng của bảng đơn hình, áp dụng phương pháp đơn
hình đối ngẫu giải bài toán trên, thu được kết quả mới. Quay lại bước 1 để kiểm tra
điều kiện nguyên, nếu chưa nguyên chuyển qua bước lặp k+1.
2.2.4 Ví dụ phương pháp Gomory bằng đồ thị
Xét bài toán quy hoạch tuyến tính nguyên
Max Z =
1 2
4x x+
1 2
1 2
1 2
1 2
2 4 7
10 3 15
, 0
, nguyên
x x

x x
x x
x x
+ ≤


+ ≤






Chúng ta đi tìm phương án tối ưu cho bài toán bằng đồ thị.
Bước 1: Vẽ miền các phương án khả thi là tập hợp các phương án khả thi .Mỗi
phương án khả thi thể hiện qua bộ số (
1 2
,x x
) thỏa mãn tất cả các ràng buộc .
Trước hết chúng ta vẽ đường thẳng có phương trình là
1 2
2 4 7x x+ =
. Đường thẳng
này chia mặt phẳng thành 2 nửa mặt phẳng, một gồm những điểm (
1 2
,x x
) thỏa
1 2
2 4 7x x+ ≤
và còn lại thỏa

1 2
2 4 7x x+ ≥
. Ta tìm được mặt phẳng thỏa mãn
1 2
2 4 7x x+ ≤
. Tương tự ta tìm được mặt phẳng thỏa mãn
1 2
10 3 15x x+ ≤
.
Lúc này giao của 2 nửa mặt phẳng trên cho ta tập hợp các điểm (
1 2
,x x
) thỏa
mãn các ràng buộc. Tuy nhiên để thỏa mãn các điều kiện không âm và điều kiện
nguyên của các biến ta chỉ xét các điểm nằm ở góc phần tư thứ nhất có các tọa độ
đều nguyên. Vậy miền các phương án khả thi là miền gồm các điểm với tọa độ
nguyên được giới hạn bởi tứ giác OABC.
Trang 15
Bước 2: Trong miền tứ giác OABC ta tìm điểm(
1 2
,x x
) với các điều kiện nguyên sao
cho Z =
1 2
4x x+
đạt giá trị lớn nhất. Dễ thấy đó là điểm F(1,1)
Trong ví dụ trên ta gọi bài toán quy hoạch tuyến tính khi bỏ qua điều kiện
nguyên là bài toán quy hoạch tuyến tính không nguyên tương ứng với bài toán đã
cho, tức là ràng buộc bây giờ là :
1 2

1 2
1 2
2 4 7
10 3 15
, 0
x x
x x
x x
+ ≤


+ ≤




Ta có Z(O) =0, Z(C)=1,5 ,Z(B)=199/34 và Z(A)=7. Vậy phương án tối ưu khi chưa
xét điều kiện nguyên là (0;7/4) với Z=7. Tuy nhiên, phương án (0;7/4) không thỏa
mãn điều kiện nguyên (do
2
x
=7/4 chưa nguyên). Chúng ta đưa vào thêm điều kiện
2
1x ≤
hoặc
2
2x ≥
. Gọi 2 phương án bổ sung này là 2 lát cắt
1
L

và
'
1
L
.Làm như vậy
tuy chúng ta thu hẹp miền phương án của bài toán quy hoạch tuyến tính không
nguyên nhưng vẫn giữ nguyên miền phương án của bài toán quy hoạch tuyến tính
nguyên đã cho. Vậy miền ràng buộc trở thành:
Trang 16
1 2
1 2
'
2 1 2 1
1 2
2 4 7
10 3 15
1( ) 2( )
, 0
x x
x x
x L x L
x x
+ ≤


+ ≤


≤ ∪ ≥





Miền này chính là miền:
ODEC=miền OABC
{ } { }
2 2
1, 2 2 1, 2 2
( ) : 1 ( ) : 2x x R x x x R x
 
∩ ∈ ≤ ∪ ∈ ≥
 
. Nhìn vào hình có
thể nhận thấy ngay điều kiện
2
2x ≥
có thể bỏ qua. Do đó ta thu được miền ODEC từ
miền OABC bằng nhát cắt
1
L
.
Giải bài toán quy hoạch tuyến tính không nguyên với miền phương án thu hẹp
ODEC ta được phương án tối ưu là E(6/5,1) với Z=26/5. Phương án này có tọa độ
1
x

không nguyên. Lúc này ta bổ sung 2 lát cắt
2 1
: 1L x ≤
và

'
2 1
: 2L x ≥
. Tương tự có thể
thấy lát cắt
'
2 1
: 2L x ≥
có thể bỏ qua. Ta thu được miền phương án thu hẹp ODFG
được quy định bởi các ràng buộc
1 2
1 2
2 1 1 2
1 2
2 4 7
10 3 15
1( ) 1( )
, 0
x x
x x
x L x L
x x
+ ≤


+ ≤


≤ ∪ ≤





Miền ODFG được thu hẹp từ miền OABC bằng 2 nhát cắt
1
L
và
2
L
. Tiếp tục giải
bài toán với miền phương án ODFG ta được phương án tối ưu là điểm F(1,1) có các
tọa độ nguyên với Z=5.
2.2.5. Ví dụ phương pháp Gomory bằng bảng.
Ví dụ 1: Cũng với bài toán trên, ta thêm vào 2 biến phụ để được bài toán có dạng
chính tắc như sau:
Max Z =
1 2
4x x+
Trang 17
1 2 3
1 2 4
2 4 7
10 3 15
0, 1,4
nguyên, j=1,4
j
j
x x x
x x x
x j

x
+ + =


+ + =


≥ =



Trước hết ta giải bài toán quy hoạch tuyến tính không nguyên tương ứng. Ta có bảng
đơn hình sau:
Hệ số hàm
mục tiêu
j
c
Biến cơ
sở
Phương
án
1
1c =
2
4c =
3
0c =
4
0c =
1

x
2
x
3
x
4
x
Bảng đơn hình bước 1
0
0
3
x
4
x
7
15
2
10
4
3
1
0
0
1
hàng z
0
0z =
1
0z =
2

0z =
3
0z =
4
0z =
hàng
j∆
1
1∆ =
2
4∆ =
3
0∆ =
4
0∆ =
Bảng đơn hình bước 2
4
0
2
x
4
x
7/4
39/4
1/2
17/2
1
0
1/4
-3/4

0
1
hàng z
0
7z =
1
2z =
2
4z =
3
1z =
4
0z =
hàng
j∆
1
1∆ = −
2
0∆ =
3
1∆ = −
4
0∆ =
(Bảng 1)
Như vậy phương án tối ưu ở bước thứ 2 chưa thỏa mãn điều kiện nguyên
Xét phương trình
1 2 3 2 1 3
1 1 7 1 1 7
2 4 4 2 4 4
x x x x x x+ + = ⇔ + + =

Trang 18
Một cách tổng quát ta có thể viết
0j
N
r r j r
j j
x z x z

+ =

trong đó
N
j
là tập các chỉ số
tương ứng với các biến ngoài cơ sở. Còn
r
x
là biến cơ sở nằm trong phương trình
đang xét. Giả sử
j
r
z
=
j
r
z
 
 
+
j

r
f
ta có:
0 0
0 0
( )
j j
N
j j
N N
r r r j r r
j j
r r j r r r j
j j j j
x z f x z f
x z x z f f x

∈ ∈
 
 
+ + = +
 
 
 
 
⇔ + − = −
 
 

∑ ∑

Vế trái bắt buộc là số nguyên theo điều kiện của bài toán quy hoạch tuyến tính
nguyên nên vế phải phải là số nguyên nhỏ hơn 1 (do vế phải
0
r
f
<1). Vậy vế phải
luôn nhỏ hơn hoặc bằng 0.
Đặt vế phải là -
5
x
( với điều kiện
5
x
nguyên và
5
x

0) ta có phương trình mới
{ }
0
2 5 1 3 5
1,3
1 1 3
2 4 4
j
j r
j
f x x f x x x

− + = − ⇔ − − + = −


(*)
Mặt khác ta lại có:
2 1 3
1 1 7
2 4 4
x x x+ + =
(**)
Từ (*) và (**) ta suy ra
2 5
1x x+ =
. Do
5
x

0 nên suy ra
2
1x ≤
(tương ứng với lát cắt
1
L
). Lúc này ta có bảng đơn hình mới (Bảng 2). Dễ dàng nhận thấy phương án tối
ưu ở bước 5 chưa thỏa mãn điều kiện nguyên. Xét phương trình thứ 3 trong bảng
đơn hình thứ 5 làm cơ sở , tương tự ta đưa vào phương trình
4 5 6
1 7 1
10 10 5
x x x− − + = −
(lát cắt
2

L
)
Ta có bảng đơn hình mới (Bảng 3)
Phương án tối ưu ở bước 7 đã thỏa mãn điều kiện nguyên. Vậy phương án tối ưu của
bài toán quy hoạch tuyến tính nguyên là (1,1) với Z=5.
Hệ số hàm
mục tiêu
Biến
cơ sở
Phương
án
1 4 0 0 0
Trang 19
1
x
2
x
3
x
4
x
5
x
bảng đơn hình bước 3
4
0
0
2
x
4

x
5
x
7/4
39/4
-3/4
1/2
17/2
-1/2
1
0
0
1/4
-3/4
-1/4
0
1
0
0
0
1
j
z
j

7
2
-1
4
0

1
-1
0
0
0
0
bảng đơn hình bước 4
4
0
1
2
x
4
x
1
x
1
-3
3/2
0
0
1
1
0
0
0
-5
1/2
0
1

0
1
17
-2
j
z
j

11/2
1
0
4
0
1/2
-1/2
0
0
2
-2
bảng đơn hình bước 5
4
0
1
2
x
3
x
1
x
1

3/5
6/5
0
0
1
1
0
0
0
1
0
0
-1/5
1/10
1
-17/5
-3/10
j
z
j

26/5
1
0
4
0
0
0
1/10
-1/10

37/10
-37/10
(Bảng 2)
Hệ số
HMT
Biến
cơ sở
Phương
án
1 4 0 0 0 0
1
x
2
x
3
x
4
x
5
x
6
x
bảng đơn hình bước 6
4
0
1
2
x
3
x

1
x
1
3/5
6/5
0
0
1
1
0
0
0
1
0
0
-1/5
1/10
1
-17/5
-3/10
0
0
0
Trang 20
0
6
x
-1/5 0 0 0 -1/10 -7/10 1
j
z

j

26/5
1
0
4
0
0
0
1/10
-1/10
37/10
-37/10
0
0
bảng đơn hình bước 7
4
0
1
0
2
x
3
x
1
x
4
x
1
1

1
2
0
0
1
0
1
0
0
0
0
1
0
0
0
0
0
1
1
-2
-1
7
0
-2
1
-10
j
z
j


5
1
0
4
0
0
0
0
0
3
-3
1
-1
(Bảng 3)
Ví dụ 2: Giải bài toán quy hoạch tuyến tính bằng phương pháp cắt:
f(x)= x
1
+ 2x
2
2x
1
+ 11x
2
≥ 38
x
1
+ x
2
≤ 7
x

1 ,
x
2
≥ 0
x
1 ,
x
2
nguyên
Giải
Bỏ qua ràng buộc nguyên, giải bài toán QHTT thông thường ta được bảng
đơn hình sau:
c
j
Cơ sở Phương án x
1
x
2
x
3
x
4
2
1

x
2
x
1
8/3

13/3
0
1
0
1
0
0
1/9
-1/9
1/9
-2/9
11/9
7/9
Nhận thấy x
1
, x
2
chưa

nguyên.
Chọn x
2
để lập lát cắt vì {x
2
} = 2/3 > {x
1
} = 1/3. Điều này nghĩa là ta nên
chọn phương trình x
2
để lập lát cắt: x

2
+ 1/9x
3
– 2/9x
4
=
2
2
3

Trang 21
tức là:
x
2
+ (0 + 1/9)x
3
+ (– 1 + 7/9)x
4
=
2
2
3
+
Vậy mặt cắt là:
x
5
+ (–1/9)x
3
+ (– 7/9)x
4

=
2
3

c
j
Cơ sở Phương án x
1
x
2
x
3
x
4
x
5
2
1
0

x
2
x
1
x
5
8/3
13/3
-2/3
0

1
0
0
1
0
0
0
1/9
-1/9
[-1/9]
1/9
-2/9
11/9
-7/9
7/9
0
0
1
0
2
1
0

x
2
x
1
x
3
2

5
6
0
1
0
0
1
0
0
0
0
0
1
1
-1
2
7
0
1
-1
-9
1
Kết luận: Ở ngay lần lặp đầu tiên ta đã thu được nghiệm nguyên, vậy nghiệm
tối ưu của bài toán là (x
1
, x
2
) = (5, 2), trị hàm mục tiêu là: f = 5 + 2 × 2 =9.
2.3 Phương pháp nhánh cận Land- Doig giải bài toán quy hoạch tuyến tính
nguyên

2.3.1. Nội dung cơ bản của phương pháp nhánh và cận
Trong các phương pháp giải bài toán quy hoạch nguyên, phương pháp nhánh
cận là một trong các phương pháp có hiệu quả. Phương pháp nhánh cận được Land
A.H và Doig A.G xây dựng năm 1960 giải bài toán quy hoạch nguyên. Đến năm
1963 được Little J.D, Murty K.G, Sweeney D.W và Karen C sử dụng thành công
giải bài toán người du lịch. Năm 1979 giáo sư Hoàng Tụy đã ứng dụng thành công
phương pháp này vào giải bài toán quy hoạch lõm. Đây là thuật toán được ứng dụng
rộng rãi để giải các bài toán tối ưu khó.
Trang 22
Xét bài toán quy hoạch nguyên:
Min Z=f(x)
x

G (G là tập hữu hạn)
Nội dung cơ bản của phương pháp nhánh và cận có thể mô tả như sau:
a/ Tính cận dưới: Trước hết ta cần tìm một số
( )G
ζ
sao cho
( ) ( ),f x G x Gζ≥ ∀ ∈
(nếu bài toán max thì tìm cận trên)
b/ Phân nhánh:
Chia G thành các tập con
1
1 1 1
1 2
, , , ,
r
G G G
sao cho

1
1 1
1
1
,
i j
r
j
j
G G i j
G G
=

∩ = ∀ ≠


=


φ
U
Tiếp tục như vậy cho đến bước k ta có k tập
1 2
, , , ,
k
k k k
r
G G G
các tập này cũng có tính
chất

1
1
,
k
k k
i j
r
j
j
G G i j
G G
=

∩ = ∀ ≠


=


φ
U
Giả sử một cách nào đó hoặc một tiêu chuẩn nào đó ở bước k ta chọn được
tập
k
k
m
G
nào đó, ta phân hoạch tập này tương tự như trên thành nhiều tập con và được
một dãy các tập sau khi đã đánh số lại:
1

1 1 1
1 2
, , ,
k
k k k
r
G G G
+
+ + +
. Đó là thủ tục phân nhánh
từ bước k sang bước k+1.
Đối với mỗi tập ta tìm cận dưới tương tự như trên, ta có
( ) ( ), , , , ; ,
k k
i i k
f x G x G k 1 2 i 1 rζ≥ ∀ ∈ = =
Sau khi đã có thủ tục phân nhánh và tìm cận dưới thì nghiệm tối ưu có thể tìm được
bởi tiêu chuẩn sau đây:
Trang 23
Định lý 2.4: (Tiêu chuẩn tối ưu)
Giả sử
n
i
i 1
G G
=
=
U

s

x G∈
. Nếu
( ) ( ) ( )
i
f x G Gζ ζ= ≤
với mọi i=1,2, n thì
x

là phương án tối ưu.
Chứng mình điều này hiển nhiên do định nghĩa của
( )
i

.
Lược đồ tổng quát của phương pháp nhánh cận có thể tóm tắt như sau:
Bước 0: Tính
0
( ) ( )G G
ζ ζ
=
. Nếu tìm được phương án
x
sao cho
( ) ( )f x G=
ζ

thì
x
là phương án tối ưu.Ngược lại chia
0 1 1 1

1 2

i
r
G G G G= ∪ ∪ ∪
, tức là chia thành
các tập con thường không giao nhau (tức là
,
i j
G G i j∩ = ∅ ∀ ≠
).
Bước k

1: Tính các đánh giá
( ), 1, ,
k
i k
G i r
ζ
=
. Nếu tìm được phương án
x
,
x
r
k
G∈
sao cho
( ) ( ) ( ), 1,2, ,
r k

k i k
f x G G i r= ≤ ∀ =
ζ ζ
thì
x
là phương án tối ưu, quá trình
kết thúc. Ngược lại chọn
( )
k
k
G
θ
để chia, theo tiêu chuẩn
( )
1, ,
( ) min ( )
k
k k
k i
i r
G G
θ
ζ ζ
=
=
.Ta chia
tập
( )
k
k

G
θ
thành một số tập con
( )
k
k
G
θ
=
( ),1 ( ),2 ( ), ( )

k k k
k k k s k
G G G
θ θ θ
∪ ∪ ∪
Tập cần chia tiếp theo là:
1 2 1 ( ) 1 ( ),1 ( ),2 ( ), ( )
, , , , , , , ,
k k
k k k k k k k k
k r k k k s k
G G G G G G G G
θ θ θ θ θ
− +
Sau đó ta đánh số lại là
1
1 1 1
1 2
, , ,

k
k k k
r
G G G
+
+ + +
và sang bước k+1.
2.3.2 Thuật toán Land - Doig.
Xét bài toán quy hoạch nguyên từng phần sau:
Min Z=f(X)=
1
n
j j
j
c x
=

(2.1)
Trang 24

1
1 1
, 1, (2.2)
0 , 1, (2.3)
nguyên, j=1, , .
n
ij j i
j
j j
j

a x b i m
x d j n
x n n n
=
≤ =
≤ ≤ =
<

(2.4)









Nội dung phương pháp Land-Doig:
- Cho tập
0
G G≡
xác định bởi (2.2)-(2.4)
- Cho các tập
( )
, 1, ,
k
k k
G r
θ

θ
=
và k=1,2 xác định bởi (2), (4) và ràng buộc bổ sung:
(
)
(
)
j j j
h k x d k
θ θ
≤ ≤
j=1,2, ,n (2.5)
a/ Tính cận. Đối với
0
G
ước lượng
( )
0
0
( )G f x=
ζ
với
0
x
là lời giải của bài
toán quy hoạch tuyến tính (2.1)-(2.3).
Đối với
k
G
θ

thì
(
)
(
)
( )
k
G f x k=
θ
θ
ζ
trong đó
(
)
x k
θ
là lời giải của bài toán quy hoạch
tuyến tính (2.1), (2.2), (2.5).
Nếu
( )
k
G
θ
= ∅
thì
( )
k
G
θ
ζ

= +∞
.
b/ Tính phương án. Nếu
0
x
thỏa mãn điều kiện nguyên (2. 4) thì
0
x
là
nghiệm tối ưu của bài toán ban đầu,thuật toán dừng.
Nếu
(
)
x k
θ
thỏa điều kiện nguyên (2.4) thì nó là phương án tối ưu của bài toán (2.1),
(2.2),(2.4),(2.5) và nó cũng là một phương án tối ưu của bài toán ban đầu. Lấy
(
)
x k
θ
để cải tiến cận trên.
Trang 25

×