Giáo trình Quy hoạch tuyến tính - Chương IV: Ứng dụng quy hoạch tuyến tính

ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
CHƯƠNG IV  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Chương này trình bày các bài toán để thấy khả năng ứng dụng rộng rãi của  
quy hoạch tuyến tính. Bài toán trò chơi được trình bày một cách chi tiết, các bày toán  
còn lại chỉ trình bày mô hình. Việc giải các bài toán này được nghiên cứu thêm trong  
các môn tiếp theo.  
Nội dung chi tiết của chương này bao gồm :  
I- MỞ ĐẦU  
II- BÀI TOÁN TRÒ CHƠI  
1- Trò chơi có nghiệm ổn định  
2- Trò chơi không có nghiệm ổn định  
III- BÀI TOÁN VẬN TẢI  
1- Mở đầu  
2- Các khái niệm cơ bản  
3- Bài toán vận tải cân bằng thu phát  
4- Các bài toán được đưa về bài toán vận tải  
IV- BÀI TOÁN DÒNG TRÊN MẠNG  
1- Mở đầu  
2- Phát biểu bài toán dòng trên mạng  
V- QUY HOẠCH NGUYÊN  
1- Mở đầu  
2- Bài toán quy hoạch nguyên trong thực tế  
CHƯƠNG IV  
88  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Trong chương này, chúng ta sẽ tìm hiểu sơ lược một số khái niệm và phương  
pháp cơ bản trong lý thuyết trò và một số bài toán thực tế mà người ta sẽ đưa về bài  
toán quy hoạch tuyến tính để giải .  
I- MỞ ĐẦU  
Trong thực tế hay gặp tình huống là phải chọn một quyết định (bấp bênh) do  
phải đối mặt với một đối thủ thông minh và có quyền lợi đối lập với ta : ví dụ trong  
các trò chơi tranh chấp, trong quân sự, trong vận động tranh cử....  
Nghiên cứu việc chọn quyết định trong những trường hợp đối kháng này có  
tên gọi là lý thuyết trò chơi. Ở đây người chọn quyết định và đối thủ đều được gọi là  
người chơi. Mỗi người chơi có một tập hợp các hành động để lựa chọn được gọi là  
chiến lược.  
Chúng ta xét một trường hợp đơn giản là trò chơi hai người : phần thưởng sẽ  
là cái được của một người và chính là cái mất của người kia.  
Giải một trò chơi nghĩa là tìm chiến lược tốt nhất cho mỗi người chơi. Hai  
người chơi thường được ký hiệu là A và B, chiến lược tương ứng của mỗi người được  
ký hiệu là :  
A : i (i=1→m)  
B : j (j=1→n)  
Giải thưởng ứng với chiến lược (i,j) của hai người được ký hiệu là aij và được  
viết thành một bảng như sau :  
B
1
2
...  
n
A
1
a11  
a21  
...  
a12  
a22  
...  
...  
...  
...  
...  
a1n  
a2n  
...  
2
...  
m
am1  
am2  
amn  
Ví dụ :  
←
B
1
2
3
4
89  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
1
0
3
1
2
3
1
2
0
2
-2  
1
A
→
-1  
-1  
0
Ðối với A :  
- Nếu A đi nước 1 (dòng 1) thì A sẽ :  
. Thắng 1 điểm nếu B đi nước 1  
. Thắng 0 điểm nếu B đi nước 2  
. Thắng -2 điểm nếu B đi nước 3  
. Thắng 1 điểm nếu B đi nước 4  
Những trường hợp còn lại là tương tự .  
(thắng)  
(hoà)  
(thua)  
(thắng)  
Ðối với B :  
- Nếu B đi nước 2 (cột 2) thì B sẽ :  
. Thua 0 điểm nếu A đi nước 1  
. Thua 2 điểm nếu A đi nước 2  
. Thua -1 điểm nếu A đi nước 3  
Những trường hợp còn lại là tương tự .  
Nghiệm tối ưu của trò chơi, có khi gọi tắt là nghiệm, là bộ chiến lược (i*,j*)  
có tính chất là nếu một người lấy chiến lược khác còn người kia vẫn giữ nguyên thì  
phần thưởng cho người đi khác sẽ bị thiệt hại. Giải trò chơi có nghĩa là tìm nghiệm tối  
ưu.  
II- BÀI TOÁN TRÒ CHƠI  
1- Trò chơi có nghiệm ổn định  
Hai nhà chính trị A và B vận động tranh cử 1 ghế ở nghị viện trong 2 ngày  
cuối quan trọng nhất ở hai thành phố P và Q. Mỗi người phải đặt kế hoạch vận động  
mà không biết được kế hoạch của đối phương. Các cố vấn đưa ra 3 chiến lược :  
- Ở mỗi thành phố một ngày  
- Ở cả 2 ngày ở thành phố P  
- Ở cả 2 ngày ở thành phố Q và đánh giá kết quả vận động tương ứng  
như sau :  
1
2
3
←
90  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
B
1
2
3
1
1
0
2
0
1
4
5
A
→
-1  
Dữ liệu là tổng số phiếu, tính theo đơn vị là ngàn, mà A sẽ dành được từ B hay  
ngược lại .  
Đây là một trường hợp đơn giản mà người ta có thể giải được bằng khái niệm  
chiến lược bị trội hơn như sau :  
- Đối với A thì chiến lược 3 bị trội hơn bởi chiến lược 1 và 2 vì nó mang đến  
cho A số điểm thắng ít, nên dù B có chọn chiến lược nào thì A cũng vẫn chọn chiến  
luợc 1 hoặc 2 mà bỏ chiến lược 3 . Ta có :  
←
B
1
2
3
1
2
3
1
1
0
2
0
1
4
5
A
→
-1  
- Đối với B thì chiến lược 3 bị trội hơn bởi chiến lược 1 và 2 vì nó mang đến  
cho B số điểm thua nhiều nên B bỏ chiến lược 3. Ta có :  
←
B
1
2
3
1
2
3
1
1
0
2
0
1
4
5
A
→
-1  
- Đối với A thì chiến lược 2 bị trội hơn bởi chiến lược 1 vì vậy A bỏ chiến  
lược 2. Ta có :  
←
B
1
2
3
91  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
1
2
3
1
1
0
2
0
1
4
5
A
→
-1  
- Đối với B thì chiến lược 2 bị trội hơn bởi chiến lược 1 vì vậy B bỏ chiến  
lược 2. Ta có :  
←
B
1
2
3
1
2
3
1
1
0
2
0
1
4
5
A
→
-1  
Cuối cùng thì bộ chiến lược (1,1) là nghiệm tối ưu của trò chơi với kết quả là  
người A thu thêm được 1 (ngàn) phiếu từ người B.  
Trong nhiều trường hợp, khi dùng chiến lược bị trội hơn chỉ mới giảm được cở  
của bài toán mà chưa giải quyết xong vấn đề đặt ra.  
Chiến lược MaxiMin và MiniMax  
Xét ví dụ tương tự như ví dụ trên nhưng bảng kết quả vận động được các cố  
vấn đánh giá như sau :  
←
B
1
2
3
1
2
3
-3  
1
-2  
0
6
2
A
→
5
-2  
-4  
Đây là trường hợp người chọn quyết định nghĩ là đối phương thông minh và  
cố ý chọn quyết định chống lại mình nên họ luôn nghĩ đến chiến lượt “ăn chắc” , đó là  
MaxiMin(A) và MiniMax(B) như sau :  
a- MaxiMin(A)  
A luôn xem B là đối thủ thông minh. Khi A đi nước i0 (dòng i0) thì B sẽ chọn  
nước đi j0 (cột j0) sao cho A thắng điểm ít nhất . Nghĩa là B đi vào ô :  
ai j = Min  
{
ai j  
}
0 0  
0
∀j  
92  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Trong tình huống đó A sẽ chọn nước đi sao cho A thắng nhiều điểm nhất.  
Chiến thuật của A là đi vào ô :  
gA = ai j = MaxiMin (A) = max  
{
min  
{
aij  
}
}
A
A
j
i
A đi nước 1 thì B sẽ đi nước 1  
A đi nước 2 thì B sẽ đi nước 2  
A đi nước 3 thì B sẽ đi nước 3  
: a11=-3  
: a22=0  
: a33=-4  
←
B
1
2
3
1
2
3
-3  
1
-2  
6
A
→
0
2
5
-2  
-4  
Vậy MaxiMin(A) = a22 = 0  
b- MiniMax(B)  
B luôn xem A là đối thủ thông minh. Khi B đi nước j0 (cột j0) thì A sẽ chọn  
nước đi i0 (dòng i0) sao cho B thua điểm nhiều nhất . Nghĩa là A đi vào ô  
ai j = max  
{
aij  
}
0
0
0
∀i  
Trong tình huống đó B sẽ chọn nước đi sao cho B thua ít điểm nhất. Chiến  
thuật của B là đi vào ô :  
gB = ai j = MiniMax (B) = min  
{
max  
{
aij  
}
}
B
B
j
i
←
B
1
2
3
1
2
3
-3  
1
-2  
0
6
2
A
→
5
-2  
-4  
B đi nước 1 thì A sẽ đi nước 3  
B đi nước 2 thì A sẽ đi nước 2  
B đi nước 3 thì B sẽ đi nước 1  
Vậy MiniMax(B) = a22= 0  
: a31=5  
: a22=0  
: a13=6  
Lần này ta thấy rằng :  
MaxiMin(A) = MiniMax(B) = a22= 0  
93  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Bộ chiến lược (2,2) có giá trị là 0 là nghiệm tối ưu của trò chơi vì nếu người  
nào đi lệch và người kia đi đúng thì người đi đúng thu lợi nhiều hơn giá trị của trò  
chơi. Nghiệm tối ưu trong trường hợp này còn được gọi là nghiệm ổn định.  
2- Trò chơi không có nghiệm không ổn định  
Xét ví dụ tương tự như trên với bảng kết quả được các chuyên gia đánh giá  
như sau :  
←
B
1
2
3
1 0  
2 5  
3 2  
-2  
4
2
A
→
-3  
-4  
3
Khi A và B dùng chiến lược MaxiMin và MiniMax của mình thì cho kết quả  
như sau :  
MaxiMin(A) = a12 = -2  
MiniMax(B) = a13 = 2  
Vì MaxiMin(A) và MiniMax(B) là khác nhau nên trò chơi không có nghiệm  
ổn định. Ta xem điều gì có thể xảy ra ?  
- A tính rằng nếu B thực hiện đúng chiến lược của mình là chọn cột 3 thì A sẽ  
chọn chiến lược 1 để thắng 2 từ B (thay vì thắng -2)  
←
B
1
2
3
1
2
3
0
5
2
-2  
4
2
A
→
-3  
-4  
3
- Lúc này B sẽ suy tính và thấy rằng phải chọn chiến lược 2 để thua -2 từ A  
(thay vì thua 2).  
1
2
3
←
94  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
B
1
2
3
0
5
2
-2  
4
2
A
→
-3  
-4  
3
- Đến lượt A cũng đủ thông minh để tính liền được 2 nước, biết được B sẽ  
chọn chiến lược 2 nên A sẽ dùng chiến lược 2 để thắng 4 từ B .  
←
B
1
2
3
1
2
3
0
5
2
-2  
4
2
A
→
-3  
-4  
3
- Nhưng B cũng tính được điều này nên sẽ quay lại chọn chiến lược 3 để thua -  
3 từ A .  
←
B
1
2
3
1
2
3
0
5
2
-2  
4
2
A
→
-3  
-4  
3
- Cũng như B , A cũng sẽ tính được điều này nên sẽ quay lại chọn chiến lược 1  
để thắng 2 từ B.  
←
B
1
2
3
1
2
3
0
5
2
-2  
4
2
A
→
-3  
-4  
3
Như vậy ta đã xoay đúng một vòng, và nếu cứ lập luận như vậy thì ta sẽ xoay  
vòng mãi. Những bộ chiến lược nhận được trong khi xoay vòng là những nghiệm  
không ổ định.  
Chiến lược hỗn hợp  
95  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Để có được lời giải của trò chơi không có nghiệm ổn định người ta đưa ra khái  
niệm chiến lược hỗn hợp. Mỗi người chơi không chọn một chiến lược thuần túy như  
trước đây mà chọn một phân bố xác suất sử dụng tất cả các chiến lược.  
Xét trò chơi giữa A và B có ma trận điểm dương có dạng tổng quát :  
1
2
...  
n
←
B
1
2
...  
...  
a11  
a12  
a1n  
a21  
...  
a22  
...  
a2n  
...  
A
→
...  
m
...  
...  
am1  
am2  
amn  
Giả sử rằng :  
MaxiMin(A) = ai j = gA  
A
A
MiniMax (B) = ai j = gB  
B
B
a
≠ a  
iA jA  
iB jB  
Gọi :  
. pi > 0 (i=1→ m ) là tần suất nước đi thứ i của A với  
p1 + p2 + ... + pm = 1  
. qj > 0 (j=1→ n ) là tần suất nước đi thứ j của B với  
q1 + q2 + ... + qn = 1  
q1  
1
q2  
2
...  
...  
qn  
n
←
B
p1  
p2  
1
2
...  
...  
a11  
a12  
a1n  
a21  
...  
a22  
...  
a2n  
...  
A
→
... ...  
pm  
...  
...  
m
am1  
am2  
amn  
Vấn đề đặt ra là :  
96  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
-Tìm tần suất pi > 0 của nước đi thứ i (i =1→ m) của A sao cho đối với mỗi  
nước đi thứ j của B số điểm thắng trung bình của A không nhỏ thua gA :  
p1a1j + p2a2j + ..... + pmamj  
Cũng có nghĩa là tìm pi sao cho :  
(∀j = 1→ n)  
p1a1j + p2a2j + ..... + pmamj ≥ g1 ≥ gA (∀j = 1→ n)  
g1 → max  
- Tìm tần suất qj > 0 của nước đi thứ j (j =1→ n) của B sao cho đối với mỗi  
nước đi thứ i của A số điểm thua trung bình của B không lớn hơn gB :  
q1ai1 + q2ai2 + .... + qnain (∀i = 1→ m)  
Cũng có nghĩa là tìm các qj sao cho :  
q1ai1 + q2ai2 + ..... + qnain ≤ g2 ≤ gB  
g2 → min  
(∀i = 1→ m)  
Khi đó hai bài toán quy hoạch tuyến tính thu được là :  
⎧
⎛
⎞
1
g1  
⎜
⎜
⎟
⎟
max g  
min  
⎪
⎪
1
⎝
⎠
⎪
⎪
p1 + p2 + ... + pm = 1  
⎨
⎪
p1a1j + p2a2j + ... + pmamj ≥ g1  
(j = 1 → n)  
⎪
⎪
⎪
pi > 0 (i = 1 → n)  
⎩
⎧
⎛
⎞
1
g2  
⎜
⎜
⎟
⎟
min g  
max  
⎪
⎪
2
⎝
⎠
⎪
⎪
q1 + q2 + ... + qn = 1  
⎨
⎪
⎪
⎪
q1ai1 + q2ai2 + ... + qnain ≤ g2  
(i = 1 → m)  
q > 0 (j = 1 → m)  
⎪
j
⎩
Chia các ràng buộc của bài toán thứ nhất cho g1>0 và đặt :  
pi  
g1  
xi =  
(i = 1 → m)  
Chia các ràng buộc của bài toán thứ hai cho g2>0 và đặt :  
97  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
qj  
yj =  
(j = 1 → n)  
g2  
Khi đó hai bài toán quy hoạch tuyến tính trên trở thành :  
1
g1  
⎧
min  
= x1 + x2 + ...+ xm  
⎪
⎪
⎪
(D) a x + a x + ...+ a x ≥ 1  
(j = 1 → n)  
⎨
1j  
1
2j  
2
mj  
m
⎪
xi > 0 (i = 1 → m)  
⎪
⎪
⎩
1
g2  
⎧
max  
= y1 + y2 + ...+ y3  
⎪
⎪
⎪
(P) a y + a y + ... + a y ≤ 1  
(i = 1 → m)  
⎨
i1  
1
i2  
2
in  
n
⎪
yj > 0 (j = 1 → m)  
⎪
⎪
⎩
Ðây là hai bài toán đối ngẫu . Chọn một trong hai để giải  
Ví dụ :  
Xét trò chơi giữa A và B có bảng điểm như sau :  
1
2
3
←
B
1
2
3
-1  
1
2
-2  
4
1
2
A
→
3
-3  
Theo chiến thuật của A và của B ta có :  
MaxiMin(A) = a11  
MiniMax(B) = a23  
Tăng đồng loạt các ô của bảng điểm lên 4 ta được :  
1
2
3
←
B
1
2
3
3
5
7
6
2
8
5
6
1
A
→
98  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Gọi  
pi ≥ 0 là tần suất nước đi thứ i của A (i=1→ 3)  
p1 + p2 + p3 = 1  
qj ≥ 0 là tần suất nước đi thứ j của B (j=1→ 3)  
q1 + q2 + q3 =1  
Thực hiện tương tự như trên ta được hai bài toán đối ngẫu như sau :  
q1  
q2  
q3  
←
B
p1  
p2  
p3  
3
5
7
6
2
8
5
6
1
A
→
1
g2  
1
g1  
⎧
⎧
min w =  
= x1 + x2 + x3  
max z =  
= y1 + y2 + y3  
⎪
⎪
⎪
⎪
⎪
⎪
⎨
⎪
⎪
⎪
⎪
⎪
⎩
⎪
⎪
⎪
⎪
3x1 + 5x2 + 7x3 ≥ 1  
6x + 2x + 8x ≥ 1  
3y1 + 6y2 + 5y3 ≤ 1  
5y + 2y + 6y ≤ 1  
(D)  
(P)  
⎨
⎪
⎪
⎪
⎪
⎪
⎩
1
2
3
1
2
3
5x + 6x + x ≥ 1  
7y + 8y + y ≤ 1  
1
2
3
1
2
3
x1 > 0 , x2 > 0 , x3 > 0  
y1 > 0 , y2 > 0 , y3 > 0  
Ta chọn bài toán (P) để giải.  
Ðưa bài toán (P) về dạng chuẩn :  
1
g2  
⎧
max z =  
= y1 + y2 + y3 + 0.y4 + 0.y5 + 0.y6  
⎪
⎪
⎪
⎪
⎪
3y1 + 6y2 + 5y3 + y4 = 1  
5y + 2y + 6y + y = 1  
(P)  
⎨
⎪
⎪
⎪
⎪
⎪
⎩
1
2
3
5
7y + 8y + y + y = 1  
1
2
3
6
y1 > 0 , y2 > 0 , y3 > 0, y4 > 0 , y5 > 0 , y6 > 0  
Dùng giải thuật đơn hình cải tiến :  
y1 y2  
y4  
cB  
iB  
y3  
y5  
y6  
b0  
0
0
99  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
0
0
0
4
5
6
3
5
7
6
2
8
5
6
1
1
0
0
0
1
0
0
0
1
1
1
1
cT  
c0T  
z0  
1
1
1
1
1
1
0
0
0
0
0
0
0
y1  
y2  
y4  
c
i
y3  
y5  
y6  
B1  
B1  
b1  
18  
7
32  
7
3
4
7
2
7
1
7
z1  
−
−
0
0
1
4
0
1
0
7
5
7
26  
7
37  
7
−
5
1
0
0
1
8
7
1
7
1
7
1
1
0
0
0
0
0
0
0
cT  
c1T  
1
1
0
1
1
7
6
7
1
7
−
−
7
y1  
y2  
y4  
cB  
iB  
y3  
y5  
y6  
b2  
2
2
214  
37  
32  
37  
7
37  
12  
37  
2
37  
5
−
0
4
0
0
1
26  
37  
46  
7
37  
5
37  
−
−
1
1
3
1
0
1
0
1
37  
6
37  
−
1
1
0
0
1
0
0
0
0
37  
37  
z2  
cT  
c2T  
1
0
0
17  
37  
6
37  
1
37  
7
37  
−
−
y1  
y2  
y4  
c
i
y3  
y5  
16  
107  
9
107  
17  
107  
y6  
B3  
B3  
b3  
37  
214  
13  
107  
23  
7
214  
12  
107  
13  
107  
6
107  
10  
107  
7
−
1
2
0
1
0
1
−
1
1
3
1
0
0
−
1
1
0
1
0
1
107  
107  
z3  
cT  
0
0
0
100  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
17  
214  
10  
107  
9
214  
23  
107  
c3T  
−
−
−
0
0
0
Phương án tối ưu của bài toán (P) là :  
1
23  
⎧
⎪
⎪
⎪
⎪
107  
23  
⎧
=
g2 =  
g2 107  
⎪
⎪
⎪
⎪
q1  
7
7
23  
y1 =  
y2 =  
y3 =  
=
q =  
1
⎪
⎪
g2 107  
⎪
⎨
suy ra  
⎨
⎪
⎪
⎪
⎪
⎪
q2  
6
6
23  
⎪
⎪
⎪
⎪
=
q2 =  
g2 107  
10  
23  
q3  
10  
q =  
⎪
3
=
⎩
⎪
⎩
g2 107  
Phương án tối ưu của bài toán đối ngẫu (D) được tính bằng công thức sau :  
37  
214  
13  
107  
23  
107 107  
16  
7
⎡
⎢
⎢
⎢
⎢
⎢
⎤
⎥
⎥
⎥
⎥
⎥
−
107 214  
9
107  
17  
12  
107  
13  
xT =  
[
x1 x2 x3  
]
= cBTB−1  
=
[
1 1 1  
]
−
−
⎢
⎣
⎥
⎦
107  
17  
10  
9
⎡
⎤
=
⎢
⎥
214 107 214  
⎣
⎦
17  
214  
10  
107  
9
214  
⎡
⎢
⎢
⎢
⎢
⎢
⎤
⎥
⎥
⎥
⎥
⎥
1
g1  
23  
107  
w =  
= bT x =  
[
1 1 1  
]
=
⎢
⎣
⎥
⎦
Ta có :  
101  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
1
23  
⎧
⎪
⎪
⎪
⎪
107  
23  
⎧
⎪
⎪
⎪
w =  
=
g1 =  
g1 107  
p1  
17  
17  
46  
x1 =  
x2 =  
x3 =  
=
p =  
⎪
1
⎪
⎪
g1 214  
⎪
⎨
suy ra  
⎨
⎪
⎪
⎪
⎪
⎪
p2  
10  
10  
23  
⎪
=
p2 =  
⎪
g1 107  
⎪
⎪
9
46  
p3  
9
p =  
⎪
3
=
⎩
⎪
⎩
g1 214  
III- BÀI TOÁN VẬN TẢI  
1- Mở đầu  
Bài toán vận tải là bài toán quan trọng nhất trong các bài toán quy hoạch tuyến  
tính. Người ta tổng kết rằng 85% các bài toán quy hoạch tuyến tính gặp trong ứng  
dụng là bài toán vận tải hoặc mở rộng của nó. Thuật ngữ bài toán vận tải thường được  
hiểu là bài toán vận chuyển sao cho cước phí nhỏ nhất.  
2- Các khái niệm cơ bản  
Bài toán vận tải được mô tả như là một bài toán về dòng dữ liệu gồm tập hợp  
các nút N được chia thành hai phần rời nhau : các nút nguồn S và các nút đích D, tức  
là :  
N = S ∪ D  
⎧
⎨
S ∩ D = ∅  
⎩
và mỗi cung (i,j) trong tập các cung A đều có gốc trong S và có ngọn trong D.  
D:Các nút đích  
S:Các nút nguồn  
Các nút thuộc S được gọi là các nút nguồn (cung), các nút thuộc D được gọi là  
các nút đích (cầu). Một cách tổng quát, bài toán vận tải trình bày được bằng đồ thị.  
Ở bài toán vận tải đôi khi còn có thêm giả thiết nữa là mỗi nút nguồn đều có  
cung nối với mọi nút đích. Ở đây ta chỉ đề cập đến bài toán vận tải có thêm giả thiết  
này và sẽ gọi tắt là bài toán vận tải.  
102  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
Đối với bài toán vận tải người ta thường ký hiệu  
si ∈ S là nguồn phát ở nút i(i=1→m)  
dj ∈ D là nhu cầu thu của nút j (j=1→n)  
Trong trường hợp các nguồn phát không chuyển hết sang các nút cầu vì đã đủ  
nhu cầu thì bài toán vận tải được gọi là bài toán vận tải mở. Có thể đưa một bài toán  
vận tải mở về một bài toán vận tải (đóng) bằng cách thêm vào một nút cầu giả thứ  
(n+1) với nhu cầu được xác định như sau :  
m
n
dn+1  
=
s −  
d
∑ ∑  
i
j
i=1  
j=1  
3- Bài toán vận tải cân bằng thu phát  
a- Thiết lập bài toán  
Có m nơi A1, A2,....,Am cung cấp một loại hàng với khối lượng tương ứng là  
a1, a2,....,am. Hàng được cung cấp cho n nơi B1, B2,...., Bn với khối lượng tiêu thụ  
tương ứng là b1, b2,....,bn.  
Cước phí chuyên chở một đơn vị hàng từ điểm phát Ai đến điểm thu Bj là cij .  
Hãy lập kế hoạch vận chuyển từ mỗi điểm phát đến mỗi điểm thu bao nhiêu  
hàng để :  
- Các điểm phát đều phát hết hàng  
- Các điểm thu đều nhận đủ hàng  
- Tổng cước phí phải trả là ít nhất  
Gọi xij là lượng hàng chuyển từ điểm phát Ai đến điểm thu Bj , xij ≥ 0 .  
Vì tổng lượng hàng phát đi từ mỗi điểm phát Ai đến mọi điểm thu Bj bằng  
lượng hàng phát từ Ai nên :  
xi1 + xi2 + .... + xin = ai (i = 1,2,...,m)  
Vì tổng lượng hàng thu được tại mỗi điểm thu Bj từ mọi điểm phát Ai bằng  
lượng hàng cần thu tại Bj nên :  
x1j + x2j + .... + xmj = bji (j = 1,2,...,n)  
Để tổng cước phí là ít nhất cần phải có :  
min z(x) =  
c x  
∑∑  
ij ij  
i
j
Với các phân tích trên ta có mô hình của bài toán như sau :  
103  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
n
n
min z(x) =  
c x  
(1)  
∑∑  
ij ij  
i=1 j=1  
n
⎧
x = a (i = 1,2,...,m)  
∑
ij  
i
⎪
⎪
⎨
j=1  
(2)  
(3)  
m
⎪
x = b (j = 1,2,...,n)  
∑
ij  
j
⎪
⎩
i=1  
xij ≥ 0  
Phương án - Phương án tối ưu  
Một ma trận X=[xij]m.n thỏa (2) và (3) được gọi là phương án, thỏa thêm (1)  
được gọi là phương án tối ưu.  
b- Dạng bảng của bài toán vận tải  
Có thể giải bài toán vận tải theo cách của quy hoạch tuyến tính. Tuy nhiên do  
tính chất đặc biệt của bài toán vận tải nên người ta nghĩ ra một thuật toán hiệu quả  
hơn. Trước tiên người ta trình bày bài toán vận tải dưới dạng bảng như sau :  
Thu  
Cước  
Phát  
b1  
b2  
....  
bj  
....  
bn  
a1  
c11  
c21  
c12  
c22  
....  
....  
....  
....  
....  
....  
....  
....  
....  
....  
c1j  
c2j  
....  
....  
....  
....  
....  
....  
....  
....  
....  
....  
c1n  
c2n  
x11  
x21  
x12  
x22  
x1j  
x2j  
x1n  
x2n  
a2  
....  
....  
....  
....  
....  
....  
....  
....  
ai  
ci1  
ci2  
cij  
cin  
xi1  
xi2  
xij  
xin  
....  
am  
cm1  
cm2  
cmj  
cmn  
xm1  
xm2  
xmj  
xmn  
Trong bảng mỗi hàng mô tả một điểm phát, mỗi cột mô tả một điểm thu, mỗi ô  
mô tả một tuyến đường đi từ một điểm phát tới một điểm thu.  
Dây chuyền - Chu trình  
Một dãy các ô của bảng mà hai ô liên tiếp nằm trong cùng một hàng hoặc một  
cột, ba ô liên tiếp không cùng nằm trên một hàng hoặc một cột được gọi là một dây  
chuyền. Ta thấy rằng hai ô liền nhau trong một dây chuyền có chỉ số hàng hoặc chỉ số  
cột bằng nhau  
104  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
x
x
x
x
x
x
Dây chuyền : (1,2) (1,3) (2,3) (2,4) (4,4) (4,1)  
Một dây chuyền khép kín, ô đầu tiên và ô cuối cùng bằng nhau, được gọi là  
một chu trình.Ta thấy rằng số ô trong một chu trình là một số chẵn.  
x
x
x
x
x
x
Chu trình : (1,1) (1,3) (2,3) (2,4) (4,4) (4,1) (1,1)  
Ô chọn - Ô loại  
Giả sử ma trận X=[xij]m.n (i=1,2,...,m) (j=1,2,...,n) là một phương án của bài  
toán vận tải.  
Những ô trong bảng tương ứng với xij >0 được gọi là ô chọn, những ô còn lại  
được gọi là ô loại.  
Phương án cơ bản  
Một phương án mà các ô chọn không tạo thành một chu trình được gọi là  
phương án cơ bản.  
Một phương án có đủ m+n-1 ô chọn được gọi là không suy biến, có ít hơn  
m+n-1 ô chọn được gọi là suy biến. Trong trường hợp suy biến người ta chọn bổ sung  
vào phương án cơ bản một số ô loại có lượng hàng bằng 0 để phương án cơ bản trở  
thành không suy biến  
c- Giải bài toán vận tải  
Xét bài toán vận tải có số lượng phát, số lượng thu và ma trân cước phí ở dạng  
bảng như sau :  
80  
5
20  
4
60  
1
50  
40  
70  
3
2
6
7
9
11  
105  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
LẬP PHƯƠNG ÁN CƠ BẢN BAN ĐẦU  
Phương án cơ bản ban đầu được xác định bằng cách ưu tiên phân phối nhiều  
nhất vào ô có cước phí nhỏ nhất (r,s) ( gọi là ô chọn). Khi đó : nếu điểm phát r đã phát  
hết hàng thì xóa hàng r của bảng và số lượng cần thu tại điểm s chỉ còn là bs-ar ; nếu  
điểm thu s đã nhận đủ hàng thì xóa cột s của bảng và số lượng phát còn lại tại điểm  
phát r là ar-bs  
Bảng mới thu được có kích thước giảm đi. Tiếp tục phân phối như trên cho  
đến khi hết hàng.  
Các ô chọn trong quá trình phân phối, sẽ không chứa chu trình, là một phương  
án cơ bản. Nếu phương án cơ bản suy biến, chưa đủ m+n-1 ô, thì bổ sung thêm một số  
" ô chọn 0 "  
Áp dụng vào bài toán đang xét :  
1- Phân vào ô (1,3) 50 . Hàng (1) bị xóa . Cột (3) còn thu 60-50=10  
80  
20  
10  
50  
0 5  
40 3  
70 7  
4
2
9
1
6
11  
2- Phân vào ô (2,2) 20 . Cột (2) bị xóa . Hàng (2) còn phát 40-20=20  
80 10  
50  
0
0 5  
20 3  
70 7  
4
2
9
1
20  
6
11  
3- Phân vào ô (2,1) 20 . Hàng (2) bị xóa . Cột (1) còn thu 80-20=60  
60 10  
50  
0
0 5  
4
2
9
1
0 3 20  
20  
6
70 7  
11  
4- Phân vào ô (3,1) 60 . Cột (1) bị xóa . Hàng (3) còn phát 70-60=10  
10  
50  
0
0
0 5  
4
2
9
1
0 3 20  
20  
6
10 7 60  
11  
106  
ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH  
5- Phân vào ô (3,3) 10. Hết hàng.  
0
0
0
0 5  
4
2
9
1
6
50  
0 3 20  
0 7 60  
20  
11 10  
Đã có 5 ô được chọn, chúng tạo thành một phương án cơ bản không suy biến  
vì số ô bằng với m+n-1=3+3-1.  
THUẬT TOÁN "QUY 0 CƯỚC PHÍ CÁC Ô CHỌN"  
Định lý  
Nếu cộng vào hàng i và cột j của ma trận cước phí C=[cij] một số tùy ý ri và sj  
thì bài toán vận tải mới với ma trận cước phí mới C'=[c'ij=cij+ri+sj] thì phương án tối  
ưu của bài toán này cũng là phương án tối ưu của bài toán kia và ngược lại.  
Thuật toán "Quy 0 cước phí các ô chọn" gồm ba giai đoạn.  
Giai đoạn 1 : Quy 0 cước phí các ô chọn  
Sau khi xác định được phương án cơ bản có m+n-1 ô chọn, người ta cộng vào  
mỗi hàng i và mỗi cột j của ma trận cước phí C=[cij] một số ri và sj sao cho ma trận  
cước phí mới C' tại các ô chọn thỏa c'ij=cij+ri+sj=0.  
Tiếp tục ví dụ trên ta thấy :  
5
3
7
4
2
9
1
6
50 r1=6  
20  
60  
20  
r2=0  
11 10 r3=-4  
s1=-3  
s2=-2  
s3=-7  
Các giá trị cộng vào phải thỏa hệ phương trình :  
1 + r + s = 0  
⎧
1
3
⎪
3 + r2 + s1 = 0  
2 + r + s = 0  
⎪
⎪
⎨
⎪
⎪
2
2
7 + r3 + s1 = 0  
⎪
11 + r3 + s3 = 0  
⎩
Chọn r2=0 , giải hệ ta được kết quả trên  
Ma trận cước phí mới thu được là :  
8
8
0
50  
107  
Tải về để xem bản đầy đủ
pdf 33 trang Mãnh Khiết 15/01/2024 15640 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Quy hoạch tuyến tính - Chương IV: Ứng dụng quy hoạch tuyến tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_quy_hoach_tuyen_tinh_chuong_iv_ung_dung_quy_hoach.pdf