Shipment allocation from multiple plants or warehouses to multiple customers or distribution points — how much on each lane so total freight cost is minimum, capacities are not exceeded, demands are met. The founding problem of linear programming: Hitchcock (1941) and Koopmans (1947).
In plain words
Sound familiar?
- We ship weekly from 3-8 plants or regional warehouses to 20-100 customers; which plant ships to which customer is usually decided by habit or a 'nearest plant' rule.
- We run a dairy-collection cooperative; daily flow from 50-200 producer farms to 3-6 processing plants — which farm's milk goes to which plant is set by history.
- We operate a textile raw-material to contract-shop chain; we ship yarn and fabric from a central warehouse to 30-80 contract workshops — the cost matrix has not been refreshed in 5 years.
- When a new plant or warehouse is opened, or a new customer is added, we don't recompute flow shares — we keep going with the old allocation.
- Fuel prices or freight contracts changed but the per-plant per-customer flow volumes stayed the same.
- Total freight cost runs at 10-20% of annual budget; 'what would we save if we redrew the flows' has been unanswered for years.
- We are considering a plant-capacity expansion; the question 'what does 1 ton of extra capacity buy us in total freight' has no numerical answer.
Why it matters
How it's solved
Technical depth
How it's solved
Technical depthIn one sentence: Given the unit-cost matrix for plant-customer pairs, plant capacities and customer demand, a linear-programming solver computes how much (x_ij) to ship from each plant to each customer in seconds — total freight cost is minimised, no customer is short, no plant exceeds capacity.
This problem appears in Operations Research (the discipline that uses math and computers to solve business decisions) literature as the Transportation Problem or Hitchcock Problem, one of the founding examples of linear programming. The solution runs in three stages:
1. Modeling. Input data: sources (m plants or warehouses — each with a weekly capacity s_i, in tons or pallets), destinations (n customers or distribution points — each with weekly demand d_j), cost matrix (c_ij — per-unit transport cost from plant i to customer j, TRY per ton or pallet). Decision variable x_ij — quantity shipped from plant i to customer j. Constraints: each plant’s total shipment ≤ capacity (sum over j of x_ij ≤ s_i), each customer’s intake ≥ demand (sum over i of x_ij ≥ d_j), all x_ij ≥ 0 (no negative shipments). Objective: minimise total freight cost (min sum_{ij} c_ij × x_ij). Balanced problem: total supply equals total demand; unbalanced problem: supply > demand (idle capacity) or supply < demand (under-production), resolved by adding a dummy source or destination.
2. Solver-driven decision. Because it is a pure LP (Linear Programming — minimise a linear objective under linear constraints), modern LP solvers handle thousands of source-destination pairs in seconds. Classical methods: Simplex method (developed in the early 1950s for this problem — the canonical LP algorithm that finds the optimum by walking corner-to-corner); Network Simplex (the bipartite-graph structure makes it 5-10x faster); Northwest Corner rule for an initial basic feasible solution combined with MODI (Modified Distribution) / Stepping-Stone for improvement (a teaching-table manual method); Vogel’s Approximation Method (VAM) for a smarter starting point. In practice: mid-scale (5-50 sources × 50-500 destinations) is instant on open-source LP solvers, large scale (hundreds-thousands) takes minutes with network simplex or interior-point methods. The Assignment Problem is a special case of the transportation problem — equal source and destination counts, each source to exactly one destination (capacity = demand = 1, x_ij in {0,1}); the Hungarian method is the classical solver for this special case.
3. Field integration. Output as two tables: the primal flow matrix (weekly shipment quantity for each plant-customer pair — the operating team’s main schedule), and the dual variables (shadow prices for each source and destination). Dual values are a direct investment-decision input: ‘if plant i’s capacity rises by 1 ton, by how much does total freight cost drop’ is read directly off the dual. Field practice: weekly or monthly re-solve; fuel-price changes, new customer/plant addition, capacity-maintenance windows are triggers. Quarterly planning committee: realised flows versus plan, marginal capacity analysis, cost-matrix refresh.
Alternatives
Manual plus spreadsheet (legacy flows)
FreeZero license
Who it fits: Small scale (≤3 plants, ≤20 customers), stable demand
- + Zero software cost
- + Fits the operations team's habit
- + Immediate change (phone-call redirection)
- − Flows are not optimal — typically 10-20% over-freight
- − Without a refreshed cost matrix, fuel shocks do not flow into allocation
- − Marginal capacity (for investment) cannot be analyzed
- − When a new plant or customer is added, no redrawing happens
Spreadsheet with a built-in LP add-in
FreeZero to low license (within an office suite)
Who it fits: Mid-scale (3-8 plants, 20-100 customers), monthly periodic decision
- + Interface the operations team can use
- + Adequate scale for the classical transportation problem
- + Low training surface
- − Slow or unsolvable on large matrices (200+ destinations)
- − Weak dual-variable visualisation — no shadow-price report
- − No stochastic-demand module
- − Version and revision control is weak
Local supply chain planning software
Enterprise200K-1M TRY licence + 60K-300K TRY/year maintenance (regional SMB pricing)
Who it fits: Mid-large operator (5-15 plants, 100-500 customers)
- + Local-language interface and support
- + ERP integration easy
- + Local freight-contract templates
- − LP solver is usually bundled — performance must be tested
- − Dual-analysis report limited
- − Academic extensions (multi-period, stochastic) limited
International supply chain planning platform
Enterprise500K-3M EUR licence + 150K-700K EUR/year maintenance
Who it fits: Large operator (15+ plants, 500+ customers, multi-country)
- + Mature LP/MIP solver, scalable
- + Rich dual analysis, shadow price, scenario comparison
- + Multi-period and stochastic extensions available
- − High licence and long (12-24 months) rollout
- − Local-regulation customisation adds project length
- − Operations training is a broad programme
Custom build on an open-source LP solver
Open SourceLicence free; 8-16 weeks internal development, or 400K-1.2M TRY consulting
Who it fits: Operator with a tech team, wanting an ERP plug-in
- + No licence cost
- + Classical transportation problem is well-defined in open-source literature
- + Multi-period, stochastic, network-flow extensions are open-source
- − Requires internal OR expertise + data team
- − Operations-team interface must be built
- − Maintenance responsibility on the operator
Recommendation
Ask in the meeting
- Which solver powers the transportation problem — pure simplex, network simplex, interior point? What is typical solve time on 100 sources × 500 destinations?
- Is automatic balancing (dummy source/destination) for unbalanced problems (total capacity not equal to total demand) supported? Is the idle-capacity report produced?
- Are dual variables (shadow prices) presented as a separate output table? Can the 'what if plant i's capacity rises by 1 ton' scenario be auto-generated?
- When the cost matrix is updated (fuel change, new freight contract), is the re-solve trigger automatic or manual?
- Is multi-period planning (weekly or monthly horizon) supported? Is inter-period inventory carryover modeled?
- Is there a dedicated module for the assignment-problem special case (equal source-destination count, binary decision)? Is the Hungarian method supported?
- How would the pilot produce, over 8-12 weeks of real data, a savings report against prior manual flow?
- If we end the contract, in which standard format can we export source-destination definitions, cost-matrix history, and solution archive?
Technical details
Editor’s note
This problem is called on the operations floor “flow plan”, “shipment allocation”, or “the plant-customer matrix”. The academic name is the Transportation Problem, also written in some sources as Hitchcock Problem or Hitchcock-Koopmans Problem. Frank Hitchcock defined the problem in numerical form in his 1941 MIT paper; Tjalling Koopmans wrote an independent economic formulation in 1947 (this work is cited in his 1975 Nobel Prize in Economics); George Dantzig developed the Simplex method specifically through this problem in 1951. It is the founding problem of linear programming and the ancestor of the next generation — TSP, VRP, vehicle routing — that built on it.
Distinction from VRP (#002, #069) is critical: VRP is vehicle routing — a depot-customer-customer-depot tour, in what sequence each vehicle visits which customers. The transportation problem is flow allocation: how many units each plant ships to each customer; there is no route, only quantity. The two are complementary — the transportation problem first decides weekly flow, then VRP decides daily routing. They run in sequence in the same chain. Distinction from facility location (#010): facility location is the open-new-plant/warehouse decision (with fixed opening cost); the transportation problem is flow allocation across existing facilities (no opening cost). Distinction from p-median (#074): p-median selects a fixed number of facilities, while the transportation problem takes existing facilities as given.
The point most often overlooked in this segment: dual variables and shadow prices. The primal flows (how many tons each plant ships to each customer) are what the practitioner reads off the output; the dual variables assign a shadow price to each source and destination — “if plant i’s capacity rises by 1 ton, by how much does total freight cost fall”, “if customer j’s demand rises by 1 ton, by how much does total cost rise” are answered exactly. This is direct input for investment decisions: which plant benefits most from capacity expansion, which customer has marginal freight cost higher than others. The practitioner typically uses only primal flows and does not read duals — a critical loss for capacity-investment prioritisation. The second overlooked point: the unbalanced problem. In reality, total capacity rarely equals total demand exactly (excess capacity or under-production). The solver adds a dummy source or destination — that dummy row or column is the idle-capacity report; if missed, what the idle capacity corresponds to is not understood.
A step-by-step path for an SMB
Stage 1 — Measure first, plan later. At least 6-12 months of data: monthly shipment quantity per plant-customer pair, per-unit freight cost (distance + vehicle type + contract), plant weekly capacity, customer weekly demand. Build the cost matrix as a separate table — rows are plants, columns are customers, cells are TRY/ton (or TRY/pallet). Critical: has the fuel price changed in the past 12 months — has the cost matrix been refreshed? If not, even the first LP run will show 5-10% savings.
Stage 2 — Extract the knowledge capital. List which plants are physically-impossible for which customers (distance, product fit, contract restriction) — these constraints enter the model as ‘forbidden cells’ (large cost). Plant capacity: real sustained capacity or with maintenance windows? Customer demand: stable or seasonal?
Stage 3 — Pilot. 8-12 weeks. Build the LP model for a sub-region (e.g. one product line or one regional customer set), run the solver, and compare the result to the current manual allocation in parallel. The decision stays with the planner; the LP makes a suggestion. The success criterion is set in writing, before the pilot: total freight cost down at least 10%, idle-capacity or unmet-demand report clear. Do not hesitate to ask for the dual-variable table as a separate output — this table is gold for capacity investment.
Stage 4 — Rollout. Over 6-12 months, expand to all product lines and regions. Move to a monthly re-solve cadence — fuel change, new customer, capacity maintenance as triggers. Quarterly planning committee: realised flows vs plan, dual-variable report (shadow price), cost-matrix refresh date.
Risks — what can go wrong
- Plant capacity shifts in real time. A static LP model takes weekly or monthly capacity as fixed; maintenance, shift loss, or raw-material outages move it daily. Fix: shorter (weekly) re-solve cadence plus a safety margin trimmed off above-average capacity.
- Cost matrix is not refreshed. Fuel went up 20% but the matrix is on 2-year-old numbers — the LP optimises an obsolete matrix and loses money in reality. Fix: refresh the cost matrix every 3 months (fuel + freight contract + vehicle cost).
- Customer special requests not modeled. Some customers have a delivery time window, a package-size restriction, or a product-mix rule — pure transportation problem does not carry these; they must be passed to a VRP or planning layer. A flow technically correct on the LP may be operationally infeasible.
- Single-supplier dependence (WMS/TMS lock-in). If the software keeps source-destination definitions, cost matrix, and solution history in a proprietary format, leaving means losing the operator’s flow memory. The contract must include “flow-matrix history and cost-matrix annual export in a standard format” as a clause.
A technical view of the solution method
| Approach | Typical scale | Solve time | Guarantees optimum? |
|---|---|---|---|
| Northwest Corner rule | Manual initial solution, any scale | minutes (manual) | No — initial solution only |
| Vogel’s Approximation Method (VAM) | Smarter initial solution | minutes-seconds | No — near-optimal start |
| MODI / Stepping-Stone (manual) | Small (≤10 × ≤10) | hours | Yes (if applied correctly) |
| Simplex (general) | Medium (≤500 × ≤500) | seconds | Yes |
| Network Simplex | Large (thousands of sources/destinations) | seconds-minutes | Yes |
| Interior-point method | Very large | minutes | Yes (within numerical tolerance) |
| Hungarian method (assignment special case) | Square matrix (sources = destinations) | fast | Yes (special case) |
Objective function choice:
- Objective 1 — Total freight cost minimum: Classical. Typical for FMCG, raw-material-to-contract-shop chains.
- Objective 2 — Total distance or fuel minimum: For carbon-footprint or fuel-heavy operations.
- Objective 3 — Service time (delivery time) weighted minimum: For fast-distribution segments (food, cold chain).
- Objective 4 — Blend (weighted): freight + service + penalty: For a customer base with contractual late-delivery penalties.
The Assignment Problem is a special case of the transportation problem: source count equals destination count, each source to exactly one destination (capacity = demand = 1, x_ij binary decision). Staff-task assignment, machine-task assignment, vessel-berth assignment (a sub-layer of BAP in #026), node-matching problems fall in this shape. The Hungarian method (Kuhn 1955) solves the assignment problem in O(n³) — far faster than the more general simplex on the same data, but only for the assignment special case.
Multi-period extension: x_ijt — quantity shipped from plant i to customer j in period t; each period has its own capacity and demand, with inter-period inventory carrying cost added. This grows into the multi-period production-distribution planning problem — keeps the transportation problem at its core but adds lot-sizing and inventory layers.
Stochastic extension: d_j is a random variable; the solution gives an allocation that does not exceed capacity in any scenario and minimises expected cost — stochastic LP or scenario-based MIP.
Academic references
Listed in the sources block of this page’s frontmatter. Hitchcock (1941) and Koopmans (1947) are the two founding papers; Dantzig (1951) developed the Simplex method specifically through this problem. Bazaraa-Jarvis-Sherali (2010) and Murty (1992) are modern textbook references. INFORMS and the European Journal of Operational Research archives carry many deployment cases in supply chains and production-distribution networks.
Sources
- Hitchcock, F. L. (1941). The distribution of a product from several sources to numerous localities. Journal of Mathematics and Physics, 20(1-4), 224-230. The founding paper of the problem.
- Koopmans, T. C. (1947). Optimum utilization of the transportation system. Econometrica, 17 (Supplement: Proceedings of the International Statistical Conferences). Among the citations of the 1975 Nobel Prize in Economics.
- Dantzig, G. B. (1951). Application of the Simplex Method to a transportation problem. In Activity Analysis of Production and Allocation, Wiley. The Simplex method applied to the transportation problem.
- Bazaraa, M. S., Jarvis, J. J. and Sherali, H. D. (2010). Linear Programming and Network Flows (4th ed.). Wiley. The standard textbook on linear programming and network flow.
- Murty, K. G. (1992). Network Programming. Prentice Hall. Classic reference on network programming and special-structure solutions of the transportation problem.
- INFORMS Interfaces — case studies of LP and supply-chain deployments in production-distribution networks. informs.org/Publications/Interfaces
Glossary
- Transportation Problem
- Shipment allocation from m fixed-capacity sources to n fixed-demand destinations, minimising total per-unit transport cost — the founding linear programming problem.
- Northwest Corner Rule
- The simplest classical heuristic for generating an initial basic feasible solution of the transportation problem: starting at the top-left of the cost matrix, allocate as much as possible to the current cell and shift right or down until supply and demand are exhausted.
- MIP
- An optimization model where some decision variables are forced to be whole numbers (e.g. number of trucks, number of shifts).
Related problems
From One Node to Another — How Do I Compute the Shortest Path on a Weighted Graph?
For SMBs that need to compute the fastest or shortest route between two points: 10-50-vehicle field-service teams (plumbing, electrical, appliance repair), urban courier/parcel operations, or dispatch centres coordinating emergency response. Every day brings hundreds of 'how do I get from A to B fastest right now' questions; the answer shifts with traffic, road closures and vehicle type. A wrong route costs the technician one or two jobs missed for the day, the courier a late delivery, and the firm a customer. Manual or by-eye routing typically leaves 20-60 wasted minutes per vehicle per day on the table compared with a network-aware route calculation.
One Vehicle, Many Stops — In What Order Should I Visit Them All to Minimize Total Distance?
You run a field technician visiting 8-15 customers a day (HVAC, lift servicing, white-goods repair), a single-vehicle supplier tour by a sales rep, or a PCB drilling machine sequencing 500-5,000 holes. All of them face the same core call: given N points, in what order should a single vehicle or head visit each one and return to the start. Get the order wrong and a field service vehicle burns 80-200 TRY/day extra in fuel and driver hours, a PCB line takes 15-30% longer per part, and the last customer of the day misses their delivery window. At 50 stops, a hand-built sequence runs 20-40% above the true minimum; as the number of stops grows, the gap from intuitive ordering compounds.