top of page

What are agent-based models?


Agent-based models are essentially synthetic economies in silico. They are used to solve problems that are analytically intractable. In this sense, agent-based models can be thought of as an expression of a new kind of mathematics, or a new formal language which is suited for complex problem of the social sciences. Agent-based models are particularly suitable to study problems that involve intricate interactions between autonomous units, each of whom makes decisions based on limited information. They are build by writing equations at the level of the individual agents (not the system), and then specifying the rules of interaction between the agents. Once completely specified, the system is run forward in time and the data generate by it are collected for analysis. 


Agent-based models I built

I have used agent-based models to resolve some analytically intractable problems like generalized competition in price and product attributes, convergence to equilibrium with capital goods and differing beliefs, and transmission of monetary shocks through a production network. Each of these models generates emergent behaviors that were hard to predict before running the models forward in time. For instance, the generalized competition model generated local duopolies. The capital goods model showed that right beliefs about future prices is not a precondition to equilibrium convergence. And the production network model showed that some prices can temporarily fall in response to monetary expansions. These facts meet reality and would have been difficult to generate without an agent-based model. 

Code of agent-based models I've built is available at


Learning agent-based modeling

Step 1 - Agent-based modeling as a way of thinking 

For motivation on why use agent-based models read Axtell on "Why agents" and Borrill & Tesfatsion on "The right mathematics for social sciences". To understand market competition as a process (rather than an end-state) read Hayek on "The meaning of competition". For a sense of bottom-up thinking read Epstein on "Generative Social Science". Also read Axtell on "Hayek and complexity" and Lavoie's "Hi-Tech Hayekians". And while you are at it, why not read Lavoie's "Coordination in society" for a sense of the sheer difficulty of the problem of coordination in a distributed system. For a sense of how models with simple bottom-up decision-making can generate dozens of stylized facts, see Axtell's model of firm dynamics. Also, see Leigh Tesfatsion's page for literature on the relation between experiments with human subjects and experiments with artificial agents. 


Note that while agent-based modeling is a useful tool, it is wholly useless---if not an outright nuisance---when only a tool. Agent-based modeling is a way of thinking about problems, a way of thinking which must be cultivated through careful study of the nature of social problems. 

Step 2 - Learning how to code

Learn how to code in Python, C++, or any other object oriented programming language. Harvard's CS50 is a useful course.

Step 3 - Building your first model

Option 1

Transform the Hotelling model  from Netlogo to a language of your choice. See if your model is able to generate the behaviors that are seen in the Netlogo version.  Note that Python's Mesa Library may help with visualisation.  Think of a sensible way in which you can modify the model. Implement your modification. What are the new emergent properties?


Option 2 

For those who do not want to get into the trouble of visualisation, writeup Epstein's civil unrest model in a language of your choice. Does your rendition of the model generate the results that Epstein reports in the paper? Does your rendition generate results that are not reported by Epstein?  Think of a sensible way in which you can modify the model. Implement your modification. What are the new emergent properties?

Step 4 -  Building your first novel model 

Build an agent-based model on a problem of your choice. Write up the results as a short note. Does your model explain something no one has explained before? If not, why did you bother to build it?


bottom of page