Bùi Thế Tâm II.1 Quy hoạch rời rạc Chương 2 NHỮNG KHÁI NIỆM MỞ ĐẦU Trong chương này sẽ trình bày những khái niệm cơ bản về quy hoạch tuyến tính, phương pháp đơn hình bình thường, phươ
Trang 1Bùi Thế Tâm II.1 Quy hoạch rời rạc
Chương 2
NHỮNG KHÁI NIỆM MỞ ĐẦU
Trong chương này sẽ trình bày những khái niệm cơ bản về quy hoạch tuyến tính, phương pháp đơn hình bình thường, phương pháp đơn hình đối ngẫu từ vựng, và khái niệm về bài toán quy hoạch tuyến tính nguyên
1 NHỮNG KHÁI NIỆM CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH 1.1. Bài toán qui hoạch tuyến tính là bài toán có dạng:
0 1
1
1
, 1, 2 , , ( 2 ) , 1, , (3 )
n
j j j
n
ij j i j
n
ij j i j
j
=
=
=
∑
∑
∑
y Miền xác định: tập hợp các véc tơ x thoả mãn (2) và (4)
y Phương án bài toán: véc tơ x thoả mãn (2) và (4)
y Nếu (x1,…,xn) là phương án của bài toán, 0
1
n
j j j
=
=∑ thì X = (x0 ,x1,…,xn) gọi
là phương án mở rộng của bài toán (1) – (4)
y Phương án X* làm cực đại (1) gọi là phương án tối ưu Phương án mở rộng
*
X gọi là phương án tối ưu mở rộng nếu X* là phương án tối ưu
y Kí hiệu:
L - miền xác định của bài toán (1)-(4)
( , )L C – kí hiệu bài toán qui hoạch tuyến tính (1) - (4)
( , )
X L C – phương án tối ưu của bài toán (1) - (4)
( , )
X L C - phương án tối ưu mở rộng của bài toán (1) - (4)
C
L là tập hợp các phương án tối ưu của bài toán ( , )L C
y Bài toán qui hoạch tuyến tính gọi là giải được nếu tồn tại phương án tối ưu
Trang 2Bùi Thế Tâm II.2 Quy hoạch rời rạc
1.2 Dạng chính tắc của bài toán qui hoạch tuyến tính
0
1
1
a x , 1 , 2 , ,
0 , 1 , 2 , ,
n
j j j
n
i j j i j
j
=
=
∑
∑
y Gọi
1
2
j
j j
mj
a a A
a
=
là véc tơ điều kiện thứ j của bài toán (5)-(7)
1 2
B=
m
b
b b
là véc tơ ràng buộc của bài toán (5)-(7)
y Phương án X của bài toán (5)-(7) gọi là tựa nếu các véc tơ điều kiện ứng với các thành phần dương của nó là độc lập tuyến tính
y Cơ sở của phương án tựa X là tập hợp { Aj|x j >0 } Các thành phần của phương án tựa ứng với các véc tơ cơ sở gọi là các thành phần cơ sở (các biến tương ứng gọi là biến cơ sở), các thành phần còn lại gọi là các thành phần phi cơ sở (các biến tương ứng gọi là biến phi cơ sở)
y Nếu X =( , ,x1 x n)phương án tựa của bài toán quy hoạch tuyến tính,
1
(A j , ,A jk)là cơ sở của phương án tựa, B={j1, ,j k}, N ={1, ,n B}\ thì hàm mục tiêu x x0, , ,1 x có thể biểu diễn qua các biến phi cơ n sở:
0 i j( ), 0,1, ,
j N
∈
Kí hiệu Qn ={0,1,…,n}
B0=B∪{0}, N0=N∪{0}
Bảng đơn hình 0
,
ij i Q j N n
∈ ∈
= gọi là bảng đơn hình đầy đủ
y Phương án tựa bài toán (5) - (7) gọi là không suy biến nếu số ràng buộc của hệ (6) - (7) mà phương án thỏa mãn với dấu bằng bằng đúng n (các ràng buộc này là độc lập tuyến tính) Phương án tựa là suy biến nếu số ràng buộc mà phương án tựa thỏa mãn chặt là lớn hơn n
(5) (6) (7)
Trang 3Bùi Thế Tâm II.3 Quy hoạch rời rạc
Phương án tựa X của bài toán (5) - (7) là không suy biến nếu các thành phần cơ sở của nó là dương Cơ sở của phương án tựa không suy biến xác định duy nhất Ứng với phương án tựa suy biến có nhiều cơ sở
y Tiêu chuẩn tối ưu: để cho phương án mở rộng X' ( , , ,= x x0' 1' x n' )là tối ưu điều kiện cần và đủ là tồn tại cơ sở B sao cho
'
i j
0
( ), 0,1, , 0,
j N j
∈
∑
y Giả sử ràng buộc (6) của bài toán (5) - (7) viết ở dạng:
0 i j( ), 0,1 ,
j N
∈
= + ∑ − =
Bảng đơn hình tương ứng 0
,
ij i Q j N n
∈ ∈
1
, , , ) ( , , , ), ( , , , ) ( , , , )
1
0
X=(x
x
n
j
=
=
Nếu xi0 ≥ 0 (i = 1, 2, , n) thì bảng đơn hình T gọi là chấp nhận được, véc tơ X
là phương án tựa của bài toán quy hoạch tuyến tính
Nếu x0j ≥ 0 , j∈N thì bảng đơn hình T là chuẩn (đối ngẫu chấp nhận được), véc tơ
X gọi là giả phương án, X gọi là giả phương án mở rộng
2 SO SÁNH THEO NGHĨA TỪ VỰNG
2.1. Véc tơ X =( , , , )x x1 2 x n gọi là dương từ vựng X>0 nếu X≠(0,…,0) và thành phần đầu tiên khác 0 là dương
y Véc tơ X gọi là không âm từ vựng X ≥ 0 nếu X>0 hay X=0
y Véc tơ X gọi là lớn hơn từ vựng véc tơ Y (ký hiệu X > Y) nếu X – Y >0
y Véc tơ X ≥ Y (không nhỏ hơn từ vựng) nếu X – Y ≥0
y X gọi là âm từ vựng (ký hiệu là X < 0) nếu –X >0
y Tương tự ta có các định nghĩa X ≤ 0, X < Y, X ≤ Y
2.2. Phương án X* (phương án mở rộng X*) của bài toán (5)- (7) gọi là phương
án tối ưu từ vựng (phương án l - tối ưu) nếu đối với mọi phương án mở rộng X ta có
( , , , n) ( , , , n)
X = x x x ≥X = x x x
Định lý 1 Nếu tập hợp các phương án tối ưu của bài toán (5) - (7) khác rỗng và
bị chặn thì tồn tại phương án tối ưu từ vựng X*
Định lý 2. Nếu X* phương án tối ưu từ vựng của bài toán (5)-(7) thì X* là phương án tựa
Trang 4Bùi Thế Tâm II.4 Quy hoạch rời rạc
Bảng đơn hình 0
,
ij i Q j N n
∈ ∈
= gọi là chuẩn từ vựng (hay là l - chuẩn) nếu
0 1
j j j
n j
x x R
x
=
> 0 , ∀j∈N
Định lý 3 Để cho phương án tựa X* của bài toán (5) – (7) là l - tối ưu, điều kiện
cần và đủ là tồn tại cơ sở B sao cho bảng đơn hình 0
,
ij i Q j N n
∈ ∈
= là l - chuẩn
Giả phương án X (giả phương án mở rộngX ) của bài toán (5) – (7) gọi là dương
từ vựng nếu bảng đơn hình tương ứng là l - chuẩn, nói gọn lại là l - giả phương án ( l -
giả phương án mở rộng)
3 BẢNG ĐƠN HÌNH, PHƯƠNG ÁN, GIẢ PHƯƠNG ÁN
Phép biến đổi cơ bản của bảng đơn hình: đưa xk ra khỏi cơ sở, đưa xl vào cơ sở Phần tử xkl gọi là phần tử quay
,
ij i Q j N n
∈ ∈
= , cơ sở là B, N={1, ,n B}\ , l N∈ , k B∈ , x kl ≠ 0 Gọi N*=(N∪{ }k )\{ }l , các biến x0, x1, , xn có thể biểu diễn qua các biến
*
N và ta được bảng * 0
,
*
ij i Q j N n
∈ ∈
= và cơ sở mới B*=(B∪{ }l )\{ }k Gọi R jlà cột của T, R j*là cột của T*, ta có công thức tính lại như sau
*
*
l k
kl kj
kl
R R
x x
x
= −
= −
hay viết ở dạng toạ độ
{ } { }
*
*
, 0,1, 2, , , ( \ ) 0 , 0,1, ,
il ik
kl kj
ij ij il
kl
x
x x
x
= − =
{ } ( \ ) { }0
Trang 5Bùi Thế Tâm II.5 Quy hoạch rời rạc
4 PHƯƠNG PHÁP ĐƠN HÌNH
4.1 Thuật toán
Phương pháp đơn hình cho phép xây dựng dãy hữu hạn các phương án tựa X0, X1,
…, Xk, trong đó Xk là phương án tối ưu của bài toán (5) - (7) Hàm mục tiêu x0 = x0(Xr) không giảm khi r tăng Ứng với mỗi phương án tựa Xr có Tr, Br, Nr Quá trình giải gồm bước lặp xuất phát (xây dựng phương án tựa xuất phát X0) và dãy các bước lặp tổng quát
Bước lặp tổng quát r ≥ 0 có phương án Xr, tương ứng với nó có bảng đơn hình Tr
và các tập Br , Nr Kiểm tra bảng Tr có là chuẩn không (tức là x0j≥0 ∀ ∈j N r) Nếu đúng thì Xr là tối ưu, nếu không thì xác định x đưa vào cơ sở theo công thức : l
0l min 0j| r
Đưa biến x ra khỏi cơ sở theo tiêu chuẩn k
0 min 0 | 1, 2, , ; 0
il
Nếu không có xil (i = 1, 2, , n) dương thì bài toán không giải được, hàm mục tiêu tiến ra dương vô cùng
Tính Xr+1, Tr+1, Br+1, Nr+1 theo các công thức ở tiết 3
4.2 Cách tính phương án xuất phát
Giải bài toán phụ ứng với bài toán (5) – (7) có bi ≥ 0 ( i=1, ,m) :
1 2
1
1
( , , ) max
, 1, 2, ,
0, 1, 2, ,
n m
j n n
ij j n i i j
j
+ +
= +
+
=
∑
∑
Bài toán này có phương án tựa ( , ,1 n m) (0, 0, , 0, , ,1 m)
n
Dùng phương pháp đơn hình giải bài toán phụ, nếu f x x( 1*, 2* ,x*n m+ ) 0= thì
*n i 0
x + = (i = 1, , m) và véc tơ * * *
1 2
(x x, ,x n) là phương án tựa phải tìm X0 Nếu f*< 0 thì bài toán (5) – (7) không giải được (không có phương án chấp nhận được)
Ví dụ Giải bài toán sau:
Trang 6Bùi Thế Tâm II.6 Quy hoạch rời rạc
0 1 2
1 2
1 2
1 2
max x
2 11 38
7
4 5 5 , 0
x x
x x
x x
= + + ≤ + ≤
− ≤
≥ Bài toán được viết lại thành
0 1 2
ax x
38 2 11 7
5 4 5 , j 0 ( 1, ,5)
= +
= − −
= − −
= − − ≥ = "
Ta có các bảng đơn hinh như sau:
1 -x5 -x4 x0 7 0 1 x1 40/9 1/9 5/9 x2 23/9 -1/9 4/9 x3 1 1 -6 x4 0 0 -1 x5 0 -1 0
Vậy phương án tối ưu là (40/9; 23/9; 1; 0 ;0) với trị hàm mục tiêu là 7 Cách trình bày
của bảng đơn hình ở trên còn gọi là dạng toạ độ của phương pháp đơn hình
5 PHƯƠNG PHÁP ĐƠN HÌNH ĐỐI NGẪU TỪ VỰNG
5.1 Phương pháp đơn hình đỗi ngẫu xây dựng một dãy hữu hạn các giả phương
án Xo, X1, , Xk Giả phương án cuối cùng Xk là phương án (vì vậy là phương án tối ưu) của bài toán (5) - (7) Hàm mục tiêu xo = xo(Xr) không tăng khi r tăng Mỗi giả phương án Xr ứng với bảng Tr và các tập Br , Nr
1 -x1 -x2
x0 0 -1 -1
x1 0 -1 0
x2 0 0 -1
x3 38 2 11
x4 7 1 1
x5 5 4* -5
1 -x5 -x2 x0 5/4 1/4 -9/4 x1 5/4 1/4 -5/4 x2 0 0 -1 x3 71/2 -1/2 27/2 x4 23/4 -1/4 9/4*
x5 0 -1 0
Trang 7Bùi Thế Tâm II.7 Quy hoạch rời rạc
Quá trình giải gồm bước lặp ban đầu (xây dựng giả phương án xuất phát Xo) và dãy bước lặp tổng quát
5.2. Tìm cực đại từ vựng của phương án mở rộng
~
X = (xo, x1, , xn) = 1
1
, , ,
n
j
c x x x
=
với các điều kiện
1
n
j
a x b
=
=
∑ (i = 1, , m)
0 ( 1, 2, , )
j
x ≥ j= " n
Ký hiệu bài toán là ( , )L C hay l - bài toán Phương pháp đơn hình đỗi ngẫu từ
vựng gọi gọn là l - phương pháp
5.3 Bước lặp r ≥ 0 tổng quát
Có l - giả phương án Xr với x0j ≥ 0, j∈ Nr, và tương ứng Tr , Br , Nr, các cột là
0
r
R j N∈
Kiểm tra xem Tr có chấp nhận được hay không (tức là xio≥ 0 với mọi i = 1, ,n) Nếu đúng thì Xr là phương án l - tối ưu Nếu không thì tìm biến xk loại khỏi cơ sở theo quy tắc:
k = min { i | i = 1, , n ; xio <0}
Tìm xl đưa vào cơ sở theo quy tắc
l
r kj
R R
Nếu trong các số xkj (j∈ Nr) không có số âm thì bài toán không giải được Nếu có thì biến đổi bảng đơn hình theo các công thức ở tiết 3 ta được Xr+1, Tr+1 , Br+1 , Nr+1
5.4 Tính l giả phương án Xo
Giả sử ta xây dựng bảng đơn hình T ứng với bài toán (5) - (7) không phải
là l -chuẩn, ứng với nó có các tập B và N Giả sử hàm ∑
∈N
j j
x bị chặn trên tập (6)- (7) Khi đó ta tìm được số M sao cho: ∑
∈N
j j
x ≤ M (có thể dùng đơn hình thường để xác định M)
Đưa vào biến mới
≥
− +
=
+
∈
0 x
) x (
1 M x
1 n
N
1 n
Viết ràng buộc mới này vào cuối bảng T, chọn xk loại khỏi cơ sớ theo quy tắc: k = n+1 Chọn biến xl đưa vào cơ số theo quy tắc
Trang 8Bùi Thế Tâm II.8 Quy hoạch rời rạc
Rl = lex min {Rj | j ∈ N }
Thực hiện một bước biến đổi bảng đơn hình theo các công thức của tiết 3
ta nhận được bảng To là l - chuẩn (Rj ≥ 0 với j ∈ No ) và ứng với nó ta có các tập Bo và No:
Bo = (B ∪ {l}), No = (N ∪ {n + 1})\ {l}
5.5 Ví dụ bằng số
Giải bài toán sau bằng phương pháp đơn hình đối ngẫu
Max x0 = 3 x1 − x2 − 2 x3
0 0
0
2
4 3
10 4
2
3 2
1
3 2 1
3 2 1
3 2 1
≥
≥
≥
= +
−
≥ + +
≤
− +
x x
x
x x x
x x x
x x x
, ,
Sau khi thay ràng buộc đẳng thức bằng hai ràng buộc bất đẳng thức bài toán trên trở thành:
Max x0 = 3 x1 − x2 − 2 x3
0 ,
0 ,
0
2 2
4 3
10 4
2
3 2
1
3 2 1
3 2 1
3 2 1
3 2 1
≥
≥
≥
−
≤
− +
−
≤ +
−
−
≤
−
−
−
≤
− +
x x
x
x x x
x x x
x x x
x x x
Tiếp theo thêm các biến bù ta được bài toán:
Max x0 = 3 x1 − x2 − 2 x3
0 , , , , , , 2 2
3 4
4 2 10
7 6 5 4 3 2 1
3 2 1 7
3 2 1 6
3 2 1 5
3 2 1 4
≥
+
− +
−
=
− +
−
=
+ + +
−
=
+
−
−
=
x x x x x x x
x x x x
x x x x
x x x x
x x x x
Ta có các bảng đơn hình sau khi thêm ràng buộc phụ :
Trang 9Bùi Thế Tâm II.9 Quy hoạch rời rạc
Bảng 1
Bảng 2
Bảng 3
Trang 10Bùi Thế Tâm II.10 Quy hoạch rời rạc
Bảng 4
Bảng 5
Vậy phương án tối ưu là (3, 1, 0, 0, 6, 0, 0) với trị hàm mục tiêu bằng x[0]=-8
5.6 Chương trình máy tính
• Chương trình nhằm giải bài toán quy hoạch tuyến tính có dạng:
max
1
0 = ∑ →
= j
m
j j
x c
i j m
j ij
b x
∑
=1
, i = 1 , , p
0
≥
j
x , j = 1 , 2 , , m
Trang 11Bùi Thế Tâm II.11 Quy hoạch rời rạc
các b[i] có thể dương và âm, phương án xuất phát không đối ngẫu chấp nhận được Nếu bài toán giải có ràng buộc đẳng thức dạng: i i
m j
ijx b
∑
=1
thì ta thay thế bằng hai bất
đẳng thức: i i
m
j ij
b x
∑
=1
và i i
m
j ij
b x
∑
=1
•Sau khi thêm biến bù bài toán trên có thể viết ở dạng:
max )
)(
(
1
0 = ∑ − − →
=
m
x c x
m j
x
xj = ( − 1 )( − j) = 1 , 2 , ,
, , 2 , 1 )
)(
(
1
p i
x a b
j ij i
i
= +
, ,
2 , 1
xj ≥ = +
•Trong chương trình sử dụng các biến và mảng sau:
- m: số biến chính, n: số biến chính và biến bù của bài toán (n=m+p), gz là một
số dương đủ lớn và thường lấy bằng max { aij, bi, cj}, ss = 1 nếu bảng s là l- chuẩn nhưng không chấp nhận được và = 0 nếu bảng không là l- chuẩn
- Mảng s gồm n + 2 dòng và m+1 cột lúc đầu ghi dữ liệu của bài toán sau đó lưu bảng đơn hình ở mỗi bước Dòng n+1 để chứa ràng buộc phụ (8)
- s[0][0] hàm mục tiêu, cột 0 là cột phương án, dòng 0 là các ước lượng
- cs : các biến ở bên trái bảng đơn hình, nc : các biến phi cơ sở
•Cách nhập dữ liệu
Các dữ liệu ban đầu của bài toán được ghi trong một tệp văn bản, gồm:
- n, m,gz, ss
- Mảng s dữ liệu ban đầu bố trí dạng ở dưới và được ghi vào tệp dữ liệu theo từng dòng :
Trang 12Bùi Thế Tâm II.12 Quy hoạch rời rạc
- Mảng cs: nhập các số 0,1,2,…,n
- Mảng nc: nhập các số 1,2,…,m
Với dữ liệu bài toán trong mục 5.5 thì tệp dữ liệu DN.SLI có dạng :
7 3 100 0
0 -3 1 -2
0 -1 0 0
0 0 -1 0
0 0 0 -1 10 2 4 -1 -4 -3 -1 -1 2 1 -1 1 -2 -1 1 -1 0 1 2 3 4 5 6 7 1 2 3 •Văn bản chương trình #include <stdio.h> #include <conio.h> #include <math.h> #include <dos.h> #define M 30 #define N 30 double s[N+2][M+1],r,gz; int blap,kgd, kgd2,ss,sb,cmin; int m,n,i,j,k,l,tg,cs[N+2],nc[M+1]; unsigned long far *t; long int t1,t2; char *s1,*s2; FILE *f1,*f2; -x1 -x2 –xm 0 -c1 -c2 –cm x0 x1 x2 # xm 0 0 # 0 -1 0 0
0 -1 0
# # % #
0 0 -1
xm+1 # xn b1 # bp -a11 - a1m # # #
-ap1 .-ap,m
Trang 13Bùi Thế Tâm II.13 Quy hoạch rời rạc
int cotquay();
void biendoi();
void inbang(int cuoi);
int dhdoingau();
void main()
{ clrscr();
t= (unsigned long far *)MK_FP(0,0X46C); t1=*t;
printf("\nCo in trung gian hay khong 1/0 ? ");
scanf("%d%*c",&tg);
// Nhap du lieu ban dau printf("\nVao ten tep so lieu : "); gets(s1);
f1= fopen(s1,"r");
fscanf(f1,"%d%d%lf%d",&n,&m,&gz,&ss);
for (i=0;i<=n;i++) for (j=0; j<=m;j++)
{ fscanf(f1,"%lf",&r); s[i][j]=r; }
for (i=0; i<=n;i++) fscanf(f1,"%d",&cs[i]) ;
for (j=1; j<=m; j++) fscanf(f1,"%d",&nc[j]);
fclose(f1); sb=1;
// In so lieu de kiem tra printf("\n n,m,gz,ss = %d %d %13.5lf %d\n",n,m,gz,ss);
if (tg==1){ printf("\nVao ten tep chua ket qua : "); gets(s2);
f2=fopen(s2,"w");
fprintf(f2,"\n n,m,gz,ss = %d %d %13.5lf %d\n",n,m,gz,ss);
}
printf("\nBang 1, so lieu ban dau");
if (tg==1) fprintf(f2,"\nBang 1, so lieu ban dau");
inbang(0);
if (ss==1){
printf("\nBang 1, so lieu ban dau, l- chuan, khong chap nhan duoc");
if (tg==1)
fprintf(f2,"\nBang 1, so lieu ban dau, l- chuan, khong c.nhan duoc");
goto L1;}
// Them rang buoc phu cs[n+1]=n+1; s[n+1][0]=gz;
for (j=1;j<=m; j++) s[n+1][j]=1;
printf("\nBang 1, so lieu ban dau them rang buoc phu");
if (tg==1) fprintf(f2,"\nBang 1, so lieu ban dau them rang buoc phu");
inbang(1);
l=n+1;
// Chon cot quay Rl = lexmin { Rj | j (- N }
cmin=1;
for (j=2;j<=m;j++)
{ for (i=0; i<=n;i++)
{ if (s[i][cmin] > s[i][j]) {cmin=j; break;}
if (s[i][cmin] < s[i][j]) break; }
}
printf("\nDong quay = %d, Cot quay = %d Ptq = %13.5lf",l,cmin,s[l][cmin]);
if (tg==1) {
fprintf(f2,"\nDong quay = %d, Cot quay = %d Ptq = %13.5lf",
l,cmin,s[l][cmin]); } biendoi();sb++;
printf("\nBang %d, l- chuan dau tien",sb);