Professional Documents
Culture Documents
Decuongbaigiang Ofline Bai2
Decuongbaigiang Ofline Bai2
BÀI TOÁN QUY HOẠCH TUYẾN TÍNH VÀ PHƯƠNG PHÁP ĐƠN HÌNH
x
j
j xj j ,n
mà tập các điểm x Rn thỏa mãn các ràng buộc trên là một đơn hình trong không gian n
chiều Rn
Đường lối chung của phương pháp
Phương pháp đơn hình của Dantzig dựa trên 2 nhận xét sau:
1
- Nếu một QHTT có phương án tối ưu thì có ít nhất một đỉnh tối ưu (đỉnh ta gọi là
phương án cực biên).
- Miền ràng buộc D có một số hữu hạn đỉnh
Từ đó ta có thể xây dựng một thuật toán hữu hạn để giải QHTT (có một số hữu hạn bước
lặp gọi là thuật toán hữu hạn)
Thuật toán hữu hạn gồm 2 giai đoạn:
Giai đoạn 1: Tìm một phương án cực biên xuất phát x và cơ sở của nó
Giai đoạn 2: Kiểm tra điều kiện tối ưu cho phương án cực biên x với cơ sở A j; jJ
vừa xây dựng được
Nếu điều kiện tối ưu được thỏa mãn thì phương án x là phương án tối ưu
Nếu không thì ta chuyển sang phương án cực biên x’ với cơ sở mới A’j; jJ’
và ta lại kiểm tra điều kiện tối ưu cho phương án cực biên x’
Cứ tiếp tục như vậy sau một số hữu hạn bước lặp, hoặc ta nhận được một phương án tối ưu
hoặc ta gặp tình huống hàm mục tiêu không bị chặn và bài toán không có phương án tối ưu.
Cơ sở của thuật toán
Xét bài toán QHTT dưới dạng chính tắc
Trong đó A là ma trận kích thước mn và giả sử rằng hạng của ma trận là m.
Giả sử x là phương án cực biên nào đó,ta ký hiệu J* = {j : xj >0}
Định nghĩa 3.1: Phương án cực biên x được gọi là không thoái hóa nếu J * = m, gọi là
thoái hóa nếu J * < m.
Giả sử đã tìm được phương án cực biên xuất phát và giả sử ta đánh số các biến với dụng ý
là để tất cả các biến cơ sở lên trước còn các biến phi cơ sở viết sau
Phương án cực biên xuất phát
2
x = (x1, x2,... , xm, 0,..., 0)
x A
j
j j b (4.4)
c x
j
j j z (4.5)
zk
z k
...
Mỗi véctơ phi cơ sở Ak = k = ,n
z jk
...
zmk
đều biểu diễn một cách duy nhất qua các véctơ cơ sở:
m
Ak z j
jk A j ; k ,n (4.6)
3
m
Δk zk ck z
j
jk ck ck (4.8)
Định lý 2.7: Phương án cực biên x = (x1, x2,..., xm, 0,... , 0) của QHTT là tối ưu nếu
k 0 với k (4.9)
Chú ý 1: Nếu phương án cực biên x không thoái hóa (có đúng m thành phần dương) thì
điều kiện (4.9) là điều kiện cần để x là phương án tối ưu. Nghĩa là ta có thể phát biểu như sau:
Điều kiện cần và đủ để phương án cực biên không thoái hóa x là phươngán tối ưu là:
k 0 với k = 1, n .
Thật vậy: từ công thức biểu diễn các véctơ qua cơ sở (4.6), ta thay Ak bởi Aj ta có
zjj = 1; Aj = zjjAj
m
Do đó điều kiện tối ưu (4.9) có thể viết lại là: k 0 với k J.
Định lý 2.8: Nếu tồn tại chỉ số k J mà k thì phương án cực biên x là chưa tối ưu.
Ta có thể chuyển đến phương án cực biên mới x’ với cơ sở là Aj với jJ’ tốt hơn (theo
nghĩa hàm mục tiêu)
Chứng minh:
θ z
j
jk A j θAk θz
j
jk A j θAk (4.10)
và θz
j
jk c j θzk Thêm vào hai vế của đẳng thức này một lượng -ck ta được
4
m m
θz
j
jk c j θck θzk θck θz
j
jk c j θck θ(z k ck )
m
θz
j
jk c j θck θΔk (4.11)
A x θA z
j
j j
j
j jk θAk b A (x
j
j j θz jk ) θAk b (4.12)
c x θz
j
j j
j
jk c j θck z θΔk (4.13)
Nếu các hệ số của các véctơ Aj, j 1, m và Ak trong (4.20) không âm, khi đó ta có một
phương án mới x’ mà đối với nó hàm mục tiêu có giá trị
x ' j x j z jk ; j , m (4.15)
x'k
Từ (4.23) ta thấy đối với chỉ số k mà k < 0, tồn tại z jk với jJ thì giá trị dương lớn
nhất còn thỏa mãn (4.23) là
xj
x
min | z jk r
j ,m z jk
z rk
Nếu thay trong (4.20) và (4.22) bởi 0 thì thành phần thứ r bằng 0: xr - 0zrk = 0
Ta có phương án cực biên mới x’ với các thành phần là:
5
xr
x j z z jk ; j r
rk
x 'j
xr ; jr
zrk
' xr
Ta có xr xr z zrk , nghĩa là biến x’r là biến phi cơ sở, do đó véctơ Ar cũng trở
rk
x’k = > 0 trở thành biến cơ sở, do đó véctơ Ak trở thành véctơ cơ sở
Chú ý 3: Nếu tồn tại k J sao cho zjk 0 thì hàm mục tiêu không bị chặn và bài toán
không có phương án tối ưu.
Thật vậy trong trường hợp này hệ thức 4.23 luôn được thỏa mãn với > 0, cho +
càng thỏa mãn tốt, khi đó ta sẽ có một cạnh vô hạn vì x’ , trên cạnh đó giá trị hàm
mục tiêu
z' z θ
Chú ý 4: Để giảm bớt số bước lặp dẫn đến phương án tối ưu, Dantzigđề nghị chọn
xj
x
θ s min |z js r Ar bị đẩy ra khỏi cơ sở các thành phần của
z js
z rk
phương án mới có dạng
xr
x j z z js ; j r
rs
x' j
xr ; (4.16)
j r
z
rs
Δk z '
'
jk c j ck J’= J \ {r} {s} (4.17)
j J
6
2.4.3 Thuật toán đơn hình
Giả sử ta đã đưa bài toán QHTT về dạng chính tắc
<c,x> = z max
Ax b
x (4.18)
Giai đoạn 1: Tìm phương án cực biên xuất phátx và cơ sở của nó Aj ; jJ
Giai đoạn 2:
Bước 1: Xác định các thành phần trong bảng đơn hình đầu tiên
- Với mỗi kJ xác định các hệ số khai triển zjk theo công thức
Ak z jk A j (4.19)
j J
- Tính giá trị hàm mục tiêu và tính các ước lượng của biến xk theo công thức
m
z
m
zk z
j
jk c j và
Δk zk ck
j
jk ck ck (4.20)
Bước 2: Nếu với kJ k 0 x là nghiệm tối ưu, dừng. Trái lại chuyển sang bước 3
Bước 3: Nếu (k J)k < 0 và với j có zjk 0 bài toán QHTT không có nghiệm tối ưu
(hàm mục tiêu không bị chặn trên), dừng. Trái lại chuyển sang bước 4
Bước 4: Tìm vectơ đưa ra khỏi cơ sở
Đối với mỗi k J sao cho k< 0, đều tồn tại j J: zjk> 0 chọn
Δs minΔk|Δk (4.21)
x j xr (4.22)
θ
Tính: s min |z js
z js zrs
7
Bước 6: Xây dựng phương án cực biên mới x’ mà các thành phần của nó được tính theo
xr
x j z z js ; j r
rs
x'
công thức j x r
; jr
z rs
z rk
z jk z js ; jr
z rs
' z 'jk
Tính cáchệ số z jk theo công thức z rk ; jr
z rs
Quay trở lại khởi đầu của bước 2 và tiếp tục giải bài toán cho đến khi nhận được phương
án tối ưu hoặc phát hiện bài toán không có phương án tối ưu
2.4.4 Công thức đổi cơ sở và bảng đơn hình
Công thức đổi cơ sở
Ta xét các công thức chuyển từ phương án cực biên x với cơ sở J sang phương án cực
biên x’ với cơ sở J’.
Công thức (4.24) là công thức tính các thành phần của x’.
Ta thiết lập công thức tính z’jk.
As
z js A j
Ta có:
jJ
= z rs Ar z js A j Ar As
z rs z js A j (4.31)
jJ,j r j J
j r
Mặt khác
Ak z
j J
jk A j z
jJ,j r
jk A j z rk Ar (4.32)
8
z rk
Ak z jk A j
z
As
rs
z js A j
jJ,j r j J
jr
z z
Ak z jk rk z js A j rk As
jJ,j r
z rs z rs
đây là công thức biểu diễn các cột của ma trận A qua cơ sở mới J’ = J \ {r} {s}
Bởi vậy ta có:
zrk
z jk z z js ; jr (4.33)
rs
z 'jk
zrk ; jr
zrs
(4.34)
Sau đó ta tính k
'
z
jJ'
'
jk c j ck
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
9
cr Ar xr 0 0 1 0 zrk zrs zrn
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Nếu tất cả các số trong dòng cuối của tổng đều 0 thì phương án đang xét là tối ưu,
bài toán giải xong.
Nếu dòng cuối có những số âm thì xem thử có cột nào cắt dòng cuối ở một số âm mà
mọi số trong cột đó đều 0 hay không.
+ Nếu có thì theo chú ý 3 bài toán không có phương án tối ưu. Dừng thuật toán
+ Nếu không thì chọn cột s sao cho
s = min{k| k<0}
Cột s được gọi là cột xoay, các phần tử zjs gọi là phần tử xoay. Đưa véctơ As vào cơ sở
Sau đó chọn dòng r sao cho
xr x j
θr min |z js
zrs z js
Thay cs và As cho cr và Ar
Chia tất cả các phần tử của dòng xoay r cho phần tử trục (phần tử trục = 1). Dòng
chứa kết quả của phép chia gọi là dòng chính (vì ta dựa vào đó để tính kết quả
của các dòng khác). Tính giá trị cho các dòng ở bảng mới
10
Lưu ý: Thuật toán đơn hình cho việc giải bài toán min chi khác bài toán max ở 2 đặc điểm:
- s = max{k| k>0}
- Nếu k sao cho k > 0 và với j có zjk < 0 thì bài toán không có phương án tối
ưu. Thuật toán dừng
2.5 Các dạng thuật toán đơn hình
2.5.1 Trường hợp QHTT dưới dạng chuẩn với ràng buộc và vế phải không âm
a x a x ... a x b
n n
a
x a x
... a x
n n b
...
a x a x ... a x bm
m m mn n
x j ,j ,n
a x a x ... a x x b
n n n
a x a x ... a n xn xn b
...
a x a x ... a x xn m bm
m m mn n
x j ,j ,n m
11
An ; An ; An m
... ... ...
x x x
x x x
x x
x j ;j ,
x x x x
x x x x
x x x
x j ; j ,
a x a x ... a x b
n n
a x a x ... a n xn b
...
a x a x ... a x b
m m mn n m
x j ,j ,n
13
ax a x ... an xn xn b
a x a x ... a n xn xn b
...
a x a x ... a x .... x
n m bm
m m mn n
x j ,j ,n m
Ta gọi các biến xn+1 ; xn+2;..., xn+m là các biến giả tạo vì các ràng buộc của bài toán đều là
đẳng thức mà bây giờ thêm vào các số 0 vẫn bằng vế phải.
Ta đưa vào số M >0 rất lớn chẳng khác nào “đánh thuế” rất nặng vào các biến giả tạo > 0
khiến cho trong phương án tối ưu các biến giả tạo phải trở nên bằng 0.
Ta có phương án cực biên xuất phát là:
Tạm thời cho x1 = 0, x2 = 0,..., xn = 0 là các biến phi cơ sở
Các biến giả tạo xn+1 = b1, xn+2 = b2,... , xn+m =bm là các biến cơ sở với các véctơ cơ sở là
An ; An ; … An m
... ... ...
Lập bảng đơn hình và giải bài toán (M) bằng phương pháp đơn hình.
Việc giải bài toán (M) có thể kết thúc bằng một trong hai tình huống sau đây:
Bài toán (M) có phương án tối ưu là (x*,0...0) thì x* là phương án tối ưu của bài
toán (P) xuất phát và ngược lại.
Nếu bài toán gốc có phương án thì mọi phương án cực biên tối ưu
(x, xn+1,..., xn+m) của bài toán M phải có xn+1 = ... = xn+m = 0
Bài toán (M) có phương án tối ưu là (x,y) trong đó y 0 , với y = (xn+1,..., xn+m)
nghĩa là có biến giả tạo > 0, khi đó bài toán (P) không có phương án và do đó
không có phương án tối ưu
Chú ý 1: Ta có Δk z
jJ
jk c j ck trong đó cj, ck là các hệ số hàm mục tiêu
Đối với bài toán (M), các hệ số hàm mục tiêu phụ thuộc tuyến tính vào M các ước
lượng cũng phụ thuộc tuyến tính vào M
14
k = k + k M
Chú ý 2: Khi một biến giả tạo bị đẩy ra khỏi cơ sở thì từ đó trở về sau nó không thể quay
trở về cơ sở nữa (vì khi quay trở lại nó bị đánh thuế rất nặng), và từ đó trở đi
không cần tính toán gì ở cột chứa nó nữa.
n
Chú ý 3: Nếu gặp ràng buộc a
j
ij x j bi với bi thì trước hết ta đưa vào biến phụ
n
xn+1>0 để chuyển về a
j
ij x j x n bi với bi và sau đó thêm vào biến giả
n
tạo yi 0 để được a
j
ij x j xn yi bi
f ( x ) x x x x max
x x x x
x x x x
x x x x
x ; j ,
j
Giải:
- Bổ sung biến giả x5, x6, x7
f ( x ) x x x x Mx Mx Mx max
x x x x x
x x x x x
x x x x x
x ; j ,
j
- Phương án cực biên xuất phát là x = (0,0,0,0,2,6,7) Với cơ sở là A5, A6, A7
- Lập bảng đơn hình
Cj Cơ P 2 1 -1 -1 -M -M -M
15
Sở án A1 A2 A3 A4 A5 A6 A7
-M x5 2 (1) -1 2 -1 1 0 0
-M x6 6 2 1 -3 1 0 1 0
-M x7 7 1 1 1 1 0 0 1
k -2 -1 1 1 0 0 0
k -4 -1 0 -1 0 0 0
2 x1 2 1 -1 2 -1 0 0
-M x6 2 0 (3) -7 3 1 0
-M x7 5 0 2 -1 2 0 1
k 0 -3 5 -1 0 0
k 0 -5 8 -5 0 0
2 x1 8/3 1 0 -1/3 0 0
1 x2 2/3 0 1 -7/3 1 0
-M x7 11/3 0 0 (11/3) 0 1
k 0 0 -2 2 0
k 0 0 -11/3 0 0
2 x1 3 1 0 0 0
1 x2 3 0 1 0 1
-1 x3 1 0 0 1 0
8 0 0 0 2
- Ta thấy dòng cuối của bảng đơn hình cuối cùng đều ≥ 0 nên thuật toán dừng, phương án
tối ưu là: x*= (3,3,1,0) và giá trị tối ưu là f(x*) = 8.
Lưu ý:
- Nếu trong ma trận A các hệ số đã có k vectơ đơn vị rồi thì chỉ cần bổ sung m-k biến giả
- Nếu có các ràng buộc bất đẳng thức thì thực hiện bổ sung biến phụ để đưa các ràng
buộc đó về dạng đẳng thức, sau đó mới bổ sung biến giả
- Nếu có ràng buộc đẳng thức mà vế phải âm thì nhân 2 vế với -1 để đảm bảo vế phải
luôn dương hoặc bằng 0.
16