100
– Nhp cj, aj, j = 1, 2, …, n và b. Đặt k := 0.
– Nếu ràng buc dng thì đặt F0(y) = 0, y = 0, b .
– Nếu ràng buc dng = thì đặt F0(0) = 0 và F0(y) = – , y = 1, b .
Các bước lp
Bước 1: Đặt k := k + 1.
Bước 2: y = 0, b
i) Tính Fk(y) theo h thc truy toán:
Fk(y) =
{}
+−
kk
kk k1 kk
xJ cx F (y a x )
Max trong đó Jk = {0, 1, …[y/ak]}
hoc theo h thc Dantzig:
{
}
k1 k k k k
k
k1 k
Max F (y),c F (y a ) ,y a
F(y) F(y),ya.
+−
=<
ii) Tính jk(y):
Khi k = 1 thì j1(y) = 0 nếu F1(y) = 0 và j1(y) = 1 nếu F1(y) 0.
Còn vi k > 1 thì k1 k1 k
k
k1 k
j
(y) khi F (y) F (y)
j(y) kkhiF (y) F(y).
−−
=
=
Bước 3: Nếu k < n thì quay v bước 1.
Bước kết thúc
i) zmax = Fn(b). Gi s jn(b) = m n và m > 0, thì có n
x
= n1
x
= … = m1
x
+= 0.
Đặt b/ := b, i := m.
ii) Nếu gi s là s nguyên không âm sao cho:
j
n(b/) = jn(b – ai) = jn(b – 2ai) = … = jn(b – s×ai)
j
n(b – s×ai) jn(b – (s+1)×ai
thì i
x= 1 + s.
iii) Đặt b/ := b – (s+1)×ai, i := jn(b/). Nếu i > 0 thì quay v bước ii), còn nếu trái li thì in /
lưu tr kết qu và dng.
3.5. Hp nht hóa các ràng buc ca bài toán quy hoch tuyến tính nguyên
Ví d 6. Xét BTQHTT nguyên vi min ràng buc cho bi
12
12
12
12
3210
411
3313
,0
+≤
+≤
+≤
xx
xx
xx
xx
123
124
125
12 5
32 10
411
33 13
, ,...., 0
+
+=
++=
+
+=
xxx
xxx
xxx
xx x
(4.7)
(4.8)
(4.9)
(4.10)
và nguyên.
và nguyên.
101
H ràng buc trên có ba ràng buc dng đẳng thc (không k điu kin nguyên không âm
ca các biến). Để đưa BTQHTT nguyên trên đây v bài toán cái túi, chúng ta cn hp nht hóa
các ràng buc này thành mt ràng buc dng đẳng thc. Trước hết chúng ta xét cách hp nht hóa
hai đẳng thc.
Định lý 1. Xét h hai phương trình
n
1j j 1
j1
n
2j j 2
j1
ax b,
ax b.
=
=
=
=
(4.11)
Trong đó, các h s aij 0, bi > 0, j = 1, n i = 1, 2 .
Nếu t1 và t2 tha mãn các điu kin:
– t1, t2 N+ và (t1, t2) = 1 (4.12)
– t1 không là ước ca b2 (4.13)
– t2 không là ước ca b1 (4.14)
– t1 > b2 – amin, t2 > b1 – amin, (4.15)
trong đó amin = Min {aij , j = 1, n và i =1, 2}.
thì tp nghim nguyên không âm ca h (4.11) s trùng vi tp nghim nguyên không âm ca
phương trình
()
n
11j 22j j 11 22
j1
ta ta x tb tb
=
+=+
. (4.16)
Chng minh
Rõ ràng mi phương án nguyên không âm ca (4.11) cũng là phương án nguyên không âm
ca (4.16). Chúng ta s đi chng minh chiu ngược li: mi phương án nguyên không âm ca
(4.16) cũng là phương án nguyên không âm ca (4.11).
Gi s x* = ( 1
x, 2
x, …, n
x
) là phương án nguyên không âm ca (4.16) (cn chú ý rng
lúc đó luôn tn ti ch s k sao cho k
x
> 0). Đặt
n
iijji
j1
yaxb,i1,2.
∗∗
=
=−=
D dàng kim tra
được 1
y 2
y là các nghim nguyên ca phương trình t1y1 + t2y2 = 0. T đó, theo gi thiết (4.12)
ca định lý suy ra: 1
y = –( 2
y/t1)t2 = – qt2 , vi q là mt s nguyên. Do đó 2
y = –( 1
y/t2)t1 = qt1.
Chúng ta s ch ra q = 0. Tht vy, nếu q 1 thì:
– t2 – t2q = 1
y t2
n
11 1jj
j1
yb ax
=
−=
t2
n
21 1jj
j1
qt b a x
=
=−
.
Mt khác:
n
12 1jj
j1
bqt ax 0
=
=≠
(do gi thiết (4.14))
n
1j j min
j1
ax a
=
(do tn ti ch s k sao cho k
x
> 0)
102
t2
n
11jj1min
j1
baxba
=
−≤
mâu thun vi (4.15).
Còn nếu q –1 thì t1 2
y và dn ti t1 b2 – amin cũng mâu thun vi gi thiết (4.15).
Vy q = 0, nên 1
y = 2
y = 0, tc là
n
1j j 1
j1
n
2j j 2
j1
ax b
ax b.
=
=
=
=
Chúng ta đã hoàn thành vic chng minh định lý 1.
Quay li ví d 6, để hp nht hóa các ràng buc (4.7), (4.8) và (4.9) chúng ta tiến hành
như sau:
Trước hết chúng ta hp nht hóa hai phương trình đầu bng cách nhân (4.7) vi t1 = 12 và
nhân (4.8) vi t2 = 11 (các s này tha mãn điu kin nêu trong định lý) và cng các kết qu li để
có: 47x1 + 68x2 + 12x3 + 11x4 = 241. Lúc đó h các ràng buc trong ví d 6 là tương đương vi
h sau:
1234
125
12345
47 68 12 11 241
33 13
,,,, 0
+++=
++=
xxxx
xxx
xxxx x
(4.17)
(4.9)
(4.10)
T đó, nhân (4.13) vi 15 và (4.9) vi 242 ri cng li, theo định lý nêu trên chúng ta thu
được h ràng buc tương tương:
12345
12345
1431 1746 180 165 242 6761
,,,, 0
++++=
xxxxx
xxxx x
Quá trình hp nht hóa các ràng buc đã hoàn thành.
Nhn xét. Vic hp nht hóa các ràng buc nhanh chóng làm các h s ca các phương
trình hp nht tr nên rt ln. Ngoài ra, vic thc hin hp nht hóa như trên căn c định lý 1 đòi
hi điu kin: các h s aij 0, bi > 0, j = 1, n i = 1, 2 .
và nguyên.
và nguyên.
103
Bài tp chương IV
Bài 1. Gii BTQHTT nguyên bng phương pháp ct Gomory:
Max z = 6x1 + 4x2 + x3, vi các điu kin ràng buc
3x1 + 2x2 + x3 20
6x1 + 5x2 + x3 25
x1 + 3x2 + 3x3 10
x1, x2, x3 0 và nguyên.
Bài 2. Gii BTQHTT nguyên bng phương pháp ct Gomory hoc phương pháp nhánh cn Land
– Doig:
Min z = –2x1 – x2, vi điu kin ràng buc
x1 – x2 3
2x1 – x2 8
x1 + 4x2 24
x1 + 2x2 14
x1, x2 0 và nguyên.
Kim tra li phương án ti ưu tìm được bng cách s dng phn mm Lingo.
Bài 3. Gii BTQHTT hn hp nguyên bng phương pháp thích hp:
Max z = 5x1 + 8x2, vi điu kin ràng buc
6x1 + 5x2 30
9x1 + 4x2 36
x1 + 2x2 10
x1, x2 0, x2 nguyên.
Bài 4. Hãy phát biu thut toán ct Gomory và lp chương trình máy tính bng ngôn ng Pascal
hoc C để gii BTQHTT nguyên. Sau đó chy kim th chương trình trên mt s ví d.
Bài 5. Hãy phát biu thut toán nhánh cn Land – Doig và lp chương trình máy tính bng ngôn
ng Pascal hoc C để gii BTQHTT nguyên. Sau đó chy kim th chương trình trên
mt s ví d.
Bài 6. S dng phn mm thích hp gii BTQHTT nguyên:
Max z = 90x1 + 40x2 + 10x3 +37x4, vi các điu kin ràng buc
104
15x1 + 10x2 + 10x3 + 15x4 80
20x1 + 15x2 + 10x4 100
20x1 + 20x2 + 10x4 120
15x1 + 5x2 + 4x3 + 10x4 70
x1, x2, x3, x4 0 và nguyên.
Bài 7. S dng quy hoch động để tìm đường đi ngn nht cho bài toán sau:
Đi ti thành ph
Đi t thành ph 2 3 4 5 6 7 8 9 10 11 12
1 5 4 2
2 8 10 5 7
3 6 3 8 10
4 8 9 6 4
5 8 4 3
6 5 2 7
7 4 10 6
8 12 5 2
9 7
10 3
11 6
Bng d kin trên được hiu như sau: Chng hn, t thành ph 2 ch có th đi ti các thành
ph sát gn là 5, 6, 7, 8 vi các khong cách tương ng là 8, 10, 5, 7.
Hãy kim tra kết qu thu được bng cách s dng phn mm Lingo.
Bài 8. Hãy tìm đường đi dài nht cho các d kin trong bài 7.
Bài 9. Gii bài toán cái túi sau:
Max z = 8x1 + 5x2 + x3 + 12x4, vi điu kin ràng buc
3x1 + 2x2 + x3 + 4x4 23
x1, x2, x3, x4 0 và nguyên.
Bài 10. Phát biu thut gii bài toán cái túi bng phương pháp quy hoch động vi h thc truy
toán Dantzig và lp chương trình máy tính. Sau đó chy kim th chương trình trên mt
s ví d.