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

Phương pháp nhánh cận xấp xỉ ngoài giải bài toán quy hoạch nguyên tuyến tính và ứng dụng

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 (536.94 KB, 53 trang )

i

MỤC LỤC
MỤC LỤC .......................................................................................................i
Mở đầu ............................................................................................................ii
Chương 1. BÀI TOÁN QUY HOẠCH NGUYÊN TUYẾN TÍNH VÀ BÀI
TOÁN QUY HOẠCH TUYẾN TÍNH DẠNG CHUẨN.................................. 1
1.1. Một số mô hình thực tế thuộc dạng bài toán quy hoạch nguyên tuyến tính dạng
chuẩn ............................................................................................................................. 1
1.1.1. Bài toán pha cắt vật liệu .................................................................................... 1
1.1.2. Bài toán lập kế hoạch sản xuất .......................................................................... 2
1.1.3. Bài toán cái túi .................................................................................................. 2
1.1.4. Mô hình phân bố máy bay cực tiểu tổng chi phí trên toàn mạng đường bay hàng
không ......................................................................................................................... 3
1.1.5. Bài toán mua (thuê) máy bay tối ưu:.................................................................. 6
1.2. Bài toán quy hoạch nguyên tuyến tính dạng chuẩn và phương pháp giải........................... 7
1.2.1. Bài toán quy hoạch nguyên tuyến tính ............................................................... 7
1.2.2. Thuật toán Land-Doig giải bài toán quy hoạch nguyên tuyến tính ..................... 8
1.3. Bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất phương trình tuyến tính
.................................................................................................................................... 14
1.3.1. Phương pháp nón xoay xấp xỉ ngoài tuyến tính ............................................... 15
Thuật toán xấp xỉ ngoài LP ....................................................................................... 15
1.3.2. Bảng lặp giải bài toán quy hoạch tuyến tính bởi thuật toán nón xoay xấp xỉ
ngoài tuyến tính ........................................................................................................ 17
1.3.3. Bài toán quy hoạch tuyến tính tái tối ưu hóa và thuật toán TTH....................... 21

Chương 2. THUẬT TOÁN NHÁNH CẬN XẤP XỈ NGOÀI GIẢI BÀI
TOÁN QUY HOẠCH NGUYÊN TUYẾN TÍNH VÀ ỨNG DỤNG ............. 27
2.1. Thuật toán nhánh cận xấp xỉ ngoài giải bài toán quy hoạch nguyên tuyến tính ...... 27
2.2. Minh họa ứng dụng thuật toán nhánh cận xấp xỉ ngoài ILP giải bài toán quy hoạch
nguyên tuyến tính có số chiều nhỏ với miền ràng buộc là hệ bất phương trình tuyến tính


.................................................................................................................................... 30

KẾT LUẬN................................................................................................... 49
TÀI LIỆU THAM KHẢO ............................................................................. 50


ii

Mở đầu
Như chúng ta đã biết, nhiều bài toán thực tế dẫn đến chúng ta phải
đi giải các bài toán quy hoạch nguyên tuyến tính, và một trong những
phương pháp hiệu quả để giải nó đó là phương pháp nhánh cận LandDoig. Mỗi bước trung gian để giải bài toán quy hoạch nguyên tuyến tính
thông thường là chúng ta phải tiến hành giải các bài toán quy hoạch tuyến
tính tương ứng khi chưa có điều kiện nguyên của biến với các ràng buộc
bổ sung dạng bất phương trình cho các thành phần của biến. Do đó việc
sử dụng các thuật toán giải trực tiếp bài toán quy hoạch tuyến tính với
miền ràng buộc là hệ bất phương trình tuyến tính là khá ưu việt và hiệu
quả, một trong những thuật toán như vậy là thuật toán nón xoay tuyến tính
xấp xỉ ngoài trình bày trong [4].
Nội dung chính của luận văn được trình bày trong hai chương:
Chương 1, trình bày một số mô hình bài toán thực tế có dạng bài toán
quy hoạch nguyên tuyến tính, phương pháp nhánh cận Land-Doig và thuật
toán nón xoay xấp xỉ ngoài tái tối ưu hóa TTH giải bài toán quy hoạch tuyến
tính dạng chuẩn.
Chương 2, trình bày việc xây dựng thuật toán xấp xỉ ngoài ILP giải bài
toán quy hoạch nguyên tuyến tính từ thuật toán nhánh cận Land-Doig và thuật
toán nón xoay xấp xỉ ngoài TTH. Thuật toán đã dựa trên một định lý làm cho
trong mỗi bước để tìm các cận dưới đúng của bài toán nguyên, chúng ta chỉ
phải đi giải các bài toán quy hoạch tuyến tính tương ứng khi chưa có điều
kiện nguyên có số chiều là n - 1 (n là số chiều của bài toán). Tiếp đó minh họa

ứng dụng thuật toán trình bày giải cho một số ví dụ đã có trong một số tài liệu
[2], [3] và [5] để so sánh tính thuận lợi của thuật toán khi trường hợp bài toán
có sô chiều hay số ràng buộc chính là nhỏ. Và trong trường hợp bài toán quy
hoạch nguyên tuyến tính dạng chuẩn 2 chiều thì việc giải các bài toán quy
hoạch tuyến tính tương ứng khi chưa có điều kiện nguyên, trong mỗi bước để


iii

tìm các cận dưới đúng của bài toán chỉ còn là việc kiểm tra tìm giá trị nhỏ
nhất của hàm một biến tại hai đầu mút (nếu có).
Các thuật toán trình bày trong luận văn này được xây dựng chi tiết, các
bước của thuật toán được trình bày sao cho chúng ta có thể dễ dàng lập trình
chuyển sang các chương trình trên máy tính bằng các ngôn ngữ như Pascal, C,
Basis, Java, ...


1

Chương 1
BÀI TOÁN QUY HOẠCH NGUYÊN TUYẾN TÍNH
VÀ BÀI TOÁN QUY HOẠCH TUYẾN TÍNH DẠNG CHUẨN
Trong chương này chúng ta sẽ trình bày một số bài toán thực tế
điển hình thuộc dạng bài toán quy hoạch nguyên tuyến tính, giới thiệu
một số phương pháp quan trọng thường dùng để giải bài toán quy hoạch
nguyên tuyến tính. Và trong quá trình các bước giải bài toán này cần phải
giải các bài toán quy hoạch tuyến tính dạng chuẩn trung gian khi thêm
vào các siêu phẳng cắt hoặc thêm vào các ràng buộc dạng bất phương
trình tuyến tính để chia nhỏ miền chấp nhận sau mỗi bước. Chính vì thế,
trong phần cuối của chương này sẽ trình bày một thuật toán xấp xỉ ngoài

giải trực tiếp bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất
phương trình tuyến tính và thuật toán này khá hiệu quả trong trường hợp
tái tối ưu hóa.
1.1. Một số mô hình thực tế thuộc dạng bài toán quy hoạch nguyên tuyến
tính dạng chuẩn
1.1.1. Bài toán pha cắt vật liệu
Một phân xưởng có những thanh vật liệu (thanh thép, ống nhựa, ….)
có độ dài cho trước, chúng ta cần cắt chúng thành những đoạn ngắn theo các
mẫu cho trước. Vấn đề đặt ra là ta nên cắt như thế nào cho tổng những phần
dư còn thừa lại là tốn ít nhất?
Giả sử aij là độ dài đoạn loại i theo mẫu j, bi là số đoạn loại i cần có,
cj là rẻo thừa khi cắt theo mẫu j, gọi xj là số thanh cắt theo mẫu j (j= 1,2, …,
n). Ta có bài toán quy hoạch nguyên tuyến tính sau:
n

c
j 1

j

x j  min


2

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

a x
j


j

 bi , i  1,..., m

j 1

x j  0 và nguyên, j  1,..., n

Đây là một bài toán quy hoạch tuyến tính chính tắc nguyên.
1.1.2. Bài toán lập kế hoạch sản xuất
Giả sử một xí nghiệp sản xuất n loại sản phẩm và sử dụng m loại
nguyên liệu khác nhau, cj là lãi suất (hay giá bán) đối với một đơn vị sản
phẩm j (j =1,…, n), aij là suất chi phí tài nguyên loại i để sản xuất một đơn vị
sản phẩm loại j, bi là lượng dự trữ tài nguyên loại i (i = 1,…,m). Gọi xj là
lượng sản phẩm loại j (j = 1,…, n) mà xí nghiệp sản xuất. Trong các điều kiện
đã cho, hãy xác định các giá trị x j (j = 1,…, n) sao cho tổng tiền lãi (hay tổng
giá trị sản lượng hàng hóa) là lớn nhất với số tài nguyên hiện có.
Mô hình toán học có dạng bài toán quy hoạch tuyến tính dạng chuẩn sau:
n

c x
j

j

 max

j 1


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

a x
j

j

 bi , i  1,..., m

j 1

xj  0 ,

j  1,..., n

Đây là một bài toán quy hoạch tuyến tính dạng chuẩn nguyên.
1.1.3. Bài toán cái túi
Một người du lịch muốn đem theo một cái túi có thể đựng được các đồ
vật nặng không quá b kilogam. Có n loại đồ vật mà anh ta dự định đem theo.


3

Mỗi một đồ vật loại j có khối lượng a j kilogam và giá trị c j . Người du lịch
muốn chất vào túi các đồ vật sao cho tổng giá trị đồ vật đem theo là lớn nhất.
Ký hiệu x j là số đồ vật loại j sẽ chất vào túi. Ta có bài toán sau:
n
 c j x j  max
j 1

n
 a jx j  b
j 1
x j  0,

j  1,..., n

x j - nguyên, j  1,..., n

Đây là một bài toán quy hoạch tuyến tính dạng chuẩn nguyên.
1.1.4. Mô hình phân bố máy bay cực tiểu tổng chi phí trên toàn mạng
đường bay hàng không
1. Các tham số và biến quyết định của bài toán:
Giả sử chúng ta đang khai thác sử dụng K loại máy bay (777, 767,
A321, A330, A320, AT7,...), M k là số máy bay loại k đang khai thác sử dụng
(k=1,2,...,K), giả sử số sân bay (thành phố) tham gia vào mạng là N. Ta sử
dụng các ký hiệu sau đây: (i, j) là chặng bay từ sân bay i đến sân bay j
(i, j=1,2...,N).
Ta giả thiết chiều dài trung bình thực tế Dij và chiều dài thương mại của
mỗi chặng bay là bằng nhau.
Pij là số lượng khách trung bình dự báo có thu nhập thực tế chuyên chở
được trên chặng bay (i, j) (trong mỗi tuần).
Sk là số ghế tương ứng (số ghế tối đa được phép xếp khách cho từng
chặng bay của loại máy bay k)


4

gij là ghế suất (hệ số sử dụng ghế suất) trung bình trên chặng bay (i, j)
h max - số giờ khai thác bay trung bình lớn nhất cho phép của một chiếc

k

máy bay loại k trong một tuần.
v - là vận tốc bình quân thực tế của máy bay loại k.
k
min(ij )
max(ij ) tương ứng là tần xuất bay ít nhất và nhiều nhất (số
F
, F
k
k

chuyến bay trong một tuần) của loại máy bay k trên chặng bay (i, j).
Cijk là chi phí theo chuyến bay (trong một tuần) trên chặng bay (i, j) của

loại máy bay k.
fijk là tần suất bay (số chuyến bay trong một tuần) của loại máy bay k

trên chặng bay (i, j) (biến quyết định).
2. Hàm mục tiêu:
Ta ký hiệu Cost là tổng chi phí theo chuyến bay cho tất cả máy bay
đang khai thác sử dụng trong thời kỳ phân tích (một tuần) trên các tuyến
bay toàn mạng. Thời kỳ phân tích là khoảng thời gian cần nghiên cứu cần
phân tích mà ta có thể quy định là một tuần, một tháng, một quý, sáu tháng,
một năm,....
Hàm mục tiêu Cost là tổng chi phí cho chuyến bay trên toàn mạng được
xác định như sau:
k fk
Cost  C    C ij
ij

0 ij k

(I.1)

Trong đó C0 (chi phí cố định) là tổng chi phí không phát sinh thêm khi
chuyến bay được thực hiện như: giá thuê máy bay, bảo hiểm máy bay, bảo
dưỡng sửa chữa máy bay, khấu hao thiết bị máy bay, quản lí chung...C ijk là


5

chi phí biến đổi theo chuyến bay của loại máy bay k xuất hiện khi thực hiện
chuyến bay như: phục vụ hàng khách, giờ bay, hàng hóa, nhiên liệu...
3. Các ràng buộc của bài toán:
Ràng buộc về thương mại:
min(ij )
max(ij )
0 F
 fijk  F
k
k

(I.2)

Ràng buộc này có nghĩa là tần suất bay fijk của loại máy bay k trên
chặng bay (i, j) không ít hơn Fkmin(ij ) và không nhiều hơn Fkmax(ij ) (ràng
buộc về hạn chế thương mại).
Ràng buộc về khai thác:
Với mỗi vòng bay j (Pairing) ta có:


k
 f ji =  fijk
i
i

(I.3)

(j = 1,2,...N, k = 1,2,...,K)
Ràng buộc (I.3) có nghĩa là trong khoảng thời gian phân tích (của một
chu kỳ bay) thì các đội bay của loại máy bay k rời sân bay căn cứ j (Crew
Base) bay đến sân bay i thì sẽ bay về sân bay j trong vòng bay.

 Tijk . fijk  M k .hkmax

(I.4)

( i, j )

Trong đó Tijk 

D ij
v
k

là thời gian bay trên chặng bay (i, j) của loại máy bay k.

Ràng buộc (I.4) có nghĩa là số giờ khai thác bay trung bình của một
chiếc máy bay loại k không vượt quá số giờ bay cho phép.
gij 


Pij
K
k
 S k . fij
k 1

1

(i, j = 1,2,...,N)

(I.5)


6

Ràng buộc (I.5) có nghĩa là hệ số sử dụng ghế (ghế suất) thực tế
trên chặng bay (i, j) của loại máy bay k phải đạt ít nhất bằng g ij và không
vượt quá 100%.
Bài toán đặt ra là cựu tiểu hàm mục tiêu (I.1) với ràng buộc thỏa mãn
(I.2), (I.3), (I.4) và (I.5). Vậy mô hình bài toán “Phân bố máy bay” cực tiểu
tổng chi phí cho chuyến bay như sau:
Cost  C0   Cijk f ijk  min
ij

(I.6)

k

Với các ràng buộc:
min(ij )

max(ij )
0 F
 fijk  F
k
k

 f jik

=

i

 fijk

(j = 1,2,...N, k = 1,2,...,K)

i

k k
max
 Tij fij  M k .hk
(i , j )

gij 

Pij
K
k
 S k . fij
k 1


1

(i, j=1,2,...,N)

Đây là một bài toán quy hoạch tuyến tính dạng chuẩn nguyên.
1.1.5. Bài toán mua (thuê) máy bay tối ưu:
Để mở rộng hoạt động, hãng hàng không dự định mua (thuê) K loại
máy bay (B777, B767, A321, A330, A320, AT7,...) ta gọi tương ứng là loại
máy bay k (k=1, 2, …, K). máy bay loại k có giá mua (thuê) là ck và có thời
gian sử dụng là Tk năm. Hãng dự định mua (thuê) tối đa là N máy bay trong
các loại máy bay trên với số vốn đầu tư hiện có là V, Bài toán cần giải quyết
là hãng hàng không nên mua (thuê) bao nhiêu máy bay mỗi loại để tổng thời
gian sử dụng là nhiều nhất?


7

Ta gọi xk là số lượng máy bay loại k cần mua (thuê), khi đó mô hình
bài toán đặt ra là:
K

M   Tk .xk  max

(I.7)

k 1

Với các ràng buộc:
K


x

k

N

k 1

K

 c .x
k

k

V

k 1

xk  0, k  1, 2,..., K , nguyên

Đây là một bài toán quy hoạch tuyến tính dạng chuẩn nguyên.
1.2. Bài toán quy hoạch nguyên tuyến tính dạng chuẩn và phương pháp giải
Trong mục này, chúng ta giới thiệu về bài toán quy hoạch nguyên
tuyến tính dạng chuẩn và phương pháp nhánh cận Land-Doig để giải nó. Nội
dung của mục này dựa chủ yếu vào các tài liệu [2], [3], [4] và [5].
1.2.1. Bài toán quy hoạch nguyên tuyến tính
Quy hoạch nguyên tuyến tính (Interger linener Programming, 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:
T
( ILP) m in  f ( x )  c x : A x  b , x j  0 n g u y ê n , j  1, ..., n 

m. n
m
n
trong đó A  R , b  R và c R cho trước.

Khi có một số, 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 bộ phận. Khi có điều kiện tất cả các biến đều nguyên
thì ta gọi đó là bài toán quy hoạch nguyên hoàn toàn.


8

Cũng như trong quy 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 
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à 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 quy hoạch nguyên
tuyến tính.
1.2.2. Thuật toán Land-Doig giải bài toán quy hoạch nguyên tuyến tính
Chúng ta đã biết khi giải bài toán quy hoạch tuyến tính bằng
phương pháp đơn hình thì nhiều bài toán như bài toán vận tải sẽ cho
chúng ta lời giải nguyên. Song cũng có nhiều bài toán cho chúng ta lời
giải chưa phải là nguyên, chính vì thế mà một số phương pháp giải bài

toán quy hoạch nguyên đã ra đời.
Năm 1954, Dantzig, Fulkerson và Johnson đã đưa ra ý tưởng về
phương pháp siêu phẳng cắt để giải bài toán quy hoạch nguyên. Ý tưởng
chính của phương pháp này là mỗi bước lặp sẽ dùng siêu phẳng cắt để thu nhỏ
miền chấp nhận được ở bước trước sao cho nghiệm tối ưu chưa nguyên ở
bước này phải bị cắt đi và mọi phương án nguyên chấp nhận được không bị
cắt đi. Năm 1958, Ralph Gomory đã xây dựng thuật toán đảm bảo hữu hạn
bước nhận được lời giải tối ưu nguyên. Đến năm 1960, Land-Doig đã đưa ra
thuật toán nhánh cận giải bài toán quy hoạch nguyên hiệu quả hơn nhiều so
với phương pháp siêu phẳng cắt của Gomory.
Sau đây chúng ta sẽ trình bày thuật toán Land-Doig là một trong
những thuật toán của phương pháp nhánh cận. Sơ đồ tổng quát của phương
pháp nhánh cận chúng ta có thể tìm thấy ở các tài liệu [2], [3] và [5].


9

Thuật toán Land-Doig giải bài toán 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
  c j x j  m in
 j 1
 n
  a ij x j  b j , ( i  1, ..., m )
 j 1
 x j  0, ( j  1, ..., n )

 x j  n g u y ên ( j  1, ..., n )


(1.8)

Ký hiệu:

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

 c T x  min

 Ax  b
 x  0 , nguyên


(1.9)

Để áp dụng phương pháp nhánh cận, ta phải 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ó miền 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 toán (1.9).
Giải bài toán quy hoạch tuyến tính tương ứng với P0 ta sẽ thu được
0
0
phương án tối ưu x , x nói chung không nguyên.


10


Ta có:

f ( x 0 )  min  f ( x ): Ax  b, x  0 
 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 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
toán quy 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 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:
0
Giả sử xi0 (1 i  n ) là một thành phần không nguyên nào đó của x .

Ký hiệu:

D1  { x  D : xi  [ xi0 ] }

(1.10)

D2  { x  D : xi  [ xi0 ]  1}

(1.11)

0
0
Trong đó [ x i ] là phần nguyên của x i .


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


11

Gọi P2 là bài toán: min { f ( x) : x  D2 } .
Rõ ràng đây là các bài toán quy hoạch nguyên tuyến tính.
Khi giải bài toán quy hoạch tuyến tính tương ứng với 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 số các tình
huống sau đây:
1) Bài toán không có phương án chấp nhận được.
i
2) Tìm được phương án tối ưu x nguyên.
i
3) Tìm được phương án tối ưu x không nguyên.

Trường hợp 1): Bài toá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 qua trình xét tiếp theo.
i
i

Trường hợp 2): x cũng là phương án của bài toán Pi . Vì vậy x 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 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 là

 ( Di )  f ( x i ) .
Tập Di cần 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
Bước chuẩn bị: Giải bài toán quy hoạch tuyến tính tương ứng với P0
0
0
và thu được phương án tối ưu x . Giả sử x là không nguyên.


12

Đặt cận dưới của P0 là f ( x 0 ) 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 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   : Chọn Pk là bài toán có cận dưới nhỏ nhất trong P .

k
Gọi Dk là miền chấp nhận được, x là phương án tối ưu của bài toán quy

hoạch tuyến tính tương ứng với nó.
k
k
2.1. Giả sử xt là một thành phần không nguyên nào đó của x .

Phân hoạch tập Dk thành hai tập:

Dk1  { x  Dk : xt  [ xtk ]},
Dk2  { x  Dk : xt  [ xtk ]  1} .
Gọi Pk1 là bài toán

min { f ( x) : x  Dk1 } .
Gọi 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.


13

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 đúng cho bài toá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 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

c) Tìm được phương án tối ưu x

ki

là nguyên.
là không nguyên.

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

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

sách các bài toán cần xét:

P : P  { Pk 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 \ { Pki }
và chuyển sang bước k + 1.
Như vậy chúng ta đã trình bày xong thuật toán nhánh cận Land-Doig
giải bài toán quy hoạch nguyên tuyến tính dạng chuẩn. Chúng ta thấy khi giải
bài toán quy hoạch nguyên tuyến tính theo thuật toán trên thì các tính toán ở
giai đoạn 2.2. để giải các bài toán quy hoạch tuyến tính tương ứng tính cận
dưới là khâu quan trọng cần thiết. Rõ ràng sau mỗi bước mỗi bài toán quy
hoạch tuyến tính tương ứng cần giải lại thêm một ràng buộc bất phương trình.



14

Chính vì vậy khi giải các bài toán này chúng ta nên lựa chọn các thuật
toán giải trực tiếp được cho bài toán quy hoạch tuyến tính dạng chuẩn (miền
ràng buộc là hệ bất phương trình tuyến tính) nhất là những thuật toán mà có
ưu điểm thuận lợi trong trường hợp bài toán là tái tối ưu hóa (sau một bước lại
giải lại bài toán khi chỉ bổ sung thêm 1 ràng buộc).
Một thuật toán giải bài toán quy hoạch tuyến tính với miền ràng buộc
là hệ bất phương trình tuyến tính và có ưu điểm khi bài toán là tái tối ưu hóa
là thuật toán nón xoay trong [4]. Sau đây chúng tôi sẽ trình bày thuật toán nón
xoay và trong trường hợp bài toán cần giải là bài toán tái tối ưu hóa (tức là
giải lại bài toán mới khi bổ sung thêm một ràng buộc bất phương trình vào
miền ràng buộc của bài toán trước đã biết lời giải của nó). Chứng minh định
lý khẳng định bài toán tái tối ưu hóa nếu có lời giải thì sẽ có ít nhất một lời
giải thỏa mãn chặt ràng buộc bổ sung. Và nhờ tính chất này mà khi giải các
bài toán quy hoạch tuyến tính tương ứng trong bước 2.2. của thuật toán LandDoig trình bày trên chung ta chỉ phải giải các bải toán quy hoạch tuyến tính
với số chiều (số biến nguyên) là n-1 (n là số chiều của bài toán).
1.3. Bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất phương
trình tuyến tính
Xét bài toán quy hoạch tuyến tính với miền ràng buộc là hệ bất
phương trình tuyến tính sau:
n

f
(
x
)


C
,
x

ci .xi  min


i 1
( L) 
 x  P :  x  R n :  Ai , x  b  0, i  1,2,..., m
L
i


xRn, Ai là véc tơ dòng và AiRn, m  n, Ai(ai1, ai2, ..., ain) ≠ O(0,…,0) ,
C(c1, c2,…, cn), bi R1, i=1, 2, ..., m. Hạng của hệ Ai (i=1, 2, …, m)
bằng n, giả thiết này rất bình thường bởi miền ràng buộc PL của bài toán quy
hoạch tuyến tính nói chung bao giờ cũng có ràng buộc về dấu của biến x.


15

1.3.1. Phương pháp nón xoay xấp xỉ ngoài tuyến tính
Xét bài toán (L) trong trường hợp biết một nón – min của bài toán (L).
Ý tưởng của thuật toán nón xoay tuyến tính giải bài toán (L) như sau:
Xuất pháp từ một nón-min M ban đầu của hàm mục tiêu bài toán,
chúng ta kiểm tra xem đỉnh của nó có thuộc miền chấp nhận của bài toán
không (tức là đỉnh này có thoả mãn tất cả các ràng buộc không) nếu đỉnh này
thuộc miền chấp nhận thì nó là một lời giải của bài toán (L). Ngược lại ta xây
dựng nón xoay mới M(r,s) (vẫn là nón-min) từ nón cũ M của bài toán (L) và

lặp lại quá trình kiểm tra nón xoay mới này tương tự như đối với nón M, quá
trình này được thực hiện cho đến khi đỉnh của nón xoay mới M(r,s) thuộc
miền chấp nhận của bài toán (L) (khi miền ràng buộc của bài toán (L) có
phương án) hoặc sẽ phát hiện ra miền ràng buộc của bài toán (L) là rỗng.
Thuật toán xấp xỉ ngoài LP
Bước chuẩn bị (bước 0). Giả sử ta đó biết M0 là nón - min của bài
toán (L) với tập chỉ số cơ sở là I0:={ i10 , i20 ,..., in0 }, x0 = x M 0 là đỉnh của M0 và
các véc tơ chỉ phương của các cạnh i của nón M0 là z0i = zMi 0 (i  I0).
Bước k ( k=0, 1, 2, ...). Giả sử Mk là nón - min của bài toán (L) (đã
được xây dựng), với tập chỉ số cơ sở, đỉnh và các véc tơ chỉ phương của các
cạnh của nón Mk tương ứng là Ik:= i1k , i2k ,..., ink  ; xk = x M k và zki = zMi k .
Xác định tập J+(xk) theo (1.6): J  ( x k ) :  j  1,2,..., m : A j , x k  b j  0
1. Nếu J+(xk) = thì dừng lại. xk chính là một lời giải của bài toán (L),
2. Nếu J+(xk)   , ta chọn chỉ số đưa vào cơ sở theo một trong hai
cách sau:
Ta chọn sk là một chỉ số tuỳ ý thuộc J+(xk) hoặc ta chọn sk=min{j:jJ+(xk)}
(gọi là qui tắc chọn min)

(1.13)


16

hoặc sk = max{j: j  J+(xk) (gọi là qui tắc chọn max) và xác định:





I sk : i  I k : Ask , zki  0 ;


(1.14)

 





I sk : i  I sk : Ask , zki  0  iskk 1 , iskk 2 ,..., iskk qk ,

(1.15)

2.1. Nếu I sk =  thì dừng lại, suy ra bài toán (L) không có phương án.
2.2. Nếu I sk   :

 C , zkv 
 C , zki 
Gọi V :={ v  I : 
 min{
}}
 Ask , zkv  iIsk  Ask , z ki 
sk


sk

(1.16)

và chọn chỉ số đưa ra khỏi cơ sở theo một trong hai cách sau:

Ta chọn rk là chỉ số tuỳ ý thuộc V s . Hoặc ta chọn
k

rk = min{v: v V sk } hoặc rk = max{v: v V sk }

(1.17)

(cách chọn chỉ số này gọi là qui tắc chọn min (hoặc là qui tắc chọn max)) .
Và ta xây dựng nón xoay Mk+1 = Mk(rk , sk) sinh ra từ nón-min Mk, tập chỉ số
cơ sở là Ik+1= Ik(rk , sk) = (Ik  {sk}) \ {rk} và các véc tơ chỉ phương z ki 1 (xem [4]) sao
cho:

zi
khi iIk0
k


 Ask , zi 
zki 1 (zki  sk rkk .zkrk ) khi i Iksk ,i rk
  A , zk 

1
r
khi i sk
 sk rk .zkk
  A , zk 

(1.18)



x

k+1

=x

M k ( rk , sk )

rk
k

k

k
rk

rk
k

k

= x =x +  .z = x -

Quay trở lại bước k với k:= k+1.

 Ask , x k  bsk
sk

rk
k


 A ,z 

. zkrk =

 b .z
i

iI k 1

i
k 1

(1.19)


17

1.3.2. Bảng lặp giải bài toán quy hoạch tuyến tính bởi thuật toán nón xoay
xấp xỉ ngoài tuyến tính
Để dễ tính toán, trong mỗi bước lặp k ta thiết lập bảng dưới đây gọi là
bảng nón xoay thu gọn giải bài toán quy hoạch tuyến tính dạng chuẩn khi biết
một nón – min của hàm mục tiêu của bài toán.
Bảng lặp nón xoay thu gọn:
Bảng A
Chỉ số cơ sở

bj

c1


<Ai, x 0 >+bi

c2 … c j … cn

<Ai, x k >+b i
k=1,2,…

1

b1

a11

a12 … a1 j … a1n

<A1, x 0 >+b 1

<A1, x k >+b 1

2

b2

a21

a22 … a2 j … a2n

<A2, x 0 >+b 2


<A2, x k >+b 2





……

……

( sk )

bsk





m

bm

i1k



ask 1 ask 2 … ask j … ask n

… … …
am1


zki11

1

(< As , x 0 >+ bs )

( As , x k >+ bs )



...

<Am, x 0 >+bm

<Am, x k >+bm

0

k

bik

…. ….

am 2 … amj ... amn
k

k


k

i1
z ki12 … zkji1 … z kn

0

i

bik

z

2


( rk= isk p )
k

k



k
n

i

i2k
k2


i2k
kj

z …z …z

i2k
kn



… … … …

brk

rk
k1

 Ask , zki2 

z



rk
k2

rk
kj


z …z …z

rk
kn

xk

-

k

(-


… … … …

k

 C , zkrk 
)
 Ask , zkrk 



zkin1

k

z kin2 … zkjin … zknin


x1k

x2k … x kj … xnk

k

ik

 Ask , zksk 1 



[  As , zkr  ]

sk

bik

ik

 C , zksk 1 


k

n

Bước
k=0,1,2,…


i2k
k1

k

k

 Ask , zki1 
k

k
2

k

k

ink
k

 A ,z 

ik

-

 C , zkskqk 
ik

 A sk , zksk qk 



18

Bảng lặp nón xoay thu gọn A gồm 2 phần (xem bảng A): Các số liệu
ban đầu được đưa vào bảng và các số liệu cần tính toán theo các công thức
trong thuật toán nón xoay được xây dựng thứ tự theo các bước từ trên xuống
dưới và từ trái sang phải như sau:
Bước k (k=0, 1, 2, …):
Phần thứ nhất của bảng là khai báo số liệu của bước chuẩn bị:
Đưa vào các số liệu ban đầu của bài toán nằm trong các cột bao gồm có
cột chỉ số cơ sở 1, 2, …, m, cột số liệu các giá trị bi (i=1, 2, …, m), dòng đầu
tiên trên cùng của phần này là các hệ số của hàm mục tiêu, và ma trận hệ số
các ràng buộc A cụ thể là:
- Dòng đầu tiên của bảng là dòng các toạ độ cj của véc tơ C của hàm
mục tiêu.
- Cột đầu tiên thứ nhất là cột chỉ số của các véc tơ dòng Ai của ma
trận ràng buộc A của bài toán (L) từ 1 đến m.
- Cột thứ hai là cột các giá trị bi (i  1, 2,..., m) của véc tơ cột B của ma
trận ràng buộc.
- Tiếp theo bên phải cột thứ hai là bảng của ma trận hệ số gồm các giá
trị của ràng buộc A: aij (i=1,2,…,m; j =1,2,…,n)
Phần thứ hai của bảng liền với phần thứ nhất là số liệu tính toán
các giá trị của hệ véc tơ chỉ phương zki (i  I k ) và các toạ độ của đỉnh x k:
Tại bước k (k = 0, 1, 2, …) bảng gồm các cột và ma trận của giá trị
các véc tơ chỉ phương zki (i  I k ) cụ thể như sau:
- Cột thứ nhất là cột chỉ số cơ sở iIk
- Cột thứ hai là cột giá trị bi với i  I k



19

- Tiếp theo bên phải cột thứ hai là bảng ma trận các véc tơ chỉ phương

zki (i  I k ) . Dòng cuối cùng là các giá trị toạ độ của xk là đỉnh của nón-min
Mk đã biết ở bước k.
Đến đây ta có bảng nón xoay tại bước k (k = 0, 1, 2, ….) đã xây dựng xong.
Bây giờ ta chuyển sang kiểm tra tiêu chuẩn tối ưu và xây dựng bảng
nón xoay mới ở bước tiếp theo k+1 nếu xk chưa phải là phương án tối ưu.
Từ dòng cuối cùng của phần thứ hai của bảng là dòng các toạ độ của xk ,
chúng ta đi tính các giá trị  Ai , x k  bi (i  0,1,2,..., m) và xây dựng tiếp các cột
chứa các giá trị này ở bên phải ma trận ràng buộc A trong phần thứ nhất của bảng.
Từ cột chứa giá trị  Ai , x k  bi (i  0,1,2,..., m) đã biết này ở bước lặp
k (vị trí bên phải ma trận ràng buộc A). Theo thuật toán nón xoay ta xác định
được tập J  ( x k ) có hai khả năng:
- Nếu J  ( x k )   thì dừng và xk là một lời giải của bài (L)
- Nếu J  ( x k )   thì theo thuật toán nón xoay ta chọn được chỉ số đưa
vào cơ sở sk và chúng ta tiến hành tính toán các cột sau:
Bên phải bảng zki , i  I k ở phần thứ hai của bảng ta xây dựng cột chứa
giá trị  Ask , zki , i  I k
Từ cột giá trị này ta xác định được tập I s và theo thuật toán ta có hai
k

khả năng:
+ Nếu I sk   thì dừng và kết luận bài toán (L) không có phương án.
+ Nếu I sk   thì từ thuật toán nón xoay chúng ta phải xây dựng cột

  C , zki 
tính giá trị
, i  I sk . Từ đây theo (1.17) của thuật toán nón xoay

sk
i
 A , zk 
tuyến tính ta chọn được chỉ số đưa ra cơ sở là rk .


20

Đến đây các thông tin để xây dựng bảng lặp ở bước k+1 từ bảng lặp
ở bước k đã đầy đủ, chúng ta xây dựng bảng lặp ở bước k+1 phía dưới bảng
lặp ở bước k như sau:
- Cột đầu tiên của bảng lặp ở bước k+1 là cột chỉ số cơ sở

I k 1  ( I k  sk ) \ rk  được xây dựng bằng cách chuyển cột chỉ số cơ sở của
bảng ở bước lặp k xuống và chỉ cần thay chỉ số rk bằng chỉ số sk ở bảng mới
là được.
- Cột tiếp theo là cột chứa các giá trị b i với i  I k 1 (bên phải cột chỉ số
cơ sở I k 1 ) được xây dựng bằng cách chuyển cột chứa các giá tri bi với i  I k
của bảng ở bước lặp thứ k xuống và thay giá trị brk bằng giá trị bsk ở bảng mới
(bước k+1) .
- Tiếp theo bên phải cột bi (i  I k 1 ) là bảng ma trận các véc tơ chỉ
phương zki 1 , i  I k 1 của nón-min Mk+1 được tính từ các véc tơ chỉ phương zki
của nón – min Mk ở bảng lặp bước k theo công thức xoay (1.23).
Sau đó ta tính toán đến dòng cuối cùng tiếp theo của bảng này là dòng
các toạ độ của đỉnh nón – min Mk+1 là xk+1 =

 b .z
i

i

k 1

(xem [4])

iI k 1

Đến đây bảng nón xoay mới ở bước lặp k+1 đã được xây dựng xong.
Quá trình lặp này sẽ kết thúc sau hữu hạn bước bởi định lý 1.6.[4],
Một số phần tử trung tâm cần chú ý khi xây dựng bảng nón xoay
thu gọn là:
- Giá trị  Ask , x k  bsk (k  0,1,2,...) dương nằm trong cột chứa các giá
trị  Ai , x k  bi (i  0,1,2,..., m) được ở trong dấu móc tròn (  Ask , x k  bsk )
tương ứng với dòng sk (được chọn đưa vào cơ sở ở bước lặp k) theo mục b1)
hay b2) trong thuật toán nón xoay tuyến tính.


21

- Giá trị

  C , zkrk 
  C , zki 
nằm
trong
cột
chứa
các
giá
trị
, i  I sk

sk
rk
sk
i
 A , zk 
 A , zk 

  C , zkrk 
được ở trong dấu móc tròn (
) tương ứng với dòng rk (được chọn
 Ask , zkrk 
đưa ra cơ sở ở bước lặp k) theo tiêu chuẩn (1.21) và (1.22) của thuật toán nón
xoay tuyến tính.
- Phần tử xoay  Ask , zkrk  thuộc cột chứa các giá trị  Ask , zki , i  I k
được nằm trong dấu móc vuông là [  Ask , zkrk  ].
1.3.3. Bài toán quy hoạch tuyến tính tái tối ưu hóa và thuật toán TTH
Trên thực tế do những biến động về kinh tế luôn thay đổi theo thời
gian, có rất nhiều những vấn để trong sản xuất, xây dựng, sửa chữa và cải tạo
lại, … việc bổ sung thêm các điều kiện vật chất vào đầu tư ban đầu là rất cần
thiết và không thể thiếu được. Do vậy lời giải và các kết quả tìm được từ các
mô hình bài toán quy hoạch trước đây đã trở lên lạc hậu và không còn phù
hợp nữa, buộc chúng ta phải bổ sung thêm vào các điều kiện mới cho phù
hợp. Vì thế xuất hiện một dạng bài toán quy hoạch thường gặp và chúng ta
phải giải quyết gọi là bài toán tái tối ưu hoá.
Ngay khi chúng ta đi giải các bài toán quy hoạch nguyên thì việc phải giải
các bài toán quy hoạch có bổ sung thêm các ràng buộc là không thể tránh khỏi.
Chính vì vậy, dưới đây chúng ta sẽ xét và giải quyết bài toán quy hoạch
tuyến tính dạng chuẩn có thêm ràng buộc bổ sung gọi là bài toán tái tối ưu
hoá trong trường hợp đã biết lời giải của bài toán ban đầu.
1.3.3.1. Bài toán quy hoạch tuyến tính tái tối ưu hoá dạng chuẩn

Xét bài toán qui hoạch tuyến tính dạng chuẩn sau:
n

f
(
x
)

C
,
x

ci .xi  min


i 1
(T ) 
 x  P :  x  R n :  Ai , x  b  0, i  1, 2,..., N 
T
i



22

xRn, Ai là véc tơ dòng và AiRn, N n, Ai (ai1, ai2, ..., ain) ≠ O(0,…,0) ,
C(c1, c2, …, cn), bi R1, i=1, 2, ..., N. Hạng của hệ Ai (i=1, 2, …, N)
bằng n, giả thiết này rất bình thường bởi vì miền ràng buộc PT của bài toán
quy hoạch tuyến tính thông thường có ràng buộc về dấu của biến x.
Giả sử chúng ta đã biết một lời giải của bài toán (T) là x M  ( x1M , x2M ,..., xnM )

*

*

*

*

là đỉnh của nón đơn hình M * với tập chỉ số cơ sở là
I*  (i1* , i2* ,..., in* )

Và các véc tơ chỉ phương của các cạnh của nón M* là zMi , i  I*
*

Bây giờ ta thêm vào miền ràng buộc PT của bài toán (T) ràng buộc sau:
 A N 1 , x  bN 1  0

(1.20)

Khi đó nếu x M thoả mãn (3.1) thì nó cũng là một lời giải của bài toán
*

(T*) có thêm ràng buộc bổ sung (3.1), nếu ngược lại mà
 A N 1 , x M *  bN 1  0

(1.21)

Thì chúng ta gọi bài toán sau đây là bài toán tái tối ưu hoá của bài toán (T):
n


f
(
x
)

C
,
x

ci .xi  min


i 1
(T* ) 
 x  P :  x  R n :  Ai , x  b  0, i  1, 2,..., m
T*
i


Trong đó m=N+1
Rõ ràng để giải bài toán (T*) mà sử dụng phương pháp đơn hình thì
chúng ta sẽ không khai thác được thông tin về việc đã biết lời giải của bài
toán (T). Còn nếu chúng ta sử dụng phương pháp nón xoay trình bày trong
chương 2 thì sẽ khai thác được thông tin nói trên. Đồng thời dựa trên kết quả
của một định lý được chứng minh dưới đây chúng ta sẽ đề ra một quy tắc ưu
tiên chọn chỉ số đưa ra khỏi cơ sở làm cho thuật toán nón xoay trở nên hiệu
quả hơn khi giải bài toán tái tối ưu hoá (T*).



×