The decision. Which of five candidate sites to open, and which site each store sends its returns to. This is a facility-location model: a mixed-integer program solved in Gurobi.
- Sets
- i = the 54 stores; j = the 5 candidate sites (Fremont, Ontario, San Diego, Fresno, Reno)
- Given
- si = phones returned at store i each year (28,140 in total)
dij = road miles from store i to site j (straight-line × 1.3)
t = freight per phone per mile ($0.000172)
h = handling per phone ($0.35)
fj = yearly cost of running site j ($720,000 to $1.05M)
Kj = phones site j can process a year (20,000 to 25,000)
p = number of sites to open
- Decide
- yj = 1 if site j opens, else 0
xij = 1 if store i sends its returns to site j, else 0
Objective · lowest yearly costminimize Σj fj yj + Σi Σj si ( t dij + h ) xij
ConstraintsΣj xij = 1 for every store each store uses exactly one site
xij ≤ yj for every store and site only open sites receive phones
Σi si xij ≤ Kj yj for every site no site over capacity
Σj yj = p open exactly p sites
How it was used. Solved for p = 2 to 5 (one site cannot process all 28,140 phones); two sites give the lowest total. The distance benchmark keeps the same constraints but minimizes Σ si dij xij (phone-miles) and picks Fremont + Ontario. As a first cut, ArcGIS Pro Network Analyst location-allocation, which ignores capacity, picked Ontario alone.
The business case. NPV = −C + Σt=1..3 CFt / 1.1t, where each year's added cash CFt = (R − B)(1 + g)t − O(1 + i)t. R = value recovered ($3.97M a year), B = recycler income given up ($619,000), O = running cost of the network ($1.55M), C = capital ($2.25M), g = growth in returns (3%), i = cost inflation (2%).
Data. 54 real store locations; site costs from California industrial rents; Haversine distances over 270 store-site pairs; freight from 2024 California less-than-truckload rates; Power BI dashboards.
Code on GitHub →