1000 Ways To Pack The Bin PDF
1000 Ways To Pack The Bin PDF
1000 Ways To Pack The Bin PDF
Jukka Jylänki
Abstract
We review several algorithms that can be used to solve the problem
of packing rectangles into two-dimensional nite bins. Most of the pre-
sented algorithms have well been studied in literature, but some of the
variants are less known and some are apparently regarded as "folklore"
and no previous reference is known. Dierent variants are presented
and compared. The main contribution of this survey is an original
classication of these variants from the viewpoint of solving the nite
bin packing problem. This work focuses on empirical studies on the
problem variant where rectangles are placed orthogonally and may be
rotated by 90 degrees. Synthetic tests are used as the main benchmark
and solving a practical problem of generating texture atlases is used to
test the real-world performance of each method. As a related contribu-
tion, an original proof concerning the number of maximal orthogonal
rectangles inside a rectilinear polygon is presented.
Keywords: Two-dimensional bin packing, optimization, heuristic algo-
rithm, on-line algorithm, NP-hard
1
Contents
1 Introduction 4
2 The Algorithms 5
2.1 The Shelf Algorithms . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Shelf Next Fit (SHELF-NF) . . . . . . . . . . . . . . . 6
2.1.2 Shelf First Fit (SHELF-FF) . . . . . . . . . . . . . . . 7
2.1.3 Shelf Best Width Fit (SHELF-BWF) . . . . . . . . . . 8
2.1.4 Shelf Best Height Fit (SHELF-BHF) . . . . . . . . . . 8
2.1.5 Shelf Best Area Fit (SHELF-BAF) . . . . . . . . . . . 8
2.1.6 Shelf Worst Width Fit (SHELF-WWF) . . . . . . . . 8
2.1.7 Shelf Floor-Ceiling . . . . . . . . . . . . . . . . . . . . 9
2.1.8 The Waste Map Improvement (-WM) . . . . . . . . . 9
2.2 The Guillotine Algorithms . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Guillotine Best Area Fit (GUILLOTINE-BAF) . . . . 13
2.2.2 Guillotine Best Short Side Fit (GUILLOTINE-BSSF) 13
2.2.3 Guillotine Best Long Side Fit (GUILLOTINE-BLSF) . 13
2.2.4 Guillotine Worst Fit Rules . . . . . . . . . . . . . . . 13
2.2.5 The Rectangle Merge Improvement (-RM) . . . . . . . 14
2.3 Split Rules for the Guillotine Algorithm . . . . . . . . . . . . 15
2.3.1 Shorter/Longer Axis Split Rule (-SAS, -LAS) . . . . . 15
2.3.2 Shorter/Longer Leftover Axis Split Rule (-SLAS, -
LLAS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.3 Max/Min Area Split Rule (-MAXAS, -MINAS) . . . . 15
2.4 The Maximal Rectangles Algorithms . . . . . . . . . . . . . . 16
2.4.1 Maximal Rectangles Bottom-Left (MAXRECTS-BL) . 18
2.4.2 Maximal Rectangles Best Area Fit (MAXRECTS-BAF) 19
2.4.3 Maximal Rectangles Best Short Side Fit (MAXRECTS-
BSSF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.4 Maximal Rectangles Best Long Side Fit (MAXRECTS-
BLSF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.5 The Eciency of MAXRECTS . . . . . . . . . . . . . 19
2.4.6 Maximal Rectangles Contact Point (MAXRECTS-CP) 22
2.5 The Skyline Algorithms . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 Skyline Bottom-Left (SKYLINE-BL) . . . . . . . . . . 23
2.5.2 Skyline Best Fit (SKYLINE-BF) . . . . . . . . . . . . 23
2.5.3 The Waste Map Improvement (-WM) . . . . . . . . . 24
2
3 General Improvement Methods 24
3.1 Choosing the Destination Bin . . . . . . . . . . . . . . . . . . 24
3.2 Sorting the Input . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 The Globally Best Choice . . . . . . . . . . . . . . . . . . . . 26
4 Synthetic Benchmarks 27
4.1 Rectangle Categories and Probability Distributions . . . . . . 28
4.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 The Shelf algorithms . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 Guillotine algorithms . . . . . . . . . . . . . . . . . . . . . . . 30
4.5 The MAXRECTS algorithms . . . . . . . . . . . . . . . . . . 31
4.6 The SKYLINE algorithms. . . . . . . . . . . . . . . . . . . . . 31
3
1 Introduction
The two-dimensional rectangle bin packing is a classical problem in combi-
natorial optimization. In this problem, one is given a sequence of rectangles
( )
R1 ; R2 ; : : : ; Rn ; Ri =( wi ; hi ) and the task is to nd a packing of these
items into a minimum number of bins of size ( ). No two rectangles
W; H
may intersect or be contained inside one another. This problem has sev-
eral real-world applications and is proven to be NP-hard [1] by a reduction
from the 2-partition problem [2]. There does not even exist an asymptotic
polynomial time approximation scheme (APTAS), but it is APX-hard [3].
A lot of work has been done to develop ecient heuristic algorithms that
approximate the optimal solution. In this survey we present several of these
algorithms and compare their performance on a practical level. By changing
only a small rule in the heuristic decisions of an algorithm one can obtain
very dierent results in the produced packings. Most of the conducted re-
search focuses on asymptotic performance ratios and typically neglects these
subtleties, since they don't usually play a role in the theoretical properties
of the algorithm. We welcome these kinds of changes and test in practice
how they aect the quality of the produced packings.
The two-dimensional bin packing problem is a generalization of the one-
dimensional bin packing problem, on which Csirik and Woeginger [4] give a
good survey. For the two-dimensional problem, there exist several variants.
In one version, the process is modelled as if the rectangles are received from
some input one at a time, and they must immediately be placed into one
of the bins without any knowledge of the upcoming items. This variant
online rectangle bin packing. The opposite to this variant is the
is called
oine rectangle bin packing problem, in which the whole sequence to pack
is known in advance. We examine algorithms for both variants.
In one formulation of the bin packing problem there may exist several
simultaneously open bins, between which the algorithm can choose the
destination for the current rectangle. In the more restricting variant, there
is a limit on the number of bins that may be open at any given time, and
to open a new one, an existing bin must be closed. The -BNF algorithms
we will present can be used for the most restricting case where only one bin
may be open at a time, but other variants exploit the case when there is no
limit on the number of open bins.
orthogonal if all the sides of the placed rectangles are
A packing is called
parallel with the bin edges. We only consider packings that are orthogonal
and we allow that each rectangle may be rotated by 90 degrees. This is called
rotatable rectangle bin packing. That is, the packing algorithm may choose
4
for an input R =( w; h ) whether to pack the rectangle R
0
=(
h; w ) instead.
In some formulations of the bin packing problem, this is not allowed. This
is not in any way a critical property for the working of any of the heuristic
methods and each of them can be t to work for the non-oriented rectangle
bin packing case as well.
In some real-world applications it is required that the packings that are
produced are guillotineable. A packing P is guillotineable if it can be
split into two parts P1 ; P2 with a single straight horizontal or vertical cut
that doesn't cross any of the rectangles in the packing, and where both
P1 and P2 are either guillotineable as well or only consist of at most a
single rectangle each. Not all of the algorithms presented in this survey
produce guillotineable packings, but we make a mention of which do. Lodi,
Martello and Vigo [5] provide an overview and comparison of variants with
and without guillotineability or rotatability properties.
As a practical aspect, we conne ourselves to solving the problem with
all integral values. That is, the dimensions of the bin and the rectangles as
well as the coordinates on which the rectangles may be placed must all be
integers.
2 The Algorithms
In this chapter we introduce each data structure and algorithm that was
included in the review. These algorithms are classied in groups based on
the underlying data structure that is used to represent the packing process
and the free space left in the bin. We start with the easiest and then proceed
to the more complicated ones.
The Shelf algorithms (or level algorithms) are unarguably the simplest
methods one can use to produce packings. We dene a shelf to be a sub-
rectangle of the bin with width Wb and height hs . As the packing proceeds,
the free area of the bin is organized into shelves, bottom-up, in which the
rectangles are placed from left to right. The last shelf (the topmost shelf )
is called the open shelf. Since the rectangles are placed bottom-up, the
area above the open shelf is always unused. This allows that the height of
the open shelf may be adjusted whenever a rectangle is placed on that shelf.
For the shelves below the open shelf we don't have this freedom and those
are called closed shelves.
5
Figure 1: A sample packing produced by a Shelf algorithm.
2. If the rectangle ts upright, i.e. if max( w; h ) < hs , then store it so.
This aims to minimize the wasted surface area between the rectangle
top side and the shelf ceiling.
6
three temporary registers are needed. This property may be useful in some
applications. Unfortunately, the packings produced by SHELF-NF can be
quite far from the best methods presented in the paper.
Algorithm 1: SHELF-NF.
Initialize:
Set y 0.
Set x 0.
Set hs 0.
Pack:
foreach Rectangle R =(
w; h ) in the sequence do
Determine the proper orientation.
Try to t the rectangle onto the current open shelf.
If it does not t, close the current shelf and open a new one.
If there is no room for a new shelf, terminate.
end
7
that this smarter packing that SHELF-FF does would be any more optimal.
In practice SHELF-FF performs better than SHELF-NF, but for some se-
quences it looks like SHELF-FF just hits a streak of bad luck when trying
to outperform SHELF-NF and ends up with a worse packing. This eect is
a recurring one when comparing other algorithms as well.
Proof. The additional ( ) space comes from having to store a data struc-
O n
ture of the list of shelves, unlike in the SHELF-NF algorithm, where only
the last shelf is kept track of. An implementation that nds the rst shelf
where the rectangle ts by linear search takes O n ( 2) time, but with a bi-
section method the shelf can also be found in log time, thus giving a
n
8
2.1.6 Shelf Worst Width Fit (SHELF-WWF)
While SHELF-BWF tries to ll the width of each shelf as well as possible,
the Shelf Worst Width Fit algorithm tries to do exactly the opposite and
keep each shelf with as much width still available as possible. This is an
another curiosity with heuristic algorithms. SHELF-WWF and SHELF-
BWF are the total opposites of each other, but even still one cannot claim
that one would be more optimal than the other.
With SHELF-WWF we adopt an extra rule that if we are packing a
rectangle of width w and we nd a shelf that has exactly w units of space
still left, we immediately pick that shelf to pack the rectangle in.
Following the same pattern, one could dene the algorithms Shelf Worst
Height Fit and Shelf Worst Area Fit. But since the shelf algorithms waste
the space between each packed rectangle and the shelf ceiling, trying to
maximize this dierence would correspond to maximizing wasted area, and
therefore these variants are most likely suboptimal. If co-used with the
Floor-Ceiling variant or with the Waste Map Improvement (see the next
two subsections) this might not be strictly the case, but we did not test
these variants nevertheless.
9
We did not implement the Shelf Floor-Ceiling, mostly because we feel
that it is quite similar to and probably outperformed by the Skyline algo-
rithm, but we cannot cannot verify this claim.
Proof. For each rectangle, we rst check if it can be packed into the GUIL-
LOTINE data structure (see the next section). This can be done in linear
time. If it doesn't t, we do another linear search to nd the appropriate
shelf. An update of both the SHELF and the GUILLOTINE data structures
is performed in constant time. Hence, the total running time is O n ( 2) time,
requiring O n( ) space.
Note that the time complexity of the SHELF-FF-WM algorithm is O n ( 2)
and not O n( log ), since the Guillotine placement step dominates the binary
n
No matter what kind of tweaks are used to improve the Shelf method, it
can still waste a lot of space in the worst case. In this chapter we pick a
10
Algorithm Name Time Complexity Space Complexity
SHELF-NF ( ) n O(1)
SHELF-FF ( log )
O n n ( )
O n
SHELF-BWF ( 2)
O n ( )
O n
SHELF-BHF ( 2)
O n ( )
O n
SHELF-BAF ( 2)
O n ( )
O n
SHELF-WWF ( 2)
O n ( )
O n
SHELF-x-WM ( 2)
O n ( )
O n
F W; H
11
Figure 2: The guillotine split placement process. After placing a rectangle,
there are two ways to store the remaining free area.
end
12
Figure 3: A sample packing produced by a Guillotine algorithm. The red
lines denote the split choices.
the free areas of the bin and never "forgets" any free space, unlike the
Shelf algorithms. The drawback here is that the algorithm only considers
placements in which a rectangle R fully ts inside a single free rectangle Fi .
S =1
It never tries to pack R into a position where it would straddle a split line.
In other words, it fails to pack R if R 6 Fi for all i, but R
n
i
Fi .
13
array could be stored in sorted order to allow a loop early-out optimization,
but after observing good enough practical performance we did not bother
with such details.
In the following subchapters, we present the dierent heuristic selection
rules we used for the review.
left over is maximized. Note that with this variant, as well as with all other
Guillotine variants, we have the special placement rule that if R = Fi for
some i, then that Fi is picked immediately, since it is the perfect match.
The Worst Width Fit variant for the Shelf algorithm can be brought over
to the Guillotine algorithm in two dierent ways. In Guillotine Worst
Short Side Fit (GUILLOTINE-WSSF), we maximize the length of the
Guillotine
shorter leftover side. Finally, the third possible variant is the
Worst Long Side Fit (GUILLOTINE-WLSF), in which we maximize the
length of the longer leftover side.
14
The essential motivation for all Worst Fit variants is the same as with the
Shelf Worst Fit variants - to try to keep big spaces left in the free rectangles
as long as possible and to try to avoid very small useless strips of space.
step we add at most one new free rectangle into F . For each rectangle, we
examine each of the free rectangles in F one at a time, which yields the
running time ( 2).O n
15
2.3 Split Rules for the Guillotine Algorithm
Since the split axes determine the sizes of the free rectangles and because a
placement of a rectangle may not straddle a split line, it is important to be
careful about how the splits are performed. In this subsection we present
dierent methods of choosing whether to split horizontally or vertically.
In the following, let Fi =( wf ; hf ) be the free rectangle inside which the
rectangle R =(w; h ) has just been packed.
As all of the following split rules only make a local constant time choice
of the direction of the split, they don't aect the complexity of the main
algorithm.
16
Algorithm Name Time Complexity Space Complexity
GUILLOTINE-RECT -SPLIT ( 2)
n ( )
O n
the sux -RM to the name. To nish this chapter, table 2 shows a summary
of these algorithms.
rectangles that represents the free area left in the bin at some packing
Sstep of the Maximal Rectangles algorithm. Then for any rectangle R
n
=1
i
F ,ithere exists F 2 F such that R F .
i i
17
Figure 4: The rectangle placement rule for the MAXRECTS data structure.
Both the rectangles on the right are stored in F.
in turn and be sure that if the rectangle ts the bin we will not miss a valid
placement.
Losing the property that the free rectangles Fi are pairwise disjoint gen-
erates issues when placing a rectangle. This is because after we have packed
R into some Fi , we have to check and update all the other rectangles Fj 2F
for which R \ Fj 6= ;, or our data structure becomes inconsistent. We do
this simply by looping through each free rectangle Fj and intersecting it
with R, producing a set of new free rectangles. After this step we may
be left with degenerate and/or nonmaximal rectangles in the set F , so we
go through each free rectangle Fi 2F again and remove it if there exists
another rectangle Fj 2 F 6=
;i j, for which Fi Fj .
18
Algorithm 3: The Maximal Rectangles algorithm.
Initialize:
Set F = f( W; H )g.
Pack:
foreach Rectangle R =( w; h ) in the sequence do
Decide the free rectangle Fi 2 F to pack the rectangle R into.
If no such rectangle is found, restart with a new bin.
Decide the orientation for the rectangle and place it at the
bottom-left of Fi . Denote by B the bounding box of R in the bin
after it has been positioned.
0 00
Use the MAXRECTS split scheme to subdivide Fi into F and F .
Set F F [f
g n f g.0
F ;F
00
Fi
new rectangles G1 ; : : : ; G4 .
Set F F [f G1 ; : : : ; G4 g n f g.
F
end
foreach Ordered pair of free rectangles Fi ; Fj 2 F do
if F contains F then
F F nf g
i j
Set Fj
end
end
end
19
Figure 5: A sample packing produced by the MAXRECTS-BL algorithm.
The maximal rectangles of F are shown in colors.
20
Proposition 8. The algorithms MAXRECTS-BL, -BAF, -BSSF, -BLSF
can be implemented to run in O (jFj2 )
n time. They consume (jFj)
space.
Proof. After packing each rectangle and having intersected it with the ele-
ments of F and produced the set of new potential maximal rectangles, we
go through each pair of elements in F to prune the redundant free rectan-
gles from the list. This is the most time consuming step of the algorithm,
yielding the O (jFj2 ) time complexity.
n
Based on the above, it is very important to know the growth rate of jFj
in order to estimate the actual complexity of these algorithms. We do not
know of any previous results on this problem, but are still able to settle
the question. To our best knowledge, the result presented below is original,
except for the proof on the lower bound of jFj, which is a straightforward
adaptation from a proof on a similar problem published by [12]. We start
with a few preliminaries.
It is obvious that at each packing step, the free space of the bin forms
one or more rectilinear polygons. The number of vertices in these polygons
is linear in n, the number of rectangles we have packed. It is also immediate
that the worst case occurs when the free space is not disconnected, but
forms only a single rectilinear polygon, call it P . Denote by p1 ; : : : ; pk the
vertices of this polygon.
Let M be a maximal rectangle of P , and m be a side of M . We say that
m is edge-supported if it does not touch any vertex of P . Otherwise, one
or more vertices of P touch m and we say that m is vertex-supported. We
can make the following observation.
21
The above lemma gives us a constructive method for dening any of
the maximal rectangles of P in terms of its two supporting vertices and the
knowledge of whether these support the horizontal or vertical edges of the
maximal rectangle.
.
Having an upper bound for the number of maximal rectangles is not that
useful if the bound is loose. The next result shows that in fact this bound
is asymptotically tight. The proof is a straightforward adaptation from the
example presented in [12].
22
Figure 6: An example of a worst case conguration producing O n ( 2) maxi-
mal rectangles.
23
Figure 7: A sample packing produced by the SKYLINE-BL algorithm.
24
rectangle R left-aligned on top of that skyline level that results in the top
side of R lie at the bottommost position. Since R can be rotated, this might
not be the skyline level that lies in the lowest position.
25
3.1 Choosing the Destination Bin
We have not yet discussed how the algorithms work when the rectangles
do not t into a single bin and multiple bins must be used. These rules
are very similar to the heuristics we use when picking the destination shelf
in the Shelf algorithms. In Bin Next Fit (-BNF), we only have a single
open bin into which rectangles are packed. When the next input rectangle
does not t into that bin, that bin is closed and completely forgotten about,
and a new bin is opened. Eectively all the algorithms we have previously
discussed are of type -BNF, since they have just dealt with one bin.
In the Bin First Fit (-BFF), we consider the bins in the order they were
opened and pack the input rectangle into the bin with the lowest index
where it ts. When using the Bin Best Fit (-BBF) rule, the rectangle
is packed into the bin that gives the best score for whatever criterion the
algorithm uses to decide between possible placements. Analogously to the
shelf selection case, one can dene Bin Worst Fit as well, but in this survey
this variant was not implemented, since it was assumed to be suboptimal.
Proposition 14. The -BFF variant adds a factor of log n to the com-
plexity of the corresponding -BNF algorithm. For example, the running
time of SHELF-FF-BNF is O(n log n), but the running time of SHELF-
FF-BFF is O(n log2 n).
Proof. Since the number of rectangles each bin can hold is independent
of n, the number of bins needed to pack n items is of ( ).
n Just like
with SHELF-FF versus SHELF-NF, we can nd the destination bin for the
rectangle in log n time by using a bisection method (binary search).
In the above proof, by substituting the binary search step with a linear
search, we also get the following result.
26
packing. Since this is just a preprocess step, it does not require any changes
be made to the existing packing routine, which makes it very practical.
Of course, this can be considered only if we know the whole sequence in
advance.
We can think of several dierent methods to use as the comparison
function for the sorting routine. If we have two rectangles Ra =( wa ; ha )
and Rb =( wb ; hb ), where wa ha and wb hb , we can compare them at
least in the following ways:
The sorting step takes O n ( log ) time. Except for the algorithm SHELF-
n
NF-BNF, the time to sort is dominated by the time taken to produce the
actual packing and so the overall running time is not aected.
Most of the variants we have considered have a structure that can be rep-
0
resented as follows. Given the next input rectangle R in the sequence of
input rectanglesR, we have a set of choices S to place into and a scoring R
0
nd S= max
0
( ) and pack according to the choice . The set
S 2S C S; R
0
R S
0
2. For the Guillotine algorithms, S is the set of free rectangles F times the
0
two choices for orienting R that are valid placements. We pondered
on even extending S to cover the two possible choices for choosing the
split axis, but this was deemed to slow down the search too much.
4. For the Skyline algorithms, S is the set of skyline levels times the two
0
choices for orienting R that are valid placements.
R is xed, consider all the elements of R, that is, search the whole set
f( )j 2 S 2 Rg. Then, at each packing step, we nd (
S; R S ;R
00
S ;R
00
)=
max ( ) and pack according to the choice .
S 2S ;R2R C S; R R
00
S
00
28
Applying these improvements to all of the algorithm variants from the
previous chapters, we obtain the nal list of algorithms for the review. Table
6 summarizes all of these.
4 Synthetic Benchmarks
We implemented most of the possible combinations of the rule variants pre-
sented in the previous sections, except for the algorithms that we explicitly
mentioned to have been omitted. The number of variants we tested sums
up to a grand total of 2619 distinct algorithms, which is too huge a number
to present in a single tabular form. Therefore we present the results by rst
hand-picking dierent variants from each class and then present the set of
"best contenders" in a nal review.
Since the heart of all these algorithms consists of a heuristic rule, it is
possible that one algorithm is better than the other for some input, but with
another input sequence, the result is the opposite. Based on our tests this
phenomenon is even more common than one might think, which makes it
near impossible to single out one best algorithm. Still, some of the variants
that we have described are clearly suboptimal and it is unlikely that there
exist input sequences on which these variants could show their "full poten-
tial" and outperform the other algorithms. Moreover, some algorithms have
been observed to consistently produce relatively good packings no matter
what the input, while others seem to be more sensitive to the particular
input sequence.
Because of this instability, to try to correctly estimate the relative per-
formance of the dierent algorithms, we construct the input sequences using
dierent selections of uniform probability distributions. The following sec-
tion presents the method.
To start with, we divide the possible side lengths of a rectangle into distinct
categories. These categories are shown in table 3. To generate a side length
from a given category, we use random uniform sampling.
Then we assemble categories of possible rectangle sizes using these side
length categories. The rectangle categories we used are presented in table 4.
Since we are interested in the problem variant where rotating the rectangles
is allowed, the list of rectangle categories does not contain the cases where
h > w.
29
Category Name Length distribution
Tiny [1
1
; B
4 ]
Short [ 1 2
4 B; 4 B ]
Medium [ 2 3
4 B; 4 B ]
Long [ 3
4 B; B ]
Table 3: Categories for rectangle side lengths relative to the bin side B .
Short R5 R6 R7
Medium R8 R9
Long R10
Distribution A B C Distribution A B C
D1 90% 10% - D10 40% 30% 30%
D2 70% 30% - D11 60% - 40%
D3 50% 50% - D12 40% 20% 40%
D4 80% 10% 10% D13 40% 10% 50%
D5 60% 30% 10% D14 40% - 60%
D6 80% - 20% D15 20% 20% 60%
D7 60% 20% 20% D16 20% 10% 70%
D8 40% 40% 20% D17 20% - 80%
D9 60% 10% 30% D18 - - 100%
30
To generate actual input sequences, we need to dene the probability
distributions according to which we select rectangles from each of the classes
R1 ; : : : ; R10 . Since the number of ways this can be done is enormous even
if the probabilities are quantized, we pick the following scheme. We select
two rectangle categories, A and B , and let C = fR1 ; : : : ; R10 gnfA; B g. To
generate an actual problem instance, we draw rectangles from A, B and C
according to the uniform distribution presented in table 5. As a special note,
if the probability in the column B is marked with "-", then it is understood
that we choose only one rectangle category A, and let C contain all the rest.
We also tested the eect of diering the size of the input, by using three
dierent input sizes of S1 = 100, S2 = 500 and S3 = 1000. The actual test
instances were as follows. For each combination of A ( = =
Ri ; B ),
Rj ; Dk ; Sl
the distribution and 3 dierent size classes, so the total number of instances
that each algorithm solved was 48600. From the results we analysed the
average and worst case performances of each algorithm.
4.2 Results
The results from all the runs are presented in tables in the appendix. In
each problem instance, the average number of bins used by the algorithm
was divided by the best known number of bins that were needed to pack
the rectangles. This means that a score of 10 : corresponds to a perfect
performance with respect to all other algorithms, but this does not mean
necessarily that the algorithm used the optimal number of bins. In each
cell, the value corresponds to the average case performance, and the value
in the parentheses shows the worst case performance that occurred.
The performance of any of the Shelf algorithms is not good enough to rec-
ommend the use of these algorithms except when fast runtime performance
is needed. In online instances the Shelf algorithms can consume twice the
number of bins in the worst case, and about 1 5 times on average. In oine
:
cases, sorting by descending area and packing into multiple bins simultane-
ously ( -BFF) looks like the best option, giving a 1:077 performance in the
average case, but still a 1 571 times the best in the worst case.
:
31
4.4 Guillotine algorithms
On average, the Rectangle Merge was seen to improve the results in all
cases, so the results from the variants without the -RM improvement were
be omitted.
Also, all the dierent Worst Fit rules performed poorly compared to the
Best Fit rules, so the Worst Fit rules were omitted in the oine case. The
best average case performance in the online packing problem was obtained
with the GUILLOTINE-MINAS-RM-BNF-BAF algorithm, yielding a 1 445
:
packing factor on average. The best worst case performance was obtained
with the GUILLOTINE-LAS-RM-BNF-BSSF algorithm, which yielded a
score of 1 773.
:
In the oine case, the Guillotine algorithms perform very well. The
best average and worst case performance was obtained with the algorithm
GUILLOTINE-BSSF-SAS-RM-DESCSS-BFF with scores of 1 016 and 1 111
: :
respectively.
The best performing algorithms are the MAXRECTS variants. When pro-
ducing online packings, MAXRECTS-BSSF-BNF got a score of 1 408(1 788).
: :
Another very good performer, and slightly faster, was the MAXRECTS-
BSSF-BBF-DESCSS, which received a score of 1 009(1 087).
: :
The results obtained from the SKYLINE variants were quite interesting.
In the online packing problem, SKYLINE-BL-WM-BNF was the best of all
packers, receiving a score of 1 392(1 654). When packing into multiple bins,
: :
32
5 Conclusions and Future Work
An overall leaderboard of results is presented in the tables 21 and 22. It is
clear that the MAXRECTS algorithms perform the best of all. The SKY-
LINE algorithms performed the best when packing is performed online only
to a single bin at a time (-BNF). The GUILLOTINE variants are asymp-
totically faster than the MAXRECTS algorithms, but also perform slightly
worse. The SHELF algorithms should only be favored if implementation
simplicity is a concern.
This survey only consisted of evaluating dierent immediate heuris-
tic rules. In the literature there exists several solvers that are based on
meta-heuristics [14] [15], agent-based approaches [16] and iterative search-
ing [17]. Also, publications presenting other novel heuristic approaches have
appeared. These use concepts such as corner-occupying action and caving
degree [18] [19], Less Flexibility First [20], and Least Wasted First [13].
In the future, it would be interesting to compare these algorithms with the
best performing variants presented in this survey.
References
Computers and Intractability: A
[1] M. R. Garey and D. S. Johnson,
Guide to the Theory of NP-Completeness. W. H. Freeman, 1979.
[2] R. M. Karp, Reducibility among combinatorial problems, in Com-
plexity of Computer Computations (R. E. Miller and J. W. Thatcher,
eds.), pp. 85103, Plenum Press, 1972.
33
[6] A. Lodi, S. Martello, and D. Vigo, Recent advances on two-dimensional
bin packing problems, Discrete Appl. Math., vol. 123, no. 1-3,
pp. 379396, 2002.
[12] A. Naamad, D. T. Lee, and W. L. Hsu, On the maximum empty rect-
angle problem, Discrete Applied Mathematics, vol. 8, no. 3, pp. 267
277, 1984.
[13] L. Wei, D. Zhang, and Q. Chen, A least wasted rst heuristic algorithm
for the rectangular packing problem, Comput. Oper. Res., vol. 36,
no. 5, pp. 16081614, 2009.
34
[17] D. Beltrán-Cano, B. Melián-Batista, and J. M. Moreno-Vega, Solv-
ing the rectangle packing problem by an iterative hybrid heuristic,
pp. 673680, 2009.
[18] W. Huang, D. Chen, and R. Xu, A new heuristic algorithm for rect-
angle packing, Comput. Oper. Res., vol. 34, no. 11, pp. 32703280,
2007.
[19] W. Huang and D. Chen, An ecient heuristic algorithm for rectangle-
packing problem, Simulation Modelling Practice and Theory,
vol. 15, pp. 13561365, November 2007.
[20] Y.-L. Wu, W. Huang, S. chung Lau, C. K. Wong, and G. H. Young, An
eective quasi-human based heuristic for solving the rectangle packing
problem, European Journal of Operational Research, vol. 141, no. 2,
pp. 341 358, 2002.
35
6 Appendix: Summary and Results
36
Algorithm Name Time Complexity Space Complexity Input
SHELF-NF-BNF ( )
n O (1) Online
SHELF-NF- sort -BNF ( log
n n ) O (1) Oine
SHELF-NF-BFF ( log
n n ) O (1) Online
SHELF-NF- sort -BFF ( log
n n ) O (1) Oine
SHELF-FF-BNF ( log
O n n ) ( )
O n Online
SHELF-FF- sort -BNF ( log
O n n ) ( )
O n Oine
SHELF-FF-BFF ( log2
O n n ) ( )
O n Online
SHELF-FF- sort -BFF ( log2
O n n ) ( )
O n Oine
SHELF-opt -BNF ( 2)
O n ( )
O n Online
SHELF-opt -sort -BNF ( 2)
O n ( )
O n Oine
SHELF-opt -BFF ( log
O n
2 n ) ( )
O n Online
SHELF-opt -sort -BFF ( 2 log
O n n ) ( )
O n Oine
SHELF-NF-WM-BNF ( 2)
O n ( )
O n Online
SHELF-NF-WM- sort -BNF ( 2)
O n ( )
O n Oine
SHELF-NF-WM-BFF ( log
O n
2 n ) ( )
O n Online
SHELF-NF-WM- sort -BFF ( 2 log
O n n ) ( )
O n Oine
SHELF-FF-WM-BNF ( 2)
O n ( )
O n Online
SHELF-FF-WM- sort -BNF ( 2)
O n ( )
O n Oine
SHELF-FF-WM-BFF ( 2 log
O n n ) ( )
O n Online
SHELF-FF-WM- sort -BFF ( 2 log
O n n ) ( )
O n Oine
SHELF-opt -WM-BNF ( 2)
O n ( )
O n Online
SHELF-opt -sort -WM-BNF ( 2)
O n ( )
O n Oine
SHELF-opt -WM-BFF ( log
O n
2 n ) ( )
O n Online
SHELF-opt -sort -WM-BFF ( 2 log
O n n ) ( )
O n Oine
GUILLOTINE-rect -split -BNF ( 2)
O n ( )
O n Online
GUILLOTINE-rect -split -sort -BNF ( 2)
O n ( )
O n Oine
GUILLOTINE-rect -split -BFF ( 2 log
O n n ) ( )
O n Online
GUILLOTINE-rect -split -sort -BFF ( 2 log
O n n ) ( )
O n Oine
GUILLOTINE-rect -split -GLOBAL ( 3)
O n ( )
O n Oine
GUILLOTINE-rect -split -RM-BNF ( 3)
O n ( )
O n Online
GUILLOTINE-rect -split -RM-sort -BNF ( 3)
O n ( )
O n Oine
GUILLOTINE-rect -split -RM-BFF ( 3 log
O n n ) ( )
O n Online
GUILLOTINE-rect -split -RM-sort -BFF ( 3 log
O n n ) ( )
O n Oine
GUILLOTINE-rect -split -RM-GLOBAL ( 4)
O n ( )
O n Oine
37
Algorithm Name Time Complexity Space Complexity Input
x
MAXRECTS- -BNF O (jFj2 )n O (jFj) Online
MAXRECTS-x -sort -BNF O (jFj2 )n O (jFj) Oine
MAXRECTS-x -GLOBAL-BNF O (jFj2 2)n O (jFj) Oine
MAXRECTS-x -BFF O (jFj2 log )
n n O (jFj) Online
MAXRECTS-x -sort -BFF O (jFj2 log )
n n O (jFj) Oine
MAXRECTS-x -GLOBAL-BFF O (jFj2 2 log )
n n O (jFj) Oine
MAXRECTS-x -BBF O (jFj2 2)n O (jFj) Online
MAXRECTS-x -sort -BBF O (jFj2 2)n O (jFj) Oine
MAXRECTS-x -GLOBAL-BBF O (jFj2 3)n O (jFj) Oine
SKYLINE-x -BNF ( 2)
O n O n ( ) Online
SKYLINE-x -sort -BNF ( 2)
O n O n ( ) Oine
SKYLINE-x -BFF O n( 2 log ) n O n ( ) Online
SKYLINE-x -sort -BFF O n( 2 log ) n O n ( ) Oine
SKYLINE-x -GLOBAL ( 3)
O n O n ( ) Oine
SKYLINE-x -WM-BNF ( 2)
O n O n ( ) Online
SKYLINE-x -sort -WM-BNF ( 2)
O n O n ( ) Oine
SKYLINE-x -WM-BFF O n( 2 log ) n O n ( ) Online
SKYLINE-x -sort -WM-BFF O n( 2 log ) n O n ( ) Oine
Table 7: Average and worst case results for online Shelf algorithms on in-
stances of 1000 rectangles.
38
SHELF- SHELF- SHELF- SHELF- SHELF- SHELF- SHELF-
NF FF BWF BHF BAF WWF WAF
-DESCLS-BNF 1.440 1.425 1.425 1.425 1.424 1.429 1.429
(2.033) (1.954) (1.954) (1.960) (1.955) (1.983) (1.979)
-DESCSS-BNF 1.455 1.445 1.446 1.447 1.447 1.446 1.446
(2.086) (2.076) (2.076) (2.076) (2.076) (2.076) (2.076)
-ASCDIFF-BNF 1.462 1.452 1.453 1.454 1.453 1.456 1.455
(2.004) (1.950) (1.950) (1.950) (1.950) (1.950) (1.950)
-DESCPERIM-BNF 1.464 1.454 1.455 1.455 1.455 1.457 1.456
(2.123) (2.033) (2.037) (2.047) (2.037) (2.066) (2.059)
-DESCA-BNF 1.465 1.455 1.456 1.456 1.456 1.456 1.456
(2.277) (2.181) (2.198) (2.191) (2.198) (2.198) (2.195)
-DESCRATIO-BNF 1.465 1.456 1.457 1.457 1.457 1.457 1.456
(2.086) (2.076) (2.076) (2.076) (2.076) (2.076) (2.076)
-DESCDIFF-BNF 1.474 1.463 1.463 1.465 1.463 1.466 1.466
(2.099) (2.043) (2.043) (2.044) (2.043) (2.048) (2.048)
-ASCLS-BNF 1.471 1.468 1.467 1.467 1.468 1.469 1.469
(2.022) (1.988) (1.989) (1.989) (1.989) (1.998) (1.987)
-ASCPERIM-BNF 1.497 1.493 1.493 1.493 1.493 1.493 1.493
(2.143) (2.098) (2.098) (2.098) (2.098) (2.098) (2.098)
-ASCA-BNF 1.516 1.511 1.511 1.512 1.512 1.512 1.512
(2.383) (2.305) (2.305) (2.327) (2.307) (2.353) (2.354)
-ASCRATIO-BNF 1.514 1.513 1.513 1.513 1.513 1.513 1.513
(2.248) (2.218) (2.218) (2.218) (2.218) (2.219) (2.219)
-ASCSS-BNF 1.515 1.514 1.514 1.515 1.515 1.514 1.514
(2.235) (2.217) (2.217) (2.229) (2.229) (2.229) (2.217)
39
SHELF- SHELF- SHELF- SHELF- SHELF- SHELF- SHELF-
NF FF BWF BHF BAF WWF WAF
-DESCA-BFF 1.118 1.077 1.077 1.077 1.077 1.077 1.077
(1.837) (1.571) (1.571) (1.571) (1.571) (1.571) (1.571)
-DESCPERIM-BFF 1.119 1.081 1.081 1.081 1.081 1.081 1.081
(1.772) (1.589) (1.589) (1.589) (1.589) (1.589) (1.589)
-DESCSS-BFF 1.124 1.083 1.083 1.083 1.083 1.083 1.083
(1.758) (1.652) (1.652) (1.652) (1.652) (1.652) (1.652)
-DESCRATIO-BFF 1.125 1.085 1.085 1.085 1.085 1.085 1.085
(1.758) (1.652) (1.652) (1.652) (1.652) (1.652) (1.652)
-DESCLS-BFF 1.132 1.106 1.106 1.106 1.106 1.107 1.107
(1.806) (1.637) (1.637) (1.637) (1.637) (1.637) (1.637)
-ASCDIFF-BFF 1.152 1.131 1.131 1.131 1.131 1.132 1.132
(1.808) (1.672) (1.677) (1.659) (1.677) (1.664) (1.657)
-ASCLS-BFF 1.255 1.254 1.253 1.253 1.253 1.254 1.254
(1.832) (1.818) (1.818) (1.818) (1.818) (1.813) (1.813)
-DESCDIFF-BFF 1.278 1.263 1.263 1.264 1.263 1.264 1.264
(1.944) (1.885) (1.885) (1.885) (1.885) (1.885) (1.885)
-ASCPERIM-BFF 1.386 1.382 1.382 1.382 1.382 1.382 1.382
(1.975) (1.928) (1.928) (1.928) (1.928) (1.928) (1.928)
-ASCA-BFF 1.453 1.446 1.446 1.447 1.446 1.447 1.447
(2.216) (2.208) (2.182) (2.198) (2.191) (2.208) (2.188)
-ASCRATIO-BFF 1.491 1.490 1.490 1.490 1.490 1.490 1.490
(2.166) (2.139) (2.139) (2.152) (2.152) (2.152) (2.139)
-ASCSS-BFF 1.498 1.498 1.498 1.498 1.498 1.498 1.498
(2.167) (2.155) (2.155) (2.168) (2.168) (2.168) (2.155)
40
SHELF- SHELF- SHELF- SHELF- SHELF- SHELF- SHELF-
NF FF BWF BHF BAF WWF WAF
-DESCLS-WM-BNF 1.362 1.362 1.362 1.362 1.362 1.362 1.362
(1.653) (1.653) (1.653) (1.653) (1.653) (1.653) (1.653)
-DESCSS-WM-BNF 1.398 1.398 1.398 1.398 1.398 1.398 1.398
(1.745) (1.745) (1.745) (1.745) (1.745) (1.745) (1.745)
-DESCPERIM-WM-BNF 1.400 1.400 1.400 1.400 1.400 1.400 1.400
(1.744) (1.744) (1.744) (1.744) (1.744) (1.744) (1.744)
-DESCA-WM-BNF 1.403 1.403 1.403 1.403 1.403 1.403 1.403
(1.749) (1.749) (1.749) (1.749) (1.749) (1.749) (1.749)
-DESCRATIO-WM-BNF 1.408 1.408 1.408 1.408 1.408 1.408 1.408
(1.737) (1.737) (1.737) (1.737) (1.737) (1.737) (1.737)
-DESCDIFF-WM-BNF 1.414 1.414 1.414 1.414 1.414 1.414 1.414
(1.678) (1.678) (1.678) (1.678) (1.678) (1.678) (1.678)
-ASCDIFF-WM-BNF 1.417 1.417 1.417 1.417 1.417 1.417 1.417
(1.676) (1.676) (1.676) (1.676) (1.676) (1.676) (1.676)
-ASCPERIM-WM-BNF 1.442 1.442 1.442 1.442 1.442 1.442 1.442
(1.800) (1.800) (1.800) (1.800) (1.800) (1.800) (1.800)
-ASCA-WM-BNF 1.448 1.448 1.448 1.448 1.448 1.448 1.448
(1.860) (1.860) (1.860) (1.860) (1.860) (1.860) (1.860)
-ASCRATIO-WM-BNF 1.455 1.455 1.455 1.455 1.455 1.455 1.455
(2.003) (2.003) (2.003) (2.003) (2.003) (2.003) (2.003)
-ASCSS-WM-BNF 1.456 1.456 1.456 1.456 1.456 1.456 1.456
(2.072) (2.072) (2.072) (2.072) (2.072) (2.072) (2.072)
-ASCLS-WM-BNF 1.457 1.457 1.457 1.457 1.457 1.457 1.457
(1.964) (1.964) (1.964) (1.964) (1.964) (1.964) (1.964)
41
SHELF- SHELF- SHELF- SHELF- SHELF- SHELF- SHELF-
NF FF BWF BHF BAF WWF WAF
-DESCPERIM-WM-BFF 1.040 1.040 1.040 1.040 1.040 1.040 1.040
(1.177) (1.177) (1.177) (1.177) (1.177) (1.177) (1.177)
-DESCA-WM-BFF 1.042 1.042 1.042 1.042 1.042 1.042 1.042
(1.265) (1.265) (1.265) (1.265) (1.265) (1.265) (1.265)
-DESCSS-WM-BFF 1.049 1.049 1.049 1.049 1.049 1.049 1.049
(1.248) (1.248) (1.248) (1.248) (1.248) (1.248) (1.248)
-DESCRATIO-WM-BFF 1.051 1.051 1.051 1.051 1.051 1.051 1.051
(1.251) (1.251) (1.251) (1.251) (1.251) (1.251) (1.251)
-DESCLS-WM-BFF 1.072 1.072 1.072 1.072 1.072 1.072 1.072
(1.371) (1.371) (1.371) (1.371) (1.371) (1.371) (1.371)
-ASCDIFF-WM-BFF 1.105 1.105 1.105 1.105 1.105 1.105 1.105
(1.389) (1.389) (1.384) (1.384) (1.384) (1.384) (1.384)
-DESCDIFF-WM-BFF 1.194 1.194 1.194 1.194 1.194 1.194 1.194
(1.507) (1.507) (1.507) (1.507) (1.507) (1.507) (1.507)
-ASCLS-WM-BFF 1.246 1.246 1.246 1.246 1.246 1.246 1.246
(1.780) (1.780) (1.788) (1.788) (1.788) (1.788) (1.788)
-ASCPERIM-WM-BFF 1.320 1.320 1.320 1.320 1.320 1.320 1.320
(1.648) (1.648) (1.648) (1.648) (1.648) (1.648) (1.648)
-ASCA-WM-BFF 1.364 1.364 1.364 1.364 1.364 1.364 1.364
(1.693) (1.693) (1.693) (1.693) (1.693) (1.693) (1.693)
-ASCRATIO-WM-BFF 1.401 1.401 1.401 1.401 1.401 1.401 1.401
(1.732) (1.732) (1.732) (1.732) (1.732) (1.732) (1.732)
-ASCSS-WM-BFF 1.408 1.408 1.408 1.408 1.408 1.408 1.408
(1.744) (1.744) (1.744) (1.744) (1.744) (1.744) (1.744)
42
-BAF -BLSF -BSSF -WAF -WLSF -WSSF
GUILLOTINE-MINAS-RM-BNF 1.445 1.447 1.454 1.511 1.510 1.517
(2.301) (2.132) (2.849) (2.892) (3.385) (2.803)
GUILLOTINE-MINAS-BNF 1.446 1.449 1.455 1.513 1.512 1.520
(2.320) (2.156) (2.859) (2.915) (3.411) (2.864)
GUILLOTINE-LAS-RM-BNF 1.467 1.473 1.483 1.558 1.561 1.552
(1.836) (2.004) (1.773) (3.569) (2.587) (3.636)
GUILLOTINE-LAS-BNF 1.468 1.474 1.484 1.561 1.564 1.554
(1.852) (2.049) (1.783) (3.620) (2.619) (3.696)
GUILLOTINE-SLAS-RM-BNF 1.468 1.474 1.461 1.544 1.517 1.560
(2.709) (2.765) (2.837) (3.388) (3.386) (3.524)
GUILLOTINE-SLAS-BNF 1.470 1.475 1.462 1.547 1.519 1.563
(2.727) (2.771) (2.853) (3.416) (3.412) (3.562)
GUILLOTINE-SAS-RM-BNF 1.614 1.643 1.594 1.690 1.644 1.739
(3.433) (3.460) (3.357) (3.519) (3.616) (3.655)
GUILLOTINE-SAS-BNF 1.615 1.645 1.596 1.693 1.648 1.743
(3.451) (3.467) (3.377) (3.537) (3.661) (3.673)
GUILLOTINE-LLAS-RM-BNF 1.616 1.634 1.616 1.715 1.676 1.713
(2.861) (2.891) (2.791) (3.493) (3.010) (3.536)
GUILLOTINE-LLAS-BNF 1.617 1.635 1.617 1.717 1.678 1.715
(2.872) (2.894) (2.801) (3.558) (3.018) (3.588)
GUILLOTINE-MAXAS-RM-BNF 1.634 1.658 1.623 1.732 1.689 1.751
(3.060) (3.327) (2.814) (3.249) (3.030) (3.576)
GUILLOTINE-MAXAS-BNF 1.635 1.659 1.625 1.735 1.692 1.754
(3.070) (3.330) (2.830) (3.266) (3.037) (3.586)
43
-DESC -DESC -DESCA -DESC -GLOBAL -DESC
SS -BFF RATIO -BFF PERIM LS -BFF
-BFF -BFF
GUILLOTINE-BSSF-SAS-RM 1.016 1.017 1.019 1.021 1.036 1.043
(1.111) (1.111) (1.128) (1.148) (1.142) (1.396)
GUILLOTINE-BAF-SAS-RM 1.017 1.018 1.020 1.022 1.020 1.044
(1.112) (1.112) (1.135) (1.159) (1.135) (1.396)
GUILLOTINE-BSSF-LLAS-RM 1.019 1.019 1.023 1.026 1.035 1.043
(1.125) (1.125) (1.144) (1.172) (1.141) (1.396)
GUILLOTINE-BSSF-MAXAS-RM 1.019 1.020 1.023 1.025 1.035 1.043
(1.125) (1.125) (1.144) (1.172) (1.141) (1.396)
GUILLOTINE-BLSF-SAS-RM 1.019 1.020 1.021 1.023 1.024 1.046
(1.136) (1.136) (1.149) (1.173) (1.164) (1.396)
GUILLOTINE-BAF-LLAS-RM 1.020 1.021 1.025 1.028 1.025 1.048
(1.125) (1.125) (1.144) (1.172) (1.145) (1.396)
GUILLOTINE-BAF-MAXAS-RM 1.021 1.022 1.024 1.027 1.024 1.047
(1.127) (1.127) (1.144) (1.172) (1.145) (1.396)
GUILLOTINE-BLSF-LLAS-RM 1.023 1.024 1.026 1.030 1.032 1.052
(1.125) (1.125) (1.151) (1.173) (1.181) (1.396)
GUILLOTINE-BLSF-MAXAS-RM 1.024 1.025 1.026 1.028 1.030 1.052
(1.127) (1.127) (1.151) (1.173) (1.181) (1.396)
GUILLOTINE-BSSF-SLAS-RM 1.026 1.026 1.023 1.023 1.020 1.046
(1.155) (1.155) (1.163) (1.160) (1.156) (1.396)
GUILLOTINE-BSSF-MINAS-RM 1.027 1.028 1.024 1.025 1.020 1.047
(1.168) (1.168) (1.173) (1.169) (1.156) (1.396)
GUILLOTINE-BSSF-LAS-RM 1.027 1.028 1.031 1.035 1.019 1.048
(1.311) (1.317) (1.309) (1.329) (1.133) (1.396)
GUILLOTINE-BLSF-SLAS-RM 1.029 1.030 1.027 1.027 1.040 1.045
(1.210) (1.215) (1.223) (1.222) (1.330) (1.396)
GUILLOTINE-BAF-SLAS-RM 1.029 1.029 1.027 1.027 1.027 1.045
(1.215) (1.211) (1.227) (1.222) (1.223) (1.396)
GUILLOTINE-BLSF-MINAS-RM 1.037 1.038 1.035 1.036 1.044 1.046
(1.371) (1.370) (1.340) (1.332) (1.412) (1.396)
GUILLOTINE-BAF-MINAS-RM 1.037 1.037 1.034 1.036 1.035 1.046
(1.372) (1.371) (1.340) (1.332) (1.339) (1.396)
GUILLOTINE-BAF-LAS-RM 1.048 1.049 1.050 1.052 1.050 1.051
(1.479) (1.484) (1.495) (1.484) (1.494) (1.396)
GUILLOTINE-BLSF-LAS-RM 1.048 1.049 1.049 1.051 1.049 1.052
(1.479) (1.484) (1.495) (1.484) (1.471) (1.396)
44
-ASC -DESC -ASCLS -ASC -ASCA - -ASC -ASCSS
DIFF DIFF -BFF PERIM BFF RATIO -BFF
-BFF -BFF -BFF -BFF
GUILLOTINE-BSSF-SAS-RM 1.084 1.158 1.222 1.294 1.324 1.385 1.391
(1.344) (1.465) (1.506) (1.567) (1.593) (1.739) (1.739)
GUILLOTINE-BAF-SAS-RM 1.086 1.161 1.225 1.299 1.333 1.399 1.405
(1.353) (1.472) (1.509) (1.560) (1.610) (1.769) (1.776)
GUILLOTINE-BSSF-LLAS-RM 1.087 1.161 1.221 1.295 1.336 1.407 1.413
(1.348) (1.467) (1.497) (1.558) (1.625) (1.776) (1.786)
GUILLOTINE-BSSF-MAXAS-RM 1.086 1.161 1.227 1.298 1.336 1.402 1.408
(1.348) (1.468) (1.498) (1.558) (1.612) (1.771) (1.782)
GUILLOTINE-BLSF-SAS-RM 1.088 1.164 1.235 1.312 1.341 1.406 1.412
(1.364) (1.478) (1.522) (1.595) (1.617) (1.776) (1.783)
GUILLOTINE-BAF-LLAS-RM 1.092 1.166 1.230 1.302 1.345 1.420 1.426
(1.371) (1.473) (1.513) (1.560) (1.633) (1.807) (1.819)
GUILLOTINE-BAF-MAXAS-RM 1.092 1.165 1.236 1.306 1.346 1.414 1.420
(1.372) (1.472) (1.527) (1.560) (1.625) (1.795) (1.806)
GUILLOTINE-BLSF-LLAS-RM 1.095 1.170 1.239 1.311 1.348 1.424 1.430
(1.388) (1.477) (1.541) (1.605) (1.633) (1.821) (1.831)
GUILLOTINE-BLSF-MAXAS-RM 1.095 1.169 1.245 1.317 1.349 1.418 1.424
(1.388) (1.478) (1.533) (1.593) (1.630) (1.803) (1.811)
GUILLOTINE-BSSF-SLAS-RM 1.084 1.161 1.166 1.286 1.308 1.362 1.367
(1.332) (1.477) (1.571) (1.601) (1.598) (1.695) (1.701)
GUILLOTINE-BSSF-MINAS-RM 1.084 1.165 1.158 1.282 1.307 1.363 1.368
(1.332) (1.480) (1.565) (1.597) (1.599) (1.696) (1.701)
GUILLOTINE-BSSF-LAS-RM 1.090 1.173 1.160 1.282 1.326 1.387 1.392
(1.428) (1.503) (1.503) (1.599) (1.615) (1.726) (1.732)
GUILLOTINE-BLSF-SLAS-RM 1.091 1.171 1.171 1.308 1.327 1.378 1.383
(1.340) (1.551) (1.514) (1.636) (1.634) (1.714) (1.719)
GUILLOTINE-BAF-SLAS-RM 1.090 1.170 1.168 1.304 1.324 1.374 1.379
(1.341) (1.548) (1.494) (1.635) (1.638) (1.709) (1.714)
GUILLOTINE-BLSF-MINAS-RM 1.095 1.184 1.158 1.306 1.333 1.388 1.393
(1.457) (1.660) (1.497) (1.717) (1.731) (1.742) (1.742)
GUILLOTINE-BAF-MINAS-RM 1.094 1.184 1.157 1.304 1.331 1.386 1.391
(1.458) (1.660) (1.490) (1.717) (1.731) (1.742) (1.742)
GUILLOTINE-BAF-LAS-RM 1.106 1.203 1.164 1.315 1.354 1.411 1.416
(1.562) (1.697) (1.489) (1.708) (1.736) (1.810) (1.810)
GUILLOTINE-BLSF-LAS-RM 1.107 1.203 1.164 1.314 1.353 1.410 1.416
(1.567) (1.697) (1.499) (1.708) (1.736) (1.810) (1.810)
45
-DESC -DESC -DESCA -DESC -GLOBAL -DESC
SS RATIO PERIM LS
MAXRECTS-BL-BFF 1.008 1.009 1.013 1.015 1.041
(1.091) (1.091) (1.120) (1.125) (1.396)
MAXRECTS-BSSF-BBF 1.009 1.010 1.010 1.012 1.005 1.035
(1.087) (1.087) (1.106) (1.111) (1.068) (1.396)
MAXRECTS-BSSF-BFF 1.009 1.010 1.012 1.014 1.040
(1.087) (1.087) (1.106) (1.111) (1.396)
MAXRECTS-CP-BFF 1.009 1.009 1.012 1.014 1.042
(1.087) (1.087) (1.109) (1.111) (1.396)
MAXRECTS-BAF-BFF 1.009 1.010 1.012 1.014 1.041
(1.088) (1.088) (1.108) (1.111) (1.396)
MAXRECTS-BLSF-BFF 1.010 1.011 1.014 1.017 1.045
(1.086) (1.090) (1.102) (1.119) (1.396)
MAXRECTS-BAF-BBF 1.010 1.010 1.011 1.012 1.010 1.036
(1.088) (1.088) (1.107) (1.111) (1.083) (1.396)
MAXRECTS-BLSF-BBF 1.011 1.012 1.014 1.016 1.011 1.042
(1.087) (1.094) (1.103) (1.117) (1.089) (1.396)
MAXRECTS-CP-BBF 1.011 1.012 1.012 1.014 1.012 1.040
(1.116) (1.122) (1.100) (1.109) (1.121) (1.395)
MAXRECTS-BL-BBF 1.030 1.031 1.062 1.096 1.480 1.198
(1.186) (1.183) (1.161) (1.335) (1.862) (1.592)
MAXRECTS-BL-BNF 1.360 1.360 1.365 1.355 1.343 1.329
(1.696) (1.697) (1.692) (1.686) (1.666) (1.585)
MAXRECTS-CP-BNF 1.374 1.375 1.375 1.358 1.010 1.325
(1.717) (1.715) (1.697) (1.680) (1.120) (1.577)
MAXRECTS-BSSF-BNF 1.384 1.385 1.389 1.367 1.005 1.311
(1.732) (1.732) (1.729) (1.676) (1.068) (1.556)
MAXRECTS-BAF-BNF 1.389 1.390 1.398 1.389 1.010 1.316
(1.737) (1.736) (1.734) (1.790) (1.083) (1.557)
MAXRECTS-BLSF-BNF 1.390 1.391 1.396 1.397 1.011 1.338
(1.738) (1.739) (1.706) (1.767) (1.089) (1.602)
46
-ASC -DESC -ASCLS -ASC -ASCA -ASC -ASCSS
DIFF DIFF PERIM RATIO
MAXRECTS-BL-BFF 1.050 1.152 1.125 1.237 1.290 1.350 1.355
(1.311) (1.466) (1.483) (1.524) (1.565) (1.694) (1.694)
MAXRECTS-BSSF-BBF 1.043 1.147 1.122 1.235 1.279 1.346 1.351
(1.317) (1.456) (1.488) (1.532) (1.554) (1.675) (1.681)
MAXRECTS-BSSF-BFF 1.052 1.150 1.127 1.239 1.282 1.348 1.353
(1.323) (1.456) (1.488) (1.531) (1.554) (1.677) (1.682)
MAXRECTS-CP-BFF 1.051 1.151 1.126 1.236 1.285 1.345 1.350
(1.324) (1.460) (1.474) (1.516) (1.547) (1.670) (1.675)
MAXRECTS-BAF-BFF 1.052 1.151 1.130 1.243 1.286 1.350 1.355
(1.323) (1.465) (1.491) (1.536) (1.571) (1.673) (1.678)
MAXRECTS-BLSF-BFF 1.056 1.154 1.138 1.249 1.295 1.359 1.364
(1.338) (1.459) (1.526) (1.571) (1.581) (1.681) (1.686)
MAXRECTS-BAF-BBF 1.049 1.150 1.126 1.239 1.284 1.349 1.354
(1.323) (1.463) (1.490) (1.538) (1.577) (1.673) (1.677)
MAXRECTS-BLSF-BBF 1.055 1.157 1.135 1.245 1.292 1.358 1.363
(1.340) (1.463) (1.533) (1.577) (1.581) (1.680) (1.686)
MAXRECTS-CP-BBF 1.069 1.158 1.161 1.261 1.302 1.353 1.359
(1.410) (1.477) (1.498) (1.642) (1.675) (1.728) (1.728)
MAXRECTS-BL-BBF 1.176 1.322 1.410 1.459 1.462 1.480 1.487
(1.472) (1.731) (1.920) (1.848) (1.835) (1.868) (1.874)
MAXRECTS-BL-BNF 1.363 1.342 1.338 1.352 1.369 1.374 1.373
(1.677) (1.691) (1.590) (1.687) (1.694) (1.710) (1.709)
MAXRECTS-CP-BNF 1.375 1.368 1.337 1.357 1.382 1.392 1.392
(1.686) (1.697) (1.585) (1.685) (1.698) (1.740) (1.744)
MAXRECTS-BSSF-BNF 1.411 1.374 1.327 1.352 1.397 1.418 1.418
(1.848) (1.694) (1.565) (1.672) (1.746) (1.775) (1.776)
MAXRECTS-BAF-BNF 1.413 1.379 1.335 1.361 1.408 1.449 1.449
(1.887) (1.698) (1.569) (1.675) (1.756) (1.912) (1.912)
MAXRECTS-BLSF-BNF 1.432 1.392 1.354 1.382 1.407 1.446 1.445
(1.865) (1.727) (1.608) (1.705) (1.715) (1.871) (1.871)
-BNF -BFF
SKYLINE-BL-WM 1.392 (1.654) 1.056 (1.158)
SKYLINE-BL 1.398 (1.658) 1.069 (1.235)
SKYLINE-MW-WM 1.413 (1.659) 1.054 (1.141)
SKYLINE-MW 1.416 (1.751) 1.064 (1.187)
47
SKYLINE-BL-WM-BNF SKYLINE-MW-WM-BNF
-DESCLS 1.329 (1.583) 1.330 (1.586)
-ASCLS 1.337 (1.588) 1.342 (1.596)
-DESCDIFF 1.344 (1.691) 1.348 (1.689)
-ASCPERIM 1.355 (1.689) 1.362 (1.688)
-DESCPERIM 1.358 (1.687) 1.367 (1.683)
-DESCSS 1.361 (1.697) 1.369 (1.705)
-DESCRATIO 1.361 (1.698) 1.369 (1.706)
-DESCA 1.369 (1.697) 1.381 (1.698)
-ASCA 1.373 (1.700) 1.389 (1.708)
-ASCDIFF 1.362 (1.675) 1.390 (1.704)
-ASCSS 1.374 (1.710) 1.407 (1.772)
-ASCRATIO 1.374 (1.710) 1.408 (1.772)
SKYLINE-BL-WM-BFF SKYLINE-MW-WM-BFF
-DESCSS 1.013 (1.094) 1.013 (1.090)
-DESCRATIO 1.013 (1.094) 1.013 (1.090)
-DESCA 1.017 (1.123) 1.017 (1.112)
-DESCPERIM 1.019 (1.125) 1.019 (1.111)
-DESCLS 1.041 (1.396) 1.041 (1.396)
-ASCDIFF 1.051 (1.313) 1.054 (1.323)
-ASCLS 1.126 (1.485) 1.127 (1.489)
-DESCDIFF 1.154 (1.466) 1.154 (1.456)
-ASCPERIM 1.239 (1.530) 1.238 (1.526)
-ASCA 1.294 (1.571) 1.289 (1.568)
-ASCRATIO 1.352 (1.681) 1.352 (1.675)
-ASCSS 1.356 (1.683) 1.357 (1.680)
48
MAXRECTS-BSSF-BBF 1.04063 (1.13026)
MAXRECTS-BAF-BBF 1.04256 (1.13231)
MAXRECTS-BSSF-BFF 1.04669 (1.13411)
MAXRECTS-BAF-BFF 1.04728 (1.13409)
MAXRECTS-CP-BFF 1.04911 (1.142)
MAXRECTS-BL-BFF 1.05065 (1.15721)
MAXRECTS-BLSF-BFF 1.05144 (1.15477)
MAXRECTS-BLSF-BBF 1.05181 (1.18114)
SKYLINE-MW-WM-BFF 1.05391 (1.14136)
SKYLINE-BL-WM-BFF 1.05569 (1.15824)
MAXRECTS-CP-BBF 1.06154 (1.20645)
GUILLOTINE-BSSF-SAS-RM-BFF 1.06222 (1.15781)
GUILLOTINE-BSSF-SAS-BFF 1.06273 (1.15781)
GUILLOTINE-BSSF-SLAS-RM-BFF 1.06275 (1.20376)
GUILLOTINE-WLSF-SAS-RM-BFF 1.06349 (1.16027)
GUILLOTINE-BSSF-SLAS-BFF 1.0639 (1.20679)
GUILLOTINE-WLSF-SLAS-RM-BFF 1.06401 (1.20328)
SKYLINE-MW-BFF 1.06403 (1.18656)
GUILLOTINE-WLSF-SAS-BFF 1.06408 (1.16039)
GUILLOTINE-BSSF-MINAS-RM-BFF 1.0642 (1.23088)
GUILLOTINE-WLSF-SLAS-BFF 1.06509 (1.20681)
GUILLOTINE-BSSF-MINAS-BFF 1.06529 (1.23549)
GUILLOTINE-WLSF-MINAS-RM-BFF 1.06532 (1.23439)
GUILLOTINE-BAF-SAS-RM-BFF 1.06549 (1.17989)
GUILLOTINE-BAF-SAS-BFF 1.06593 (1.17996)
GUILLOTINE-WLSF-MINAS-BFF 1.06651 (1.23544)
GUILLOTINE-WAF-SAS-RM-BFF 1.06654 (1.17853)
GUILLOTINE-WAF-SAS-BFF 1.06705 (1.17834)
GUILLOTINE-BLSF-SAS-RM-BFF 1.06725 (1.1804)
GUILLOTINE-BLSF-SAS-BFF 1.06761 (1.1804)
GUILLOTINE-BAF-SLAS-RM-BFF 1.06873 (1.30024)
GUILLOTINE-WSSF-SAS-RM-BFF 1.06882 (1.18171)
GUILLOTINE-WSSF-SAS-BFF 1.06932 (1.18171)
SKYLINE-BL-BFF 1.06948 (1.23466)
GUILLOTINE-BSSF-MAXAS-RM-BFF 1.06963 (1.17194)
GUILLOTINE-BSSF-MAXAS-BFF 1.06984 (1.17162)
GUILLOTINE-BLSF-SLAS-RM-BFF 1.07008 (1.29906)
49
MAXRECTS-BSSF-GLOBAL-BBF 1.00466 (1.06773)
MAXRECTS-BSSF-GLOBAL-BNF 1.00466 (1.06773)
MAXRECTS-BL-DESCSS-BFF 1.00849 (1.0909)
MAXRECTS-CP-DESCSS-BFF 1.00858 (1.08664)
MAXRECTS-BSSF-DESCSS-BBF 1.00898 (1.08718)
MAXRECTS-BL-DESCRATIO-BFF 1.00907 (1.0909)
MAXRECTS-CP-DESCRATIO-BFF 1.00912 (1.08664)
MAXRECTS-BSSF-DESCSS-BFF 1.00922 (1.08699)
MAXRECTS-BAF-DESCSS-BFF 1.00949 (1.08754)
MAXRECTS-BSSF-DESCRATIO-BBF 1.00952 (1.08718)
MAXRECTS-BAF-DESCSS-BBF 1.00957 (1.08754)
MAXRECTS-BSSF-DESCRATIO-BFF 1.0098 (1.08699)
MAXRECTS-BAF-DESCRATIO-BFF 1.01006 (1.08754)
MAXRECTS-BAF-GLOBAL-BBF 1.01013 (1.08258)
MAXRECTS-BAF-GLOBAL-BNF 1.01013 (1.08258)
MAXRECTS-BAF-DESCRATIO-BBF 1.01021 (1.08754)
MAXRECTS-CP-GLOBAL-BNF 1.01045 (1.1199)
MAXRECTS-BSSF-DESCA-BBF 1.01045 (1.10625)
MAXRECTS-BLSF-DESCSS-BFF 1.01046 (1.08601)
MAXRECTS-BLSF-DESCSS-BBF 1.0107 (1.08674)
MAXRECTS-BLSF-DESCRATIO-BFF 1.0111 (1.09038)
MAXRECTS-BLSF-GLOBAL-BNF 1.01121 (1.08929)
MAXRECTS-BAF-DESCA-BBF 1.01127 (1.10651)
MAXRECTS-BLSF-GLOBAL-BBF 1.01129 (1.08929)
MAXRECTS-CP-DESCSS-BBF 1.01138 (1.11591)
MAXRECTS-BLSF-DESCRATIO-BBF 1.0115 (1.09397)
MAXRECTS-BSSF-DESCA-BFF 1.01163 (1.10553)
MAXRECTS-CP-DESCA-BFF 1.01167 (1.10924)
MAXRECTS-BAF-DESCA-BFF 1.01182 (1.10771)
MAXRECTS-CP-DESCRATIO-BBF 1.01193 (1.1219)
MAXRECTS-CP-DESCA-BBF 1.01221 (1.09965)
MAXRECTS-BSSF-DESCPERIM-BBF 1.01237 (1.11109)
MAXRECTS-CP-GLOBAL-BBF 1.01243 (1.12094)
MAXRECTS-BAF-DESCPERIM-BBF 1.01246 (1.11109)
MAXRECTS-BL-DESCA-BFF 1.01269 (1.12007)
SKYLINE-MW-DESCSS-WM-BFF 1.01281 (1.08979)
50