This is a little experimental model that I developed to investigate stochastic allocation of rental cars, in response to a Vensim forum question.
There’s a single fleet of rental cars distributed around 50 cities, connected by a random distance matrix (probably not physically realizable on a 2D manifold, but good enough for test purposes). In each city, customers arrive at random, rent a car if available, and return it locally or in another city. Along the way, the dawdle a bit, so returns are essentially a 2nd order delay of rentals: a combination of transit time and idle time.
The two interesting features here are:
- Proper use of Poisson arrivals within each time step, so that car flows are dimensionally consistent and preserve the integer constraint (no fractional cars)
- Use of Vensim’s ALLOC_P/MARKETP functions to constrain rentals when car availability is low. The usual approach, setting actual = MIN(desired, available/TIME STEP), doesn’t work because available is subscripted by 50 cities, while desired has 50 x 50 origin-destination pairs. Therefore the constrained allocation could result in fractional cars. The alternative approach is to set up a randomized first-come, first-served queue, so that any shortfall preserves the integer constraint.
The interesting experiment with this model is to lower the fleet until it becomes a constraint (at around 10,000 cars).
Documentation is sparse, but units balance.
Requires an advanced Vensim version (for arrays) or the free Model Reader.
Update, with improved distribution choice and smaller array dimensions for convenience: