In short: Truck load building is bin packing with side conditions, and first-fit-decreasing is close enough for a dock planner working to a cut-off, with Johnson's 1973 analysis bounding it at 11/9 of optimal plus a constant. Whether a load fills by weight or by cube turns on freight density against a crossover near 12.9 lb per cubic foot in a US 53 foot dry van and near 278 kg per cubic metre in a European 13.6 metre trailer. Pallet build height, do-not-stack flags and reverse drop sequence remove real capacity before any algorithm runs, and most of them are decided upstream of the dock. Fill should be reported against whichever of weight, cube and floor positions was binding, segmented by drop count and temperature before any two loads get compared.
Two metres of empty trailer sit behind the last pallet, the driver is outside waiting on paperwork, and the load plan on the screen says 94 percent cube utilisation. Both things are accurate. The loader can tell you exactly what happened: three of the pallets are drums that nothing stacks on, the last drop had to go on last, and the pallet build height for that customer means nothing double stacks anyway.
This is the ordinary state of affairs in a lot of operations, and it survives because the truck fill report is measured against the wrong thing and because the awkward quantities that create the gap were generated two systems upstream.
Truck load building is bin packing with a lot of side conditions
Strip out the physical detail and the core is a bin packing problem: items with sizes, bins with a capacity, minimise the number of bins. That base problem is NP-hard, and the well-behaved approximation has been known for decades. First-fit-decreasing sorts items largest to smallest and places each in the first bin it fits. Johnson's 1973 analysis bounded it at 11/9 of optimal plus a constant, and Dosa tightened the additive term to 6/9 in 2007. For a heuristic that runs in milliseconds, being within about 22 percent of optimal on the worst case and much closer than that in practice is a good trade.
The reason to care about the bound is that it tells you where to spend effort. A first pass with first-fit-decreasing gets you most of the way, and the remaining gap closes with a local improvement pass: swap items between loads, relocate a pallet from the least full load into gaps in the others, re-run the packing with a different sort key and keep the better result. Run that under a time budget, because a dock planner building forty loads before a 15:00 cut-off has seconds per load, and an exact three-dimensional packing formulation on a realistic instance does not finish in that window.
One correction to the textbook objective. Minimising the number of loads is the wrong target when an extra load has a fixed cost and a partial load still has to move. The objective is total transport cost, and there are lanes where two comfortable loads cost less than one heroic load plus an LTL shipment for the remainder. Let the model price the alternatives instead of counting bins.
Bischoff and Ratcliff set out the practical version of the problem in Omega in 1995, and their list of side conditions is still the right checklist: orientation constraints, stability, load bearing strength, weight distribution, multi-drop sequencing, grouping and separation. Every one of those reduces achievable fill, and every one of them is real.
Weight-limited or cube-limited, and why the answer flips by product
A trailer has three capacities and the load builder is always working against whichever binds first.
Take a 53 foot dry van in the United States. Federal gross combination weight on the Interstate system is 80,000 lb with the bridge formula governing axle spacing, which leaves roughly 42,000 to 45,000 lb of payload after tractor and trailer tare. Usable cube is about 3,489 cubic feet and there are 26 floor positions. Divide payload by cube and you get a crossover density of about 12.9 lb per cubic foot, or 207 kg per cubic metre. Freight denser than that fills the trailer by weight. Freight lighter than that fills it by cube.
Now run the same arithmetic on a European articulated combination under Directive 96/53/EC. Forty tonnes gross, so payload of roughly 24 to 26 tonnes, in a 13.6 metre trailer of about 90 cubic metres holding 33 euro pallet positions. The crossover lands near 278 kg per cubic metre.
The gap between those two numbers matters. A product at 240 kg per cubic metre is weight-limited in a US dry van and cube-limited in a European trailer, so the same SKU has a different binding constraint on each side of the Atlantic and the correct improvement move differs with it. On a weight-limited load you want to add light freight to fill the space you have paid for. On a cube-limited load you want dense freight. A load builder that does not know which constraint is currently binding will make both moves at random and improve neither.
Bottled and canned goods, liquids, tinned food and anything with water in it sit on the weight side. Paper products, snacks, empty packaging, textiles and most e-commerce parcels sit on the cube side. Mixed loads flip depending on the ratio, which is why density-balanced load building is a real technique: pair a dense customer order with a light one on the same truck and both constraints get closer to their limit.
There is a fourth limit that pure bin packing ignores entirely. Axle weight is regulated separately from gross weight, so a load can be legal at 78,000 lb gross and illegal at 36,000 lb on the tandems. Weight distribution along the trailer is a constraint on the packing, and a plan that satisfies gross weight while putting the dense freight at the nose is not a plan.
The constraints that make a theoretically full truck impossible
Stacking is where most of the theoretical cube goes. Every pallet has a load bearing limit, and packing with limited load bearing strength is its own research problem, treated directly by Bischoff in the European Journal of Operational Research in 2006. In practice you are working from a do-not-stack flag and a maximum stack weight in the item master, both of which are frequently stale, occasionally copied from a different pack format, and worth auditing before anyone blames the algorithm.
Pallet build height is the constraint that gets decided upstream and paid for at the dock. A 53 foot van has about 2.79 metres of internal height. Two pallets built to 1.35 metres stack to 2.70 and fit. Two pallets built to 1.45 metres stack to 2.90 and do not, so that freight occupies 26 floor positions instead of 13, and the load loses half its capacity for reasons that have nothing to do with the load builder. European trailers at 2.6 to 2.7 metres internal are tighter still. A build height policy set in the warehouse for pallet stability is a truck fill decision made by someone who is not measured on truck fill.
Overhang, wrap quality and pallet condition do similar damage in smaller amounts. A pallet that bulges 4 centimetres past its footprint cannot sit tight against its neighbour, and the accumulation across thirteen rows takes half a metre out of the usable length.
Mixed temperature loads carry a structural penalty. A multi-temperature trailer partitions into compartments with movable bulkheads that move in discrete steps, so what you have is several smaller packing problems whose boundaries only adjust in coarse increments. Spare space in the frozen compartment cannot absorb chilled freight, and product compatibility rules on odour transfer and ethylene sensitivity remove some combinations that would otherwise fit. Expect lower fill on multi-temp as a property of the equipment. The thermal handling itself is a separate subject (X8).
Drop sequence is the last big one. A multi-drop load has to be loaded in reverse delivery order, because the first customer's freight has to come off first and nothing can be buried behind it. That partitions the trailer into sequential segments and forbids exactly the moves that would otherwise close the gaps. Iori and Martello surveyed routing problems with loading constraints in TOP in 2010, and the general finding is that sequencing constraints cost real capacity. A four-drop load will not reach the fill of a single-drop load on the same freight, and putting both in the same fill report guarantees the report says nothing.
Measuring fill honestly
Cube utilisation on its own is the most common metric and the least informative. Report fill against the binding constraint: take the maximum of weight utilisation, cube utilisation and floor position utilisation, and record which of the three it was. A load at 71 percent cube and 98 percent weight is a full truck, and a load at 71 percent cube and 71 percent weight and 100 percent floor positions is also a full truck.
Then segment before you compare anything. Single-drop against multi-drop. Single-temperature against multi-temp. Loads where a delivery window or a customer receiving restriction forced a partial, against loads where nothing external was binding. Those categories have different achievable ceilings and averaging across them produces a number that no action can move.
The measure worth building is the gap to the achievable maximum given the constraints that were actually active on that load, rather than the gap to a hypothetical full trailer. That split assigns the improvement correctly. The gap between the plan and the achievable maximum belongs to the load builder. The distance between the achievable maximum and a full truck belongs to whoever set the order profile, the build height and the drop sequence, and no amount of packing effort will recover it.
The order profile is where the space actually goes
A load optimiser cannot fix an order that is 1.3 pallets of one item and 0.4 of another. Those quantities were created upstream by an ordering process that had no view of pallet arithmetic, and they arrive at the dock as an unsolvable packing instance.
The upstream fixes are ordinary and mostly commercial. Order multiples set to layer or pallet quantities in the customer ordering portal, so the awkward quantity never gets created. Minimum order quantities by lane where the transport economics justify them. A remaining-capacity indicator in the order entry screen so the person taking the order can see that 40 more cases fills the truck. Rounding rules with the incremental cost shown, so a customer sees the per-unit delivered price fall as the truck fills. On inbound, the same discipline applied to purchase orders, rounding to full pallet layers by default and requiring a reason to break one.
Most businesses have a delivered-price structure that already rewards a full truck, and almost none expose it at the moment somebody is typing the order. That is a cheaper intervention than any optimiser and it removes the problem rather than packing around it.
Where this stops
Load optimisation runs on master data. Case dimensions, pallet configuration, gross weights, stack flags and compatibility rules all have to be right, and in most item masters several of them are not. A plan built from wrong dimensions gets rejected on the dock, and after the second rejection the loaders go back to doing it by eye and the tool is finished. Audit a sample physically before go-live and re-audit whenever a pack format changes.
The legal and safety constraints are hard limits and no cost saving reaches past them. Axle weights, securement under 49 CFR 393 Subpart I in the US and the equivalent load securing standards elsewhere, driver hours, and the stacking limits the packaging was tested to. A plan that packs tighter by ignoring one of these is worse than the empty metre it removes.
There is also a point where the remaining air is worth less than the attention it takes. On a lane running four loads a week, a two percent fill improvement is not worth a daily planning ritual. Concentrate the effort on high-frequency lanes and on the freight where density and stacking rules interact most awkwardly, and leave the rest alone.
Which stops share a truck at all is a separate decision (X1), and how the pallet got built before it reached the door is another (X5).
Take last month's shipped loads, compute weight, cube and floor position utilisation for each one, and record which of the three was binding, because the distribution of that single answer will tell you within an hour whether you have a packing problem or an ordering problem.