This repository contains my personal (putative/quasi-optimum) solutions for many packing problem benchmark instances.
Some of the solutions are also listed on Eckard Specht's excellent website www.packomania.com. He has nice pictures, shortest tours of the items and a contact analysis for each packing. Note that he uses a different file format and normalizes most of the container sizes to 1.
You should also have a look at http://www2.stetson.edu/~efriedma/packing.html.
See below for a list of all benchmarks, tables of all the symbols used, etc.
container_type
scenario_type
{overview images}
{benchmark result lists}
item_shape_distribution
{result packing files}
- items : objects to be packed
- container : object(s) enclosing the items
- n : number of items
- i : item index in range [1,n]
- i = 0 : container index
- Containers are centered at the global origin and aligned to the coordinate system axes.
- Symbols referring to container properties start with an uppercase letter.
- find smallest container for a set of items: "min-ContainerType(ItemType)"
- find legal arrangement of items in a rigid container: "ContainerType(ItemType)"
Scenario | Description |
---|---|
min-Circle(Circle) | circles in smallest enclosing circle |
min-Circle(ConvexRegularPolygon) | convex regular polygon in smallest enclosing circle |
min-Square(Circle) | circles in smallest enclosing square |
min-Square(Square) | freely rotatable squares in smallest enclosing square |
min-Square(ConvexRegularPolygon) | convex regular polygon in smallest enclosing square |
min-Rectangle(Circle) | circles in smallest enclosing rectangle |
min-Rectangle(RectangleAA) | axis-oriented rectangles in smallest enclosing rectangle |
min-Rectangle(Rectangle) | freely rotatable rectangles in smallest enclosing rectangle |
min-Sphere(Sphere) | spheres in smallest enclosing sphere |
min-Cube(Sphere) | spheres in smallest enclosing cube |
min-Cuboid(Sphere) | spheres in smallest enclosing cuboid |
min-Cube(Cube) | cubes in smallest enclosing cube |
min-Cube(CubeAA) | axis-aligned cubes in smallest enclosing cube |
min-Cuboid(Cuboid) | cuboids in smallest cuboid |
min-Sphere4d(Sphere4d) | 4d hyperspheres in smallest enclosing 4d hypersphere |
min-Sphere5d(Sphere5d) | 5d hyperspheres in smallest enclosing 5d hypersphere |
Container Type | Item Type | Item Shape Distribution | n | |
---|---|---|---|---|
min-Circle | Circle | r(i) = 1 | 1 - 600 | |
min-Circle | Circle | r(i) = i | 1 - 200 | "Al Zimmermann's contest set" |
min-Circle | Circle | r(i) = i ^ (+1/2) | 5 - 100 | |
min-Circle | Circle | r(i) = i ^ (-1/2) | 5 - 100 | |
min-Circle | Circle | r(i) = i ^ (-2/3) | 5 - 100 | |
min-Circle | Circle | r(i) = i ^ (-1/5) | 5 - 100 | |
min-Circle | RegularTriangle | r(i) = 1 | 2 - 100 | |
min-Circle | RegularTriangle | r(i) = i | 2 - 100 | |
min-Circle | RegularPentagon | r(i) = 1 | 2 - 100 | |
min-Circle | RegularPentagon | r(i) = i | 2 - 100 | |
min-Circle | RegularHexagon | r(i) = 1 | 2 - 100 | |
min-Circle | RegularHexagon | r(i) = i | 2 - 100 | |
min-Circle | RegularOctagon | r(i) = 1 | 2 - 100 | |
min-Circle | RegularOctagon | r(i) = i | 2 - 100 | |
min-Square | Circle | r(i) = 1 | 1 - 100 | |
min-Square | Circle | r(i) = i | 1 - 100 | |
min-Square | Circle | r(i) = i ^ (+1/2) | 5 - 100 | |
min-Square | Circle | r(i) = i ^ (-1/2) | 5 - 100 | |
min-Square | Square | h(i) = 1 | 1 - 100 | |
min-Square | Square | h(i) = i | 1 - 100 | |
min-Square | RegularTriangle | r(i) = 1 | 2 - 100 | |
min-Square | RegularTriangle | r(i) = i | 2 - 100 | |
min-Square | RegularPentagon | r(i) = 1 | 2 - 100 | |
min-Square | RegularPentagon | r(i) = i | 2 - 100 | |
min-Square | RegularHexagon | r(i) = 1 | 2 - 100 | |
min-Square | RegularHexagon | r(i) = i | 2 - 100 | |
min-Square | RegularOctagon | r(i) = 1 | 2 - 100 | |
min-Square | RegularOctagon | r(i) = i | 2 - 100 | |
min-Rectangle | Circle | r(i) = 1 | 1 - 100 | |
min-Rectangle | Circle | r(i) = i | 1 - 100 | |
min-Rectangle | RetangleAA | hx(i)=i, hy(i)=0.750·i | 1 - 100 | |
min-Rectangle | RetangleAA | hx(i)=i, hy(i)=0.500·i | 1 - 100 | |
min-Rectangle | RetangleAA | hx(i)=i, hy(i)=0.250·i | 1 - 100 | |
min-Rectangle | RetangleAA | hx(i)=i, hy(i)=0.125·i | 1 - 100 | |
min-Rectangle | Rectangle | hx(i)=i, hy(i)=0.750·i | 1 - 100 | |
min-Rectangle | Rectangle | hx(i)=i, hy(i)=0.500·i | 1 - 100 | |
min-Rectangle | Rectangle | hx(i)=i, hy(i)=0.250·i | 1 - 100 | |
min-Rectangle | Rectangle | hx(i)=i, hy(i)=0.125·i | 1 - 100 |
Container Type | Item Type | Item Shape Distribution | n | |
---|---|---|---|---|
min-Sphere | Sphere | r(i) = 1 | 1 - 100 | |
min-Sphere | Sphere | r(i) = i | 1 - 100 | |
min-Cube | Sphere | r(i) = 1 | 1 - 100 | |
min-Cube | Sphere | r(i) = i | 1 - 100 | |
min-Cube | Cube | h(i) = 1 | 1 - 100 | |
min-Cube | Cube | h(i) = i | 1 - 100 | |
min-Cube | CubeAA | h(i) = 1 | 1 - 100 | |
min-Cube | CubeAA | h(i) = i | 1 - 100 | |
min-Cuboid | Sphere | r(i) = 1 | 1 - 100 | |
min-Cuboid | Sphere | r(i) = i | 1 - 100 | |
min-Cuboid | Cuboid | hx(i)=i, hy(i)=0.75·i, hz(i)=0.5·i | 2 - 100 | "boxes" 4 x 3 x 2 |
min-Cuboid | Cuboid | hx(i)=i, hy(i)=0.5·i, hz(i)=0.25·i | 2 - 100 | "bricks" 4 x 2 x 1 |
min-Cuboid | Cuboid | hx(i)=i, hy(i)=0.5·i, hz(i)=0.1·i | 2 - 100 | "plates" 10 x 5 x 1 |
min-Cuboid | Cuboid | hx(i)=i, hy(i)=0.125·i, hz(i)=0.125·i | 2 - 100 | "poles" 8 x 1 x 1 |
min-Cuboid | Cuboid | AM cuboid set 1 | 2 - 100 |
Container Type | Item Type | Item Shape Distribution | n |
---|---|---|---|
min-Sphere4d | Sphere4d | r(i) = i | 10, 20, 30, 40, 50, 100 |
min-Sphere5d | Sphere5d | r(i) = i | 10, 20, 30, 40, 50, 100 |
- the encoding is ASCII, multibyte characters must not be used
- line endings are expected to be LF only
- whitespace apart from LF does not have any semantic meaning other than separating numbers or identifier texts
#PACKING
#CONTAINER
<entity-type>
1
<container entity-specification>
#CONTENT
<entity-type>
<number of items n>
<item 1 entity-specification>
<item 2 entity-specification>
...
<item n entity-specification>
<entity-type>
<number of entities n>
<entity-specification 1>
<entity-specification 2>
...
<entity-specification n>
entity-specification
:shape-specification
placing
placing
:position
orientation
scaling
position
:center coordinates x, y, z, a, b, ...
orientation
:angle between local and global x-axis
orunit quaternion
scaling
:scaling factors sx, sy, sz, sa, sb, ...
symbol | description |
---|---|
r |
radius |
h |
half length |
l |
full length |
hx |
half length on axis x |
lx |
full length on axis x |
symbol | description |
---|---|
x , y , z , ... |
x,y,z...-coordinate of the local origin |
p |
angle(local x, global x), counter-clockwise in radians |
qw qx qy qz |
orientation unit quaternion (qw: scalar part) |
sx , sy , sz , ... |
scaling along x,y,z...-axis |
type | description | specification |
---|---|---|
Circle | circle | r x y |
SquareAA | axis-aligned square | h x y |
Square | freely rotatable square | h x y p |
RectangleAA | axis-aligned rectangle | hx hy x y |
Rectangle | freely rotatable rectangle | hx hy x y p |
RegularTriangle | freely rotatable regular triangle | r x y p |
RegularPentagon | freely rotatable regular pentagon | r x y p |
RegularHexagon | freely rotatable regular hexagon | r x y p |
RegularOctagon | freely rotatable regular octagon | r x y p |
Capsule2d | rectangle with semicircular caps | r h x y p |
type | description | specification |
---|---|---|
Sphere | sphere | r x y z |
CubeAA | axis-aligned cube | h x y z |
Cube | freely rotatable cube | h x y z qw qx qy qz |
CuboidAA | axis-aligned cuboid | hx hy hz x y z |
Cuboid | freely rotatable cuboid | hx hy hz x y z qw qx qy qz |
RegularTetrahedron | regular tetrahedron | r x y z qw qx qy qz |
Capsule | cylinder with hemispherical caps | r h x y z qw qx qy qz |
type | description | specification |
---|---|---|
HyperSphere4d | 4-dimensional sphere | r x y z a |
HyperSphere5d | 5-dimensional sphere | r x y z a b |
-
Polygon: planar, closed and possibly non-convex polygon with m points and m edges (orientation: ccw)
<number of points m> <point 1> <point 2> ... <point m> x y p
-
TriangleCompound: collection of triangles "triangle soup"
<number of triangles m> <point 1-a> <point 1-b> <point 1-c> <point 2-a> <point 2-b> <point 2-c> ... <point m-a> <point m-b> <point m-c> x y z qw qx qy qz
type | description | specification |
---|---|---|
$file | name of .shp file | filename |
$file // $placing | name of .shp file and transformation | filename // placing |
-
A packing solution file for the min-Circle(Circle) problem:
#PACKING #CONTAINER Circle 1 5 0 0 #CONTENT Circle 3 1 1 3 2 3 0 3 -2 0
-
A packing file that references 3 .shp files containing some polygons:
#PACKING #CONTAINER RectangleAA 1 100 200 0 0 #CONTENT $file // $placing 3 singlePolygon1.shp // -10.5 6.7 12.34 singlePolygon2.shp // 0.0 0.0 10 manyPolygons.shp // 12.4 -23 270
-
A .shp file specifying two 4-sided polygons:
Polygon 2 4 0.0 0.0 5.0 0.0 5.0 4.0 6.0 0.0 1.023 -0.34 4 0.0 0.0 5.0 0.0 5.0 5.0 5.0 0.0 -12.2 4.5