Skip to main content

PackingSolver banner

A state-of-the-art solver for (geometrical) packing problems.

PackingSolver solves the following problem types:

Problem types Examples
rectangleguillotine
  • Items: two-dimensional rectangles
  • Only edge-to-edge cuts are allowed
rectangle
  • Items: two-dimensional rectangles
box
  • Items: three-dimensional rectangular parallelepipeds
boxstacks
  • Items: three-dimensional rectangular parallelepipeds
  • Items can be stacked; a stack contains items with the same width and length
onedimensional
  • Items: one-dimensional items
irregular
  • Items: two-dimensional shapes (polygons, possibly with circular arcs and holes)

Documentation: https://fontanf.github.io/packingsolver

Online solver

PackingSolver also runs directly in your browser:

https://packingsolver.pages.dev/

No installation is needed. The computation runs on your machine: nothing is sent to a server.

Python interface

Python bindings are available for every solver. Install them from PyPI (Python >= 3.12; a new release is published for each commit on master):

pip install packingsolver

Or build them from a local checkout with pip install ..

rectangleguillotine solver

import packingsolver.rectangleguillotine as psg

instance_builder = psg.InstanceBuilder()
instance_builder.set_objective(psg.Objective.BinPackingWithLeftovers)
instance_builder.add_bin_type(1000, 700, copies=5)
instance_builder.add_item_type(250, 200, copies=2)
instance_builder.add_item_type(150, 300, copies=2)
instance_builder.add_item_type(200, 150, copies=3)
instance = instance_builder.build()

parameters = psg.OptimizeParameters()
parameters.time_limit = 5
output = psg.optimize(instance, parameters)

psg.visualize(output.solution).show()

rectangle solver

import packingsolver.rectangle as psr

instance_builder = psr.InstanceBuilder()
instance_builder.set_objective(psr.Objective.BinPackingWithLeftovers)
instance_builder.add_bin_type(1000, 500, copies=10)
instance_builder.add_item_type(300, 200, copies=10)
instance_builder.add_item_type(250, 150, copies=10)
instance = instance_builder.build()

parameters = psr.OptimizeParameters()
parameters.time_limit = 5
output = psr.optimize(instance, parameters)

psr.visualize(output.solution).show()

box solver

import packingsolver.box as psb

instance_builder = psb.InstanceBuilder()
instance_builder.set_objective(psb.Objective.Knapsack)
instance_builder.add_bin_type(216, 173, 110)
instance_builder.add_item_type(108, 76, 30, copies=20)
instance_builder.add_item_type(110, 43, 25, copies=20)
instance_builder.add_item_type(92, 81, 55, copies=20)
instance = instance_builder.build()

parameters = psb.OptimizeParameters()
parameters.time_limit = 5
output = psb.optimize(instance, parameters)

psb.visualize(output.solution).show()

boxstacks solver

import packingsolver.boxstacks as psbs

instance_builder = psbs.InstanceBuilder()
instance_builder.set_objective(psbs.Objective.Knapsack)
instance_builder.add_bin_type(7500, 2400, 3000)
instance_builder.add_item_type(2500, 800, 750, stackability_id=0, copies=10)
instance_builder.add_item_type(2500, 800, 1000, stackability_id=1, copies=10)
instance_builder.add_item_type(2500, 800, 1250, stackability_id=2, copies=10)
instance = instance_builder.build()

parameters = psbs.OptimizeParameters()
parameters.time_limit = 5
output = psbs.optimize(instance, parameters)

psbs.visualize(output.solution).show()

onedimensional solver

import packingsolver.onedimensional as pso

instance_builder = pso.InstanceBuilder()
instance_builder.set_objective(pso.Objective.BinPacking)
instance_builder.add_bin_type(1000, copies=100)
for length in [
        193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263,
        269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347,
        349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421,
        431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499]:
    instance_builder.add_item_type(length)
instance = instance_builder.build()

parameters = pso.OptimizeParameters()
parameters.time_limit = 5
output = pso.optimize(instance, parameters)

pso.visualize(output.solution).show()

irregular solver

import packingsolver.irregular as psi

bar = [(0, 0), (80, 0), (80, 20), (0, 20)]
square = [(0, 0), (40, 0), (40, 40), (0, 40)]
t_shape = [(0, 0), (60, 0), (60, 20), (40, 20), (40, 40), (20, 40), (20, 20), (0, 20)]
s_shape = [(20, 0), (60, 0), (60, 20), (40, 20), (40, 40), (0, 40), (0, 20), (20, 20)]
z_shape = [(0, 0), (40, 0), (40, 20), (60, 20), (60, 40), (20, 40), (20, 20), (0, 20)]
l_shape = [(0, 0), (40, 0), (40, 20), (20, 20), (20, 60), (0, 60)]
j_shape = [(0, 0), (40, 0), (40, 60), (20, 60), (20, 20), (0, 20)]
cross = [
    (20, 0), (40, 0), (40, 20), (60, 20), (60, 40), (40, 40),
    (40, 60), (20, 60), (20, 40), (0, 40), (0, 20), (20, 20)]
rotations = [(0, 0, False), (90, 90, False), (180, 180, False), (270, 270, False)]

instance_builder = psi.InstanceBuilder()
instance_builder.set_objective(psi.Objective.BinPacking)
instance_builder.add_bin_type(psi.build_rectangle(0, 180, 0, 160), copies=3)
instance_builder.add_item_type(psi.build_shape(bar), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(square), copies=2)
instance_builder.add_item_type(psi.build_shape(t_shape), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(s_shape), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(z_shape), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(l_shape), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(j_shape), copies=2, allowed_rotations=rotations)
instance_builder.add_item_type(psi.build_shape(cross), copies=3)
instance = instance_builder.build()

parameters = psi.OptimizeParameters()
parameters.time_limit = 5
output = psi.optimize(instance, parameters)

psi.visualize(output.solution).show()

Command-line interface

Compilation

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --parallel && cmake --install build --config Release --prefix install

rectangleguillotine solver

Features:

  • Objectives:
    • Knapsack
    • Open dimension X
    • Open dimension Y
    • Bin packing
    • Bin packing with leftovers
    • Variable-sized bin packing
  • With or without item rotations
  • Stacks (precedence constraints on the order in which items are extracted)
  • Bins may contain defects
    • Allow or forbid cutting through a defect
  • Number of stages
    • Two- and three-staged patterns
      • Exact, non-exact, roadef2018 and homogenous
      • First cut vertical, horizontal or any
    • Unlimited-staged patterns
  • Trims
  • Cut thickness
  • Minimum distance between consecutive 1-cuts
  • Maximum distance between consecutive 1-cuts
  • Minimum distance between consecutive 2-cuts
  • Maximum distance between consecutive 2-cuts
  • Minimum distance between cuts
  • Maximum number of consecutive 1-cuts
  • Maximum number of consecutive 2-cuts

Example:

./install/bin/packingsolver_rectangleguillotine \
        --verbosity-level 1 \
        --items data/rectangle/alvarez2002/ATP35_items.csv \
        --bins data/rectangle/alvarez2002/ATP35_bins.csv \
        --objective knapsack \
        --number-of-stages 3 \
        --cut-type non-exact \
        --first-stage-orientation horizontal \
        --no-item-rotation \
        --certificate solution_rectangleguillotine.csv \
        --time-limit 1

=================================
          PackingSolver          
=================================

Problem type
------------
RectangleGuillotine

Instance
--------
Objective:                Knapsack
Number of item types:     29
Number of items:          153
Number of bin types:      1
Number of bins:           1
Number of stacks:         29
Number of defects:        0
Number of stages:         3
Cut type:                 NonExact
First stage orientation:  Horizontal
min1cut:                  0
max1cut:                  -1
min2cut:                  0
max2cut:                  -1
Minimum waste:            1
one2cut:                  0
Cut through defects:      0
Cut thickness:            0

        Time        Profit   # items                         Comment
        ----        ------   -------                         -------
       0.001         68970         1         TS g 5 d Horizontal q 1
       0.002         72000         1         TS g 5 d Horizontal q 1
       0.009        140970         2         TS g 5 d Horizontal q 1
       0.010        144000         2         TS g 5 d Horizontal q 1
       0.011        212970         3         TS g 5 d Horizontal q 1
       0.012        216000         3         TS g 5 d Horizontal q 1
       0.013        284970         4         TS g 5 d Horizontal q 1
       0.014        292395         5         TS g 5 d Horizontal q 1
       0.015        306705         5         TS g 5 d Horizontal q 1
       0.016        348839         5         TS g 5 d Horizontal q 1
       0.017        358042         6         TS g 5 d Horizontal q 1
       0.018        372343         6         TS g 5 d Horizontal q 1
       0.019        379768         7         TS g 5 d Horizontal q 1
       0.020        388389         7         TS g 5 d Horizontal q 1
       0.021        408379         7         TS g 5 d Horizontal q 1
       0.022        415804         8         TS g 5 d Horizontal q 1
       0.023        424425         8         TS g 5 d Horizontal q 1
       0.024        444415         8         TS g 5 d Horizontal q 1
       0.025        451840         9         TS g 5 d Horizontal q 1
       0.026        460461         9         TS g 5 d Horizontal q 1
       0.027        480451         9         TS g 5 d Horizontal q 1
       0.029        496497        10         TS g 5 d Horizontal q 1
       0.030        502186        10         TS g 5 d Horizontal q 1
       0.031        523921        11         TS g 5 d Horizontal q 1
       0.032        539967        12         TS g 5 d Horizontal q 1
       0.033        547003         9         TS g 5 d Horizontal q 2
       0.034        561304         9         TS g 5 d Horizontal q 2
       0.035        581548         9         TS g 5 d Horizontal q 2
       0.036        588973        10         TS g 5 d Horizontal q 2
       0.036        597058        10         TS g 5 d Horizontal q 2
       0.037        599368        11         TS g 5 d Horizontal q 2
       0.039        602118        14         TS g 4 d Horizontal q 2
       0.043        605793        11         TS g 5 d Horizontal q 9
       0.049        606147        13        TS g 5 d Horizontal q 19
       0.059        606672        12        TS g 5 d Horizontal q 42
       0.074        607062        14        TS g 5 d Horizontal q 94
       0.104        609550        15       TS g 5 d Horizontal q 211
       0.154        610101        31       TS g 4 d Horizontal q 141
       0.155        610578        31       TS g 4 d Horizontal q 141
       0.156        610787        32       TS g 4 d Horizontal q 141
       0.212        611135        34       TS g 4 d Horizontal q 211
       0.294        614725        31       TS g 4 d Horizontal q 316
       0.304        614967        42       TS g 4 d Horizontal q 316
       0.453        616880        16      TS g 5 d Horizontal q 1139
       0.874        619897        28      TS g 4 d Horizontal q 1066

Final statistics
----------------
Time (s):  1.0037

Solution
--------
Number of items:  28 / 153 (18.3007%)
Item area:        619897 / 4322082 (14.3426%)
Item profit:      619897 / 4.32208e+06 (14.3426%)
Number of bins:   1 / 1 (100%)
Bin cost:         623040
Waste:            3143
Waste (%):        0.504462
Full waste:       3143
Full waste (%):   0.504462

Visualize solution:

python3 scripts/visualize_rectangleguillotine.py solution_rectangleguillotine.csv

rectangle solver

Features:

  • Objectives:
    • Knapsack
    • Open dimension X
    • Open dimension Y
    • Bin packing
    • Bin packing with leftovers
    • Variable-sized bin packing
  • With or without item rotations
  • Bins may contain defects
  • Maximum weight in bins
  • Unloading constraints: only horizontal/vertical movements, increasing x/y

Example:

./install/bin/packingsolver_rectangle \
        --verbosity-level 1 \
        --items data/rectangle/afsharian2014/450-200.txt/C22M25R10N15_D4_items.csv \
        --bins data/rectangle/afsharian2014/450-200.txt/C22M25R10N15_D4_bins.csv \
        --defects data/rectangle/afsharian2014/450-200.txt/C22M25R10N15_D4_defects.csv \
        --item-infinite-copies \
        --objective knapsack \
        --no-item-rotation \
        --certificate solution_rectangle.csv \
        --time-limit 5

=================================
          PackingSolver          
=================================

Problem type
------------
Rectangle

Instance
--------
Objective:             Knapsack
Number of item types:  25
Number of items:       247
Number of bin types:   1
Number of bins:        1
Number of groups:      1
Number of defects:     4
Unloading constraint:  None
Total item area:       2576510
Total item width:      33005
Total item height:     17382
Smallest item width:   47
Smallest item height:  21
Total bin area:        90000
Total item weight:     0
Total bin weight:      0

        Time        Profit   # items                         Comment
        ----        ------   -------                         -------
       0.001         10773         1                  TS g 4 d X q 1
       0.002         17052         1                  TS g 4 d X q 1
       0.002         23765         1                  TS g 4 d X q 1
       0.003         27825         2                  TS g 4 d X q 1
       0.003         30429         2                  TS g 4 d X q 1
       0.004         34538         2                  TS g 4 d Y q 1
       0.004         39178         3                  TS g 4 d Y q 1
       0.005         40237         4                  TS g 4 d X q 1
       0.005         43421         2                  TS g 5 d Y q 1
       0.006         43818         4                  TS g 4 d Y q 1
       0.006         50405         5                  TS g 4 d X q 1
       0.007         52631         6                  TS g 4 d X q 1
       0.007         53985         5                  TS g 5 d Y q 1
       0.008         54875         7                  TS g 4 d X q 1
       0.008         57101         8                  TS g 4 d X q 1
       0.009         59327         9                  TS g 4 d X q 1
       0.009         61553        10                  TS g 4 d X q 1
       0.010         63797        11                  TS g 4 d X q 1
       0.010         66041        12                  TS g 4 d X q 1
       0.011         66125        13                  TS g 4 d X q 1
       0.011         67227        15                  TS g 4 d X q 1
       0.012         69471        16                  TS g 4 d X q 1
       0.014         69760        17                  TS g 4 d X q 3
       0.017         70866        10                 TS g 5 d Y q 19
       0.017         71638        11                 TS g 5 d Y q 19
       0.020         71674        12                 TS g 5 d Y q 28
       0.050         72296        11                TS g 5 d Y q 141
       0.162         72704        21                TS g 4 d X q 141
       0.282         72832        19                TS g 4 d Y q 316
       0.282         73344        19                TS g 4 d Y q 316
       0.286         73443        20                TS g 4 d Y q 316
       0.813         73980        20                TS g 4 d X q 711
       1.196         73997        22               TS g 4 d X q 1066
       1.794         74170        21               TS g 4 d X q 1599
       4.873         74986        22               TS g 4 d X q 3597

Final statistics
----------------
Time (s):  5.02934

Solution
--------
Number of items:  22 / 247 (8.90688%)
Item area:        74986 / 2576510 (2.91037%)
Item weight:      0 / 0 (-nan%)
Item profit:      74986 / 2.57651e+06 (2.91037%)
Number of bins:   1 / 1 (100%)
Bin area:         90000 / 90000 (100%)
Bin weight:       0 / 0 (-nan%)
Bin cost:         90000
Waste:            14166
Waste (%):        15.8897
Full waste:       15014
Full waste (%):   16.6822
Area load:        0.833178
Weight load:      -nan
X max:            448
Y max:            199
Leftover value:   848

Visualize solution:

python3 scripts/visualize_rectangle.py solution_rectangle.csv

box solver

Features:

  • Objectives:
    • Knapsack
    • Bin packing
    • Open dimension X
    • Open dimension Y
    • Open dimension Z
    • Variable-sized bin packing
  • Select allowed item rotations (among the 6 possible rotations)
  • Maximum weight in bins

Example:

./install/bin/packingsolver_box \
        --verbosity-level 1 \
        --items ./data/box/bischoff1995/BR3.txt_1 \
        --objective knapsack \
        --certificate solution_box.csv \
        --output output.json \
        --time-limit 10

=================================
          PackingSolver          
=================================

Problem type
------------
Box

Instance
--------
Objective:             Knapsack
Number of item types:  8
Number of items:       94
Number of bin types:   1
Number of bins:        1
Number of defects:     0
Total item volume:     29989656
Total item profit:     2.99897e+07
Largest item profit:   867240
Total item weight:     0
Largest item copies:   24
Total bin volume:      30089620
Total bin weight:      inf
Largest bin cost:      136771

        Time        Profit   # items                         Comment
        ----        ------   -------                         -------
       0.000        246240         1                  TS g 4 d Y q 1
       0.001        409860         1                  TS g 4 d Y q 1
       0.008        867240         1                  TS g 4 d Y q 1
       0.008   1.11348e+06         2                  TS g 4 d Y q 1
       0.008    1.2771e+06         2                  TS g 5 d Y q 1
       0.008   1.73448e+06         2                  TS g 5 d Y q 1
       0.008   1.98072e+06         3                  TS g 5 d Y q 1
       0.009   2.14434e+06         3                  TS g 5 d Y q 1
       0.009   2.60172e+06         3                  TS g 5 d Y q 1
       0.009   2.84796e+06         4                  TS g 5 d Y q 1
       0.009   3.01158e+06         4                  TS g 5 d Y q 1
       0.009   3.46896e+06         4                  TS g 5 d Y q 1
       0.010    3.7152e+06         5                  TS g 5 d X q 1
       0.010   3.87882e+06         5                  TS g 5 d X q 1
       0.010    4.3362e+06         5                  TS g 5 d X q 1
       0.011   4.58244e+06         6                  TS g 5 d X q 1
       0.011   4.74606e+06         6                  TS g 5 d X q 1
       0.011   5.20344e+06         6                  TS g 5 d X q 1
       0.011   5.44968e+06         7                  TS g 5 d X q 1
       0.011    5.6133e+06         7                  TS g 5 d X q 1
       0.012   6.07068e+06         7                  TS g 5 d X q 1
       0.012   6.18893e+06         8                  TS g 5 d X q 1
       0.012   6.31692e+06         8                  TS g 5 d Y q 1
       0.013   6.48054e+06         8                  TS g 5 d Y q 1
       0.013   6.93792e+06         8                  TS g 5 d Y q 1
       0.013   7.05617e+06         9                  TS g 5 d X q 1
       0.013   7.18416e+06         9                  TS g 5 d Y q 1
       0.014   7.34778e+06         9                  TS g 5 d Y q 1
       0.014   7.80516e+06         9                  TS g 5 d Y q 1
       0.014   7.92341e+06        10                  TS g 5 d X q 1
       0.015    8.0514e+06        10                  TS g 5 d Y q 1
       0.015   8.21502e+06        10                  TS g 5 d Y q 1
       0.015    8.6724e+06        10                  TS g 5 d Y q 1
       0.015   8.79065e+06        11                  TS g 5 d X q 1
       0.016   8.91864e+06        11                  TS g 5 d Y q 1
       0.016   9.08226e+06        11                  TS g 5 d Y q 1
       0.016   9.53964e+06        11                  TS g 5 d Y q 1
       0.017   9.65789e+06        12                  TS g 5 d X q 1
       0.017   9.78588e+06        12                  TS g 5 d Y q 1
       0.017    9.9495e+06        12                  TS g 5 d Y q 1
       0.018   1.00678e+07        13                  TS g 5 d X q 1
       0.018   1.01957e+07        13                  TS g 5 d Y q 1
       0.018   1.03594e+07        13                  TS g 5 d Y q 1
       0.019   1.04776e+07        14                  TS g 5 d X q 1
       0.019   1.06056e+07        14                  TS g 5 d Y q 1
       0.019   1.07692e+07        14                  TS g 5 d Y q 1
       0.020   1.08506e+07        15                  TS g 5 d X q 1
       0.020   1.10155e+07        15                  TS g 5 d Y q 1
       0.021   1.11791e+07        15                  TS g 5 d Y q 1
       0.021   1.12151e+07        17                  TS g 5 d X q 1
       0.021   1.14253e+07        16                  TS g 5 d Y q 1
       0.022   1.15889e+07        16                  TS g 5 d Y q 1
       0.022   1.17516e+07        18                  TS g 5 d X q 1
       0.023   1.18352e+07        17                  TS g 5 d Y q 1
       0.023   1.19988e+07        17                  TS g 5 d Y q 1
       0.024   1.21615e+07        19                  TS g 5 d X q 1
       0.024   1.24077e+07        20                  TS g 5 d X q 1
       0.025   1.25714e+07        20                  TS g 5 d X q 1
       0.025   1.28176e+07        21                  TS g 5 d X q 1
       0.026   1.29812e+07        21                  TS g 5 d X q 1
       0.026   1.32275e+07        22                  TS g 5 d X q 1
       0.027   1.33911e+07        22                  TS g 5 d X q 1
       0.027   1.36373e+07        23                  TS g 5 d X q 1
       0.028   1.38009e+07        23                  TS g 5 d X q 1
       0.028   1.40472e+07        24                  TS g 5 d X q 1
       0.029   1.41739e+07        24                  TS g 5 d X q 1
       0.030   1.44201e+07        25                  TS g 5 d X q 1
       0.030   1.45469e+07        25                  TS g 5 d X q 1
       0.031   1.47931e+07        26                  TS g 5 d X q 1
       0.031   1.49198e+07        26                  TS g 5 d X q 1
       0.032   1.51661e+07        27                  TS g 5 d X q 1
       0.032   1.52928e+07        27                  TS g 5 d X q 1
       0.033   1.54123e+07        28                  TS g 5 d X q 1
       0.033    1.5539e+07        28                  TS g 5 d X q 1
       0.034   1.56657e+07        28                  TS g 5 d Y q 1
       0.035   1.57853e+07        29                  TS g 5 d X q 1
       0.035    1.5912e+07        29                  TS g 5 d X q 1
       0.036   1.60387e+07        29                  TS g 5 d Y q 1
       0.036   1.61582e+07        30                  TS g 5 d X q 1
       0.037   1.62849e+07        30                  TS g 5 d X q 1
       0.037   1.64117e+07        30                  TS g 5 d Y q 1
       0.038   1.65312e+07        31                  TS g 5 d X q 1
       0.039   1.66579e+07        31                  TS g 5 d X q 1
       0.039   1.67846e+07        31                  TS g 5 d Y q 1
       0.040   1.69041e+07        32                  TS g 5 d X q 1
       0.040   1.70309e+07        32                  TS g 5 d X q 1
       0.041   1.71092e+07        32                  TS g 5 d Y q 1
       0.042   1.72771e+07        33                  TS g 5 d X q 1
       0.042   1.73554e+07        33                  TS g 5 d X q 1
       0.043   1.74338e+07        33                  TS g 5 d Y q 1
       0.043   1.76017e+07        34                  TS g 5 d X q 1
       0.044     1.768e+07        34                  TS g 5 d X q 1
       0.045   1.77583e+07        34                  TS g 5 d Y q 1
       0.045   1.79263e+07        35                  TS g 5 d X q 1
       0.046   1.80046e+07        35                  TS g 5 d X q 1
       0.047   1.80829e+07        35                  TS g 5 d Y q 1
       0.047   1.81725e+07        36                  TS g 5 d X q 1
       0.048   1.82508e+07        36                  TS g 5 d X q 1
       0.049   1.84075e+07        36                  TS g 5 d Y q 1
       0.049   1.84971e+07        37                  TS g 5 d X q 1
       0.050   1.85754e+07        37                  TS g 5 d X q 1
       0.051   1.87321e+07        37                  TS g 5 d Y q 1
       0.051   1.88216e+07        38                  TS g 5 d X q 1
       0.052      1.89e+07        38                  TS g 5 d X q 1
       0.053   1.90567e+07        38                  TS g 5 d Y q 1
       0.053   1.91462e+07        39                  TS g 5 d X q 1
       0.054   1.92246e+07        39                  TS g 5 d X q 1
       0.055   1.93812e+07        39                  TS g 5 d Y q 1
       0.056   1.94708e+07        40                  TS g 5 d X q 1
       0.056   1.95491e+07        40                  TS g 5 d X q 1
       0.057   1.97058e+07        40                  TS g 5 d Y q 1
       0.058   1.97954e+07        41                  TS g 5 d X q 1
       0.059   1.98737e+07        41                  TS g 5 d X q 1
       0.059    1.9952e+07        41                  TS g 5 d Y q 1
       0.060   2.00416e+07        42                  TS g 5 d X q 1
       0.061   2.01199e+07        42                  TS g 5 d X q 1
       0.062   2.01599e+07        43                  TS g 5 d X q 1
       0.063   2.01885e+07        43                  TS g 5 d Y q 1
       0.063   2.02382e+07        43                  TS g 5 d X q 1
       0.064   2.03068e+07        44                  TS g 5 d Y q 1
       0.065    2.0313e+07        44                  TS g 5 d X q 1
       0.066   2.03816e+07        45                  TS g 5 d Y q 1
       0.067   2.05593e+07        45                  TS g 5 d X q 1
       0.067   2.06376e+07        45                  TS g 5 d X q 1
       0.069   2.08055e+07        46                  TS g 5 d X q 1
       0.069   2.08839e+07        46                  TS g 5 d X q 1
       0.070   2.10021e+07        47                  TS g 5 d X q 1
       0.071   2.12084e+07        47                  TS g 5 d X q 1
       0.072   2.13267e+07        48                  TS g 5 d X q 1
       0.073    2.1533e+07        48                  TS g 5 d X q 1
       0.074   2.16513e+07        49                  TS g 5 d X q 1
       0.075   2.18576e+07        49                  TS g 5 d X q 1
       0.076   2.19758e+07        50                  TS g 5 d X q 1
       0.077   2.21038e+07        50                  TS g 5 d X q 1
       0.078   2.22221e+07        51                  TS g 5 d X q 1
       0.079   2.23501e+07        51                  TS g 5 d X q 1
       0.080   2.24683e+07        52                  TS g 5 d X q 1
       0.081   2.25444e+07        52                  TS g 5 d X q 1
       0.081   2.25963e+07        52                  TS g 5 d X q 1
       0.083   2.27146e+07        53                  TS g 5 d X q 1
       0.083   2.27907e+07        53                  TS g 5 d X q 1
       0.084   2.28425e+07        53                  TS g 5 d X q 1
       0.085   2.29608e+07        54                  TS g 5 d X q 1
       0.086   2.29961e+07        70                  TS g 4 d X q 1
       0.087   2.31228e+07        70                  TS g 4 d X q 1
       0.088    2.3369e+07        71                  TS g 4 d X q 1
       0.089   2.34958e+07        71                  TS g 4 d X q 1
       0.091    2.3742e+07        72                  TS g 4 d X q 1
       0.092   2.38687e+07        72                  TS g 4 d X q 1
       0.093   2.42417e+07        73                  TS g 4 d X q 1
       0.094   2.44879e+07        74                  TS g 4 d X q 1
       0.095   2.45662e+07        74                  TS g 4 d X q 1
       0.096   2.48125e+07        75                  TS g 4 d X q 1
       0.100   2.48619e+07        66                  TS g 5 d X q 1
       0.101   2.49802e+07        67                  TS g 5 d X q 1
       0.103   2.50984e+07        68                  TS g 5 d X q 1
       0.104   2.51733e+07        69                  TS g 5 d X q 1
       0.105   2.52481e+07        70                  TS g 5 d X q 1
       0.106   2.53229e+07        71                  TS g 5 d X q 1
       0.107   2.53978e+07        72                  TS g 5 d X q 1
       0.158   2.54632e+07        79                  TS g 4 d X q 2
       0.255   2.56576e+07        80                  TS g 4 d X q 3
       0.399    2.5706e+07        80                  TS g 4 d X q 4
       0.956   2.57613e+07        73                  TS g 5 d X q 9
       0.970   2.58362e+07        74                  TS g 5 d X q 9
       1.625   2.59038e+07        74                 TS g 5 d X q 13
       1.641   2.59787e+07        75                 TS g 5 d X q 13
       2.772   2.59929e+07        80                 TS g 4 d X q 19
       2.921   2.59991e+07        74                 TS g 5 d X q 19
       2.953   2.60305e+07        75                 TS g 5 d X q 19
       2.954   2.60739e+07        75                 TS g 5 d X q 19
       2.993   2.61488e+07        76                 TS g 5 d X q 19
       7.892   2.62568e+07        80                 TS g 4 d X q 42
       7.901   2.63086e+07        80                 TS g 4 d X q 42
       7.932   2.63209e+07        81                 TS g 4 d X q 42
       7.936   2.63728e+07        81                 TS g 4 d X q 42
       7.954   2.65153e+07        82                 TS g 4 d X q 42
       7.956   2.65188e+07        82                 TS g 4 d X q 42
       7.958   2.65672e+07        82                 TS g 4 d X q 42
       7.972   2.67132e+07        83                 TS g 4 d X q 42

Final statistics
----------------
Time (s):  10.0127

Solution
--------
Number of items:   83 / 94 (88.2979%)
Item volume:       2.67132e+07 / 2.99897e+07 (89.0746%)
Item weight:       0 / 0 (-nan%)
Item profit:       2.67132e+07 / 2.99897e+07 (89.0746%)
Number of stacks:  0
Stack area:        0
Number of bins:    1 / 1 (100%)
Bin volume:        30089620 / 30089620 (100%)
Bin area:          136771 / 136771 (100%)
Bin weight:        inf / inf (-nan%)
Bin cost:          136771
Waste:             3325190
Waste (%):         11.0698
Full waste:        3376450
Full waste (%):    11.2213
Volume load:       0.887787
Area load:         0
Weight load:       0
X max:             586
Y max:             233

Visualize solution:

python3 scripts/visualize_box.py solution_box.csv

boxstacks solver

Features:

  • Objectives:
    • Knapsack
    • Bin packing
    • Variable-sized bin packing
  • Select allowed item rotations (among the 6 possible rotations)
  • Nesting height when stacking items
  • Maximum number of items in a stack containing an item of a given type
  • Maximum weight allowed above an item of a given type
  • Maximum weight in bins
  • Maximum stack density
  • Maximum weight on middle and rear axles
  • Unloading constraints: only horizontal/vertical movements, increasing x/y

Example:

python3 scripts/download_data.py --data roadef2022_2024-04-25_bpp
./install/bin/packingsolver_boxstacks \
        --verbosity-level 1 \
        --items data/boxstacks/roadef2022_2024-04-25_bpp/C/AS/AS_149_items.csv \
        --bins data/boxstacks/roadef2022_2024-04-25_bpp/C/AS/AS_149_bins.csv \
        --parameters data/boxstacks/roadef2022_2024-04-25_bpp/C/AS/AS_149_parameters.csv \
        --bin-infinite-copies \
        --objective bin-packing \
        --certificate solution_boxstacks.csv \
        --time-limit 1

=================================
          PackingSolver          
=================================

Problem type
------------
BoxStacks

Instance
--------
Objective:             BinPacking
Number of item types:  13
Number of items:       118
Number of bin types:   1
Number of bins:        118
Number of groups:      1
Number of defects:     0
Unloading constraint:  IncreasingX
Item volume:           196704000000
Bin volume:            13001535000000
Item weight:           17323.9
Bin weight:            2.832e+06

        Time    Bins  Full waste (%)                         Comment
        ----    ----  --------------                         -------
       0.119       2           10.74                     iteration 0

Final statistics
----------------
Time (s):  0.119291

Solution
--------
Number of items:   118 / 118 (100%)
Item volume:       1.96704e+11 / 1.96704e+11 (100%)
Item weight:       17323.9 / 17323.9 (100%)
Item profit:       1.96704e+11 / 1.96704e+11 (100%)
Number of stacks:  37
Stack area:        69600000
Number of bins:    2 / 118 (1.69492%)
Bin volume:        220365000000 / 13001535000000 (1.69492%)
Bin area:          74700000 / 4407300000 (1.69492%)
Bin weight:        48000 / 2832000 (1.69492%)
Bin cost:          6
Waste:             19678500000
Waste (%):         9.09431
Full waste:        23661000000
Full waste (%):    10.7372
Volume load:       0.0151293
Area load:         0.015792
Weight load:       0.00611719
X max:             14400
Y max:             2400

Visualize solution:

python3 scripts/visualize_boxstacks.py solution_boxstacks.csv

onedimensional solver

Features:

  • Objectives:
    • Knapsack
    • Bin packing
    • Bin packing with leftovers
    • Variable-sized bin packing
  • Nesting length between consecutive items
  • Maximum number of items in a bin containing an item of a given type
  • Maximum weight allowed after an item of a given type
  • Maximum weight in bins
  • Item type / bin type eligibility

Example:

./install/bin/packingsolver_onedimensional \
        --verbosity-level 2 \
        --items data/onedimensional/users/2024-04-21_items.csv \
        --bins data/onedimensional/users/2024-04-21_bins.csv \
        --parameters data/onedimensional/users/2024-04-21_parameters.csv \
        --time-limit 1 \
        --certificate solution_onedimensional.csv

=================================
         PackingSolver          
=================================

Problem type
------------
OneDimensional

Instance
--------
Objective:             VariableSizedBinPacking
Number of item types:  7
Number of items:       43554
Number of bin types:   1
Number of bins:        43554

   Bin type      Length    Max wght        Cost      Copies  Copies min
   --------      ------    --------        ----      ------  ----------
          0        6000         inf        6000       43554           0

   Bin type Eligibility
   -------- -----------

  Item type      Length      Weight   MaxWgtAft     MaxStck      Profit      Copies Eligibility
  ---------      ------      ------   ---------     -------      ------      ------ -----------
          0         837           0         inf  2147483647         837         820          -1
          1        1587           0         inf  2147483647        1587       26640          -1
          2        1987           0         inf  2147483647        1987         372          -1
          3        2487           0         inf  2147483647        2487       15602          -1
          4         727           0         inf  2147483647         727          40          -1
          5        1627           0         inf  2147483647        1627          40          -1
          6         747           0         inf  2147483647         747          40          -1

       Time          Cost  # bins  Full waste (%)                         Comment
       ----          ----  ------  --------------                         -------
      0.006    8.8338e+07   14723            6.46                        SVC it 0
      0.011     8.769e+07   14615            5.77                        SVC it 1
      0.023    8.7624e+07   14604            5.70                        SVC it 3
      0.027    8.7612e+07   14602            5.69                        SVC it 4
      0.070     8.757e+07   14595            5.64                          CG n 1

Final statistics
----------------
Time (s):  1.00035

Solution
--------
Number of items:  43554 / 43554 (100%)
Item length:      8.26294e+07 / 8.26294e+07 (100%)
Item profit:      8.26294e+07 / 8.26294e+07 (100%)
Number of bins:   14595 / 43554 (33.5101%)
Bin length:       87570000 / 261324000 (33.5101%)
Bin cost:         8.757e+07
Waste:            4940351
Waste (%):        5.64162
Full waste:       4940602
Full waste (%):   5.64189

        Bin        Type      Copies      Length      Weight     # items
        ---        ----      ------      ------      ------     -------
          0           0         124        5969           0           3
          1           0         231        4978           0           2
          2           0       13320        5669           0           3
          3           0         820        5819           0           3
          4           0          40        5709           0           3
          5           0          40        5729           0           3
          6           0          20        5749           0           3

Visualize:

python3 scripts/visualize_onedimensional.py solution_onedimensional.csv

irregular solver

Features:

  • Objectives:
    • Knapsack
    • Open dimension X
    • Open dimension Y
    • Bin packing
    • Bin packing with leftovers
    • Variable-sized bin packing
  • Non-convex shapes (for items or bins)
  • Shapes with holes
  • Discrete and continuous rotations of items
  • Mirroring of items
  • Bins may contain different quality areas
  • Minimum distance between the bin and the items
  • Minimum distance between each pair of items

Example:

./install/bin/packingsolver_irregular \
        --verbosity-level 1 \
        --input ./data/irregular/opencutlist/knight_armor.json \
        --time-limit 10 \
        --certificate solution_irregular.json

=================================
          PackingSolver          
=================================

Problem type
------------
Irregular

Instance
--------
Objective:                    BinPackingWithLeftovers
Number of item types:         45
Number of items:              100
Number of bin types:          1
Number of bins:               1
Number of defects:            0
Number of rectangular items:  5
Number of circular items:     0
Item area:                    2.91022e+06
Smallest item area:           3749.55
Largest item area:            90886.6
Bin area:                     5.796e+06
Item-bin minimum spacing:     0
Item-item minimum spacing:    0

        Time      # bins    Leftover                         Comment
        ----      ------    --------                         -------
       0.365           1 1.55619e+06                  TS g 0 d 5 q 1
       0.367           1 1.64045e+06                  TS g 0 d 5 q 1
       0.413           1 1.79437e+06                  TS g 0 d 0 q 1
       0.451           1 1.81666e+06                  TS g 0 d 4 q 1
       0.520           1 1.98572e+06                  TS g 1 d 5 q 1
       0.543           1 2.03254e+06                  TS g 1 d 4 q 1
       2.266           1 2.05049e+06                  TS g 1 d 5 q 3
       3.159           1 2.05693e+06                  TS g 1 d 0 q 4
       3.544           1 2.06829e+06                  TS g 1 d 1 q 4
       4.708           1 2.11687e+06                  TS g 1 d 0 q 6
       5.137           1 2.12846e+06                  TS g 1 d 1 q 6

Final statistics
----------------
Time (s):  10.0096

Solution
--------
Number of items:  100 / 100 (100%)
Item area:        2.91016e+06 / 2.91022e+06 (99.9981%)
Item profit:      2.91022e+06 / 2.91022e+06 (100%)
Number of bins:   1 / 1 (100%)
Bin area:         5796000 / 5796000 (100%)
Bin cost:         5.796e+06
Full waste:       2885838
Full waste (%):   49.7902
X max:            1771.76
Y max:            2070
Leftover value:   2.12846e+06

Visualize:

python3 scripts/visualize_irregular.py solution_irregular.json

Metadata

Release files for packingsolver 0.1.1112

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for packingsolver 0.1.1112
File Size Uploaded
packingsolver-0.1.1112.tar.gz 831.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for packingsolver 0.1.1112
File
packingsolver-0.1.1112-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
packingsolver-0.1.1112-cp312-abi3-win32.whl CPython 3.12 abi3 Windows x86-32 Details
packingsolver-0.1.1112-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
packingsolver-0.1.1112-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
packingsolver-0.1.1112-cp312-abi3-macosx_11_0_x86_64.whl CPython 3.12 abi3 macOS 11.0+ x86-64 Details
packingsolver-0.1.1112-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details

Total release size: 28.6 MB

Release files / packingsolver-0.1.1112.tar.gz

Download URL packingsolver-0.1.1112.tar.gz
Size 831.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3575c545e93a10459f8b1262b0121410ace9ccd76f253c80fea55d189af650aa
BLAKE2b-256 checksum
How to use checksums
19676447b58ff2ca92131dbe4bdcd96774a99f68330e2e239b14eb1b9f2568f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-win_amd64.whl

Download URL packingsolver-0.1.1112-cp312-abi3-win_amd64.whl
Size 4.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
51e73d4ebf1f608e2926ebbecc5571aaf968b2feb2c3f140c8a802a6f7c0a199
BLAKE2b-256 checksum
How to use checksums
c16b0d9d01ae916a581feac178699a69e8fe16a6bf0b437b34a4aeaf27d4c4a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-win32.whl

Download URL packingsolver-0.1.1112-cp312-abi3-win32.whl
Size 3.6 MB
Tags CPython 3.12 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
f779bc8ff7f3f246b65db1cd7fcc2ff138fc31c55f78140fbcbb80a88e45f9c5
BLAKE2b-256 checksum
How to use checksums
03c8c6188313f4a89bad9ebf205bea368c8743ce91525c2edcb6de57842b7446
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL packingsolver-0.1.1112-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 5.9 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
6c83ff30d9575c2bed2f3263d96f2954882bcc8e3d72632c5fa5300c8153a790
BLAKE2b-256 checksum
How to use checksums
d1c659e7db7a0705a5d96af5a8cd8b773ac97f785c94527997d0cc7ca19c8a12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL packingsolver-0.1.1112-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
5838b73312240c1990051ff80f0bb03337cba51cbe4696c52e6ea73469ecc653
BLAKE2b-256 checksum
How to use checksums
f1bd12a6ec9b65ef49129b70b4969494fc622f7f01dd9caba0da256a699ce070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-macosx_11_0_x86_64.whl

Download URL packingsolver-0.1.1112-cp312-abi3-macosx_11_0_x86_64.whl
Size 4.8 MB
Tags CPython 3.12 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
0293a141682052a76b5bb8d5abd90c03c7245a4fd7b452d312e3af532af0b93d
BLAKE2b-256 checksum
How to use checksums
718ffcd02f4cafde6dcda911f7f5cf1c1db8b7648ddc7df05d2c895bdd908eb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / packingsolver-0.1.1112-cp312-abi3-macosx_11_0_arm64.whl

Download URL packingsolver-0.1.1112-cp312-abi3-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
40fd19de106a7cf9d7091996a6cfa9a7a4bcd9f6dfeea38b44b103932bbb717f
BLAKE2b-256 checksum
How to use checksums
9dc3e12902f1384bd68699d12ccc345ff91caaf5a5965af4598b41ea893f453e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1112 This release

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page