The six elements to block-building approaches for the single container loading problem


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.

This is a preview of subscription content, log in to check access.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Algorithm 1
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Algorithm 2


  1. 1.

    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

    MathSciNet  MATH  Article  Google Scholar 

  2. 2.

    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

    Article  Google Scholar 

  3. 3.

    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

    MATH  Article  Google Scholar 

  4. 4.

    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

    Article  Google Scholar 

  5. 5.

    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,

    MATH  Article  Google Scholar 

  6. 6.

    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

    Article  Google Scholar 

  7. 7.

    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

    MATH  Article  Google Scholar 

  8. 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

    Google Scholar 

  9. 9.

    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

    MathSciNet  MATH  Article  Google Scholar 

  10. 10.

    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

    MathSciNet  MATH  Article  Google Scholar 

  11. 11.

    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

    MathSciNet  MATH  Article  Google Scholar 

  12. 12.

    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

    MathSciNet  MATH  Article  Google Scholar 

  13. 13.

    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

    MATH  Article  Google Scholar 

  14. 14.

    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

    MathSciNet  Article  Google Scholar 

  15. 15.

    Hanlon P (1982) Counting interval graphs. Trans Am Math Soc 272(2):383–426. doi:10.2307/1998705

    MathSciNet  MATH  Article  Google Scholar 

  16. 16.

    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

    MATH  Article  Google Scholar 

  17. 17.

    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

    MathSciNet  MATH  Article  Google Scholar 

  18. 18.

    Huang W, Chen D, Xu R (2007) A new heuristic algorithm for rectangle packing. Comput Oper Res 34:3270–3280

    MathSciNet  MATH  Article  Google Scholar 

  19. 19.

    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

    Google Scholar 

  20. 20.

    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/

    Article  Google Scholar 

  21. 21.

    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

    MATH  Article  Google Scholar 

  22. 22.

    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

    MathSciNet  MATH  Article  Google Scholar 

  23. 23.

    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

    MATH  Article  Google Scholar 

  24. 24.

    Martello S, Toth P (1990) Knapsack problems: algorithms and computer implementations. Wiley Interscience series in discrete mathematics and optimization. Wiley, Chichester,

    Google Scholar 

  25. 25.

    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

    Article  Google Scholar 

  26. 26.

    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

    MathSciNet  MATH  Article  Google Scholar 

  27. 27.

    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

    MATH  Article  Google Scholar 

  28. 28.

    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

    MathSciNet  MATH  Article  Google Scholar 

  29. 29.

    Ratcliff MSW, Bischoff EE (1998) Allowing for weight considerations in container loading. OR Spektrum 20(1):65–71. doi:10.1007/BF01545534

    MATH  Article  Google Scholar 

  30. 30.

    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

    MATH  Article  Google Scholar 

  31. 31.

    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

    MATH  Article  Google Scholar 

  32. 32.

    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

    MATH  Article  Google Scholar 

Download references

Author information



Corresponding author

Correspondence to Wenbin Zhu.

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)).

Fig. 9

An example of PCTRS

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

Reprints and Permissions

About this article

Cite this article

Zhu, W., Oon, W., Lim, A. et al. The six elements to block-building approaches for the single container loading problem. Appl Intell 37, 431–445 (2012).

Download citation


  • Greedy heuristic
  • 3D packing
  • Tree search
  • Metaheuristics
  • Block building