Abstract
In the Single Container Loading Problem, the aim is to pack three-dimensional boxes into a three-dimensional container so as to maximize the volume utilization of the container. Many recently successful techniques for this problem share a similar structure involving the use of blocks of boxes. However, each technique comprises several seemingly disparate parts, which makes it difficult to analyze these techniques in a systematic manner. By dissecting block building approaches into 6 common elements, we found that existing techniques only differ in the strategies used for each element. This allows us to better understand these algorithms and identify their effective strategies. We then combine those effective strategies into a greedy heuristic for the SCLP problem. Computational experiments on 1,600 commonly used test cases show that our approach outperforms all other existing single-threaded approaches, and is comparable to the best parallel approach to the SCLP. It demonstrates the usefulness of our component-based analysis in the design of block building algorithms.
Similar content being viewed by others
References
Bischoff EE (2006) Three-dimensional packing of items with limited load bearing strength. Eur J Oper Res 168(3):952–966. doi:10.1016/j.ejor.2004.04.037
Bischoff EE, Ratcliff MSW (1995) Issues in the development of approaches to container loading. OMEGA Int J Manag Sci 23(4):377–390. doi:10.1016/0305-0483(95)00015-G
Bortfeldt A, Gehring H (2001) A hybrid genetic algorithm for the container loading problem. Eur J Oper Res 131(1):143–161. doi:10.1016/S0377-2217(00)00055-2
Bortfeldt A, Gehring H, Mack D (2003) A parallel tabu search algorithm for solving the container loading problem. Parallel Comput 29(5):641–662. doi:10.1016/S0167-8191(03)00047-4
Che CH, Huang W, Lim A, Zhu W (2011) The multiple container loading cost minimization problem. Eur J Oper Res 214(3):501–511. doi:10.1016/j.ejor.2011.04.017,
Chien CF, Wu WT (1998) A recursive computational procedure for container loading. Comput Ind Eng 35(1–2):319–322. doi:10.1016/S0360-8352(98)00084-9
Davies AP, Bischoff EE (1999) Weight distribution considerations in container loading. Eur J Oper Res 114(3):509–527. doi:10.1016/S0377-2217(98)00139-8
Dyckhoff H, Finke U (1992) Cutting and packing in production and distribution: a typology and bibliography, 1st edn. Contributions to management science. Physica-Verlag, Heidelberg
Eley M (2002) Solving container loading problems by block arrangement. Eur J Oper Res 141(2):393–409. doi:10.1016/S0377-2217(02)00133-9
Fanslau T, Bortfeldt A (2010) A tree search algorithm for solving the container loading problem. INFORMS J Comput 22(2):222–235. doi:10.1287/ijoc.1090.0338
Fekete SP, Schepers J (2004) A combinatorial characterization of higher-dimensional orthogonal packing. Math Oper Res 29(2):353–368. doi:10.1287/moor.1030.0079
Fekete SP, Schepers J, van der Veen JC (2007) An exact algorithm for higher-dimensional orthogonal packing. Oper Res 55(3):569–587. doi:10.1287/opre.1060.0369
Gehring H, Bortfeldt A (1997) A genetic algorithm for solving the container loading problem. Int Trans Oper Res 4(5–6):401–418. doi:10.1111/j.1475-3995.1997.tb00095.x
Gonçalves JF, Resende MGC (2012) A parallel multi-population biased random-key genetic algorithm for a container loading problem. Comput Oper Res 39(2):179–190. doi:10.1016/j.cor.2011.03.009
Hanlon P (1982) Counting interval graphs. Trans Am Math Soc 272(2):383–426. doi:10.2307/1998705
He K, Huang W (2011) An efficient placement heuristic for three-dimensional rectangular packing. Comput Oper Res 38(1):227–233. doi:10.1016/j.cor.2010.04.015
Huang W, He K (2009) A caving degree approach for the single container loading problem. Eur J Oper Res 196(1):93–101. doi:10.1016/j.ejor.2008.02.024
Huang W, Chen D, Xu R (2007) A new heuristic algorithm for rectangle packing. Comput Oper Res 34:3270–3280
Lim A, Zhang X (2005) The container loading problem. In: SAC’05: Proceedings of the 2005 ACM symposium on applied computing. ACM, New York, pp 913–917. doi:10.1145/1066677.1066888
Lim A, Rodrigues B, Wang Y (2003) A multi-faced buildup algorithm for three-dimensional packing problems. OMEGA Int J Manag Sci 31(6):471–481. doi:10.1016/j.omega.2003.08.004
Lim A, Rodrigues B, Yang Y (2005) 3-D container packing heuristics. Appl Intell 22(2):125–134. doi:10.1007/s10489-005-5601-0
Lins L, Lins S, Morabito R (2002) An n-tet graph approach for non-guillotine packings of n-dimensional boxes into an n-container. Eur J Oper Res 141(2):421–439. doi:10.1016/S0377-2217(02)00135-2
Mack D, Bortfeldt A, Gehring H (2004) A parallel hybrid local search algorithm for the container loading problem. Int Trans Oper Res 11(5):511–533. doi:10.1111/j.1475-3995.2004.00474.x
Martello S, Toth P (1990) Knapsack problems: algorithms and computer implementations. Wiley Interscience series in discrete mathematics and optimization. Wiley, Chichester,
Moura A, Oliveira JF (2005) A GRASP approach to the container-loading problem. IEEE Intell Syst 20(4):50–57. doi:10.1109/MIS.2005.57
Parreño F, Alvarez-Valdes R, Tamarit JM, Oliveira JF (2008) A maximal-space algorithm for the container loading problem. INFORMS J Comput 20(3):412–422. doi:10.1287/ijoc.1070.0254
Parreño F, Alvarez-Valdes R, Oliveira JE, Tamarit JM (2010) Neighborhood structures for the container loading problem: a VNS implementation. J Heuristics 16(1):1–22. doi:10.1007/s10732-008-9081-3
Pisinger D (2002) Heuristics for the container loading problem. Eur J Oper Res 141(2):382–392. doi:10.1016/S0377-2217(02)00132-7
Ratcliff MSW, Bischoff EE (1998) Allowing for weight considerations in container loading. OR Spektrum 20(1):65–71. doi:10.1007/BF01545534
Terno J, Scheithauer G, SommerweißU, Riehme J (2000) An efficient approach for the multi-pallet loading problem. Eur J Oper Res 123(2):372–381. doi:10.1016/S0377-2217(99)00263-5
Wäscher G, Haußner H, Schumann H (2007) An improved typology of cutting and packing problems. Eur J Oper Res 183(3):1109–1130. doi:10.1016/j.ejor.2005.12.047
Wu Y (2002) An effective quasi-human based heuristic for solving the rectangle packing problem. Eur J Oper Res 141(2):341–358. doi:10.1016/S0377-2217(02)00129-7
Author information
Authors and Affiliations
Corresponding author
Appendix: Partition-controlled tree search
Appendix: Partition-controlled tree search
In this section, we provide an outline of the partition-controlled tree search, which is used by the CLTRS algorithm. Precise details of this approach can be found in [10].
Assuming at least b successors are generated at each node of the search tree, and the total number of nodes in the search is limited by a value search_effort, then the maximal depth of search td is given by:
The authors set b=3. For example, when search_effort =32, then td=3 based on (1). The set of all ordered partitions of the integer td is given by π={(3),(2,1),(1,2),(1,1,1)}; for every partition, a separate search is carried out (see Fig. 9(a)).
The search corresponding to the partition (2, 1) is shown in Fig. 9(b). It is divided into two stages, where the first stage can be thought of as a search tree of depth 2, and the second stage is of depth 1. At each stage, w successors are generated for each node. Let d be the depth of the stage; then w is established by:
For every node, the w blocks with maximal loaded volume are selected to generate the w successors; the values of w 1 and w 2 corresponding to the two stages are calculated to be 5 and 32 respectively. The leaf nodes of the search tree in the first stage are expanded using a greedy heuristic that repeatedly chooses the block with maximum volume that can fit into the top free space cuboid in the stack. Hence in the first stage, 5 successors are generated, and for each of these states a further 5 successors are tried. All of these 25 partial solutions are expanded into complete solutions using the greedy heuristic.
The node leading to the best complete solution is retained as the root node for the second stage; this process is repeated for all the remaining stages. Assume that the partial solution S 3,12 leads to the best complete solution \(S'_{3,12}\). The second stage then starts with S 3,12 as the root; this search tree has only 1 level, with w 2=32 branches. Each of these branches are also expanded into complete solutions using the greedy heuristic. The move leading to the best solution (for instance \(S'_{4,4}\)) is selected as the choice for the branch corresponding to partition (2, 1) (in this case, it is S 2,3).
The move leading to the best solution out of all of the partitions in π is finally selected, and the block corresponding to that move is loaded into the container. This repeats until no further blocks can be loaded into the container, or until the allotted time runs out. If there is time remaining, then the algorithm restarts with the value of search_effort doubled from the previous run. Whenever a complete solution is generated, it is compared to the best solution found so far, and the best solution is updated if the new solution is better.
Rights and permissions
About this article
Cite this article
Zhu, W., Oon, WC., Lim, A. et al. The six elements to block-building approaches for the single container loading problem. Appl Intell 37, 431–445 (2012). https://doi.org/10.1007/s10489-012-0337-0
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10489-012-0337-0