p14 | Blood Bank Netherlands¶
See also
This problem is sourced from Ferchtandiker2025.
Note
We add implicit assumptions that sets are non-empty, travel times \(T_{ij} \geq 0\), \(T_{\text{limit}} \geq 0\), and \(n \leq |\mathcal{S}|\).
Description¶
Sanquin, the Dutch blood bank, aims to optimize the distribution of blood products to hospitals across the Netherlands. To ensure timely and efficient delivery, Sanquin plans to establish a network of blood distribution centers (DCs) at select hospitals. The goal is to minimize the average drive time between hospitals and their assigned DCs while adhering to logistical constraints.
Key Components of the Problem Facilities Involved: Hospitals (Demand Points): All hospitals in the Netherlands require regular blood deliveries. Candidate Distributoion Center (DC) Locations: A subset of hospitals has been pre-identified as potential sites for DCs. Only these candidate hospitals can host a DC.
Decisions to Make: Sanquin needs to know which hospitals should serve as DCs such that the average drive time to other hospitals is minimized.
Critical Constraints: Travel Time Limit: A hospital can only be assigned to a specific DC if the travel time between them does not exceed T minutes. This ensures blood products reach hospitals within a safe timeframe.
DC Activation Requirement: A hospital can only be assigned to a DC if that DC is operational (i.e., selected as one of the n DCs).
Objective: Minimize the average drive time between hospitals and their assigned DCs. This is equivalent to minimizing the total drive time across all hospital-DC pairs, as the number of hospitals is fixed.
Operational Details Drive Time vs. Cost: The drive time between a DC and a hospital directly translates to a transportation cost. Minimizing total cost in the model corresponds to minimizing total drive time.
Travel Time Limit (T): Assignments violating the T-minute threshold are strictly prohibited. For instance, if T = 60, no hospital can be paired with a DC more than 60 minutes away.
Why This Matters Blood products have limited shelf lives, and emergencies require rapid delivery. By optimizing DC locations and assignments, Sanquin ensures:
Faster emergency response via minimized average drive times. Compliance with time-sensitive delivery requirements through the T-minute constraint. Cost-effective operations by avoiding unnecessary infrastructure (only n DCs are activated).
Formulations¶
Formulation a (valid)¶
See also
This formulation is sourced from Ferchtandiker2025 (formulation id: efficient).
Note
The efficient formulation pre-computes a feasibility indicator \(\delta_{ij}\) to avoid the need for big-M constraints.
We add an assumption that the feasibility indicator \(\delta_{ij} \in \{0,1\}\) and \(\delta_{ij} = 1\) if and only if \(T_{ij} \leq T_{\text{limit}}\).
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of candidate DC locations |
integer |
scalar |
|
Number of hospital locations |
integer |
scalar |
|
Number of DCs that must be opened |
integer |
scalar |
|
Maximum allowed travel time from a DC to any hospital it serves |
continuous |
scalar |
|
Travel time from candidate DC location i to hospital j |
continuous |
|
|
Feasibility indicator: 1 if travel time from DC i to hospital j is within the limit, 0 otherwise |
binary |
|
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if candidate DC location i is opened, 0 otherwise |
binary |
|
|
1 if hospital j is assigned to DC i, 0 otherwise |
binary |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of candidate DC locations is positive. |
\(|\mathcal{S}| > 0\) |
yes |
Number of hospital locations is positive. |
\(|\mathcal{H}| > 0\) |
yes |
Travel times are non-negative. |
\(T_{ij} \geq 0 \quad \forall i \in \mathcal{S},\, j \in \mathcal{H}\) |
yes |
The travel time limit is non-negative. |
\(T_{\text{limit}} \geq 0\) |
yes |
The number of DCs to open does not exceed the number of candidate locations. |
\(n \leq |\mathcal{S}|\) |
yes |
delta encodes feasibility: 1 iff travel time is within the limit. |
\(\delta_{ij} = 1 \iff T_{ij} \leq T_{\text{limit}}, \quad \delta_{ij} = 0 \iff T_{ij} > T_{\text{limit}} \quad \forall i \in \mathcal{S},\, j \in \mathcal{H}\) |
no |
Constraints¶
Select exactly n DC locations.
\[ \sum_{i \in \mathcal{S}} x_i = n \]Hospitals can only be allocated to active DCs, bounded by the number of feasibly reachable hospitals.
\[ \sum_{j \in \mathcal{H}} \delta_{ij}\, y_{ij} \leq x_i \cdot \sum_{j \in \mathcal{H}} \delta_{ij} \quad \forall i \in \mathcal{S} \]Each hospital must be assigned to exactly one feasible DC.
\[ \sum_{i \in \mathcal{S}} \delta_{ij}\, y_{ij} = 1 \quad \forall j \in \mathcal{H} \]No allocation allowed if travel time between DC and hospital exceeds the limit.
\[ y_{ij} = 0 \quad \forall i \in \mathcal{S},\, j \in \mathcal{H} \text{ with } \delta_{ij} = 0 \]
Objective¶
Minimize total drive time across all feasible hospital-DC assignments.
Formulation b (valid)¶
See also
This formulation is sourced from Ferchtandiker2025 (formulation id: inefficient).
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of candidate DC locations |
integer |
scalar |
|
Number of hospital locations |
integer |
scalar |
|
Number of DCs that must be opened |
integer |
scalar |
|
Maximum allowed travel time from a DC to any hospital it serves |
continuous |
scalar |
|
Travel time from candidate DC location i to hospital j |
continuous |
|
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if candidate DC location i is opened, 0 otherwise |
binary |
|
|
1 if hospital j is assigned to DC i, 0 otherwise |
binary |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Travel times are non-negative. |
\(T_{ij} \geq 0 \quad \forall i \in \mathcal{S},\, j \in \mathcal{H}\) |
yes |
The travel time limit is non-negative. |
\(T_{\text{limit}} \geq 0\) |
yes |
The number of DCs to open does not exceed the number of candidate locations. |
\(n \leq |\mathcal{S}|\) |
yes |
Constraints¶
Select exactly n DC locations.
\[ \sum_{i \in \mathcal{S}} x_i = n \]Hospitals can only be allocated to active DCs, using the loose big-M bound of |H|.
\[ \sum_{j \in \mathcal{H}} y_{ij} \leq x_i \cdot |\mathcal{H}| \quad \forall i \in \mathcal{S} \]Each hospital must be assigned to exactly one DC.
\[ \sum_{i \in \mathcal{S}} y_{ij} = 1 \quad \forall j \in \mathcal{H} \]Travel time limit: a hospital may only be assigned to a DC within the time limit.
\[ T_{ij} \cdot y_{ij} \leq T_{\text{limit}} \quad \forall i \in \mathcal{S},\, j \in \mathcal{H} \]
Objective¶
Minimize total drive time across all hospital-DC assignments.