On Agent Based Modelling
- Netlogo and Matlab are terrible and thus actually quite appropriate: by being awful they force you to keep the model simple. The trick I guess is to use a better, more scalable language while keeping things simpler. This is hard.
- I've concluded that object-orientated programming while seemingly idea for agent-based modelling (as it allows things to be decomposed into objects with state and actions (basically agents) with well defined public and private information) is actually terrible. You should try to use vectors/matrices of variables and update in a step-by-step, functional way (ideally drawing on some kinds of scientific libraries for your chosen language). This allows for a clear model/algorithm and easy access to results. It will also force you to keep things quite simple.
- When in doubt think like a physicist (every additional model parameter causes them anguish).
- Tests, tests, tests. Lot of runtime validation, unit tests and more. Forget efficiency (you can always have a global debug flag for when you care about efficiency, though if you have to care about efficiency your model is probably too complex).
- Mathematical benchmark: whenever possible have some kind of (perhaps special case) when you know the outcome so can check things are working. Otherwise you are wondering around in the dark, with a candle (and that's when your code is actually working).
- Think about how to run collections of experiments, save parameters and outputs. You should not do any of these by hand: it is tedious and you aren't reliable (reproducible).
Additional academic details, not included in my regular CV.