Xếp hàng cho vừa thùng xe khó vì số cách đặt các kiện tăng bùng nổ theo số kiện, trong khi mỗi cách đặt còn phải thoả cùng lúc nhiều điều kiện: nặng dưới nhẹ trên, đúng chiều mũi tên, đúng thứ tự giao, cân tải trọng. Giới toán học gọi dạng này là "bài toán xếp thùng" (bin packing) và đã chứng minh nó thuộc loại không có cách giải nhanh cho mọi trường hợp. Vì vậy cả người lẫn phần mềm đều xếp theo mẹo "đủ tốt", không đi tìm cách xếp hoàn hảo.
Một chuyến hàng có bao nhiêu cách xếp
Thử hình dung chỉ 10 thùng khác nhau. Riêng thứ tự đưa chúng lên xe đã có hơn ba triệu sáu trăm nghìn cách (10 giai thừa). Mỗi thùng lại có thể xoay theo vài hướng, đặt ở nhiều vị trí. Với 50 thùng, con số vượt xa khả năng thử hết của bất kỳ máy tính nào. Đó là lý do không ai xếp xe bằng cách "thử mọi khả năng rồi chọn cái tốt nhất".
Các nhà khoa học máy tính xếp bài toán này vào nhóm NP-khó. Nói theo kiểu người làm hàng: chưa ai tìm ra cách luôn đưa ra lời giải tối ưu trong thời gian hợp lý khi số kiện lớn. Phần toán học sâu hơn thuộc về chuyên ngành khác; ở đây chỉ cần nhớ hệ quả thực tế: xếp hàng là nghề của kinh nghiệm và quy tắc ngón tay cái.
Thùng xe thật khó hơn bài toán trên giấy
Bài toán xếp thùng trong sách thường chỉ hỏi: làm sao nhét vừa nhiều hộp nhất. Ngoài đời, mỗi kiện mang theo một danh sách điều kiện riêng:
| Điều kiện | Ví dụ | Làm khó ở chỗ nào |
|---|---|---|
| Trọng lượng | Thùng sách không được nằm trên thùng bánh | Cấm nhiều cách chồng |
| Chiều đặt | Tủ lạnh phải đứng, bình dầu phải ngửa nắp | Không được xoay tự do |
| Độ bền | Thùng carton mỏng chỉ chồng được hai tầng | Giới hạn chiều cao từng cột |
| Thứ tự giao | Kiện giao trước phải ở ngoài | Vị trí bị ràng buộc theo tuyến |
| Cân tải | Trái phải, trước sau phải đều | Cách xếp gọn nhất có thể lệch tải |
| Hàng kỵ nhau | Thực phẩm không cạnh hoá chất | Chia vùng trong thùng xe |
| Ổn định | Mỗi kiện phải có đủ chỗ đỡ bên dưới | Không được để kiện "treo" trên khe |
Một cách xếp đạt "nhét được nhiều nhất" có thể vi phạm vài điều kiện trên. Vì vậy trong thực tế, mục tiêu không phải lấp đầy tối đa, mà là lấp đủ nhiều trong khi vẫn an toàn và lấy hàng thuận tiện.
Những mẹo "đủ tốt" mà người bốc xếp dùng
To trước, nhỏ sau
Đặt kiện lớn nhất, nặng nhất trước, rồi lấp khe bằng kiện nhỏ dần. Đây cũng là ý tưởng của một cách giải gần đúng kinh điển trong tin học: sắp xếp các món giảm dần theo kích thước rồi lần lượt đặt vào chỗ đầu tiên còn vừa. Nó không bảo đảm tối ưu nhưng thường cho kết quả tốt.
Xếp theo lớp cùng chiều cao
Gom các kiện cao bằng nhau thành một lớp phẳng, rồi lớp sau đặt lên lớp trước. Mặt phẳng giúp tầng trên đứng vững và giúp nhìn ra khoảng trống ngay.
Gom cùng cỡ thành khối
Mười thùng giống hệt nhau xếp thành một khối chữ nhật luôn gọn hơn mười thùng rải rác. Trước khi lên xe, phân loại hàng theo kích thước là đã giải được một nửa bài toán.
Để kiện mềm làm vật lấp
Túi quần áo, gối, chăn đóng túi có thể biến hình để lấp khe. Đây là "tài sản" quý của người xếp hàng: để dành chúng tới cuối, đừng xếp chúng trước.
Nhìn từ cửa sau
Thỉnh thoảng lùi ra, nhìn cả thùng xe từ cửa sau. Mắt người phát hiện khoảng trống, chồng lệch và cột nghiêng nhanh hơn khi đang cúi đầu đặt từng thùng.
Một ví dụ: buổi sáng ở cửa kho
Một xe tải nhỏ nhận hàng cho tuyến buổi sáng: bốn thùng nước khoáng, hai thùng sơn, một tivi còn nguyên hộp, sáu thùng carton vừa đựng quần áo, một bao gạo, vài phong bì giấy tờ. Nếu đưa lên theo thứ tự hàng ra khỏi kho, rất có thể bao gạo nằm trên hộp tivi và thùng sơn chen giữa thùng quần áo.
Người xếp có kinh nghiệm sẽ làm khác. Trước hết tách hàng ra sàn thành nhóm: nặng chắc (nước, sơn, gạo), cồng kềnh dễ hỏng (tivi), mềm (quần áo), nhỏ (phong bì). Thùng nước và thùng sơn làm lớp đáy, sát thành trước, sơn đứng thẳng nắp lên và không đặt cạnh thùng thực phẩm nào. Bao gạo nằm ở góc, trên sàn. Hộp tivi đứng dựng sát một vách, mặt màn hình hướng vào vách, chằng giữ. Sáu thùng quần áo xếp thành khối, vừa che hông tivi vừa lấp khoảng còn lại. Phong bì vào túi để ở cabin. Rồi mới xét thứ tự giao để chỉnh vài vị trí.
Không ai tính toán gì phức tạp. Cái làm nên khác biệt là bước tách nhóm trước khi xếp, và thói quen hỏi mỗi kiện: nó chịu được gì, nó sợ gì.
Vì sao kích thước thùng chuẩn giúp nhiều đến vậy
Phần lớn cái khó đến từ việc các kiện khác cỡ nhau. Nếu mọi thùng đều là ước số của kích thước pallet hay thùng xe, việc xếp trở nên như ghép gạch. Đó là ý tưởng của hệ kích thước bao bì theo mô-đun: tiêu chuẩn ISO 3394 lấy mô-đun 600 × 400 mm làm gốc, chia ra các cỡ nhỏ hơn vừa khít với pallet 1200 × 800 và 1200 × 1000. Các siêu thị và nhà sản xuất lớn dùng thùng theo mô-đun để thùng của nhiều hãng vẫn xếp chung một pallet gọn gàng.
Với người bán online nhỏ, bài học là: dùng ít cỡ thùng, và chọn cỡ chia hết cho nhau. Ba cỡ thùng mà hai thùng nhỏ bằng một thùng vừa, hai thùng vừa bằng một thùng lớn sẽ dễ xếp hơn hẳn mười cỡ thùng lộn xộn mua lẻ.
Phần mềm xếp hàng làm được gì
Có những phần mềm lập kế hoạch đóng hàng cho container và xe tải: nhập kích thước, trọng lượng, điều kiện của từng loại kiện, phần mềm đề xuất cách xếp và vẽ sơ đồ ba chiều. Chúng dùng các thuật toán tìm lời giải gần đúng, chạy trong vài giây đến vài phút. Điểm mạnh là tính nhanh tỷ lệ lấp đầy, phát hiện trước khi nào cần thêm xe. Điểm yếu là kết quả chỉ đúng khi dữ liệu nhập đúng: thùng bị phồng, hàng không đều cỡ, thùng mềm lún xuống là những thứ phần mềm không thấy. Người bốc xếp vẫn là người quyết định cuối ở cửa xe.
Góc nhìn hôm nay: chấp nhận khoảng trống có lý do
Không thùng xe nào đầy một trăm phần trăm. Có khoảng trống bắt buộc: lối để lấy hàng, khoảng chừa cho hàng nhận thêm, khoảng giữa hàng kỵ nhau. Người làm lâu năm phân biệt được khoảng trống "có lý do" và khoảng trống "do lười". Loại thứ nhất được chèn túi khí hay chặn thanh ngang cho hàng khỏi xô. Loại thứ hai thì xếp lại.
Ai tò mò về phía toán học có thể tìm đọc phần "bin packing problem" trong các giáo trình thuật toán nhập môn. Còn với việc hằng ngày, hãy bắt đầu bằng một thói quen: phân loại hàng theo cỡ trước khi xếp. Đó là bước rẻ nhất mà đem lại nhiều chỗ nhất.
Câu hỏi thường gặp
Bài toán xếp thùng là gì?
Bài toán xếp thùng (bin packing) hỏi cách đặt nhiều vật có kích thước khác nhau vào ít thùng nhất hoặc vào một thùng sao cho gọn nhất. Nó thuộc loại bài toán khó, chưa có cách giải nhanh luôn tối ưu khi số vật lớn, nên thực tế dùng các cách giải gần đúng.
Vì sao không xếp được thùng xe đầy hoàn toàn?
Các kiện khác cỡ để lại khe, và còn nhiều điều kiện khác như nặng dưới nhẹ trên, thứ tự giao, cân tải trọng, hàng kỵ nhau. Ngoài ra phải chừa lối lấy hàng. Vì vậy luôn có một phần khoảng trống cần chèn lót chứ không lấp được hoàn toàn.
Mẹo xếp hàng nhanh và gọn là gì?
Phân loại hàng theo cỡ, đặt kiện lớn và nặng trước, gom kiện cùng chiều cao thành lớp phẳng, để kiện mềm làm vật lấp khe cuối cùng. Thỉnh thoảng lùi ra nhìn từ cửa sau để phát hiện khoảng trống và chồng lệch.
Phần mềm xếp container có chính xác không?
Phần mềm cho cách xếp gần đúng khá tốt và tính nhanh tỷ lệ lấp đầy, nhưng chỉ chính xác khi kích thước và trọng lượng nhập vào đúng. Thùng phồng, hàng mềm lún hay sai lệch kích thước thì người xếp phải điều chỉnh tại chỗ.