Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải

Cùng với sự phát triển mạnh mẽ của nền kinh tế và giao thương hàng

hóa hiện nay, ngành vận tải cũng đang có những bước tiến vượt bậc về

cả số lượng và chất lượng. Một trong những yếu tố quan trọng ảnh

hưởng đến năng suất của quá trình vận tải chính là quá trình đóng gói

và điều phối hàng hóa vào các phương tiện vận chuyển một cách phù

hợp. Trong bài báo này chúng tôi trình bày về bài toán Bin Packing 2D

và các lĩnh vực ứng dụng bài toán. Bin Packing là dạng bài toán đóng

thùng sao cho tất cả các đồ vật có thể tích khác nhau được đóng gói

vào số lượng thùng sử dụng là ít nhất. Để trả lời cho câu hỏi này, bài

báo này đã nghiên cứu về một số phương pháp đã từng sử dụng thông

qua việc khảo cứu và tổng hợp dựa trên các bài báo của các nhà xuất

bản uy tín để lọc ra các bài báo gốc và các bài có ảnh hưởng nhất để

khảo sát và phân tích. Bài báo đã đưa ra các ưu nhược điểm trong từng

phương pháp và đề xuất hướng phát triển trong tương lai.

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 1

Trang 1

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 2

Trang 2

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 3

Trang 3

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 4

Trang 4

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 5

Trang 5

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 6

Trang 6

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 7

Trang 7

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 8

Trang 8

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải trang 9

Trang 9

pdf 9 trang xuanhieu 980
Bạn đang xem tài liệu "Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải

Về bài toán Bin Packing 2D và ứng dụng trong vận tải hàng hải
 chiều (d là một số nguyên dương, d ≥ 1), có các thùng chứa là 
các siêu cúp d chiều kích thước là BBB12, ,...,d ) và dãy các đồ vật a12, a ,..., an , trong đó đồ vật ai 
có kích thước là s1(ai) × s2(ai) ×  × sd(ai). sj(ai) là kích thước chiều thứ j của đồ vật ai; 0 < sj(ai) 
≤ Bj; 1 ≤ i ≤ n; 1 ≤ j ≤ d. 
 Một cách xếp các đồ vật gọi là hợp lệ nếu mỗi đồ vật ai sẽ được gán một vector tọa độ p(ai) = 
(x1(ai), x2(ai),, xd(ai)) sao cho: 
 (1) xj(ai) ≥ 0 ; 1 ≤ i ≤ n; 1 ≤ j ≤ d. 
 (2) xj(ai) + sj(ai) ≤ Bj ; 1 ≤ i ≤ n; 1 ≤ j ≤ d. 
 (3) (xj(ai); xj(ai) + sj(ai)) ∩ (xj(ak); xj(ak) + sj(ak)) = ∅; 1 ≤ i ≠ k ≤ n; 1 ≤ j ≤ d 
 Điều kiện (1) và (2): tất cả các đồ vật đều nằm gọn trong không gian của thùng chứa. 
 Điều kiện (3): trong mọi thùng chứa, các đồ vật không được xếp chồng lên nhau. 
 Các điều kiện trên áp dụng với bài toán đóng thùng đa chiều hình học (geometric multi-
dimension bin packing), tức là mỗi chiều kích thước là một chiều không gian. Nếu mỗi chiều kích 
thước không phải là một chiều không gian, ví dụ chiều thứ nhất biểu diễn độ dài, chiều thứ 2 biểu 
diễn khối lượng, chiều thứ 3 biểu diễn thời gian, thì điều kiện ràng buộc chỉ là tổng kích thước 
các đồ vật theo một chiều sẽ không vượt quá dung lượng chiều đó của thùng chứa: 
 n
 si ( ai ) = B , j 1, d
 j=1
 Yêu cầu của bài toán là hãy xếp các đồ vật hợp lệ sao cho số lượng thùng cần sử dụng là ít nhất. 
 Dễ thấy với d = 1 thì bài toán suy biến về bài toán đóng thùng dạng cơ bản. 
2.1.3. Ứng dụng của bài toán đóng thùng 
 Không chỉ đóng vai trò quan trọng trong nghiên cứu lý thuyết, đặc biệt là các nghiên cứu về 
thuật toán xấp xỉ, bài toán đóng thùng còn có nhiều ứng dụng trong thực tiễn. 
 Dưới đây là một số ứng dụng trong đó bài toán đóng thùng đóng vai trò là bài toán chính: 
 1) Bài toán xẻ gỗ (stock cutting): Cho các miếng gỗ xẻ nguyên tấm có chiều ngang cố định và 
chiều dài giống nhau bằng C. Cần chia các miếng gỗ xẻ nguyên tấm đó thành các mẩu nhỏ {ai} 
hơn dùng để làm nhà. Hãy cưa các miếng gỗ nguyên tấm đó thành các mẩu {ai} sao cho số 
miếng gỗ nguyên tấm phải dùng là ít nhất. Cũng thấy dạng tương tự khi phải chia các cuộn dây 
cáp, ống dẫn nước nguyên vẹn,... thành các đoạn nhỏ để lắp đặt cho một hệ thống nào đó và cần 
chia khéo sao cho đỡ lãng phí nhất. 
 2) Lưu dữ liệu trên máy tính (memory allocation): Các dữ liệu là một tập hợp các file cần 
được lưu trên một tập hợp các thiết bị nhớ giống nhau (đĩa CD, đĩa cứng, đĩa mềm, hoặc bộ nhớ 
bán dẫn USB,...). Cần phải lưu các file trên các thiết bị nhớ sao cho 1 file chỉ được nằm trong 1 
thiết bị nhớ và số thiết bị nhớ cần dùng là ít nhất. 
 3) Bài toán vận tải (transportation): Cần xếp một dãy các đồ vật (đồ đạc, hàng hóa,...) {ai} 
lên các phương tiện vận tải (xe tải, toa xe lửa,...). Biết rằng mỗi đồ vật có kích thước (3 chiều) và 
trọng lượng xác định. Các phương tiện vận tải là giống nhau có cùng sức chứa và trọng tải xác 
định. Cần xếp các đồ vật lên các phương tiện vận tải sao cho số phương tiện cần dùng là ít nhất 
mà vẫn đảm bảo các đồ vật đều nằm gọn trong khoang chứa và tổng trọng lượng của chúng 
không vượt quá trọng tải của phương tiện vận tải. Bài toán này có thể quy về bài toán đóng thùng 
4 chiều với 3 chiều đầu là 3 chiều không gian, chiều thứ 4 là trọng lượng. 
 230 Email: jst@tnu.edu.vn 
 TNU Journal of Science and Technology 226(07): 226 - 234 
 4) Xếp lịch chương trình truyền hình (television programming): thông thường các mẩu chương 
trình quảng cáo được xếp vào các khoảng thời gian xen kẽ trong các chương trình truyền hình chính. 
Các khoảng thời gian này có độ dài cố định (ví dụ 5 phút). Yêu cầu là hãy xếp các mẩu quảng cáo vào 
những khoảng thời gian này sao cho số khoảng thời gian cần sử dụng là ít nhất. 
 Ngoài ra trong một số ứng dụng, bài toán đóng thùng đóng vai trò là bài toán phụ hỗ trợ việc 
giải tối ưu bài toán chính, ví dụ bài toán lập lộ trình vận chuyển có hạn chế khả năng (capacitated 
vehicle routing problem) trong đó phải bố trí các xe chở hàng có trọng tải hữu hạn đi chuyển 
hàng cho các vị khách sao cho mọi khách hàng đều nhận được hàng theo đơn đặt hàng và chi phí 
vận chuyển là thấp nhất. Thông thường đội xe sẽ chia thành các nhóm nhỏ, mỗi nhóm gồm một 
vài xe đi phục vụ theo một tuyến đường. Trên mỗi tuyến đường, cần xếp các hàng hóa của các vị 
khách trên tuyến đường đó lên các xe sao cho số xe trong nhóm cần dùng là ít nhất. Đó chính là 
bài toán đóng thùng. 
2.2. Tổng quan các phương pháp giải bài toán đóng thùng 
 Bài toán đóng thùng là một bài toán tối ưu tổ hợp nổi tiếng và có nhiều thuật toán để giải, đặc 
biệt là các thuật toán xấp xỉ. Bài toán đóng thùng đóng vai trò quan trọng trong việc nghiên cứu 
các thuật toán xấp xỉ khi được chọn là một trong những bài toán đầu tiên để nghiên cứu xây dựng 
các thuật toán xấp xỉ và đánh giá hiệu năng của chúng, ví dụ như đánh giá hiệu quả thuật toán 
xấp xỉ trong thời gian tồi nhất, đánh giá cận dưới cho hiệu năng các thuật toán tức thì (online 
algorithms), phân tích hiệu năng thuật toán dựa trên xác xuất thống kê, 
 Phần dưới đây sẽ trình bày một số thuật toán quan trọng để giải bài toán đóng thùng, qua đó 
giới thiệu được phần nào các kết quả nghiên cứu hiện nay về bài toán đóng thùng. 
2.2.1. Các thuật toán trực tiếp 
2.2.1.1. Khái niệm thuật toán trực tiếp 
 Một thuật toán được gọi là thuật toán trực tiếp (online algorithm) khi nó phải thực hiện xếp đồ 
vật đang xét vào thùng chứa mà không được biết bất kì thông tin gì về các đồ vật xuất hiện sau 
nó. Đây là một ràng buộc thường gặp trong thực tế, ví dụ như người bán hàng thì không biết 
khách hàng tiếp theo sẽ có yêu cầu như thế nào. 
 Các thuật toán online phổ biến bao gồm Next Fit, First Fit và Best Fit. 
2.2.1.2. Thuật toán Next Fit 
 Mô tả quy tắc xếp các đồ vật của Next Fit (NF) 
 NF sẽ đặt đồ vật đang xét vào ngay thùng đang mở (trong NF có 1 và chỉ 1 thùng được mở tại 
một thời điểm) và cũng là thùng tiếp nhận đồ vật vừa được xét gần đây nhất nếu như thùng đó 
còn đủ chỗ trống. Ngược lại, nó sẽ đóng thùng đó lại, mở thùng mới rồi đặt đồ vật vào đó. Sau đó 
tiếp tục xét đến đồ vật tiếp theo. Quá trình bắt đầu với đồ vật đầu tiên và kết thúc khi tất cả các đồ 
vật đều đã được xếp hết vào thùng. 
 Next Fit có thể được mô tả bằng đoạn giả ngôn ngữ sau: 
 bin_index = 1; // chỉ số cho biết đã có bao nhiêu thùng đã được sử dụng item_index = 1; 
 // chỉ số cho biết đang xét đồ vật thứ bao nhiêu 
 Open B[bin_index]; // mở thùng đầu tiên để tiếp nhận đồ vật active_bin = B[bin_index]; 
 // B[] là một mảng chứa các thùng được sử dụng trong thuật toán while (item_index <= n) 
 { 
 active_item = a[item_index]; 
 if (Size(active_item) <= FreeSize(active_bin)) Pack active_item into active_bin; 
 else{ 
 Close active_bin; bin_index ++; Open B[bin_index]; 
 active_bin = B[bin_index]; 
 231 Email: jst@tnu.edu.vn 
 TNU Journal of Science and Technology 226(07): 226 - 234 
 Pack active_item into active_bin; 
 } 
 item_index++; } // while 
 Dễ thấy NF có độ phức tạp tính toán là O(n). 
2.2.1.3. Thuật toán First Fit 
 Mô tả quy tắc xếp đồ vật của First Fit (FF): 
 Thuật toán FF sẽ xếp đồ vật đang xét vào thùng đầu tiên (tức là thùng có chỉ số nhỏ nhất) 
trong số những thùng đã mở và còn đủ chỗ để chứa đồ vật đó. Nếu trong số những thùng đã mở 
không có thùng nào còn đủ chỗ trống để xếp đồ vật đang xét thì FF sẽ mở một thùng mới và đặt 
đồ vật vào đó. Sau đó chuyển sang xét đồ vật tiếp theo. Quá trình đóng thùng kết thúc khi đã xếp 
hết tất cả các đồ vật vào thùng chứa. Dễ thấy FF không đóng một thùng nào và số lượng thùng ở 
trạng thái hoạt động là không cố định. 
 Đoạn giả ngôn ngữ sau mô tả hoạt động của FF: 
 bin_index = 1; // chỉ số cho biết đã có bao nhiêu thùng đã được sử dụng item_index = 1; 
 // chỉ số cho biết đang xét đồ vật thứ bao nhiêu Open B[bin_index]; 
 // mở thùng đầu tiên để tiếp nhận đồ vật 
 // B[] là một mảng chứa các thùng được sử dụng trong thuật toán while (item_index <= n) 
 { 
 test = false; count = 1; do{ 
 if (Size(a[item_index] <= FreeSize(B[count]){ 
 Pack a[item_index] into B[count]; test = true; 
 }else count++; 
 }while (test = = false) && (count <= bin_index); if (test = = false){ 
 bin_index ++; Open B[bin_index]; 
 Pack a[item_index] into B[bin_index]; 
 } 
 item_index++; 
 } 
 Độ phức tạp tính toán của thuật toán FF là O(nlogn). 
2.2.1.4. Thuật toán Best Fit 
 Mô tả xếp đồ vật 
 Quy tắc đóng thùng của Best Fit (BF) khá đơn giản, BF sẽ xếp đồ vật đang xét vào thùng còn 
ít chỗ trống nhất trong số những thùng đã mở và còn đủ chỗ trống để tiếp nhận đồ vật. Nếu không 
có thùng đã mở nào có đủ chỗ để tiếp nhận đồ vật đang xét, BF sẽ mở một thùng mới và đặt đồ 
vật vào đó. Sau đó chuyển sang xét thùng tiếp theo. Quá trình kết thúc khi tất cả các đồ vật đều 
đã được xếp hết vào thùng. Như vậy BF ưu tiên tìm thùng “vừa vặn” (fit) với đồ vật nhất. 
 BF có thể được mô tả qua đoạn giả ngôn ngữ sau:: 
 bin_index = 1; // chỉ số cho biết đã có bao nhiêu thùng đã được sử dụng item_index = 1; 
 // chỉ số cho biết đang xét đồ vật thứ bao nhiêu Open B[bin_index]; 
 // mở thùng đầu tiên để tiếp nhận đồ vật 
 // B[] là một mảng chứa các thùng được sử dụng trong thuật toán while (item_index <= n) 
 { 
 index = bin_index + 1; 
 fit = 1 – Size(a[item_index]); for(j = 1; j<=bin_index; j++){ 
 temp = FreeSize(B[j]) – Size(a[item_index]); if (0 <= temp) && (temp < fit){ 
 fit = temp; index = j; 
 } 
 } 
 232 Email: jst@tnu.edu.vn 
 TNU Journal of Science and Technology 226(07): 226 - 234 
 if (index < bin_index + 1) 
 Pack a[item_index] into B[index]; 
 else{ 
 bin_index ++; 
 Open B[bin_index]; 
 Pack a[item_index] into B[bin_index]; 
 } 
 item_index++; 
 } 
 Thuật toán BF đã được chứng minh là có hiệu quả tương đương với FF. 
 Ngoài các thuật toán NF, BF và FF vừa đề cập ở trên, còn có một số thuật toán online khác 
như Group- X Fit (GXF), thuật toán First Fit cải tiến (Refined First Fit), Tuy nhiên chúng tôi 
sẽ không trình bày những thuật toán này ở đây. 
2.2.2. Các phương pháp không trực tiếp: First Fit Decreasing và Best Fit Decreasing 
 Khác với ràng buộc trong các thuật toán online, trong thuật toán không trực tiếp (off-line 
algorithm), được biết trước toàn bộ danh sách các đồ vật trước khi xếp chúng vào thùng và điều 
này cho phép thực hiện một số thao tác tiền xử lý để nâng cao hiệu quả công việc. 
 Mục này sẽ đề cập đến 2 thuật toán off-line phổ biến và cũng rất hiệu quả là First Fit 
Decreasing (FFD) và Best Fit Decreasing (BFD). Về cơ chế hoạt động của FFD và BFD thì rất 
đơn giản, chỉ việc sắp xếp dãy các đồ vật cho trước theo thứ tự giảm dần về kích thước, sau đó áp 
dụng thuật toán online tương ứng (FF cho FFD hoặc BF cho BFD) để xếp các đồ vật vào thùng. 
 Chi phí thời gian cho FFD và BFD đều là Ω( nlogn), bởi vì việc sắp xếp theo chiều tăng dần 
về kích thước dãy n đồ vật cần thời gian là Ω (nlogn), còn việc xếp các đồ vật vào thùng theo quy 
tắc BF hoặc FF đều cùng yêu cầu thời gian là O(nlogn) như đã nói ở phần trước. 
3. Kết quả và bàn luận 
 Vấn đề tối ưu trong ngành vận tải ngày càng được nhiều nhà khoa học quan tâm nghiên cứu, điều 
đó giúp thúc đẩy quá trình lưu thông hàng hóa, tiết kiệm được chi phí vận chuyển cho các doanh 
nghiệp vận tải. Trong bài báo này, chúng tôi đã đưa ra vấn đề tối ưu trong quá trình vận tải, cụ thể là 
tối ưu sắp xếp trong bài toán Bin Packing 2D và các lĩnh vực ứng dụng của bài toán. Bài toán Bin 
Packing 2D là bài toán tối ưu tổ hợp có độ phức tạp cao, có nhiều thuật toán để giải, đặc biệt là các 
thuật toán xấp xỉ. Trong đó chúng tôi đã đưa ra một số hướng để giải quyết bài toán này: Các thuật 
toán trực tiếp (Next Fit, First Fit và Best Fit), các phương pháp không trực tiếp (First Fit Decreasing, 
Best Fit Decreasing), cũng như giả ngôn ngữ và đánh giá độ phức tạp của các thuật toán. 
 Đối với bài toán tối ưu sắp xếp container tại cảng biển có thể quy về bài toán Bin Packing 2D, 
trong đó chính là quá trình tối ưu sắp xếp container tại kho bãi. Khi có một đoàn tàu chở hàng cập 
cảng, sau khi hoàn thành các thủ tục hành chính được tiến hành bốc dỡ hàng hoá. Hàng hoá rất đa 
dạng bao gồm các sản phẩm xuất nhập khẩu như các sản phẩm công - nông nghiệp, các sản phẩm 
điện tử - điện lạnh,... Hàng được chứa trong các container hàng, có các đặc tính như kích thước, 
trọng lượng, tính chất,... riêng. Sau đó, các container hàng sẽ được các cần trục bốc lên các xe 
chở hàng chuyên dụng và sắp xếp vào kho hàng (sân bãi) theo từng khu vực riêng biệt, tuỳ thuộc 
vào đặc tính. Tiếp theo, dựa vào nhu cầu của tàu hàng mà các container hàng xuất sẽ được lấy ra 
và sắp xếp lên tàu. Mặt khác, một số lượng lớn container hàng sẽ được cho lên các xe đầu kéo (xe 
ôtô container) để chuyển hàng đi trên đất liền. Do đó bài toán tối ưu sắp xếp container tại cảng 
biển cũng là một vấn đề đáng được quan tâm nghiên cứu. 
4. Kết luận 
 Trong nghiên cứu này chúng tôi nêu và giải quyết bài toán Bin Packing 2D bằng các phương 
pháp xấp xỉ. Tuy nhiên trong thực tế còn một số hướng nghiên cứu và giải quyết với nhiều 
 233 Email: jst@tnu.edu.vn 
 TNU Journal of Science and Technology 226(07): 226 - 234 
phương pháp khác như sử dụng tính toán mềm, sử dụng tính toán tiến hóa, giải thuật di truyền, 
Đây là những hướng quan tâm nghiên cứu trong thời gian sắp tới. 
 Mặt khác, trong bài báo mới chỉ đưa ra và giải quyết bài toán Bin Packing 2D, trong thời gian 
tới chúng tôi sẽ nghiên cứu và giải quyết bài toán Bin Packing 3D [6]. Đây là bài toán tối ưu với 
không gian 3 chiều, với độ phức tạp tính toán lớn. Lời giải của bài toán này nhằm áp dụng cho 
bài toán tối ưu sắp xếp container tại cảng biển. 
Lời cám ơn 
 Nghiên cứu này được tài trợ bởi Trường Đại học Công nghệ Thông tin và Truyền thông – Đại 
học Thái Nguyên trong đề tài mã số T2020-07-18. 
 TÀI LIỆU THAM KHẢO/ REFERENCES 
[1] D. Topolšek, K. Čižiūnienė, and T. C. Ojsteršek, “Defining transport logistics: a literature review and 
 practitioner opinion based approach,” Transport, vol. 33, no. 5, pp. 1196-1203, 2018. 
[2] T. E. Notteboom, “Container shipping and ports: an overview,” Review of network economics, vol. 3, 
 no. 2, pp. 86-106, 2004. 
[3] J. F. Gonçalves and M. G. Resende, “A biased random key genetic algorithm for 2D and 3D bin 
 packing problems,” International Journal of Production Economics, vol. 145, no. 2, pp. 500-510, 
 2013. 
[4] N. Kemme, Design and operation of automated container storage systems. Springer Science & 
 Business Media, 2012. 
[5] C. Blum and V. Schmid, “Solving the 2D bin packing problem by means of a hybrid evolutionary 
 algorithm,” Procedia Computer Science, vol. 18, pp. 899-908, 2013. 
[6] Y. Wu, W. Li, M. Goh, and R. de Souza, “Three-dimensional bin packing problem with variable bin 
 height,” European journal of operational research, vol. 202, no. 2, pp. 347-355, 2010. 
 234 Email: jst@tnu.edu.vn 

File đính kèm:

  • pdfve_bai_toan_bin_packing_2d_va_ung_dung_trong_van_tai_hang_ha.pdf