Iterative Model Building

Last updated on 29th April 2024

Iterative and incremental development practices are key to Agile software development. The goal is to breaking down the development of a large application into smaller chunks. Code is designed, developed and tested in cycles. Each iteration sees the addition of new features to enhance the overall functionality of the application. At each stage of development, the user should have a fully functional (albeit possibly basic) application.

Building Agent-based models has a number of parallels with developing software. Building these types of models calls for the adoption of a software developer's mindset.

iterative

Rather than trying to build a large and complex model in one go (the "hail-mary" approach), the goal is to ensure that sensible model output can be obtained at all stages of model development. Doing so requires the modeller to start by implementing a stripped down version of the desired model. Model complexity is layered on incrementally, ensuring that each iteration of the model produces sensible output.

This type of workflow is nicely supported by Git version control. Each incremental increase in model complexity - for example the introduction of a new agent type, or the addition of a method to an agent's behaviour - should be tested. Once the modeller is satisfied, the new version of the model can be committed to version history. Breaking changes can simply be rolled-back.

Branching

Branches support experimental model development: A modeller may want to try to explore two alternative directions in which to expand their model, with the winner eventually being merged back in to the main model development branch.