Skip to main content

Omnichannel Fulfilment

MILP assignment · Order-to-node matching

Given a set of online orders and a network of fulfilment nodes — distribution centres, ship-from-store locations, dark stores, pickup lockers — decide which node ships each order. Minimise shipping cost + labour cost + SLA-miss penalty, subject to per-node inventory and labour capacity. A canonical assignment MIP that powers every multi-channel retailer (Target, Walmart, Zara, Macy's) running same-day and two-day fulfilment at scale. Foundational papers: Acimović & Graves (2015); Gao & Su (2017); Bell, Gallino & Moreno (2018).

Why it matters

Where omnichannel cost and customer experience intersect

~16%
Global e-commerce share of retail trade in 2024 — every point of online share puts more pressure on fulfilment optimisation.
2–10%
Documented fulfilment-cost reduction when order-to-node routing switches from rule-based (“nearest DC with stock”) to MIP-optimised assignment.
Source: Acimović & Graves (2015), M&SOM 17(1).
O(n · m)
Per-batch complexity of the assignment problem (n orders × m nodes). Hungarian-style solvers handle thousands per cycle.
Source: Kuhn (1955) Hungarian method.
~30%
Typical e-commerce return rate — return-aware fulfilment assignment (route to stores with low return demand) is an active research frontier.
Source: NRF retail-returns reports.

Where the decision sits

Order-by-order · minutes, not seasons

Omnichannel fulfilment is the operational decision a retailer makes when an online order lands: which node ships it? Options include the traditional DC (cheap per-unit but far from customer, slow), ship-from-store (uses store inventory and labour, shorter lead time, higher cost), dark stores (micro-fulfilment nodes, fast for quick commerce), and pickup lockers (customer picks up, zero last-mile). The decision is typically re-run every minutes-to-hours as new orders arrive, so solver speed matters. Upstream decisions (store location, multi-echelon inventory) set the geometry; downstream routing is logistics last-mile.

Order arrivesSKU, ZIP, SLA
Assign nodeDC / SFS / dark / locker
Pick & packlabour, tote
Shiplast-mile

Problem & formulation

Assignment MILP with inventory and labour capacity

OR family
Assignment / Transportation
Complexity
LP (integer-valued)
Solver realism
★★★ Greedy + Hungarian
Reference
Acimović & Graves (2015)

Sets and parameters

SymbolMeaningUnit
\(i \in \mathcal{O}\)Pending online orderfinite
\(m \in \mathcal{M}\)Fulfilment node (DC / store / dark store / locker)finite
\(I_m\)Inventory at node \(m\) (for the order’s SKU)units
\(L_m\)Labour capacity at node \(m\) (orders per cycle)orders
\(c_{im}\)Shipping cost from \(m\) to order \(i\)’s zone$ / order
\(\ell_m\)Per-order labour cost at \(m\) (pick, pack, hand-off)$ / order
\(\tau_{im}\)Promised delivery time from \(m\) to order \(i\)hours
\(\tau^{\text{SLA}}_i\)Order \(i\)’s promised SLA windowhours
\(\pi\)Per-order penalty for missing SLA$ / miss

Decision variable

SymbolMeaningDomain
\(x_{im}\)1 if order \(i\) is fulfilled by node \(m\)binary

Objective

$$\min \; \sum_{i \in \mathcal{O}} \sum_{m \in \mathcal{M}} \Bigl(\, c_{im} \;+\; \ell_m \;+\; \pi \cdot \mathbb{1}\{\tau_{im} > \tau^{\text{SLA}}_i\} \,\Bigr) \, x_{im}$$

Shipping + labour + SLA-miss penalty, summed over all order-node assignments. \(\mathbb{1}\{\cdot\}\) is the indicator; practitioners often pre-compute a composite cost matrix \(C_{im} = c_{im} + \ell_m + \pi \mathbb{1}\{\tau_{im} > \tau^{\text{SLA}}_i\}\) to simplify the MIP.

Constraints

$$\sum_{m \in \mathcal{M}} x_{im} = 1 \qquad \forall\, i \in \mathcal{O} \qquad \text{(each order fulfilled exactly once)}$$ $$\sum_{i \in \mathcal{O}} x_{im} \leq I_m \qquad \forall\, m \in \mathcal{M} \qquad \text{(node inventory)}$$ $$\sum_{i \in \mathcal{O}} x_{im} \leq L_m \qquad \forall\, m \in \mathcal{M} \qquad \text{(node labour capacity)}$$ $$x_{im} \in \{0, 1\}$$

The LP relaxation of this MIP has integer-valued extreme points (it is a transportation problem with all-integer RHS), so \(x_{im} \in [0, 1]\) gives the same optimum. In practice, the Hungarian algorithm solves it in \(\mathcal{O}(n^3)\); fast network-simplex solvers scale to tens of thousands of orders per cycle.

Myopic vs dynamic fulfilment

The formulation above is myopic — it optimises the current batch of orders. Acimović & Graves (2015) showed that myopic assignment can leave later-day orders stranded with no nearby inventory. They introduced a dynamic reformulation that uses a Lagrangian relaxation to price future-demand probability into the current assignment, achieving 1–5% additional savings. This is the frontier between myopic-assignment and assortment-aware / demand-forecasting fulfilment.

Interactive solver

12 orders × 4 nodes · greedy + 1-opt local search

Omnichannel assignment solver
DC + 2 stores + 1 dark store · minimise total cost
★★★ Greedy + swap
Total cost ($)
Shipping ($)
Labour ($)
SLA-miss penalty ($)
SLA misses
Lift vs nearest-DC rule
DC (large, slow, cheap) Store (local, faster) Dark store (fastest) Order (dot = destination)

Under the hood

The scenario generator places 4 fulfilment nodes (1 DC, 2 stores, 1 dark store) on a 100×100 grid and \(n\) random order destinations. Shipping cost is \(c_{im} = \alpha \cdot d_{im} + \beta_m\) (distance plus node-specific handling); labour cost differs by node (DC cheapest, dark store most expensive). Delivery time is \(\tau_{im} = \delta_m + \gamma d_{im}\) where \(\delta_m\) is node prep time. SLA is a per-order threshold (random 4–24 hours). The composite cost matrix is built, then a greedy assignment (each order picks its cheapest feasible node respecting inventory/labour), followed by 1-opt swaps (swap two orders’ assignments if it reduces total cost). Nearest-DC baseline assigns every order to whichever DC-type node is closest.

Reading the solution

Three patterns to watch for

  • DC carries the long tail. The DC is cheapest per unit but slowest. Orders with long SLA windows (standard shipping) go to the DC even if a closer store has stock — the labour-cost differential wins.
  • Stores catch the SLA-tight orders. Same-day and next-day orders are preferentially assigned to the nearest store even at higher labour cost, because the penalty \(\pi\) dominates.
  • Dark store is the fastest but first to saturate. With low inventory, the dark store rations itself to the urgent / high-value orders. When it stocks out, the solver gracefully degrades to stores.

Sensitivity questions

  • What if SLA penalty doubles? — more orders shift from DC to stores; labour cost goes up, total cost goes up but SLA misses drop.
  • What if a store stocks out? — order reassigns to DC or dark store; SLA misses rise for its zone.
  • What if we add a 5th fulfilment node (locker)? — the assignment re-optimises; cheap orders concentrate at the locker.

Model extensions

Dynamic fulfilment (look-ahead)

Acimović & Graves 2015 introduce future-demand shadow prices via Lagrangian relaxation — 1-5% extra savings over myopic.

BOPIS specialisation

Restrict fulfilment to stores where the customer will collect. Decision collapses to nearest-in-stock store.

BOPIS →
Ship-from-store specialisation

Decision when stores are enabled as fulfilment nodes but with inventory depletion trade-off.

Ship-from-store →
Multi-SKU multi-order

Orders with multiple SKUs; ship from one or split across nodes. Classic quadratic cost trade-off of split-shipment.

Returns-aware fulfilment

Some SKUs / zones have high return rates. Route returns-heavy orders away from high-return zones to save reverse logistics.

Returns management →
Batching + routing

Outside the solver's scope: once assignments are made, bundle orders into delivery routes — link to logistics.

Delivery routing →
Chance-constrained SLA

SLA as a probabilistic constraint: \(P(\tau_{im} \leq \tau^{\text{SLA}}) \geq 1 - \alpha\) rather than deterministic. Handles delivery-time uncertainty.

Network design feedback

Results here inform where to place future dark stores — frontier between operational fulfilment and strategic siting.

Store location →

Key references

Acimović, J. & Graves, S. C. (2015).
Making better fulfillment decisions on the fly in an online retail environment.
Manufacturing & Service Operations Management 17(1): 34–51. doi:10.1287/msom.2014.0505 (The dynamic look-ahead formulation.)
Gao, F. & Su, X. (2017).
Omnichannel retail operations with buy-online-and-pick-up-in-store.
Management Science 63(8): 2478–2492. doi:10.1287/mnsc.2016.2473
Bell, D. R., Gallino, S. & Moreno, A. (2018).
Offline showrooms in omnichannel retail: Demand and operational benefits.
Management Science 64(4): 1629–1651. doi:10.1287/mnsc.2016.2684
Cachon, G. P. & Feldman, P. (2017).
Is advance selling desirable with competition?
Marketing Science 36(2): 214–231.
Gallino, S. & Moreno, A. (2014).
Integration of online and offline channels in retail: The impact of sharing reliable inventory availability information.
Management Science 60(6): 1434–1451. doi:10.1287/mnsc.2014.1951
Hu, M., Li, X. & Shou, B. (2022).
Ship-from-store strategy in omnichannel retail.
Operations Research (recent review on SFS).
Kuhn, H. W. (1955).
The Hungarian method for the assignment problem.
Naval Research Logistics Quarterly 2(1-2): 83–97. (Classical assignment-problem solver.)
(EJOR 2022).
The revival of retail stores via omnichannel operations: A literature review and research framework.
European Journal of Operational Research. doi:10.1016/j.ejor.2021.12.001

Back to the retail domain

Omnichannel fulfilment sits in the Place × Operational cell — minutes-to-hours decisions that determine retail e-commerce economics.

Open Retail Landing
Educational solver · Euclidean distance as delivery-time proxy and myopic single-batch assignment · validate against your own cost-to-serve matrices before operating.