NEW: The Decision Factory — a novel about decisions under uncertainty. Get it on Amazon
Optimization · · Adam DeJans Jr.

Scarce Capacity Should Go to the Next Best Unit

A practical guide to allocating constrained supply, production, cash, and logistics capacity using marginal economic value instead of averages, priorities, or historical shares.

optimizationsupply-chaindecision-sciencemilpcapacityallocation

Scarce Capacity Should Go to the Next Best Unit

Supply chain allocation problems usually become interesting at exactly the point where there is not enough of something.

There is not enough supplier capacity. Not enough cash. Not enough container space. Not enough production time. Not enough inventory to satisfy every location. Maybe several of those constraints are binding at once.

The standard response is to invent a priority score.

Product A is strategic. Customer B is tier one. Region C gets 30% because that is its historical share. SKU D has the highest margin percentage. Then the organization spends the next six months arguing about weights.

That is usually the wrong abstraction.

When a resource is scarce, the useful question is not which item is most important? The useful question is:

What is the economic value of giving the next feasible unit of this resource to each competing decision?

That shift sounds small. It changes the entire model.

Start With the Decision, Not the Score

Suppose a supplier can ship only 10,000 units this week across 200 SKUs. Each SKU feeds multiple markets. Demand is uncertain. Inventory already exists in different places. Some products have high margins but plenty of stock. Others have low margins but are one unit away from a stockout. Some orders trigger an MOQ. Some consume more container space. Some have substitution effects.

A ranking based on product margin cannot represent this problem.

Neither can a ranking based on forecast volume, service level, inventory turns, or customer importance by itself.

The decision might be written as

[ x_{i,l,t} = \text{quantity of item } i \text{ allocated to location } l \text{ in period } t. ]

If production itself is constrained, you may also have

[ y_{i,t} = \text{quantity of item } i \text{ produced or purchased in period } t. ]

The first job is to identify what can actually be changed. If the business decides production before allocation, those are two linked decisions. If transportation mode is selectable, that is another decision. If an MOQ can be activated, that activation belongs in the model too.

Do not compress all of that into a score before you have even described the decisions.

Marginal Value Is State Dependent

Imagine two SKUs with the same $20 unit contribution margin.

SKU A has 500 units on hand and expected demand of 100.

SKU B has 5 units on hand and expected demand of 100.

The next unit sent to SKU A probably sits in inventory. The next unit sent to SKU B may prevent an immediate lost sale.

Same margin. Very different value.

This is why allocation should be based on the incremental value of a decision from the current state, not on a static attribute attached to an item.

Conceptually, for a candidate move (a), we care about something like

[ \Delta V(a) = V(S \mid a) - V(S), ]

where (S) is the current system state and (V) measures the economic value of future outcomes.

The state may include inventory, pipeline orders, forecasts, lead times, open commitments, capacity, prices, promotions, substitution relationships, and cash.

Change the state and the value of the same allocation changes.

That is exactly what we want.

A Simple MILP View

For a deterministic version, suppose (x_i) is the quantity allocated to item-market combination (i), (v_i) is the economic value per unit, and (c_i) is the amount of scarce capacity consumed.

A toy model is

[ \max \sum_i v_i x_i ]

subject to

[ \sum_i c_i x_i \le C, ]

plus inventory, demand, MOQ, pack-size, transportation, and business constraints.

This already beats a priority list because the opportunity cost of capacity is represented jointly across all choices.

But the toy model hides the hard part: (v_i) is rarely a constant.

The first 10 units may prevent stockouts. The next 50 may cover ordinary demand. The next 500 may become excess inventory. A volume discount may make unit 1,000 unusually valuable because crossing the breakpoint changes procurement economics. An MOQ may make units valuable only as a bundle.

The value curve is often nonlinear and discrete.

That is why real allocation models frequently need piecewise-linear economics, binary activation variables, scenario evaluation, or discrete candidate moves rather than one static value coefficient per SKU.

Shadow Prices Are Useful, but Do Not Worship Them

In a linear program, the dual value on a capacity constraint tells you the local value of relaxing that constraint by one unit.

If warehouse capacity has a shadow price of $8 per pallet position, that is economically meaningful. It says the model would improve its objective by roughly $8 if one additional unit of that resource were available, subject to the usual LP sensitivity conditions.

This is useful for more than debugging.

It can tell you which constraints are actually expensive. It can help evaluate overtime, premium freight, temporary storage, supplier capacity purchases, or capital requests. A constraint that operations treats as sacred may have essentially zero marginal value. Another constraint nobody discusses may be costing millions.

But mixed-integer models complicate the story.

MILP duals do not give you a globally valid economic price for integer decisions. If one extra unit of capacity enables a truck, MOQ, production run, or setup, value can jump discontinuously.

So use LP shadow prices as diagnostics and local economic signals. For discrete decisions, explicitly perturb capacity or evaluate the relevant discrete moves.

Scarcity Often Exists at Several Levels

A real network may have all of these simultaneously:

  • supplier capacity by week,
  • production-line hours,
  • vendor MOQ requirements,
  • container cube or weight,
  • distribution-center throughput,
  • store shelf capacity,
  • working-capital limits,
  • category budgets,
  • contractual commitments.

Optimizing each constraint separately can produce nonsense.

A SKU that looks attractive under supplier capacity may consume scarce container cube. A product that looks attractive under gross margin may lock cash for six months. A market that looks attractive in isolation may prevent an MOQ from being satisfied for a much better portfolio of items.

The economic value of an allocation is therefore conditional on the other constraints.

This is why local allocation rules fail surprisingly often. They answer a decomposed problem that the business does not actually have.

Uncertainty Changes the Ranking

Now make demand uncertain.

Suppose SKU A has expected demand of 100 with a tight distribution. SKU B also has expected demand of 100, but outcomes range from 20 to 300.

Allocating 100 units to both because their mean forecasts match ignores the shape of the decision problem.

For each candidate allocation, what matters is the distribution of economic outcomes:

[ \mathbb{E}[\text{profit}(x, W)], ]

where (W) represents uncertain demand, lead time, supply, returns, or other future information.

You may also care about downside risk:

[ \max_x ; \mathbb{E}[P(x,W)] - \lambda R(x,W), ]

where (R) could represent a downside-risk measure such as CVaR, a cash exposure, or a business-specific penalty.

The important point is not the specific risk measure. It is that uncertainty should enter through the consequences of the decision.

Do not add a generic safety factor to every forecast and assume the allocation problem is solved.

The Next Unit Can Be the Wrong Atomic Move

People often say, “Allocate the next best unit.”

Sometimes that is literally correct. Often it is not.

If products ship in cases of 24, the atomic move may be a case.

If a vendor has a 5,000-unit MOQ across several SKUs, the meaningful move may be a bundle that activates the vendor order.

If freight economics change when a container is filled, the relevant move may be the set of units that crosses the utilization breakpoint.

If production requires a setup, the move may be an entire production run.

The algorithm should reason in the units the business can actually execute.

This is one reason discrete optimization is so useful in supply chain. The physical system is full of indivisibilities that average-value heuristics quietly ignore.

Questions to Ask Before Modeling

Before writing the objective, answer these questions:

  1. What exactly is scarce? Units, dollars, hours, cube, weight, supplier slots, labor, or several resources at once?
  2. What decision consumes the resource? Purchasing, production, allocation, transfer, transportation, or fulfillment?
  3. What is the smallest executable move? One unit, case pack, pallet, MOQ bundle, truck, setup, or something else?
  4. What changes economically when I make that move? Revenue, lost sales, holding cost, markdown risk, freight, duties, cash, penalties, or future flexibility?
  5. What state determines that value? Inventory, pipeline, demand distribution, lead time, price, promotions, or existing commitments?
  6. Which constraints are genuinely hard? Physical limits and contracts are different from managerial targets.
  7. What uncertainty can change the ranking? Demand, supply, lead time, cancellation, yield, or price?
  8. When will the decision be revisited? A weekly re-optimization has different value-of-information economics than a six-month commitment.

If these questions are unclear, a sophisticated solver will only optimize an unclear problem faster.

Metrics: Measure the Decision, Not the Allocation Rule

A common mistake is to evaluate an allocation model using the same proxies that created the old heuristic.

For example, the old process targets 95% service. The optimization model produces 93%. The model is declared worse.

That conclusion may be completely wrong.

If the 2% service reduction occurs on low-value items while scarce inventory moves to products where stockouts are economically catastrophic, the new decision may generate substantially more value.

Useful evaluation metrics include:

  • realized contribution profit,
  • lost-sales cost,
  • holding and obsolescence cost,
  • markdown cost,
  • premium freight,
  • working-capital consumption,
  • constraint violations,
  • downside profit distribution,
  • decision stability,
  • utilization of genuinely scarce resources.

Operational metrics such as fill rate still matter. They just should not automatically become the objective.

Test the Policy Through Replay

Do not validate a constrained allocation policy on one forecast snapshot.

Replay historical decision points using only the information that would have been available at each time.

At each decision date:

  1. reconstruct inventory and pipeline state,
  2. load the forecast vintage available at that time,
  3. reconstruct capacity and business constraints,
  4. run the candidate allocation policy,
  5. advance the system using realized outcomes or sampled scenarios,
  6. record economic and operational results,
  7. compare against the incumbent policy under the same information.

This exposes several problems immediately: future-information leakage, unstable rankings, brittle MOQ behavior, excessive switching, and models that look good only because one deterministic forecast happened to be convenient.

Common Failure Modes

Ranking by margin

High margin does not imply high marginal value. Existing inventory and demand risk matter.

Ranking by service gap

A product below its service target is not automatically the best place for scarce inventory. The economic consequence of the shortage matters.

Historical-share allocation

Historical shares reproduce yesterday’s constraints and mistakes. They are not an economic model.

Optimizing each SKU independently

This ignores shared capacity, MOQs, freight, budgets, and substitution.

Treating means as certainty

Two items with identical expected demand can have very different shortage and excess-risk profiles.

Ignoring discrete thresholds

MOQ, pack, setup, and freight breakpoints can reverse the ranking of candidate decisions.

Using a giant weighted score

A score with margin, service, strategic importance, inventory turns, forecast accuracy, and ten hand-tuned weights usually hides the economics rather than representing them.

Assuming the solver objective is automatically correct

A mathematically optimal allocation can still be a bad business decision if lost sales, obsolescence, substitution, or future flexibility are missing from the objective.

Implementation Notes

Keep the economic logic observable.

For each recommended allocation, store enough information to explain why it won: expected incremental value, scarce resources consumed, important constraints, relevant inventory state, and major uncertainty assumptions.

For a MILP, log binding constraints, objective components, gaps, runtime, and important activation decisions. For a simulation-based allocator, store scenario-level outcomes or at least the distribution summaries that drove the choice.

Do not return only a quantity.

The business will eventually ask why one product received capacity and another did not. If the system cannot answer that question, users will rebuild their own shadow allocation process in spreadsheets.

Also separate model inputs from policy choices. A capacity limit is an input. A risk-aversion coefficient is a policy parameter. A contractual minimum is a constraint. A preferred service target may be a managerial preference. Mixing these concepts makes tuning and governance unnecessarily difficult.

What to Do in Practice

Start small.

Take one genuinely constrained resource: supplier capacity, production hours, container cube, or working capital. Identify the decisions competing for it. Build the economic consequence of each decision from the current state. Add the actual executable constraints. Then compare the resulting allocation against the existing priority rule through historical replay or simulation.

You do not need a giant stochastic MILP on day one.

A good first system may generate discrete candidate moves, estimate their incremental value under scenarios, and select the best feasible moves until capacity is exhausted. Later, interactions can be handled with a MILP, local re-optimization, or richer policy search.

The sophistication should follow the economics of the problem.

The central idea is simple:

Scarce resources should flow toward the decisions with the highest incremental economic value, subject to the constraints that make those decisions real.

That sounds obvious. Yet a large fraction of supply chain allocation is still done with fixed priorities, historical shares, service targets, and weighted scores.

Once scarcity becomes explicit, allocation stops being a ranking exercise.

It becomes a decision problem.