{"id":21928692,"url":"https://github.com/muellan/packing","last_synced_at":"2026-02-23T16:35:15.903Z","repository":{"id":73309206,"uuid":"45047353","full_name":"muellan/packing","owner":"muellan","description":"benchmark solutions for selected packing problems: circle, rectangle, cube, cuboid, polygon packings","archived":false,"fork":false,"pushed_at":"2025-12-01T10:02:26.000Z","size":147942,"stargazers_count":34,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-03T21:29:28.301Z","etag":null,"topics":["circle-packing-algorithm","circles","cubes","packing","packing-algorithm","packing-algorithms","packing-benchmarks","rectangle-packing","rectangles","sphere-packing","spheres"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muellan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-10-27T14:41:21.000Z","updated_at":"2025-12-01T10:02:30.000Z","dependencies_parsed_at":"2023-04-13T01:22:00.323Z","dependency_job_id":null,"html_url":"https://github.com/muellan/packing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/muellan/packing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muellan%2Fpacking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muellan%2Fpacking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muellan%2Fpacking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muellan%2Fpacking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muellan","download_url":"https://codeload.github.com/muellan/packing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muellan%2Fpacking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29748240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["circle-packing-algorithm","circles","cubes","packing","packing-algorithm","packing-algorithms","packing-benchmarks","rectangle-packing","rectangles","sphere-packing","spheres"],"created_at":"2024-11-28T22:27:37.176Z","updated_at":"2026-02-23T16:35:15.887Z","avatar_url":"https://github.com/muellan.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# AM Packing Benchmarks\n\nThis repository contains my personal (putative/quasi-optimum) solutions for many packing problem benchmark instances.\n\nSome 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.\n\nYou should also have a look at https://erich-friedman.github.io/packing/index.html.\n\nSee below for a list of all benchmarks, tables of all the symbols used, etc.\n\n\n#### Repository Structure\n```\ncontainer_type \n    scenario_type\n        {overview images}\n        {benchmark result lists}\n        item_shape_distribution\n            {result packing files}\n```\n\n#### Conventions\n * items : objects to be packed\n * container : object(s) enclosing the items\n * n : number of items\n * i : item index in range [1,n]\n * i = 0 : container index\n * Containers are centered at the global origin and aligned to the coordinate system axes.\n * Symbols referring to container properties start with an uppercase letter.\n\n\n#### Scenario / Folder Names\n * find smallest container for a set of items:\n   \"min-ContainerType(ItemType)\"\n * find legal arrangement of items in a rigid container:\n   \"ContainerType(ItemType)\"\n\n\n\n## Inventory\n\n| Scenario                         | Description                                                 |\n| -------------------------------- | ----------------------------------------------------------- |\n| min-Circle(Circle)               | circles in smallest enclosing circle                        |\n| min-Circle(ConvexRegularPolygon) | convex regular polygon in smallest enclosing circle         |\n| min-Square(Circle)               | circles in smallest enclosing square                        |\n| min-Square(Square)               | freely rotatable squares in smallest enclosing square       |\n| min-Square(ConvexRegularPolygon) | convex regular polygon in smallest enclosing square         |\n| min-Rectangle(Circle)            | circles in smallest enclosing rectangle                     |\n| min-Rectangle(RectangleAA)       | axis-oriented rectangles in smallest enclosing rectangle    |\n| min-Rectangle(Rectangle)         | freely rotatable rectangles in smallest enclosing rectangle |\n| min-Sphere(Sphere)               | spheres in smallest enclosing sphere                        |\n| min-Cube(Sphere)                 | spheres in smallest enclosing cube                          |\n| min-Cuboid(Sphere)               | spheres in smallest enclosing cuboid                        |\n| min-Cube(Cube)                   | cubes in smallest enclosing cube                            |\n| min-Cube(CubeAA)                 | axis-aligned cubes in smallest enclosing cube               |\n| min-Cuboid(Cuboid)               | cuboids in smallest cuboid                                  |\n| min-Sphere4d(Sphere4d)           | 4d hyperspheres in smallest enclosing 4d hypersphere        |\n| min-Sphere5d(Sphere5d)           | 5d hyperspheres in smallest enclosing 5d hypersphere        |\n\n\n### 2D Benchmark Instances\n\n| Container Type       | Item Type       | Item Shape Distribution   | n                                 |                               |\n| -------------------- | --------------- | ------------------------- | -------                           | ----------------------------- |\n| min-Circle           | Circle          | r(i) = 1                  | 1 - 600                           |                               |\n| min-Circle           | Circle          | r(i) = i                  | 1 - 200,300,400,600,800,1000,2000 | \"Al Zimmermann's contest set\" |\n| min-Circle           | Circle          | r(i) = i ^ (+1/2)         | 5 - 100                           |                               |\n| min-Circle           | Circle          | r(i) = i ^ (-1/2)         | 5 - 100                           |                               |\n| min-Circle           | Circle          | r(i) = i ^ (-2/3)         | 5 - 100                           |                               |\n| min-Circle           | Circle          | r(i) = i ^ (-1/5)         | 5 - 100                           |                               |\n| min-Circle           | RegularTriangle | r(i) = 1                  | 2 - 100                           |                               |\n| min-Circle           | RegularTriangle | r(i) = i                  | 2 - 100                           |                               |\n| min-Circle           | RegularPentagon | r(i) = 1                  | 2 - 100                           |                               |\n| min-Circle           | RegularPentagon | r(i) = i                  | 2 - 100                           |                               |\n| min-Circle           | RegularHexagon  | r(i) = 1                  | 2 - 100                           |                               |\n| min-Circle           | RegularHexagon  | r(i) = i                  | 2 - 100                           |                               |\n| min-Circle           | RegularOctagon  | r(i) = 1                  | 2 - 100                           |                               |\n| min-Circle           | RegularOctagon  | r(i) = i                  | 2 - 100                           |                               |\n| min-Square           | Circle          | r(i) = 1                  | 1 - 100                           |                               |\n| min-Square           | Circle          | r(i) = i                  | 1 - 100                           |                               |\n| min-Square           | Circle          | r(i) = i ^ (+1/2)         | 5 - 100                           |                               |\n| min-Square           | Circle          | r(i) = i ^ (-1/2)         | 5 - 100                           |                               |\n| min-Square           | Square          | h(i) = 1                  | 1 - 100                           |                               |\n| min-Square           | Square          | h(i) = i                  | 1 - 100                           |                               |\n| min-Square           | RegularTriangle | r(i) = 1                  | 2 - 100                           |                               |\n| min-Square           | RegularTriangle | r(i) = i                  | 2 - 100                           |                               |\n| min-Square           | RegularPentagon | r(i) = 1                  | 2 - 100                           |                               |\n| min-Square           | RegularPentagon | r(i) = i                  | 2 - 100                           |                               |\n| min-Square           | RegularHexagon  | r(i) = 1                  | 2 - 100                           |                               |\n| min-Square           | RegularHexagon  | r(i) = i                  | 2 - 100                           |                               |\n| min-Square           | RegularOctagon  | r(i) = 1                  | 2 - 100                           |                               |\n| min-Square           | RegularOctagon  | r(i) = i                  | 2 - 100                           |                               |\n| min-Rectangle        | Circle          | r(i) = 1                  | 1 - 100                           |                               |\n| min-Rectangle        | Circle          | r(i) = i                  | 1 - 100                           |                               |\n| min-Rectangle        | RetangleAA      | hx(i)=i, hy(i)=0.750·i    | 1 - 100                           |                               |\n| min-Rectangle        | RetangleAA      | hx(i)=i, hy(i)=0.500·i    | 1 - 100                           |                               |\n| min-Rectangle        | RetangleAA      | hx(i)=i, hy(i)=0.250·i    | 1 - 100                           |                               |\n| min-Rectangle        | RetangleAA      | hx(i)=i, hy(i)=0.125·i    | 1 - 100                           |                               |\n| min-Rectangle        | Rectangle       | hx(i)=i, hy(i)=0.750·i    | 1 - 100                           |                               |\n| min-Rectangle        | Rectangle       | hx(i)=i, hy(i)=0.500·i    | 1 - 100                           |                               |\n| min-Rectangle        | Rectangle       | hx(i)=i, hy(i)=0.250·i    | 1 - 100                           |                               |\n| min-Rectangle        | Rectangle       | hx(i)=i, hy(i)=0.125·i    | 1 - 100                           |                               |\n\n\n### 3D Benchmark Instances\n  \n| Container Type | Item Type  | Item Shape Distribution                | n       |                     |\n| -------------- | ---------- | -------------------------------------- | ------- | ------------------- |\n| min-Sphere     | Sphere     | r(i) = 1                               | 1 - 100 |                     |\n| min-Sphere     | Sphere     | r(i) = i                               | 1 - 100 |                     |\n| min-Cube       | Sphere     | r(i) = 1                               | 1 - 100 |                     |\n| min-Cube       | Sphere     | r(i) = i                               | 1 - 100 |                     |\n| min-Cube       | Cube       | h(i) = 1                               | 1 - 100 |                     |\n| min-Cube       | Cube       | h(i) = i                               | 1 - 100 |                     |\n| min-Cube       | CubeAA     | h(i) = 1                               | 1 - 100 |                     |\n| min-Cube       | CubeAA     | h(i) = i                               | 1 - 100 |                     |\n| min-Cuboid     | Sphere     | r(i) = 1                               | 1 - 100 |                     |\n| min-Cuboid     | Sphere     | r(i) = i                               | 1 - 100 |                     |\n| min-Cuboid     | Cuboid     | hx(i)=i, hy(i)=0.75·i,  hz(i)=0.5·i    | 2 - 100 | \"boxes\"   4 x 3 x 2 |\n| min-Cuboid     | Cuboid     | hx(i)=i, hy(i)=0.5·i,   hz(i)=0.25·i   | 2 - 100 | \"bricks\"  4 x 2 x 1 |\n| min-Cuboid     | Cuboid     | hx(i)=i, hy(i)=0.5·i,   hz(i)=0.1·i    | 2 - 100 | \"plates\" 10 x 5 x 1 |\n| min-Cuboid     | Cuboid     | hx(i)=i, hy(i)=0.125·i, hz(i)=0.125·i  | 2 - 100 | \"poles\"   8 x 1 x 1 |\n| min-Cuboid     | Cuboid     | AM cuboid set 1                        | 2 - 100 |                     |\n\n\n### 4D \u0026 5D Benchmark Instances\n\n| Container Type | Item Type  | Item Shape Distribution  | n                       | \n| -------------- | ---------- | ------------------------ | ----------------------- | \n| min-Sphere4d   | Sphere4d   | r(i) = i                 | 10, 20, 30, 40, 50, 100 | \n| min-Sphere5d   | Sphere5d   | r(i) = i                 | 10, 20, 30, 40, 50, 100 | \n\n\n## File Format\n* the encoding is ASCII, multibyte characters must not be used\n* line endings are expected to be LF only\n* whitespace apart from LF does not have any semantic meaning other than separating numbers or identifier texts\n\n\n### Packing File Format (.pac)\n```\n#PACKING\n#CONTAINER\n  \u003centity-type\u003e\n  1\n  \u003ccontainer entity-specification\u003e\n#CONTENT\n   \u003centity-type\u003e\n   \u003cnumber of items n\u003e\n   \u003citem 1 entity-specification\u003e\n   \u003citem 2 entity-specification\u003e\n   ...\n   \u003citem n entity-specification\u003e\n```\n\nSyntax/filetype plugin for VIM is available at https://github.com/muellan/vim-filetype-pac.\n\n\n### Packing Input File Format (.shp)\n```\n\u003centity-type\u003e\n\u003cnumber of entities n\u003e\n\u003centity-specification 1\u003e\n\u003centity-specification 2\u003e\n...\n\u003centity-specification n\u003e\n```\n\n#### Entity Specification\n* ```entity-specification``` : ```shape-specification``` ```placing```\n* ```placing``` : ```position``` ```orientation``` ```scaling```\n* ```position``` : ```center coordinates x, y, z, a, b, ...```\n* ```orientation``` : ```angle between local and global x-axis``` or ```unit quaternion```\n* ```scaling``` : ```scaling factors sx, sy, sz, sa, sb, ...```\n\n\n#### Shape Specification\n| symbol   | description           |\n| -------- | --------------------- |\n| ```r```  | radius                |\n| ```h```  | half length           |\n| ```l```  | full length           |\n| ```hx``` | half length on axis x |\n| ```lx``` | full length on axis x |\n\n\n#### Shape Placing\n| symbol                            | description                                            |\n| -----------------                 | ----------------------------------------               |\n| ```x```, ```y```, ```z```, ...    | x,y,z...-coordinate of the local origin                |\n| ```p```                           | angle(local x, global x), counter-clockwise in radians |\n| ```qw qx qy qz```                 | orientation unit quaternion (qw: scalar part)          |\n| ```sx```, ```sy```, ```sz```, ... | scaling along x,y,z...-axis                            |\n\n\n#### Simple 2D Entity Types\n| type             | description                       | specification                  |\n| ---------------  | ----------------------------      | ---------------                |\n| Circle           | circle                            | ```r```      ```x y```         |\n| SquareAA         | axis-aligned square               | ```h```      ```x y```         |\n| Square           | freely rotatable square           | ```h```      ```x y``` ```p``` |\n| RectangleAA      | axis-aligned rectangle            | ```hx hy```  ```x y```         |\n| Rectangle        | freely rotatable rectangle        | ```hx hy```  ```x y``` ```p``` |\n| RegularTriangle  | freely rotatable regular triangle | ```r```      ```x y``` ```p``` |\n| RegularPentagon  | freely rotatable regular pentagon | ```r```      ```x y``` ```p``` |\n| RegularHexagon   | freely rotatable regular hexagon  | ```r```      ```x y``` ```p``` |\n| RegularOctagon   | freely rotatable regular octagon  | ```r```      ```x y``` ```p``` |\n\n#### Simple 3D Entity Types\n| type               | description                      | specification                                |\n| ---------------    | ----------------------------     | ---------------                              |\n| Sphere             | sphere                           | ```r```        ```x y z```                   |\n| CubeAA             | axis-aligned cube                | ```h```        ```x y z```                   |\n| Cube               | freely rotatable cube            | ```h```        ```x y z``` ```qw qx qy qz``` |\n| CuboidAA           | axis-aligned cuboid              | ```hx hy hz``` ```x y z```                   |\n| Cuboid             | freely rotatable cuboid          | ```hx hy hz``` ```x y z``` ```qw qx qy qz``` |\n\n#### Simple Entity Types (more than 3 dimensions)\n| type            | description                  | specification           |\n| --------------- | ---------------------------- | ---------------         |\n| HyperSphere4d   | 4-dimensional sphere         | ```r``` ```x y z a  ``` |\n| HyperSphere5d   | 5-dimensional sphere         | ```r``` ```x y z a b``` |\n\n\n#### Complex Entity Types\n* Polygon: planar, closed and possibly non-convex polygon with m points and m edges (orientation: ccw) \n  ```\n  \u003cnumber of points m\u003e\n  \u003cpoint 1\u003e\n  \u003cpoint 2\u003e\n  ...\n  \u003cpoint m\u003e\n  x y  p\n  ```\n\n* TriangleCompound: collection of triangles \"triangle soup\"\n  ```\n  \u003cnumber of triangles m\u003e\n  \u003cpoint 1-a\u003e \u003cpoint 1-b\u003e \u003cpoint 1-c\u003e\n  \u003cpoint 2-a\u003e \u003cpoint 2-b\u003e \u003cpoint 2-c\u003e\n  ...\n  \u003cpoint m-a\u003e \u003cpoint m-b\u003e \u003cpoint m-c\u003e\n  x y z  qw qx qy qz\n  ```\n\n\n#### Special Entity Types\n| type              | description                          | specification                   |\n| ------------      | ----------------------------         | ---------------                 |\n| $file             | name of .shp file                    | ```filename```                  |\n  \n\n### Examples\n* A packing solution file for the min-Circle(Circle) problem:\n  ```\n  #PACKING\n  #CONTAINER\n  Circle\n  1\n  5  0 0\n  #CONTENT\n  Circle\n  3\n  1  1 3\n  2  3 0\n  3  -2 0\n  ```\n\n* A .shp file specifying two 4-sided polygons:\n  ```\n  Polygon\n  2\n  4\n  0.0 0.0\n  5.0 0.0\n  5.0 4.0\n  6.0 0.0\n    1.023 -0.34\n  4\n  0.0 0.0\n  5.0 0.0\n  5.0 5.0\n  5.0 0.0\n    -12.2 4.5\n  ```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuellan%2Fpacking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuellan%2Fpacking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuellan%2Fpacking/lists"}