Thuật toán giải bài toán vận tải không cân bằng thu phát trường hợp cung lớn hơn cầu: Trong thực tế ta hay gặp các bài toán vận tải mà lượng hàng ở các kho ( trạm phát ) nhiều hơn lượng hàng ở nơi nhận ( trạm thu ), tức là ∑ai > ∑bj Để giải bài toán dạng này ta thực hiện các bước sau: Bước 1 : thêm 1 cột ( trạm thu giả ) thứ n+1 để nhận lượng hàng thừa là bn+1 = ∑ai ∑bj với cước phí vận chuyển ở các ô trong cột bằng 0 cin+1 = 0 Lúc này bài toán cân bằng thu phát. Bước 2 : thành lập phường án cực biên ban đầu bằng một trong các phương pháp : min cước phí, góc Tây – Bắc, Vogel ( nên sử dụng phương pháp Vogel vì phương pháp này cho một phương án cực biên rất gần với phương án tối ưu). Xét xem phương án cực biên đó có suy biến hay không ( không suy biến nếu có m + n – 1 ô chọn ). Nếu suy biến ( ít hơn m + n – 1 ô chọn ) thì ta thêm ô chọn giả với lượng hàng bằng 0 sao cho ô chọn giả này và các ô chọn ban đầu không tạo thành chu trình. Bước 3 : xét xem phương án cực biên hiện giờ có tối ưu hay chưa bằng thuật toán quy không cước phí các ô chọn : Với các ô chọn ( i , j ) có cước phí là ci,j ta cộng vào dòng i số ui và cột j số vj sao cho ci,j = ui + vj Thay tất cả cước phí ci,j trong bảng vận tải bởi cước phí mới c’i,j = ci,j ( ui + vj ) nếu cij ≥ 0 với mọi ( i ,j ) thì đây là phương án tối ưu cần tìm ( loại bỏ cột thêm vào ). Nếu chưa tối ưu thì sang bước tiếp theo. Bước 4 : xây dựng phương án cực biên mới tốt hơn Tìm ô vào ( i, j ) là ô có cước phí c’i, j âm nhỏ nhất. Xác định chu trình chứa ô ( i, j ), ô ( i, j ) được dấu (+), các ô chọn còn lại trên chu trình đánh dấu xen kẽ dấu (), (+) với ô ( i, j ). Tìm ô ra ( i0, j0 ) là một trong cố các ô chọn trên chu trình thoả Min { xi,j | ( i , j ) có dấu () } = x i0, j0 = q q là lượng điều chỉnh. Phương án cực biên mới : x’i,j = {█(x_(i,j ) + q ô có dấu (+) x_(i,j) q ô có dấu ()x_(i,j) ô không có dấu)┤ Bước 5 : quay về bước 3. VÍ DỤ : Hãy xác định số thùng mì ăn liền cần chuyển từ kho của công ty VINA ACECOOK đến các siêu thị và đại lý bán lẻ sao cho tổng chi phí vận chuyển là thấp nhất ( min hàm mục tiêu cước phí ) với các số liệu cụ thể lượng hàng từng kho và nhu cầu của các nơi tiêu thụ cho trong bảng sau :
Trang 1Thuật toán giải bài toán vận tải không cân bằng thu phát trường hợp cung lớn hơn cầu:
Trong thực tế ta hay gặp các bài toán vận tải mà lượng hàng ở các kho ( trạm phát ) nhiều hơn lượng hàng ở nơi nhận ( trạm thu ), tức là
∑ai > ∑bj
Để giải bài toán dạng này ta thực hiện các bước sau:
bn+1 = ∑ai - ∑bj
với cước phí vận chuyển ở các ô trong cột bằng 0
cin+1 = 0
Lúc này bài toán cân bằng thu phát
min cước phí, góc Tây – Bắc, Vogel ( nên sử dụng phương pháp Vogel vì phương pháp này cho một phương án cực biên rất gần với phương án tối ưu) Xét xem phương
án cực biên đó có suy biến hay không ( không suy biến nếu có m + n – 1 ô chọn ) Nếu suy biến ( ít hơn m + n – 1 ô chọn ) thì ta thêm ô chọn giả với lượng hàng bằng 0 sao cho ô chọn giả này và các ô chọn ban đầu không tạo thành chu trình
không cước phí các ô chọn :
Với các ô chọn ( i , j ) có cước phí là ci,j ta cộng vào dòng i số ui và cột j
số vj sao cho ci,j = ui + vj
Thay tất cả cước phí ci,j trong bảng vận tải bởi cước phí mới
c’i,j = ci,j - ( ui + vj )
Trang 2 nếu cij ≥ 0 với mọi ( i ,j ) thì đây là phương án tối ưu cần tìm ( loại bỏ cột thêm vào ) Nếu chưa tối ưu thì sang bước tiếp theo
Tìm ô vào ( i*, j* ) là ô có cước phí c’i*, j* âm nhỏ nhất
Xác định chu trình chứa ô ( i*, j* ), ô ( i*, j* ) được dấu (+), các ô chọn còn lại trên chu trình đánh dấu xen kẽ dấu (-), (+) với ô ( i*, j* )
Tìm ô ra ( i0, j0 ) là một trong cố các ô chọn trên chu trình thoả
Min { xi,j | ( i , j ) có dấu (-) } = x i0, j0 = q
q là lượng điều chỉnh.
Phương án cực biên mới :
x’i,j = ¿
VÍ DỤ : Hãy xác định số thùng mì ăn liền cần chuyển từ kho của công ty VINA
ACECOOK đến các siêu thị và đại lý bán lẻ sao cho tổng chi phí vận chuyển là thấp nhất ( min hàm mục tiêu cước phí ) với các số liệu cụ thể lượng hàng từng kho và nhu cầu của các nơi tiêu thụ cho trong bảng sau :
B1 B2 B3
bj
Trang 3Trong đó :
ai : là kho ( trạm phát ) cung cấp mì gói và số thùng mì mỗi kho chứa
bj : là nơi tiêu thụ ( trạm thu ) và số thùng mì cần ở mỗi nơi
ci,j = { 12, 7, 14, 3, 5, 7, 8, 9 } là chi phí vận chuyển 1 thùng mì ( ngàn đồng ) từ kho i đến nơi j
Tính tổng chi phí vận chuyển thấp nhất mà công ty phải trả khi giao hàng
GIẢI
Nhận xét : ta thấy tổng thùng mì chứa trong các kho nhiều hơn tổng thùng mì các nơi tiêu thụ cần
∑ai = 400 > ∑bj = 360
Bài toán không cân bằng thu phát
Ta tiến hành giải theo các bước sau :
B4 = ∑ai - ∑bj = 40
với cước phí vận chuyển ở các ô trong cột bằng 0
c4 = 0
B1 B2 B3 B4
bj
Trang 4A2 150 3 5 7 0
Lúc này bài toán cân bằng thu phát
pháp này cho một phương án cực biên rất gần với phương án tối ưu)
bj
150 3
135
3 130
40
8
bj
150 3
135
5 15
7
0
3
Trang 58 9
90
9 0
40
8
Phương án cực biên tìm được
bj
120
20
14 100
0
150 3
135
5 15
7
0
130
8 9
90
9 0
40
Phương án cực biên này có m + n – 1 = 6 ô chọn => không suy biến
không cước phí các ô chọn :
bj
120
20
14 100
0
0
Trang 6
135 15 130
8 9
90
9 0
40
2
Bảng cước phí mới :
c’i,j = ci,j - ( ui + vj )
bj
120
20
0 100
2
150
0 135
0 15
-5
4
130
1 0
90
-7 0
40
Vì c’2,3 , c’3,3 < 0 nên phương án chưa phải phương án tối ưu
Tìm ô vào ( 3, 3 ) là ô có cước phí c’3,3 âm nhỏ nhất
bj
120
20
0 100
2
Trang 7
135 15 130
1 0
90
-7 0
40
Xác định chu trình chứa ô ( 3, 3 ), ô ( 3, 3 ) được dấu (+), các ô chọn còn lại trên chu trình đánh dấu xen kẽ dấu (-), (+) với ô ( 3, 3 )
bj
120 7 0 (+)
20
0 (-) 100
2
150
0 135
0 15
-5
4
130
1 0
(-) 90
-7 (+)
0 40
Tìm ô ra ( 3, 2 ) là một trong cố các ô chọn trên chu trình thoả
Min { x3,2 | ( 3 , 2 ) có dấu (-) } = x 3, 2 = 90
90 là lượng điều chỉnh.
bj
120 7 0 (+) 0 (-) 2
Trang 820 100 150
0 135
0 15
-5
4
130
1 0
(-) 90
-7 (+)
0 40
Phương án cực biên mới :
x’i,j = ¿
bj
110
14 10
0
150
3 135
5 15
130
8 9 9
90
0 40
không cước phí các ô chọn :
bj
110
14 10
0
0 150
3 135
5 15
-2
Trang 98 9 9
90
0 40
-5
Bảng cước phí mới :
c’i,j = ci,j - ( ui + vj )
bj
120
110
0 10
-5
150 0
135
0 15
130
8 7 0
90
0 40
Vì c’2,3 , c’2,4 , c’1,4 < 0 nên phương án chưa phải phương án tối ưu
Tìm ô vào ( 2, 3 ) là ô có cước phí c’2,3 âm nhỏ nhất
Giải thích lý do chọn ô ( 2, 3 ) thay vì chọn ô ( 1,4 ) là ô vào : vì sau khi xây dựng phương án cực biên mới tốt hơn, ô vào ban đầu là ô loại và có dấu (+) nên cộng vào lượng q và trở thành ô chọn, cả hai ô ( 2,3 ) và ô (1,4 ) đều có c’ = -5 nhưng vì ô ( 1,4 ) là nằm ở trạm thu giả mà ta thêm vào ban đầu nên việc thay đổi lượng hàng giữa các ô trong cột 4 không ảnh hưởng đến tổng cước phí mà ta cần tìm, vì vậy nên chọn ô ( 2,3 ) là ô vào để tìm phương án cực biên mới tốt hơn khi thay đổi lượng hàng và ô chọn ở các trạm thu 1, 2 và 3 là những trạm thu thực tế cần quan tâm.
Trang 10110
0 10
-5
150 0
135
0 15
130
90
0 40
Xác định chu trình chứa ô ( 3, 3 ), ô ( 3, 3 ) được dấu (+), các ô chọn còn lại trên chu trình đánh dấu xen kẽ dấu (-), (+) với ô ( 3, 3 )
bj
120
(+) 110
0 (-) 10
-5
150 0
135
0 (-) 15
-5 (+)
-3
130
90
0 40
Tìm ô ra ( 1, 3 ) là một trong cố các ô chọn trên chu trình thoả
Min { x1,3 | ( 1 , 3 ) có dấu (-) } = x 1, 3 = 10
10 là lượng điều chỉnh.
bj
Trang 11(+) 110
0 (-) 10
-5
150 0
135
0 (-) 15
-5 (+)
-3
130
90
0 40
Phương án cực biên mới :
x’i,j = ¿
bj
120
120
14
0
150 3
135
5 5
7 10
0
130
8 9 9
90
0 40
toán quy không cước phí các ô chọn :
bj
120
14
0
2
Trang 123 135
5 5
7 10
0
0
130
8 9 9
90
0 40
2
Bảng cước phí mới :
c’i,j = ci,j - ( ui + vj )
bj
120
120
5
0
150 3
135
5 5
7 10
2
130
90
0 40
Vì c’i,j ≥ 0 với mọi ( i , j ) nên phương án cực biên này là phương án tối ưu
Vậy phương án tối ưu cần tìm của bài toán là ( đã bỏ trạm thu giả ) :
bj
120
14
150 3 5 7
Trang 13
135 5 10 130
8 9 9
90
Tổng chi phí thấp nhất mà công ty VINA ACECOOK phải trả để giao hàng đến nơi tiêu thụ là :
f(x) = ∑∑ ci,j xi,j
= 7 × 120 + 3 × 135 + 5 × 5 + 7 × 10 + 9 × 90 = 2150 ( ngàn đồng )