Cash collection for 1,630 terminals
A feasible three-month plan with 5 armored cars
Task
Plan cash collection for 1,630 payment terminals across a large metropolitan region for 91 days. A terminal holds at most one million rubles and may go no more than 14 days without a visit; a visit takes 10 minutes, cars work from 08:00 to 20:00, and travel times come as a full asymmetric matrix of 2.66 million entries.
Cash left in a terminal costs 2% a year, a collection costs 0.01% of the amount but at least 100 rubles, and an armored car costs 20,000 rubles a day, so the size of the fleet dominates every other cost.
Approach
01Forecast every terminal
One N-BEATS model per terminal, 1,630 in all: 14 days in, 15 days out, trained jointly on the terminal’s own deposits and on the average of its five nearest neighbors. The median error on the hold-out weeks was about 9 thousand rubles a day.
02Turn forecasts into deadlines
Each morning every terminal gets its days left: zero if it is already over the cap or at the 14-day limit, otherwise the first day on which forecast deposits would push it over the cap.
03A pool of routes
Routes are nearest-neighbor chains that fill a 12-hour shift: one seeded at every terminal and computed once, plus fresh chains through today’s must-visit terminals, so every day has a feasible cover.
04Choose today’s routes
A set-covering MIP picks at most K routes. Must-visit terminals are covered at least once, the rest at most once, and optional visits are weighted by how crowded their deadline group is. That is a cheap look-ahead that spreads work across days.
05Three months in a loop, then the smallest fleet
Each day’s plan is applied to actual deposits, deadlines are recomputed from fresh forecasts, and the loop runs through all 91 days. The fleet is reduced until some day becomes infeasible. A separate covering model with perfect information estimates how far it could go.
Result
A feasible plan for all 91 days with 5 armored cars; the first versions needed 10.
The covering model over the first 15 days put the likely floor at 4 cars.