Benchmark

87% of the container, on a benchmark anyone can rerun

We ran the engine behind the 3DPACK.ING planner on the Bischoff–Ratcliff instances, the standard container-loading test set in the research literature. Across 190 instances it filled 87.3% of the container on average, and every one of the 381 layouts it produced was checked independently: nothing overlaps, nothing floats, and every box stands on a side it is allowed to.

Run on 23 September 2026. The instances are public, and the download has the result for every instance in the table below.

Results by class

The benchmark has seven classes of 100 loads each, from three box types per load to twenty. Every load offers more cargo than the container holds — 99.4% of its volume on average — so the score is simply the share of the container that ends up filled.

Class Box types Instances Average fill Lowest Highest
BR1 3 1–10 87.6% 82.5% 90.9%
BR2 5 1–10 88.3% 85.6% 91.0%
BR3 8 1–10 88.2% 86.1% 89.8%
BR5 12 1–60 87.8% 82.4% 91.4%
BR6 15 1–54 87.0% 83.4% 90.9%
BR7 20 1–46 86.6% 82.9% 89.3%
All 190 87.3% 82.4% 91.4%

These are the first instances of each class in file order: 10 each of BR1–BR3 and 46 to 60 of BR5–BR7. BR4 has not been run yet. Nothing was picked or dropped; an instance that scored badly is in the table and in the download like any other.

What the Bischoff–Ratcliff benchmark is

E. E. Bischoff and M. S. W. Ratcliff published these problems in 1995 so that container-loading methods could be compared on the same loads, and they have been the field's standard test set ever since. They are distributed through J. E. Beasley's OR-Library, so anyone can download exactly the loads we packed.

Every load goes into the same 587 × 233 × 220 cm container, roughly the inside of a 20 ft box. Each box type says which of its sides may stand upright, the way a carton marked this way up does. The classes run from a few box types in large numbers to twenty types with a handful of each, which is much closer to a real mixed shipment.

How we ran it

With the planner's own engine, unchanged: the same code that answers a calculation on this site, at the two search speeds the planner tries for a load of more than 100 boxes, keeping whichever fills more of the container. Each instance was run once with a fixed seed, and running it again returns the same layout.

Every box that is not on the floor needs more than 75% of its base supported, the planner's default. Where the benchmark lets a box stand upright on two of its three sides, a rule our engine cannot express exactly, we fixed it to one of them. That is stricter than the benchmark, so it can only cost us, never help. The planner's one exception to this-way-up, tipping a few boxes when that is the only way to fit them, was switched off, because the benchmark forbids it.

For the record, the median instance took 42 seconds for both searches together, on one laptop running three instances at once.

How every layout was checked

A benchmark number is only worth quoting if the layouts behind it could actually be loaded, so each one went through a checker that knows nothing about how the engine packs:

  • Every box lies completely inside the container.
  • No two boxes overlap.
  • Every box stands on a side its type allows upright, checked against the benchmark's own rules rather than our stricter version of them.
  • Every box above the floor has more than 75% of its base resting on the boxes directly beneath it.
  • No box is placed twice.

All 381 layouts passed. The checker is itself tested against deliberately broken layouts — an overlap, a floating box, a box on a forbidden side — and rejects every one.

How to read 87%

It is not the best result ever published. Research algorithms built for this benchmark report averages above 90%. They are designed for exactly this problem, while a working planner also has to handle stacking limits, loading priorities, several containers at once and axle loads.

Most of the space we leave empty falls in two places: width left over between rows of different box types, and a band under the roof where stacks of a single type stop short. Both are geometry we are working on, and this page will change when the numbers do.

Running the benchmark also changed the planner. It showed that when a load did not fit, the engine would leave one big box behind rather than two small ones, whatever they held. Since 23 September it keeps whichever layout fills the most of the container, which on its own raised the first 30 instances of BR1–BR3 from 85.3% to 88.1%.

Questions

What is the Bischoff–Ratcliff benchmark?

Seven hundred container-loading problems published in 1995 and distributed through OR-Library, which researchers use to compare packing methods on the same loads. Each problem is a list of boxes, with the sides each box may stand on, and one 587 × 233 × 220 cm container.

Why is the result not 100%?

Because the boxes do not tile the container. Each load offers about 99% of the container's volume in cargo, but the box sizes leave gaps no remaining box fits, and a box that would only fit by floating or standing on a forbidden side does not count.

Can I check these numbers?

Yes. The loads are public, the download lists every instance in the table with the boxes offered, the boxes placed and the share of the container filled, and the rules every layout was checked against are on this page.

Is this the engine the planner uses?

Yes: the same code, and the same two search speeds the planner tries for loads of more than 100 boxes. The one difference is that the planner may tip a few this-way-up boxes onto their side when that is the only way to fit them. The benchmark forbids that, so it was switched off for these runs.

Why not every instance?

The table shows the first instances of each class in file order, which is as far as the run had reached; BR4 has not been run yet. More will be added as they finish, and no instance already in the table will be removed.

Does more fill always mean a better plan?

No. The benchmark rewards volume and nothing else. A real load also has to come off the truck in delivery order and keep its weight where the axles can carry it, which is why the planner handles loading priorities and shows axle loads. None of that is measured here.

Pack your first load

Type what you are shipping in plain English, or paste a list. No install, no card, and no account for the first one.

Ten previews a month with an account. Full custom results unlock with a $9 pack.