Agent-based models are a class of computational model for simulating the actions and interactions of autonomous agents in order to try and model their effect on the system as a whole. Agent-based models work by defining algorithms under which the agents operate in responding to each other and their environment. Variables for their operation and environment are set at initiation and the program is left to run for a period of time before analyzing what emergent patterns have formed. An example of this might be trying to model the spreading of some virus within a population. Where one could use a traditional equation-based model called SIR which will describe this process in a top-down fashion, but one can also describe this with agent models where we ascribe simple rules to the agents and then run the program to see what aggregate phenomena emerge from the bottom-up through their interaction.