Imagining small worlds: Microsimulation
Oct 17, 2022 | Jagannath Rajagopal | 3 min read
The name for a family of simulations where individual units matter. People, cars, companies, households etc.
As a graduate student, my very first internship was at Sabre, which at the time handled much of American Airlines IT. The group I was a part of, was responsible for modelling systems — airports, baggage handling, passengers within a terminal, etc. Anything that involved queues. The point — get as much volume through airline systems as possible, look for bottlenecks.
At the time, much of the work was done on coding and analysis of data from airports — especially Dallas Fortworth, given it was (and is) American’s main hub. Baggage handling was a particularly hot topic in our group.
Fast forward to 2008, a colleague with an Industrial Engineering background pointed out to me that no matter how busy Chipotle was at lunchtime, you would always find a table by the time you picked up your order. We were sure their restaurants were actually modelled, because it’s the sort of outcome you get when you implement Simulation.
Either is an example of Discrete Event Simulation, one of the forms of Microsimulation. Queues represent discrete events which may not be related to one another. Cinemas, the Doctor’s office, rush-hour traffic etc. If you’ve waited for something, it can be modelled. And optimized. Yes — no one likes to wait, but you do it because it helps with efficiency. And in most organizations, there is the constant push to get more done with less.
I’ve created a LOT of resources on topics like these. Here’s my course on Design Thinking for Hero Methods. Here’s my YouTube channel with previews of course videos. Here’s my website; navigate through the courses to find free previews & pdfs.
With much of what I write, I stay away from the details. I don’t think I’m helping you much with the 10,000th post on how to use TensorFlow. I’m going to break my own rule here. Here is an Open Source library for Discrete Event Simulation — SimPy — a “process-based discrete event simulation engine based on Standard Python”, as per the website.
- - -
Another form — Continuous Simulation/System Dynamics — for Continuous things. Like Crypto prices, the weather, water flow through a dam, machine operating conditions etc. Some of these come with math — like fluid flow. The simulation would then wrap around the math to model different operating conditions and understand emergent behaviour. With water flow in a dam — different dam and turbine designs can be simulated at various pressure levels — to wring as much power out as possible across the board.
To save the best for last, we have Agent-based Simulations (ABS). Problem with other types of simulations is that they treat many individual occurrences as random walks. With ABS, the idea is to think of them as Agents. Models could be simple — “I am bored so I am going to binge out on Medium”, Or they could be complex and be triggered by the environment — “DALL-E2 was released so I am going to play around with it”.
Some exit notes — Simulations are a really cool way of trying to learn about emergent behaviour in complex systems. We at Kado particularly like them since they can serve either as inputs to, or process the outputs from other methods. Inputs to simulations are sometimes smoothed and broad-brushed; if you want a nuanced input, use a Machine learning model instead to learn a part of the complexity and feed the simulation.