Next Article in Journal
Metric-Driven Voronoi Diagrams: A Comprehensive Mathematical Framework
Previous Article in Journal
Space-Time Primal-Dual Active Set Method: Benchmark for Collision of Elastic Bar with Discontinuous Velocity
Previous Article in Special Issue
Organization of the Optimal Shift Start in an Automotive Environment
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Packing and Cutting Stone Blocks Based on the Nonlinear Programming of Tree Cases

by
Taeyong Kim
Quarra Stone Company LLC, Madison, WI 53714, USA
Computation 2025, 13(9), 211; https://doi.org/10.3390/computation13090211
Submission received: 12 July 2025 / Revised: 13 August 2025 / Accepted: 22 August 2025 / Published: 3 September 2025
(This article belongs to the Special Issue Computational Approaches for Manufacturing)

Abstract

Typically, dimension stones, commonly called stone blocks, are cut into multiple small cuboid stones so that multiple sculptures can be produced. To use the stone block as efficiently as possible, it is essential to pack these small cuboids in each stone block as efficiently as possible while satisfying the limitations of the machining. This paper describes methods for packing and cutting stone blocks using nonlinear programming that generate sets of trees, which are also called forests, that decide the packing layout of the small cuboids inside the block. The containers and elements have their own prices and values, respectively. The elements can be translated to the corners of the containers or to the corners of the elements that are already in the containers, if the elements are not outside the containers after the translation. Then, the problem can be interpreted as finding the best forest that packs the elements as efficiently as possible at the lowest total price of containers, which is a subset of all containers. The formula for the score that defines the compactness of the packing is in this paper. The user can define the number of forests so that parallel computing methods can be applied. Each forest is generated randomly. Two different packing methods are introduced: simple packing and slab packing. Simple packing is based on a non-guillotine cutting method and slab packing is a guillotine cutting method for realistic scenarios, such as scenarios with machining limitations. By using this method, it is possible to plan the cutting in a digital environment, which is not possible when using the traditional method with physical templates. Furthermore, by restricting the rotation of the elements, it is possible to make the elements follow the horizontal vein direction of the stone blocks, which is a common vein direction in travertine.

1. Introduction

Stone blocks, also known as dimension stones, typically have a cuboid shape. This shape preference comes mainly from logistics requirements, machining, the characteristics of the quarry, and demands from the market [1]. Based on this shape preference, the quarry can develop an optimized plan for stone block production to avoid fractures using the voxel method [2]. After producing the stone blocks, the blocks are cut to the size of a single sculpture or divided into multiple small stones for multiple sculptures, depending on the project. Through the production cycle, an immense amount of waste can be produced [3]; therefore, it is critical to pack the products in the stone block as efficiently as possible to reduce waste.
The traditional method of packing shapes in a stone block is to use plastic templates on the side surface of the stone block and physically adjust the templates (see Figure 1). This method is limited to a two-dimensional packing layout, and there can be a potential risk of industrial accidents, as workers have to be close to the stone block and the machine.
If there is no limit in the production strategy, this problem can be interpreted as a discrete geometry packing problem, avoiding collision using no-fit polygons [4,5], the Gilbert–Johnson–Keerthi (GJK) algorithm [6], the Expanding Polytope Algorithm (EPA) [7], and so on, which are solutions for the Minkowski sum and difference problem [8,9]. Alternatively, one study used the elastic energy of a rubber band to achieve compact packing [10]. Some studies shows two-dimensional packing solutions [11,12,13]. However, the stone block cutting strategy usually requires a blade or a wire saw, which limits the freedom of packing (see Figure 2 and Figure 3). For this reason, it is more practical to redefine the problem as a problem involving packing shapes in the small stone cuboids that come from the split of the original stone block. This can also be described as the guillotine cutting problem. There are several studies on two- and three-dimensional guillotine cutting problems [14,15,16,17,18]. However, in their three-dimensional studies, ref. [15] has the restriction of using only one block, and ref. [14,18] does not consider the prices of the stone blocks and the value of the small cuboids that will be packed into the stone blocks.
The method in this paper sees this guillotine cutting problem from a graph-theoretic perspective as a problem involving growing trees and forests. The general definition of a tree describes it as a undirected graph consisting of nodes and edges without cycles. However, the method in this paper uses a specific type of tree called a directed rooted tree. A forest is a collection of these trees. Some of the early studies on trees and forests were Cayley’s studies, which concentrated on the enumeration of tree and forest problems [19,20], and, since then, this topic has been well studied by several researchers. These studies have been widely applied in different areas of various industries such as circuit analysis in electrical engineering, databases in data science, game theory, and even recent machine learning studies, etc. [21,22,23,24]. The application of tree theory can also be found in relation to the guillotine cutting problem [25,26]. Still, these approaches are limited to two-dimensional environments.
This paper suggests a method that considers practical manufacturing constraints while using blade and wire saw machines. Its consideration of the prices and values of the stone blocks and elements in the computer environment improves the efficiency of using the stone block. Furthermore, the computation time of this method can be improved by parallelizing the computing processes of tree and forest growth. The packing locations are the nodes. Each stone block forms one tree. After the elements are placed on the nodes in the stone blocks, they generate new nodes and branches connecting with the parent nodes, which is the growth of the trees. Thus, a forest encompasses packing in multiple available stone blocks. Each processor on a computer computes the growth of each forest, allowing parallel computing.
Section 2 shows the fundamental formation of the tree-based cuboid packing algorithm. Section 2.1 introduces the simple packing method. Section 2.2, Section 2.3 and Section 2.4 introduce the slab packing algorithm method, the description of the rotation of elements, and the definition of the score for each forest. In Section 4, an analysis of the introduced slab packing method is shown. Section 5 shows a discussion of the results, their meaning for practical applications, and the advantages and disadvantages of the introduced method.

2. Formulation

The shape of the sculpture defines the shape of the required cuboid, which is called an element in this paper. A stone block that may contain one or more elements is called a container. The problem involves packing the elements in E as efficiently as possible in the containers in C . E can be defined with a set of the minimum bounding boxes of the sculptures [27] or the user-defined cuboids. C is the set of cuboids of the containers. Each element has a designated value p i E > 0 , ( i = 1 , , n ) , and each container has a designated price p j C > 0 , ( j = 1 , , m ) . Thus, an element and its value can be expressed as e i E , p i E P E and a container and its price can be expressed as c j C , p j C P C . e i and c j have eight vertices in R 3 that define the shape of the element and container:
e i = { v 1 e i , v 2 e i , v 3 e i , v 4 e i , v 5 e i , v 6 e i , v 7 e i , v 8 e i } c j = { v 1 c j , v 2 c j , v 3 c j , v 4 c j , v 5 c j , v 6 c j , v 7 e i , v 8 e i }
The order of the vertices is shown in Figure 4. f is the number of forests. Each processor of the computer computes the growth of each forest through nonlinear programming. The orders of the elements and containers are duplicated and shuffled f times. Each set of shuffled elements and the set of shuffled containers are E k and C k , ( k = 1 , , f ) , respectively. S h u f f l e q ( ) denotes the shuffle of the items with seed q. S h u f f l e q ( ) returns the same order of shuffled items when the number of items and q are the same.
With the nonlinear programming of the forests using the collection of the vertices of the packed e i and C , the introduced method can have a finite number of solutions. However, due to the immense number of cases of tree growth in the forest and the packing preference in the used containers, this algorithm randomly chooses one of the new leaf nodes for each growth first. If the element can fit inside the container after being translated to one of the leaf nodes, three child nodes are added, which are candidates for the next locations for the elements. Although it cannot guarantee that all elements will be inside the containers in C , this method can still provide a reasonable packing solution.

2.1. Forest and Trees for Simple Packing

In the growth process of a forest and its trees, the trees start at the root nodes of the containers v 1 c j , ( j = 1 , , m ) . Therefore, in this paper, the nodes of the tree not only have a graph-theoretic meaning but are also physical locations that the elements can be moved to. Q l denotes the list of all leaf nodes in the forest at growth level l, and root nodes are added to Q 0 :
Q 0 = { v 1 c 1 , , v 1 c m }
Elements are tested to see whether they can be packed inside the container by moving them to nodes in Q l and checking whether the moved element is the subset of the container.
If one of the elements in E is placed in v 1 c 1 and passes this test, the leaf node v 1 c 1 is removed, and the three new shuffled nodes of the placed element S h u f f l e 1 ( v 2 e , v 3 e , v 6 e ) are added at the beginning of Q 1 . When v 1 c 1 is the chosen node, Q 1 is as follows:
Q 1 = { S h u f f l e 1 ( v 2 e , v 3 e , v 6 e ) , v 1 c 2 , , v 1 c m }
Alternatively, when v 1 c 1 does not pass the test and v 1 c 2 is the chosen node, Q 1 is as follows:
Q 1 = { S h u f f l e 1 ( v 2 e , v 3 e , v 6 e ) , v 1 c 1 , v 1 c 3 , , v 1 c m }
This process is iterated until there is no element that can be packed inside the containers after testing all elements in E , moving to the leaf nodes in Q l . Figure 5 shows an example of the growth of trees in a forest in a case involving three containers. The branches of the tree are generated between the selected parent node for the packing of the element and the newly added child nodes after the packing of the element at each growth level. However, as long as the leaf nodes are the remaining candidates for the packing of the elements, Q l does not have to save all the nodes in the forest, improving memory usage during the growth of the forest.
The problem of this approach is that it does not consider practical machining solutions to separate the elements in the containers without damaging other elements (see Figure 6).
Even though the order of the leaf nodes in Q l may allow the elements to be placed in the used containers first, the efficiency of container usage can be improved by applying the forest score. Therefore, the following sections suggest the slab packing method, which packs elements in split containers, called slabs in this paper.

2.2. Forest and Trees for Slab Packing

The important additional function of the slab packing method considers the division of containers, which is related to the limitation of the production strategy in the stone industry (see Figure 2 and Figure 3). Split containers, which are called slabs in this paper, are better when used before non-split containers for packing elements so that non-split containers can be saved and used in the latter order. Furthermore, elements should be packed within the slabs without protrusion. For these reasons, good planning of the data structure Q and the slab list S is essential.
The update process of Q l is the same as the simple packing method:
Q 0 = { v 1 c 1 , , v 1 c m } Q 1 = { S h u f f l e 1 ( v 2 e , v 3 e , v 6 e ) , v 1 c 2 , , v 1 c m }
The difference comes from the list of slabs S. The initial slab list S 0 contains containers in C , and also the largest slabs before splitting. These slabs and leaf nodes are matched. Therefore, the order of the slabs in S l is the same as for the leaf nodes in Q l .
Q 0 = { v 1 c 1 , , v 1 c m } S 0 = { s 1 = c 1 , , s m = c m }
When the first element is packed in the slab and passes the packing test, there are three ways to perform the initial split using the three faces of the element that are inside the slab. After that, there are two additional ways to split the slab using the two faces of the element that are inside the slab after the initial split. Therefore, there are six types of segmentation to make slabs (see Figure 7). One of the split methods is randomly chosen. When v 1 c 1 is the chosen node, the matched slab s 1 is removed from S 0 , and  v 1 c 1 is also removed from Q 0 . Additionally, the new slabs based on the chosen split method, s 2 e , s 3 e , s 6 e , are matched to the new nodes v 2 e , v 3 e , v 6 e (see Figure 8). The new slabs are added in S 1 following the same order as the new leaf nodes in Q 1 .
Q 1 = { S h u f f l e 1 ( v 2 e , v 3 e , v 6 e ) , v 1 c 2 , , v 1 c m } S 1 = { S h u f f l e 1 ( s 2 e , s 3 e , s 6 e ) , s 2 , , s m }
By organizing the items in Q l and S l via the introduced method, the element needs to take packing tests only O ( Q l = S l ) times with a leaf node Q l [ w ] and a slab S l [ w ] ( w = 1 , , Q = S ) (see Algorithm 1). The reason for not saving the entire history of the slab production in S 1 is the same as the reason for the data management of Q l : improving the memory usage.
Figure 9 shows an example of the growth of trees in a forest in a case with three containers. The difference from Figure 5 is that Figure 9 includes the process of making the slabs, which affects the growth of the forest, requiring the elements to be tested to determine whether they are inside the slabs.
Algorithm 1: Slab packing algorithm without score
Computation 13 00211 i001

2.3. Rotation

There are three types of rotation: no rotation, one-axis rotation, and three-axis rotation. The elements can rotate 90° for the latter two types. In the stone industry, one-axis rotation and three-axis rotation are commonly used. One-axis rotation allows the elements to follow the horizontal direction of the vein of the stone block (see Figure 10). This horizontal vein direction is particularly common in travertine because of the nature of the stone development and can be found at different travertine quarry locations [28,29,30]. On the other hand, if the direction of the vein does not matter, it is possible for the elements to rotate on all three axes: x , y , z (see Figure 11). One-axis rotation has two rotation cases, and three-axis rotation has six rotation cases.
  • One-axis rotation cases:
    • No rotation;
    • A 90° rotation on one of the x , y , z axes.
  • Three-axis rotation cases:
    • No rotation;
    • A 90° rotation on the x axis;
    • A 90° rotation on the y axis;
    • A 90° rotation on the z axis;
    • A 90° rotation on the x axis, then a 90° rotation on the z axis;
    • 90° rotation on the y axis, then a 90° rotation on the z axis.
Each element chooses one of the rotation cases randomly before the packing procedure. For parallel computing, the memory saves | E | × f rotation data, where f is the number of forests.

2.4. Score of a Forest

The containers and elements have prices and values, respectively. It is better to use fewer containers to minimize the price. However, elements must be packed in containers as efficiently as possible. To achieve these two goals, a good design for the score of each forest is necessary. The design of S l and Q l from the previous session already makes the packing algorithm prioritize the use of the split slab first, keeping the unused containers in last position on the lists. However, a clear definition of the score is necessary to decide which forest is preferred.
After computing f forests and their growth, there are f sets of packed elements E k p a c k e d , ( k = 1 , , f ) and packed containers C k , ( k = 1 , , f ) . If there are no cases of E k p a c k e d that contain all the elements in E , the best packing is the case that has the highest sum of the corresponding values of the elements. However, if there are cases of E k p a c k e d that contain all the elements in E , the best case is the case that has all the elements and the lowest sum of container prices. When the forest index is k , 1 k f , the equation of the score S k is as shown below and the algorithm is as shown in Algorithm 2:
S k = P E k p a c k e d if E k p a c k e d E E , P E k p a c k e d + 1 σ P C k if E k p a c k e d E = E . σ x = x 1 + x
The set of indexes of the best forests is as follows:
Z = arg min k S k , ( z Z )
Algorithm 2: Slab packing algorithm with score
Computation 13 00211 i002
If there are forests where all elements in E are packed in containers and the sum of the container prices are the same, it is possible to choose the most compact packing by finding the lowest sum of the element values in a container among C k . When the index of the container is j, each container in each forest is denoted by c k , j C k .
E z , j , P z , j = e E z , j , p P E z , j   |   E z , j = E z p a c k e d c z , j Z = arg min z Z S z + 1 σ min j P z , j
When the values of the elements and the prices of the containers follow their physical volumes, the score also shows the physical compactness of the packing.

3. Implementation

The elements can be defined using the minimum bounding box of each sculpture [27], or user-defined cuboids. After obtaining data on the containers and elements, it is possible to implement the slab packing with a score. In the stone industry, it is common to build the shape of a sculpture, column, wall, floor, etc., with the assembly of multiple stone pieces. The price of each stone block and the value of each piece are often given before the manufacturing process, and well-planned packing also gives the benefits of reducing material price and good manufacturing planning. In this section, the figures show two implementation cases based on a realistic scenario.
The first implementation case, shown in Figure 12a, shows the packing of irregular stone panels that are installed on a wall. The first case is a one-axis rotation case and follows the direction of the vein of the stone, as shown in Figure 10. The second implementation case, shown in Figure 12b, shows the packing of pieces for benches. The second case is a three-axis rotation case in which the elements can rotate 90° on any axis: s , y , z . The third implementation case, shown in Figure 13, shows a case that has a large number of elements and containers with one-axis rotation. In the first and second implementation, the shapes of the elements are user-defined considering the later production process after the split of the blocks. The third implementation case also has one-axis rotation for the elements. The elements are defined by the minimum bounding box algorithm [27]. Typical architectural projects require a large number of elements and containers. Therefore, applicability to these projects is essential.
According to the three implementation cases, the introduced method can achieve a reasonable packing layout of elements in multiple containers in different scenarios.

4. Analysis

The computing environment can be found in Table 1. In this section, two hypothetical instances are tested: Instance_01 and Instance_02. Table 2 and Table 3 show the sizes of the elements and containers of the two instances. Elements are named ele_##_## and containers are named con_##_##. The results of the tests can be found in Table 4. Table 4 includes the results of the tests for both Instance_01 and Instance_02. Each instance runs from 10 to 5,000,000 forests with two different rotation options: no rotation and x , y , z axis rotation. The score [max] shows the highest score among the f computed forests. The formula for the score can be found in Section 2.4. The Success Cases column shows the number of tree cases in which all elements are inside the containers.
The result shows that increasing the number of forests can produce more success cases. Furthermore, if rotation is allowed, cases with higher scores than the scores of any no-rotation case can be found. However, increasing the number of forests does not lead to a proportional increase in the number of successful cases due to the nature of the randomness of the generating cases. However, an increased number of forests generally finds better cases than a low number of forests.
When using parallel computing of the forests, the computation time of the forests can increase compared to that during the linear computation of forests. Figure 14 shows the computation pipeline for slab packing with the scores. Before parallel computing, the memory saves the duplicated and shuffled data of elements and containers. Then, each shuffled datum is assigned to each processor to grow the forest. After finishing the growth of a forest, the layout of the packing and the score are saved. If there are any forests that need to be grown after the process finishes growing its assigned forest, a new forest is assigned, and the processor starts growing it. After computing the scores of all forests, the best forest is chosen based on the saved scores.
Instance_01 and Instance_02, shown in Table 2 and Table 3, are used to test the performance of the parallel computing. The results of the comparison are shown in Figure 15. Figure 15 shows that parallel computing obviously outperforms linear computing in both Instance_01 and Instance_02. The performance of the parallel computing highly depends on the number and performance of the available processors.
The distribution of the score of the slab packing of Instance_01 and Instance_02 can be found in Figure 16 and Figure 17. These two graphs show that the score distribution has a skew normal distribution shape in both instances, which means that a few forests have very low scores and the majority of forests are populated on the high-score side of the graph near the peak. Depending on the condition of the elements and containers of the instances, the shape of the skew normal distribution graphs can be different between the no-rotation method and the three-axis rotation method. However, in both methods and in both instances, the graphs show negative skew graphs.
Specifically, there are some recognizable characteristics of the skew normal distribution graphs. First, the histograms show the roughness of the density on the right side of the peak. This is because possible packing layouts that have a high score become scarce and each high score layout has a big difference in score, showing the high density of the specific bin in the histograms. The other characteristic is the difference in densities in the bin at the right end of the histogram. The right end bins of Figure 16 and Figure 17 show higher densities than the skew normal distribution lines. This is because forests where all elements are packed in containers have small differences in score among themselves so they are all in the same right end bin. This also means that it is easier to find the forests of all elements inside the containers in Instance_01 than in Instance_02, according to the higher density in the right end bin.
Figure 18 shows the standard deviation of each bin in Figure 16 and Figure 17. For both Instance_01 and Instance_02, the high standard deviations of the bins are shown in the middle of the graph, which means that the forests in these bins have dispersed scores with various packing layouts. On the other hand, the standard deviation on the right end bins is relatively low compared to on other bins. That is because good forests that have higher scores than other forests packed with all elements are hard to find.

5. Discussion

In Section 3 and Section 4, the implementations of the slab packing method and statistical analysis are shown. In practice, the size of the elements in implementations should consider the tolerance of the machine, the envelope of the machine, and the size of the tools, such as the thickness of the blade and the wire saw. Furthermore, the inventory of dimension stones from the quarries changes in real time. Therefore, it is essential to have up-to-date stone data from the quarry to obtain more accurate data for the containers to compute packing. Furthermore, there is a tolerance for the dimension stone itself. In many cases, dimension stones may not have perfect cuboid shapes due to the production method, for instance, if the quarry uses traditional methods such as plug-and-feather and dynamic splitting [31,32]. Thus, the container sizes should follow the yield dimensions of the stone blocks from the quarries to obtain good cuboid data for the containers.
According to the analysis of the parallel computing in Section 4, parallel computing has a faster computation time than linear computing. However, there is a downside to memory usage. Let us assume that each three-dimensional node takes 24 bytes of memory, each score takes 8 bytes, each rotation option takes 4 bytes, each shuffled index of element and container takes 4 bytes, and there are 400 elements and containers. The memory required to compute 10 5 forests will be about 1.76 gigabytes, even without temporary data from the slabs if all forests successfully pack all elements in the containers. Each slab can take 48 bytes with two three-dimensional points. Furthermore, the number of panels that require an architectural project can easily be thousands. Therefore, a good memory usage management plan is essential for computing large number of elements and containers with a large number of forests.
If the memory usage is well managed, another application of this slab packing method is material cost estimation. The traditional method of estimating material cost is to roughly estimate the stone block number based on the total area of the surface that the stone covers, or the total volume of the stones multiplied by factors. However, the slab packing method shows not only the packing layout of the elements in the containers, but also the optimized total price of the packed containers following the forest with the high score layout.

6. Conclusions

The packing of stone sculpture bounding boxes, denoted as elements, in stone blocks, denoted as containers, can be interpreted as a guillotine cutting problem considering the typical manufacturing strategies in the stone industry (see Figure 2 and Figure 3).
Based on the tree method used to solve this problem introduced in this paper, a sufficient number of forests may provide a higher chance of finding efficient packing solutions, as shown in Table 4. With a careful definition of the score of each forest, as described in Section 2.4, it is possible to find the forest that uses the containers the most efficiently. However, a customized setup is important before computing forests. If the direction of the vein of the stone block matters, the user can set the rotation types. For example, allowing rotation on only one axis can be appropriate with a stone block that contains a horizontal vein direction, as shown in Figure 10. On the other hand, if there is no vein direction, as in Figure 11, rotation of all three axes can be allowed. If a parallel computing method is used, it can result in extreme memory usage. Therefore, the user should adjust the number of forests considering the specification of the computer used to compute the forests, or use additional computers to compute the additional forests.
The implementation of this method can vary. However, specifically in the stone industry, this method is suitable for the production of various sizes of elements that need to be made in containers from the same quarry.

Funding

This research received no external funding.

Data Availability Statement

The original contributions of the study are included in the article. Further inquiries can be directed to the corresponding author.

Acknowledgments

It is my pleasure to acknowledge the Quarra Stone Company and its members. These members help each other to fabricate the actual stones and find creative solutions to finish projects with success. It would not be possible to write this paper without the motivation that comes from them.

Conflicts of Interest

Author Taeyong Kim was employed by the company Quarra Stone Company LLC. The author declares that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.

References

  1. Morales Demarco, M.; Oyhantçabal, P.; Stein, K.J.; Siegesmund, S. Black dimensional stones: Geology, technical properties and deposit characterization of the dolerites from Uruguay. Environ. Earth Sci. 2010, 63, 1879–1909. [Google Scholar] [CrossRef]
  2. Mosch, S.; Nikolayew, D.; Ewiak, O.; Siegesmund, S. Optimized extraction of dimension stone blocks. Environ. Earth Sci. 2010, 63, 1911–1924. [Google Scholar] [CrossRef]
  3. Jalalian, M.H.; Bagherpour, R.; Khoshouei, M. Wastes production in dimension stones industry: Resources, factors, and solutions to reduce them. Environ. Earth Sci. 2021, 80. [Google Scholar] [CrossRef]
  4. Burke, E.; Hellier, R.; Kendall, G.; Whitwell, G. Complete and robust no-fit polygon generation for the irregular stock cutting problem. Eur. J. Oper. Res. 2007, 179, 27–49. [Google Scholar] [CrossRef]
  5. Luo, Q.; Rao, Y. Improved Sliding Algorithm for Generating No-Fit Polygon in the 2D Irregular Packing Problem. Mathematics 2022, 10, 2941. [Google Scholar] [CrossRef]
  6. Gilbert, E.; Johnson, D.; Keerthi, S. A fast procedure for computing the distance between complex objects in three-dimensional space. IEEE J. Robot. Autom. 1988, 4, 193–203. [Google Scholar] [CrossRef]
  7. Gao, W. Efficient Incremental Penetration Depth Estimation between Convex Geometries. In Proceedings of the 2024 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Abu Dhabi, United Arab Emirates, 14–18 October 2024; pp. 5444–5451. [Google Scholar] [CrossRef]
  8. Qin, X.; Jin, L.; Zheng, H. 2D Irregular Optimization Nesting Method based on Adaptive Probabilistic Genetic Simulated Annealing Algorithm. Comput.-Aided Des. Appl. 2020, 18, 242–257. [Google Scholar] [CrossRef]
  9. Imamichi, T.; Yagiura, M.; Nagamochi, H. An iterated local search algorithm based on nonlinear programming for the irregular strip packing problem. Discret. Optim. 2009, 6, 345–361. [Google Scholar] [CrossRef]
  10. Liao, X.; Ma, J.; Ou, C.; Long, F.; Liu, X. Visual nesting system for irregular cutting-stock problem based on rubber band packing algorithm. Adv. Mech. Eng. 2016, 8, 168781401665208. [Google Scholar] [CrossRef]
  11. Ibaraki, T.; Imahori, S.; Yagiura, M. Hybrid Metaheuristics for Packing Problems. In Studies in Computational Intelligence; Springer: Berlin/Heidelberg, Germany, 2008; pp. 185–219. [Google Scholar] [CrossRef]
  12. Amaro Junior, B.; Santos, M.C.; de Carvalho, G.N.; de Araújo, L.J.P.; Pinheiro, P.R. Metaheuristics for the Minimum Time Cut Path Problem with Different Cutting and Sliding Speeds. Algorithms 2021, 14, 305. [Google Scholar] [CrossRef]
  13. Rocha, P.; Rodrigues, R.; Gomes, A.M.; Toledo, F.M.; Andretta, M. Two-Phase Approach to the Nesting problem with continuous rotations. IFAC-PapersOnLine 2015, 48, 501–506. [Google Scholar] [CrossRef]
  14. de Queiroz, T.A.; Miyazawa, F.K.; Wakabayashi, Y.; Xavier, E.C. Algorithms for 3D guillotine cutting problems: Unbounded knapsack, cutting stock and strip packing. Comput. Oper. Res. 2012, 39, 200–212. [Google Scholar] [CrossRef]
  15. Martin, M.; Oliveira, J.F.; Silva, E.; Morabito, R.; Munari, P. Three-dimensional guillotine cutting problems with constrained patterns: MILP formulations and a bottom-up algorithm. Expert Syst. Appl. 2020, 168, 114257. [Google Scholar] [CrossRef]
  16. Imamichi, T. Nonlinear Programming Based Algorithms to Cutting and Packing Problems. Ph.D. Thesis, Kyoto University, Kyoto, Japan, 2009. [Google Scholar] [CrossRef]
  17. Clautiaux, F.; Jouglet, A.; Moukrim, A. A New Graph-Theoretical Model for the Guillotine-Cutting Problem. INFORMS J. Comput. 2013, 25, 72–86. [Google Scholar] [CrossRef]
  18. Amossen, R.R.; Pisinger, D. Multi-dimensional bin packing problems with guillotine constraints. Comput. Oper. Res. 2010, 37, 1999–2006. [Google Scholar] [CrossRef]
  19. Esq, A.C. XXVIII. On the theory of the analytical forms called trees. Lond. Edinb. Dublin Philos. Mag. J. Sci. 1857, 13, 172–176. [Google Scholar] [CrossRef]
  20. Cayley, A. A theorem on trees. In The Collected Mathematical Papers; Cambridge University Press: Cambridge, UK, 2009; pp. 26–28. [Google Scholar] [CrossRef]
  21. Kern, C.; Klausch, T.; Kreuter, F. Tree-based Machine Learning Methods for Survey Research. DOAJ Dir. Open Access J. 2019, 13, 73–93. [Google Scholar]
  22. Koller, D.; Megiddo, N.; von Stengel, B. Fast algorithms for finding randomized strategies in game trees. In Proceedings of the 26th ACM Symposium on the Theory of Computing, Montreal, QC, Canada, 23–25 May 1994. [Google Scholar] [CrossRef]
  23. Gupta, S.; Khodabakhsh, A.; Mortagy, H.; Nikolova, E. Electrical flows over spanning trees. Math. Program. 2021, 196, 479–519. [Google Scholar] [CrossRef]
  24. Shasha, D.; Wang, J.T.L.; Giugno, R. Algorithmics and applications of tree and graph searching. In Proceedings of the Twenty-First ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems—PODS’02, Madison, WI, USA, 3–5 June 2002. [Google Scholar] [CrossRef]
  25. Christofides, N.; Whitlock, C. An Algorithm for Two-Dimensional Cutting Problems. Oper. Res. 1977, 25, 30–44. [Google Scholar] [CrossRef]
  26. Herz, J.C. Recursive Computational Procedure for Two-dimensional Stock Cutting. IBM J. Res. Dev. 1972, 16, 462–469. [Google Scholar] [CrossRef]
  27. Chang, C.T.; Gorissen, B.; Melchior, S. Fast oriented bounding box optimization on the rotation group SO (3,R). ACM Trans. Graph. 2011, 30, 1–16. [Google Scholar] [CrossRef]
  28. Gratier, J.P.; Frery, E.; Deschamps, P.; Røyne, A.; Renard, F.; Dysthe, D.; Ellouz-Zimmerman, N.; Hamelin, B. How travertine veins grow from top to bottom and lift the rocks above them: The effect of crystallization force. Geology 2012, 40, 1015–1018. [Google Scholar] [CrossRef]
  29. Della Porta, G.; Capezzuoli, E.; De Bernardo, A. Facies character and depositional architecture of hydrothermal travertine slope aprons (Pleistocene, Acquasanta Terme, Central Italy). Mar. Pet. Geol. 2017, 87, 171–187. [Google Scholar] [CrossRef]
  30. Özkul, M.; Kele, S.; Gökgöz, A.; Shen, C.C.; Jones, B.; Baykara, M.O.; Fórizs, I.; Németh, T.; Chang, Y.W.; Alçiçek, M.C. Comparison of the Quaternary travertine sites in the Denizli extensional basin based on their depositional and geochemical data. Sediment. Geol. 2013, 294, 179–204. [Google Scholar] [CrossRef]
  31. Bianco, I.; Blengini, G.A. Life Cycle Inventory of techniques for stone quarrying, cutting and finishing: Contribution to fill data gaps. J. Clean. Prod. 2019, 225, 684–696. [Google Scholar] [CrossRef]
  32. Samarakoon, K.G.A.U.; Chaminda, S.P.; Jayawardena, C.L.; Dassanayake, A.B.N.; Kondage, Y.S.; Kannangara, K.A.T.T. A Review of Dimension Stone Extraction Methods. Mining 2023, 3, 516–531. [Google Scholar] [CrossRef]
Figure 1. Effort involved in making a packing layout with plastic templates.
Figure 1. Effort involved in making a packing layout with plastic templates.
Computation 13 00211 g001
Figure 2. Cutting a stone block with a blade saw machine.
Figure 2. Cutting a stone block with a blade saw machine.
Computation 13 00211 g002
Figure 3. Cutting a stone block with a wire saw machine.
Figure 3. Cutting a stone block with a wire saw machine.
Computation 13 00211 g003
Figure 4. Vertex order of elements and containers.
Figure 4. Vertex order of elements and containers.
Computation 13 00211 g004
Figure 5. Illustration of the physical diagram and graph of the growth of a forest with three trees. Containers [RED]. Elements [BLUE]. Leaf nodes in Q l [GREEN]. Internal nodes [PURPLE].
Figure 5. Illustration of the physical diagram and graph of the growth of a forest with three trees. Containers [RED]. Elements [BLUE]. Leaf nodes in Q l [GREEN]. Internal nodes [PURPLE].
Computation 13 00211 g005
Figure 6. Simple packing example. Containers [RED]. Elements [BLUE].
Figure 6. Simple packing example. Containers [RED]. Elements [BLUE].
Computation 13 00211 g006
Figure 7. Process of making six types of slabs [LEFT] and the six types of slabs [RIGHT]. Split face [RED SURFACE]. Container [RED LINE]. Slab [YELLOW]. Element [BLUE].
Figure 7. Process of making six types of slabs [LEFT] and the six types of slabs [RIGHT]. Split face [RED SURFACE]. Container [RED LINE]. Slab [YELLOW]. Element [BLUE].
Computation 13 00211 g007
Figure 8. The matching of the nodes [GREEN] and the slabs [YELLOW].
Figure 8. The matching of the nodes [GREEN] and the slabs [YELLOW].
Computation 13 00211 g008
Figure 9. Illustration of the physical diagram, matched slabs, and graph of the growth of a forest with three trees. Containers [RED]. Elements [BLUE]. Slabs [BLUE]. Leaf nodes in Q l [GREEN]. Internal nodes [PURPLE].
Figure 9. Illustration of the physical diagram, matched slabs, and graph of the growth of a forest with three trees. Containers [RED]. Elements [BLUE]. Slabs [BLUE]. Leaf nodes in Q l [GREEN]. Internal nodes [PURPLE].
Computation 13 00211 g009
Figure 10. Stone block with vein direction.
Figure 10. Stone block with vein direction.
Computation 13 00211 g010
Figure 11. Stone block with no vein direction.
Figure 11. Stone block with no vein direction.
Computation 13 00211 g011
Figure 12. Implementation cases one and two. Packed elements [BLUE LINE]. Containers [BLACK LINE]. (a) Implementation case one. (b) Implementation case two.
Figure 12. Implementation cases one and two. Packed elements [BLUE LINE]. Containers [BLACK LINE]. (a) Implementation case one. (b) Implementation case two.
Computation 13 00211 g012
Figure 13. Implementation case three. Packed elements [BLUE LINE]. Containers [BLACK LINE].
Figure 13. Implementation case three. Packed elements [BLUE LINE]. Containers [BLACK LINE].
Computation 13 00211 g013
Figure 14. Parallel computing pipeline of slab packing with scores.
Figure 14. Parallel computing pipeline of slab packing with scores.
Computation 13 00211 g014
Figure 15. Computation time: (a) Computation time of Instance_01. (b) Computation time of Instance_02.
Figure 15. Computation time: (a) Computation time of Instance_01. (b) Computation time of Instance_02.
Computation 13 00211 g015
Figure 16. Skew normal distribution of the 10 5 forests of Instance_01.
Figure 16. Skew normal distribution of the 10 5 forests of Instance_01.
Computation 13 00211 g016
Figure 17. Skew normal distribution of the 10 5 forests of Instance_02.
Figure 17. Skew normal distribution of the 10 5 forests of Instance_02.
Computation 13 00211 g017
Figure 18. Standard deviation per bin: (a) Standard deviation per bin of the graph in Figure 16. (b) Standard deviation per bin of the graph in Figure 17.
Figure 18. Standard deviation per bin: (a) Standard deviation per bin of the graph in Figure 16. (b) Standard deviation per bin of the graph in Figure 17.
Computation 13 00211 g018
Table 1. Specifications of the tested computer.
Table 1. Specifications of the tested computer.
OSWindows 11 Pro 64-bit
CPU12th Gen Intel(R) Core(TM) i9-12900K 3.20 GHz
BIOS1620
RAM65,536 MB
Graphic CardNVIDIA GeForce GTX 1660 Ti
Table 2. Instance_01 element and container list.
Table 2. Instance_01 element and container list.
Namex Length [cm]y Length [cm]z Length [cm]
ele_01_1104.853.849.8
ele_01_264.556.245
ele_01_338.324.743.1
ele_01_4128.457.975
ele_01_53241.360.8
ele_01_653.753.5101.7
ele_01_7108.294.132.9
ele_01_86995.6103.7
ele_01_944.727.272.5
ele_01_1021.266.830.3
ele_01_11104.292.9105.8
ele_01_1223.25952.6
ele_01_1320.884.826.2
ele_01_1476.13226.2
ele_01_156242.362.4
ele_01_1650.771.433.5
ele_01_1797.371104.8
ele_01_1845.965.528.4
ele_01_19100.492.791.5
ele_01_2029.883.242.1
ele_01_2129.12162.4
ele_01_2257.324.426.6
ele_01_2356.360.593.6
ele_01_24100.43488.6
ele_01_25118.66636.7
ele_01_26109.444.985.3
ele_01_2791.973.140.5
ele_01_2812240.989.1
ele_01_2930.922.6101.7
ele_01_3096.14629.5
ele_01_31121.860.322.9
ele_01_32127.885.187.8
ele_01_3331.292.447.1
ele_01_3424.336.930
ele_01_3557.58254.2
ele_01_36113.532.1106.2
ele_01_3795.658.435.1
ele_01_38101.860.689.4
ele_01_3995.489.937.5
ele_01_4030.225.390.1
ele_01_4124.552.750.2
ele_01_4249.937.129.2
ele_01_434941.2106.2
ele_01_447543.193.9
ele_01_45125.871.567.8
con_01_1190.8193190.8
con_01_2199.5178.9199.5
con_01_3178.2198.1178.2
con_01_4170.6191.9170.6
Table 3. Instance_02 element and container list.
Table 3. Instance_02 element and container list.
Namex Length [cm]y Length [cm]z Length [cm]
ele_02_1105.532.199.7
ele_02_287.619.934.5
ele_02_388.251.651.7
ele_02_482.378.743.4
ele_02_584.968.592
ele_02_646.848.568.4
ele_02_754.841.563.2
ele_02_861.39460.1
ele_02_939.319105.1
ele_02_10106.567.239.7
ele_02_1179.312.536.3
ele_02_1244.732.182.7
ele_02_1365.638.531.6
ele_02_1480.598.175.6
ele_02_15108.470.771.2
ele_02_1644.868.322.3
ele_02_1725.935.239.8
ele_02_1837.664.8104.1
ele_02_19105.372.798.6
ele_02_2036.872.556.3
ele_02_2133.194.597.4
ele_02_2247.118.391.3
ele_02_2381.424.350.3
ele_02_2467.34492.8
ele_02_2581.28162.6
ele_02_26106.225.179.1
ele_02_2767.980.691.5
ele_02_2899.537.376.7
ele_02_2947.883.286.6
ele_02_3032.188.966.1
ele_02_3199.159.532.4
ele_02_3227.973.869.3
ele_02_3348.772.265.2
ele_02_3441.511.236.6
ele_02_3532.198.358.4
ele_02_3637.781.829.7
ele_02_3748.286.477.8
ele_02_3837.615.693.3
ele_02_392555.882.8
ele_02_4077.256.764
ele_02_4136.434.376.9
ele_02_4264.598.4102.6
ele_02_4395.671.581.3
ele_02_4456.544.435.7
ele_02_4536.248.731
con_02_1214.2124.9188
con_02_2218.7111.1180.1
con_02_3158.8146.7180.3
con_02_4221.9177.2177.7
Table 4. Results of slab packing with score.
Table 4. Results of slab packing with score.
IndexInstanceNumber of Forests [f]Rotation AxisTime [s]Score [Max]/ 10 4 Success Cases
1Inst_0110No Rotation0.0021189.7510
2Inst_0150No Rotation0.0091245.5141
3Inst_01100No Rotation0.0151245.5151
4Inst_01500No Rotation0.0651245.5141
5Inst_011000No Rotation0.1021245.5156
6Inst_015000No Rotation0.5991245.5163
7Inst_0110,000No Rotation0.8781245.5131
8Inst_0150,000No Rotation5.2261245.5151
9Inst_01100,000No Rotation16.7551245.5164
10Inst_01500,000No Rotation153.5221245.51630
11Inst_011,000,000No Rotation372.5321245.5151
12Inst_015,000,000No Rotation2130.5441245.5121
13Inst_0110 x , y , z 0.0021213.3470
14Inst_0150 x , y , z 0.0081245.5141
15Inst_01500 x , y , z 0.0521245.5152
16Inst_011000 x , y , z 0.11245.5152
17Inst_015000 x , y , z 0.5131245.5163
18Inst_0110,000 x , y , z 0.9191245.5166
19Inst_0150,000 x , y , z 5.4011245.5143
20Inst_01100,000 x , y , z 15.5941245.5165
21Inst_01500,000 x , y , z 113.1761245.5141
22Inst_011,000,000 x , y , z 250.0391245.51742
23Inst_015,000,000 x , y , z 1806.5531245.5145
24Inst_0210No Rotation0.001978.2710
25Inst_0250No Rotation0.0011052.9070
26Inst_02100No Rotation0.0141049.0330
27Inst_02500No Rotation0.0831087.3532
28Inst_021000No Rotation0.1181087.3531
29Inst_025000No Rotation0.5171087.3532
30Inst_0210,000No Rotation0.9821087.3522
31Inst_0250,000No Rotation5.4571087.35516
32Inst_02100,000No Rotation16.1861087.35625
33Inst_02500,000No Rotation128.7331087.3543
34Inst_021,000,000No Rotation380.8531087.3545
35Inst_025,000,000No Rotation2106.0081087.35540
36Inst_0210 x , y , z 0.0011053.5830
37Inst_0250 x , y , z 0.0111058.9350
38Inst_02100 x , y , z 0.0151058.8810
39Inst_02500 x , y , z 0.0581087.3532
40Inst_021000 x , y , z 0.1441087.3543
41Inst_025000 x , y , z 0.4891087.3521
42Inst_0210,000 x , y , z 0.9771087.3533
43Inst_0250,000 x , y , z 4.991087.3531
44Inst_02100,000 x , y , z 16.6681087.3531
45Inst_02500,000 x , y , z 119.5661087.3522
46Inst_021,000,000 x , y , z 308.0881087.3569
47Inst_025,000,000 x , y , z 2319.9221087.35824
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Kim, T. Packing and Cutting Stone Blocks Based on the Nonlinear Programming of Tree Cases. Computation 2025, 13, 211. https://doi.org/10.3390/computation13090211

AMA Style

Kim T. Packing and Cutting Stone Blocks Based on the Nonlinear Programming of Tree Cases. Computation. 2025; 13(9):211. https://doi.org/10.3390/computation13090211

Chicago/Turabian Style

Kim, Taeyong. 2025. "Packing and Cutting Stone Blocks Based on the Nonlinear Programming of Tree Cases" Computation 13, no. 9: 211. https://doi.org/10.3390/computation13090211

APA Style

Kim, T. (2025). Packing and Cutting Stone Blocks Based on the Nonlinear Programming of Tree Cases. Computation, 13(9), 211. https://doi.org/10.3390/computation13090211

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop