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 polygons

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.1056

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.1056
File Size Uploaded
packingsolver-0.1.1056.tar.gz 819.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for packingsolver 0.1.1056
File
packingsolver-0.1.1056-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
packingsolver-0.1.1056-cp312-abi3-win32.whl CPython 3.12 abi3 Windows x86-32 Details
packingsolver-0.1.1056-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.1056-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.1056-cp312-abi3-macosx_11_0_x86_64.whl CPython 3.12 abi3 macOS 11.0+ x86-64 Details
packingsolver-0.1.1056-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details

Total release size: 28.5 MB

Release files / packingsolver-0.1.1056.tar.gz

Download URL packingsolver-0.1.1056.tar.gz
Size 819.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7a449448905330cd32db07d2fb8f4d0567cb687029ae0a4908b2fcbc1cff2abc
BLAKE2b-256 checksum
How to use checksums
b1fc9d485b72fba17ea40d0569f95118012a28ef2b624f2c912850f271b76060
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-cp312-abi3-win_amd64.whl
Size 4.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
6e0e4e2d74e76397559036ea72264279533d9ed39afbe7ff057901418f0c03a4
BLAKE2b-256 checksum
How to use checksums
abe0617c8befd94cd9fafc6a30f2baf861ace0c462435c95d36a0dd76c9535e7
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-cp312-abi3-win32.whl
Size 3.6 MB
Tags CPython 3.12 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
b02cbc266cf215deadc732219b4953eb505225f37bff89bb891240e2b837beb7
BLAKE2b-256 checksum
How to use checksums
453539a2610ae1740f66707734a3a91623827fad35f04b4237f72c04454913ed
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 5.8 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
63fd0fb8a546563a8b16b395dae2f816cb3dfe6e2b854bb7e50ef8ab48d38bf9
BLAKE2b-256 checksum
How to use checksums
c14cca7c8a16ecfe2365734b90473e1ae843ff58c75c179290029d1b51588782
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 5.3 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
2341e21677eca7fa0c8c18ad9c10ebb03ecae85ed02fe17f72e8e2a13719d0f6
BLAKE2b-256 checksum
How to use checksums
2f2bf47e6211e89200ba2f4d40010e7d187940fb5824302ea196940723423565
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-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
25cc39c76990f6667d0d02fb206a04b2248f8c397c592293c7775421c77d86d6
BLAKE2b-256 checksum
How to use checksums
c820c63930218457325aa3b6945bb1e37ddecfc9a906dbd02b29bde5b961bea6
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 3, 2026.

Transparency log

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

Download URL packingsolver-0.1.1056-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
63c3458da7bf68571971f80cd21f8dab7f04370f2cfc864e2ff99b6392c81d3e
BLAKE2b-256 checksum
How to use checksums
e1d919dddcc8dc1036a112cabd354371a9af32d182eae11a2734e0c05cab0208
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 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1056 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