
10 Transportation and Service Network Design
Modes, Flows, and Facility Location
transportation modes, freight consolidation, multi-commodity flow, network design, facility location, fixed-charge network design, containerization, intermodal transport
“A chain is only as strong as its weakest link.”—Thomas Reid
Transportation is the backbone of logistics, connecting suppliers, facilities, and customers across global supply chains. Choosing the right transportation mode—road, rail, air, water, pipeline, or intermodal—requires balancing key performance indicators such as cost, transit time, and reliability.
This module covers the design of transportation networks, starting from freight consolidation and containerization, and building up to mathematical formulations for routing multiple commodities through a network. We formulate the minimum multi-commodity cost-flow problem (MMCFP) and extend it to service network design with fixed-charge and capacity constraints, addressing strategic decisions such as which facilities to open and how to allocate flows.
After this module, you should be able to:
- Enumerate, describe, and compare transportation modes (road, rail, air, water, pipeline, intermodal) and their trade-offs.
- Identify key transportation KPIs such as cost, transit time, and reliability.
- Explain the role of packaging and containerization in freight logistics.
- Formulate and solve the minimum multi-commodity cost-flow problem (MMCFP).
- Develop a network design mathematical model for a given logistics scenario, including fixed-charge and capacity constraints.
10.1 Exercises
Exercise 10.1 (Minimizing the Distribution Costs of an Automotive Company) Metal Motors has two plants, two warehouses, and three customers. The locations of these are as follows:
- Plants: Detroit and Atlanta
- Warehouses: Denver and Cincinnati
- Customers: Los Angeles, Chicago, and Philadelphia
Cars are produced at plants, then shipped to warehouses, and finally shipped to customers. Detroit and Atlanta can produce 110 and 100 cars per week, respectively. Los Angeles requires 80 cars per week, Chicago, 70, and Philadelphia, 60. The weekly capacity of the warehouses is 370. It costs $10,000 to produce a car at each plant and the costs of shipping cars between cities are given by Table 10.1 and Table 10.2.
| From/To | Denver (DEN) | Cincinnati (CIN) |
|---|---|---|
| Detroit (DET) | $1253 | $637 |
| Atlanta (ATL) | $1398 | $841 |
| From/To | Los Angeles (LA) | Chicago (CHI) | Philadelphia (PHI) |
|---|---|---|---|
| Denver (DEN) | $1059 | $996 | $1691 |
| Cincinnati (DEN) | $2786 | $802 | $700 |
Figure 10.1 shows the transportation network.
Formulate this scenario as an optimization model with the primary objective of minimizing distribution costs.
Answer
Set parameter Username
Set parameter LicenseID to value 2777413
Academic license - for non-commercial use only - expires 2027-02-10
This is a network problem with decision variables \(x_{ij}\), where \((i, j)\) denotes an arc in the network that represents the quantity of goods shipped from node \(i\) to node \(j\).
The objective is to minimize the total distribution cost, which is modeled as follows:
\[ \begin{align} \min \, \, & 10000(x_{DET,DEN} + x_{DET,CIN} + x_{ATL,DEN} + x_{ATL,CIN}) \\ &+ 1253x_{DET,DEN} + 637x_{DET,CIN} \\ &+ 1398x_{ATL,DEN} + 841x_{ATL,CIN} \\ &+ 1059x_{DEN,LA} + 996x_{DEN,CHI} + 1691x_{DEN,PHI} \\ &+ 2786x_{CIN,LA} + 802x_{CIN,CHI} + 700x_{CIN,PHI} \\ \end{align} \]
subject to the following constraints:
Plant capacity constraints ensure that the number of goods shipped from Detroit and Atlanta does not exceed their production capacities.
\[ \begin{align} x_{DET,DEN} + x_{DET,CIN} \leq 110 \\ x_{ATL,DEN} + x_{ATL,CIN} \leq 100 \end{align} \]
Conservation of flow constraints require that the number of goods shipped out of Denver and Cincinnati equals the number of goods received by the plants, ensuring that all goods are accounted for and there’s no accumulation at the warehouses.
\[ \begin{align} x_{DET,DEN} + x_{ATL,DEN} = x_{DEN,LA} + x_{DEN,CHI} + x_{DEN,PHI} \\ x_{DET,CIN} + x_{ATL,CIN} = x_{CIN,LA} + x_{CIN,CHI} + x_{CIN,PHI} \end{align} \]
Demand constraints guarantee that the goods shipped to Los Angeles, Chicago, and Philadelphia meet the minimum weekly requirements.
\[ \begin{align} x_{DEN,LA} + x_{CIN,LA} \geq 80 \\ x_{DEN,CHI} + x_{CIN,CHI} \geq 70 \\ x_{DEN,PHI} + x_{CIN,PHI} \geq 60 \\ \end{align} \]
The weekly capacity of the warehouses is not exceeded.
\[ \begin{align*} & x_{DET,DEN} + x_{ATL,DEN} + x_{SA,DEN} \leq 370 \\ & x_{DET,CIN} + x_{ATL,CIN} + x_{SA,CIN} \leq 370 \end{align*} \]
Non-negativity constraints ensure that the decision variables cannot take on negative values.
\[ \forall (i,j),\ x_{ij} \geq 0 \]

Exercise 10.2 (Automotive Company Capacitated Facility Location Problem) Metal Motors is an automotive company that must optimize its distribution system to minimize costs. The company’s operations include production at plants, storage at warehouses, and delivery to customers. The current infrastructure comprises:
- Plants: Detroit (DET), Atlanta (ATL), and a newly opened plant in San Antonio (SA)
- Warehouses: Denver (DEN), Cincinnati (CIN), and a new warehouse in New Orleans (NO)
- Customers: Located in Los Angeles (LA), Chicago (CHI), and Philadelphia (PHI)
The production capacity per week is as follows:
- Detroit (DET): 150 cars
- Atlanta (ATL): 100 cars
- San Antonio (SA): 120 cars
The customer demand per week is as follows:
- Los Angeles (LA): 80 cars
- Chicago (CHI): 70 cars
- Philadelphia (PHI): 60 cars
Each warehouse can store at most 370 cars per week.
The production cost for each car at any plant is $10,000. Table 10.3 shows the shipping costs from cars from plants to warehouses, and Table 10.4 shows the shipping costs from warehouses to customers.
| From/To | Denver (DEN) | Cincinnati (CIN) | New Orleans (NO) |
|---|---|---|---|
| Detroit (DET) | $1253 | $637 | $1128 |
| Atlanta (ATL) | $1398 | $841 | $702 |
| San Antonio (SA) | $942 | $1154 | $691 |
| From/To | Los Angeles (LA) | Chicago (CHI) | Philadelphia (PHI) |
|---|---|---|---|
| Denver (DEN) | $1059 | $996 | $1691 |
| Cincinnati (DEN) | $2786 | $802 | $700 |
| New Orleans (NO) | $1983 | $1272 | $1751 |
Setup costs for each facility are as follows:
| Detroit (DET) | Atlanta (ATL) | San Antonio (SA) | Denver (DEN) | Cincinnati (CIN) | New Orleans (NO) | |
|---|---|---|---|---|---|---|
| Setup cost | $20,000 | $18,000 | $10,000 | $5,000 | $6,000 | $50,000 |
Management is faced with strategic decisions regarding which plants and warehouses to operate to satisfy customer demand at the lowest possible cost. These decisions include:
- Determining the number of cars to produce and ship from each plant to each warehouse.
- Deciding the number of cars to distribute from each warehouse to each customer.
- Selecting which plants and warehouses should be operational, considering the setup costs.
Formulate an optimization model that minimizes the total cost of production, shipping, and facility setup while meeting or exceeding customer demand and not exceeding plant production capacities and warehouse capacities.

Answer
Automotive Company Capacitated Facility Location Problem (Solution). First, add a new variable related to opening a new depot:
\[ y_i = \begin{cases} 1, & \text{if plant/warehouse i is open,} \\ 0, & \text{otherwise,} \end{cases} \]
The model aims to minimize the total cost, which includes production, shipping, and setup costs for plants and warehouses. The objective function is:
\[ \begin{align*} \min \quad & 10000(x_{DET,DEN} + x_{DET,CIN} + x_{DET,NO} + x_{ATL,DEN} + x_{ATL,CIN}) \\ & + 10000(x_{ATL,NO} + x_{SA,DEN} + x_{SA,CIN} + x_{SA,NO}) \\ & + 1253x_{DET,DEN} + 637x_{DET,CIN} + \ldots + 1983x_{NO,LA} \\ & + 1272x_{NO,CHI} + 1751x_{NO,PHI} \\ & + 20000y_{DET} + 18000y_{ATL} + 10000y_{SA} \\ & + 5000y_{DEN} + 6000y_{CIN} + 5000y_{NO} \end{align*} \]
subject to the following constraints:
The production capacity constraints ensure that the quantity of cars shipped from each plant does not exceed its capacity, which is a function of whether the plant is open or not.
\[ \begin{align*} & x_{DET,DEN} + x_{DET,CIN} + x_{DET,NO} \leq 150y_{DET} \\ & x_{ATL,DEN} + x_{ATL,CIN} + x_{ATL,NO} \leq 100y_{ATL} \\ & x_{SA,DEN} + x_{SA,CIN} + x_{SA,NO} \leq 120y_{SA} \end{align*} \]
The flow conservation constraints require that the cars shipped from the plants to the warehouses match the cars shipped from warehouses to the customers, ensuring a balanced flow.
\[ \begin{align*} & x_{DET,DEN} + x_{ATL,DEN} + x_{SA,DEN} = x_{DEN,LA} + x_{DEN,CHI} + x_{DEN,PHI} \\ & x_{DET,CIN} + x_{ATL,CIN} + x_{SA,CIN} = x_{CIN,LA} + x_{CIN,CHI} + x_{CIN,PHI} \\ & x_{DET,NO} + x_{ATL,NO} + x_{SA,NO} = x_{NO,LA} + x_{NO,CHI} + x_{NO,PHI} \end{align*} \]
Each customer’s demand is met or exceeded.
\[ \begin{align*} & x_{DEN,LA} + x_{CIN,LA} + x_{NO,LA} \geq 80 \\ & x_{DEN,CHI} + x_{CIN,CHI} + x_{NO,CHI} \geq 70 \\ & x_{DEN,PHI} + x_{CIN,PHI} + x_{NO,PHI} \geq 60 \end{align*} \]
The weekly capacity of the warehouses is not exceeded.
\[ \begin{align*} & x_{DET,DEN} + x_{ATL,DEN} + x_{SA,DEN} \leq 370y_{DEN} \\ & x_{DET,NO} + x_{ATL,NO} + x_{SA,NO} \leq 370y_{NO} \\ & x_{DET,CIN} + x_{ATL,CIN} + x_{SA,CIN} \leq 370y_{CIN} \end{align*} \]
Non-negativity constraints ensure the shipped quantities cannot be negative.
\[ x_{ij} \geq 0 \]
The binary constraints indicate whether a plant or warehouse is open (1) or closed (0).
\[ y_{i} \in \{0,1\} \]
Figure 10.4 shows the connection between the different locations and the flow between the opened facilities.

Exercise 10.4 (Multi-Objective Transportation Network Design Problem) Given the network depicted in Figure 10.7 where each arc is labeled with values \(c_{ij}, t_{ij}, u_{ij}\), representing the cost per unit \(c_{ij}\) and the travel time \(t_{ij}\) for transportation between nodes \(i\) and \(j\) with capacity \(u_{ij}\), the goal is to formulate an optimization problem. Node 1 acts as the supplier providing 20 units of a commodity, and node 6 is the demand point requiring 18 units. It is required to route these units through the network while minimizing the total cost and time, subject to the following conditions:
- All arcs have a capacity restriction of 10 units.
- The supply at node 1 is 20 units.
- The demand at node 6 is 18 units.
- The network aims to minimize the total cost and time.

Answer
This is a transportation network design problem similar to those encountered in previous exercises. However, in this case, we observe that costs and time are measured in different units, and no direct transformation between the two is provided. Therefore, a multi-objective optimization approach is necessary. Available methods include the epsilon-constraint method, goal programming, lexicographic, and weighted sum method. Since no specific goals are stated, goal programming is not applicable. Similarly, without weights for the objectives (cost and time), the weighted sum method is also less suitable. This leaves us with the epsilon-constraint and lexicographic methods as the most viable options.
In the absence of priorities between objectives, we could first minimize the cost and then the time, or vice versa. Using the epsilon-constraint method, we would introduce a new constraint where the sum of all arcs is constrained by a specified epsilon. Epsilon could be heuristically determined by considering that at least two paths must be utilized from node 1 to node 6, due to the capacity restriction on the arcs.
With the lexicographic method, we prioritize one objective over the other. The first objective (either cost or time) is minimized, and its optimal value is then used as a constraint when minimizing the second objective. This process ensures that the solution optimizes the primary objective without compromising the optimal value already obtained.
Considering minimizing cost has higher priority than time, we have the following formulation:
Sets and Indices:
- \(N\): Set of nodes in the network, where \(N = \{1, 2, 3, 4, 5, 6\}\).
- \(A\): Set of arcs representing potential pathways in the network.
Parameters:
- \(c_{ij}\): Cost per unit for transporting commodities through arc \((i, j)\).
- \(t_{ij}\): Travel time per unit for arc \((i, j)\).
- \(u_{ij}\): Capacity of arc \((i, j)\), where \(u_{ij} = 10\) for all arcs.
- \(s\): Supply at the supplier node (node 1), where \(s = 20\) units.
- \(d\): Demand at the demand node (node 6), where \(d = 18\) units.
Decision Variables:
- \(x_{ij}\): Number of units transported through arc \((i, j)\).
Constraints:
Supply constraint at node 1: \[ \sum_{j:(1,j) \in A} x_{1j} = s \]
Demand constraint at node 6: \[ \sum_{i:(i,6) \in A} x_{i6} = d \]
Capacity constraints on each arc: \[ x_{ij} \leq u_{ij} \quad \forall (i, j) \in A \]
Flow conservation constraints at transshipment nodes: \[ \sum_{j:(i,j) \in A} x_{ij} - \sum_{j:(j,i) \in A} x_{ji} = 0 \quad \forall i \in N \setminus \{1, 6\} \]
Non-negativity and integrality of flow variables: \[ x_{ij} \geq 0 \quad \forall (i, j) \in A \]
\[ x_{ij} \in \mathbb{Z}^{+} \quad \forall (i, j) \in A \]
Lexicographic optimization approach. Since we consider minimizing cost and time, we have to solve a sequence of optimization problems. We prioritize one objective first and, once solved, use its solution as a constraint when optimizing the second objective.
First Stage: Minimize Costs
Objective Function: \[ \min Z_1 = \sum_{(i,j) \in A} c_{ij} x_{ij} \]
Subject to the same constraints as in the previous formulation.
Second Stage: Minimize Time with Cost Constraint
Objective Function: \[ \min Z_2 = \sum_{(i,j) \in A} t_{ij} x_{ij} \]
Subject to the constraints previously formulated plus an additional constraint that the cost does not exceed the optimal cost found in the first stage:
\[ \sum_{(i,j) \in A} c_{ij} x_{ij} \leq Z_1^* \]
Here \(Z_1^*\) represents the optimal total cost found in the first stage. The second stage optimization is only performed on feasible solutions that achieve this cost.
Exercise 10.5 (LTL Freight Rates and Weight Brackets) LTL tariffs create a piecewise-linear freight cost curve. The key idea is that a higher weight bracket can sometimes produce a lower total freight charge, so it may be worth adding a small amount of freight to reach the next bracket.
The carrier tariff is published in pounds and CWT, so the original carrier units are retained here. One CWT equals 100 lb.
| Min Weight (lb) | Max Weight (lb) | Rate ($/CWT) | Rate ($/lb) | |
|---|---|---|---|---|
| 1 | 1 | 499 | 107.75 | 1.0775 |
| 2 | 500 | 999 | 92.26 | 0.9226 |
| 3 | 1000 | 1999 | 71.14 | 0.7114 |
| 4 | 2000 | 4999 | 64.14 | 0.6414 |
| 5 | 5000 | 9999 | 52.21 | 0.5221 |
| 6 | 10000 | 19999 | 40.11 | 0.4011 |
| 7 | 20000 | 29999 | 27.48 | 0.2748 |
Using Table 10.6, do the following:
- Identify the nominal weight breakpoints and freight rates.
- Determine the upgrade thresholds: the shipment weights at which it becomes cheaper to add more freight and qualify for the next bracket.
- Suppose there are \(N\) candidate products. Product \(i\) has weight \(w_i\), and at least \(W^{\text{req}}\) pounds must be shipped. Use a lambda formulation of the freight cost function to decide which products to include so that total freight cost is minimized.
- Solve the illustrative instance with product weights \([100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]\) lb and \(W^{\text{req}} = 4300\) lb using Gurobi.
Answer
The nominal breakpoints are the lower limits of the carrier table: \(1\), \(500\), \(1000\), \(2000\), \(5000\), \(10000\), and \(20000\) lb.
The corresponding nominal freight rates are: \(107.75\), \(92.26\), \(71.14\), \(64.14\), \(52.21\), \(40.11\), and \(27.48\) dollars per CWT.
Upgrade Thresholds
Let \(L_k\) be the minimum weight of bracket \(k\) and let \(r_k\) be its rate in dollars per pound. If a shipment currently sits in bracket \(k\), it becomes attractive to move to bracket \(k + 1\) when the current freight charge equals the minimum charge of the next bracket:
\[ r_k x = r_{k + 1} L_{k + 1}. \]
Therefore, the upgrade threshold between brackets \(k\) and \(k + 1\) is
\[ \bar{x}_k = \left\lceil \frac{r_{k + 1} L_{k + 1}}{r_k} \right\rceil. \]
| Current Bracket | Upgrade Threshold (lb) | Ship at Least (lb) | New Total Charge ($) | |
|---|---|---|---|---|
| 1 | 1--499 lb | 429 | 500 | 461.3 |
| 2 | 500--999 lb | 772 | 1000 | 711.4 |
| 3 | 1000--1999 lb | 1804 | 2000 | 1282.8 |
| 4 | 2000--4999 lb | 4071 | 5000 | 2610.5 |
| 5 | 5000--9999 lb | 7683 | 10000 | 4011.0 |
| 6 | 10000--19999 lb | 13703 | 20000 | 5496.0 |
Table 10.7 gives the practical trigger points:
- From \(429\) to \(499\) lb, it is cheaper to move to \(500\) lb.
- From \(772\) to \(999\) lb, it is cheaper to move to \(1000\) lb.
- From \(1804\) to \(1999\) lb, it is cheaper to move to \(2000\) lb.
- From \(4071\) to \(4999\) lb, it is cheaper to move to \(5000\) lb.
- From \(7683\) to \(9999\) lb, it is cheaper to move to \(10000\) lb.
- From \(13703\) to \(19999\) lb, it is cheaper to move to \(20000\) lb.
| Min Weight (lb) | Max Weight (lb) | Rate ($/CWT) | Rate ($/lb) | Lower Cost ($) | Upper Cost ($) | |
|---|---|---|---|---|---|---|
| 1 | 1 | 499 | 107.75 | 1.0775 | 1.0775 | 537.6725 |
| 2 | 500 | 999 | 92.26 | 0.9226 | 461.3000 | 921.6774 |
| 3 | 1000 | 1999 | 71.14 | 0.7114 | 711.4000 | 1422.0886 |
| 4 | 2000 | 4999 | 64.14 | 0.6414 | 1282.8000 | 3206.3586 |
| 5 | 5000 | 9999 | 52.21 | 0.5221 | 2610.5000 | 5220.4779 |
| 6 | 10000 | 19999 | 40.11 | 0.4011 | 4011.0000 | 8021.5989 |
| 7 | 20000 | 29999 | 27.48 | 0.2748 | 5496.0000 | 8243.7252 |
The rounded upgrade thresholds explain the freight discount logic, but the optimization model itself should use the nominal tariff segments. That is because the selected shipment weight is a decision variable, not a fixed input.
Lambda Formulation
Let \(I = \{1, \ldots, N\}\) be the set of candidate products and let \(K\) be the set of weight brackets.
Parameters:
- \(w_i\): weight of product \(i\).
- \(L_k\): lower bound of bracket \(k\).
- \(U_k\): upper bound of bracket \(k\).
- \(r_k\): freight rate of bracket \(k\) in dollars per pound.
- \(C_k^{L} = r_k L_k\): freight cost at the lower endpoint of bracket \(k\).
- \(C_k^{U} = r_k U_k\): freight cost at the upper endpoint of bracket \(k\).
- \(W^{\text{req}}\): minimum total weight that must be shipped.
Decision variables:
- \(y_i \in \{0, 1\}\): equals \(1\) if product \(i\) is shipped.
- \(z_k \in \{0, 1\}\): equals \(1\) if bracket \(k\) is selected.
- \(\lambda_{k,1} \ge 0\): lambda weight on the lower endpoint of bracket \(k\).
- \(\lambda_{k,2} \ge 0\): lambda weight on the upper endpoint of bracket \(k\).
- \(x \ge 0\): total shipped weight.
- \(TC \ge 0\): total freight cost.
Objective:
\[ \min TC \]
Subject to:
\[ x = \sum_{i \in I} w_i y_i \]
\[ x \ge W^{\text{req}} \]
\[ \sum_{k \in K} z_k = 1 \]
\[ \sum_{k \in K} (L_k \lambda_{k,1} + U_k \lambda_{k,2}) = x \]
\[ \sum_{k \in K} (C_k^{L} \lambda_{k,1} + C_k^{U} \lambda_{k,2}) = TC \]
\[ \lambda_{k,1} + \lambda_{k,2} = z_k \quad \forall k \in K \]
\[ y_i \in \{0, 1\} \quad \forall i \in I \]
\[ z_k \in \{0, 1\} \quad \forall k \in K \]
\[ \lambda_{k,1}, \lambda_{k,2} \ge 0 \quad \forall k \in K \]
This formulation uses two lambda variables for each bracket. If bracket \(k\) is active, then \(z_k = 1\) and the pair \((\lambda_{k,1}, \lambda_{k,2})\) interpolates between the lower and upper endpoints of that bracket. All lambda variables in inactive brackets are forced to zero.
The number of products shipped is
\[ \sum_{i \in I} y_i. \]
If all products must be shipped, replace the selection decision with \(y_i = 1\) for all \(i \in I\).
Optimal Gurobi Solution
| Metric | Value | |
|---|---|---|
| 0 | Required Weight (lb) | 4300 |
| 1 | Optimal Weight (lb) | 5000.0 |
| 2 | Freight Cost ($) | 2610.5 |
| 3 | Active Bracket | 5 |
| 4 | Products Shipped | 8 |
| 5 | Selected Weights (lb) | 200, 300, 500, 600, 700, 800, 900, 1000 |
For this illustrative instance, Gurobi chooses an optimal shipment of 5,000 lb in bracket 5, with total freight cost $2,610.50.

