Agent-Based Modeling
An overview
An Agent-Based Model (or ABM) is a computer simulation of an environment with lots of autonomous agents running around in it according to a finite set of rules. The classic examples of agents arise with flocks of birds or schools of fish. In each of these examples, our agents are given a set of three simple rules to obey:
- 1) if two birds fly too close to each other, drift apart,
- 2) if two birds fly too far apart from each other, drift closer,
- 3) all pairs of birds fly in the same general direction.
These are relatively vague rules, but they give rise to the complex geometries one can observe in flocks of birds or schools of fish.
This method can help in understanding flocking behaviour. This perspective sidesteps the issue of not being able to write down the function that describes the shape of the group of agents.
Because we have powerful computers, simulation of agents allows us to keep track of emergent phenomena.
Here’s a great article on such simulations, Simulating Bird Flock Behavior in Python Using Boids | by rohola zandie | Better Programming.
The Game of Life
John Conway’s Game of Life is a simple game where a grid of 0s and 1s change according to local configurations. The rule is applied iteratively, and each grid point abides by rules to evaluate if it should change its state from 0 to 1 (or vice versa). In a discrete time and space (unlike the previous example), cellular automata can arise from specific initial conditions! Try it out yourself here.
See this neat article on Game of Life: How I optimized Conway’s Game Of Life | by Tyler Elliot Bettilyon | Teb’s Lab | Medium
Examples of emergent phenomena
Other examples of systems of simple agents that give rise to an emergent phenomenon:
- energetic gas particles in a box have aggregate temperature/heat
- water exhibits wetness
- activated neurons in a brain give rise to thought/consciousness
- businesses trade gives rise to market an economy
- pedestrian crowd exhibit traffic in evacuation scenarios
This is less about designing or coordinating agents to perform together and more for observing and extracting how complex behavior arises in nature from collections of simple automatons. This becomes part of the study complexity theory (not computational complexity quantifying program runtime), but aggregated complexity of populations. So explicit solutions are generally not possible, but still can be studied using numerical simulation.
Conclusion
I hope I’ve given the reader a taste of how complexity can arise from many agents following finitely many simple rules. In contrast, complicated systems are ones made of many coordinating components (e.g. components making a car).
I wonder what interesting applications of ABM you can think of and what you would use it to study? Let me know in the comments below.