Guillotine cutting


Guillotine cutting is the process of producing small rectangular items of fixed dimensions from a given large rectangular sheet, using only guillotine-cuts. A guillotine-cut is a straight bisecting line going from one edge of an existing rectangle to the opposite edge, similarly to a paper guillotine.
Guillotine cutting is particularly common in the glass industry. Glass sheets are scored along horizontal and vertical lines, and then broken along these lines to obtain smaller panels. It is also useful for cutting steel plates, cutting of wood sheets to make furniture, and cutting of cardboard into boxes.
There are various optimization problems related to guillotine cutting, such as: maximize the total area of the produced pieces, or their total value; minimize the amount of waste of the large sheet, or the total number of sheets. They have been studied in combinatorial geometry, operations research and industrial engineering. In microelectronics, in floorplanning, a "sliceable floorplan" is the one that can be produced by guillotine cutting.
A related but different problem is guillotine partition. In that problem, the dimensions of the small rectangles are not fixed in advance. The challenge comes from the fact that the original sheet might not be rectangular - it can be any rectilinear polygon. In particular, it might contain holes. The optimization goal is usually to minimize the number of small rectangles, or minimize the total length of the cuts.

Terminology and assumptions

The following terms and notations are often used in the literature on guillotine cutting.
  • The large rectangle, also called the stock sheet, is the raw rectangular sheet which should be cut. It is characterized by its width W0 and height H0, which are the primary inputs to the problem
  • The small rectangles, also called items, are the required outputs of the cutting. They are characterized by their width wi and height hi and for i in 1,...,m, where m is the number of rectangles. Often, it is allowed to have several rectangles of the same dimensions; in this case, the pair of dimensions is often called a type.
  • A cutting-pattern, often called just pattern, is an arrangement of small rectangles on the stock sheet. It may be given as a sequence of points, for i in 1,...,m, where is the bottom-left coordinate of rectangle i. In such a pattern, rectangle i occupies a horizontal segment and a vertical segment.
  • A build refers to constructing a new rectangle by attaching two smaller rectangles. Due to the guillotine constraint, there are only two types of builds: in a horizontal build the combined rectangle has width wi+''wj and height max; in a vertical build the combined rectangle has width max and height hi+hj. Every pattern can be represented as a recursive sequence of builds. Every recursive sequence of builds corresponds to many different patterns, which have an equivalent combinatorial structure; the set of all patterns corresponding to the same recursive-build is called a guillotine-cutting class.
Some problems accept additional inputs, as explained below. The goal is to cut, from the raw rectangle, some smaller rectangles having the target dimensions. The following assumptions are often made:
  • All cuts have zero width. This does not lose much generality, since if each cut has a fixed width of d''>0, then the problem can be reduced to the zero-width variant by just adding d to wi and hi for i in 0,...,m.
  • The target dimensions cannot be rotated, i.e., w-by-h is not the same type as h-by-w. This does not lose much generality, since the variant in which rectangles can be rotated, can be reduced to the non-rotatable variant by adding the rotated patterns explicitly.

    Checking a given pattern

In the pattern verification problem, there is a cutting-pattern given as a sequence of points, for i in 1,...,m, where is the bottom-left coordinate of rectangle i . The goal is to decide whether this pattern can be implemented using only guillotine cuts, and if so, find a sequence of such cuts.
An obvious necessary condition is that no two input rectangles overlap in both dimensions. Ben Messaoud, Chengbin and Espinouse present a stronger condition, which is both necessary and sufficient. The input rectangles are ordered from left to right, such that x1 ≤... ≤ xm. There is a permutation p on the indices such that, with this permutation, the rectangles would be ordered from bottom to top, i.e., yp ≤... ≤ yp. Given four indices i1i2 and j1j2, the set E contains the indices of all rectangles whose bottom-left corner is in the rectangle X . A cutting pattern is a guillotine pattern if and only if, for all quadruplets of indices i1i2 and j1j2, at least one of the following conditions is fulfilled for E:
  1. E contains at most one element;
  2. The union of the horizontal segments, over all i in E, is made up of at least two disjoint intervals;
  3. The union of the vertical segments, over all i in E, is made up of at least two disjoint intervals.
Condition 2 implies that the rectangles in E can be separated by a vertical cut ; condition 3 implies the rectangles in E can be separated by a horizontal cut. All conditions together imply that, if any set of adjacent rectangles contains more than one element, then they can be separated by some guillotine cut.
This condition can be checked by the following algorithm.
  • At each iteration, divide a given pattern, containing at least two rectangles, into two disjoint sub-patterns using a guillotine cut, and recurse on each sub-pattern.
  • Stop when either all subpatterns contain one rectangle or no more guillotine cuts are possible.
Finding a guillotine cut for a given pattern is done as follows:
  • Determine the m horizontal intervals, and order them from left to right; determine the m vertical intervals, and order them from bottom to top. This takes O time.
  • Merge overlapping horizontal intervals, and merge overlapping vertical intervals. This takes O time.
  • If, after merging, there are at least two disjoint horizontal intervals, then a vertical guillotine cut is possible; if there are at least two disjoint vertical intervals, then a horizontal cut is possible; otherwise, no cut is possible.
The ordering step is done once, and the merging step is done m-1 times. Therefore, the run-time of the entire algorithm is O.
When the algorithm returns "yes", it also produces a sequence of guillotine cuts; when it returns "no", it also produces specific subsets of rectangles that cannot be separated by guillotine cuts.
The necessary and sufficient condition can be used to present the guillotine-strip-cutting problem as a mixed integer linear program. Their model has 3n4/4 binary variables and 2n4 constraints, and is considered not practically useful.

Finding an optimal cutting-pattern

These are variants of the two-dimensional cutting stock, bin packing and rectangle packing problems, where the cuts are constrained to be guillotine cuts.
  • In the basic guillotine-cutting problem, the required output is a sequence of guillotine cuts producing pieces of the target dimensions, such that the total area of the produced pieces is maximized.
  • In the weighted variant, for each target dimension i, there is also a value vi. The goal is then to maximize the total value of the produced pieces. The unweighted variant can be reduced to the weighted variant by letting the value of each target-dimension equal to its area.
  • In the constrained variant, for each target-dimension i, there is an upper bound bi on the number of pieces that can be produced of that type.
  • *In the doubly-constrained variant, for each target-dimension i there is both a lower bound ai and an upper bound bi on the number of produced pieces.
  • The binary variant is a constrained variant in which each target dimension must appear at most once. This case is associated with a decision problem, where the goal is to decide whether it is possible to produce a single element of each target dimension using guillotine cuts.
  • In the guillotine strip cutting problem, the large rectangle has infinite height, and the goal is to cut a single rectangle of each type, such that the total material used is minimized. It is a variant of the two-dimensional Strip packing problem.
  • In the stock minimization problem, there is an infinite number of stock sheets of the same dimensions, and the goal is to cut all required target rectangles using the smallest possible number of sheets. It is a variant of the two-dimensional bin-packing problem.
  • k-staged guillotine cutting is a restricted variant of guillotine cutting where the cutting is made in at most k stages: in the first stage, only horizontal cuts are made; in the second stage, only vertical cuts are made; and so on.
  • *In the 2-staged variant, a further distinction is whether all strips resulting from the first stage are cut in the same locations or on two different locations or in possibly different locations.
  • 1-simple guillotine cutting is a restricted variant of guillotine-cutting in which each cut separates a single rectangle.
  • *A 2-simple guillotine cutting is a 1-simple pattern such that each part is itself a 1-simple pattern. p-simple cutting patterns can be defined recursively.