A classic example of cellular automata is the ``Game of Life'' by John Conway [2,3]. This game involves populating a rectangular grid with ``critters'' and at each discrete time interval the population evolves to its next ``generation''. The survival of a particular critter from one generation to the next is a function of the number of live neighbours it has. Haefner [2] discusses how the simple rules of the Game of Life produces intricate self-replicating patterns and configurations. The ability of CA to produce seemingly very complex systems with very basic building blocks provides a powerful tool in understanding natural phenomena.
This project centres on the application of CA to modelling the behaviour of of viral epidemic spread. This system is deemed a complex system because it comprises a massive number of hosts; each interacting concurrently with one another. It is this inherent concurrency that makes this system complex. The behaviour of many systems in nature appear complex but as stated by O'Sullivan [4], ``global behaviour in CA emerges from local rules,'' meaning that at the cellular level, interactions may still be very primitive.
Compared with other applications of CA modelling, such as traffic flow and bushfire spread, very little has been done in the field of epidemiology. Ahmed and Agiza [5] proposed a set of CA rules for an epidemic model, but do not assess how effective it is. With viruses such as influenza causing huge economic impacts each year due to loss in productivity and the appearance of new viral strains each year, models will epidemiologists better understand the metrics of virus spread. It is desirable to have a tool where you could insert viral ``point sources'' into a population and see if the preventative measures implemented by governing bodies have their intended effect. Consequently, better vaccination and containment policies can be implemented in order to control epidemic spread.
The aim of this project is determine the applicability of CA as a basis for modelling epidemic spread. To achieve this objective I also create a simulation of how a virus, subject to environmental parameters, spreads through a population of organisms. To measure the suitability of CA to model epidemic spread I will make comparisons of simulated epidemic spread with emergent behaviour found in nature.
The topology of virus spread through a population bears a strong resemblance to Conway's ``Game of Life'' which we know is a trivial example of CA. Ultimately, the goal is to draw up a similarly simple set of update rules to govern the spread of a virus from cell to cell, but not abstract away too much detail as to make the model unrealistic and meaningless. Ahmed and Agiza [5] devised a constrained CA model that includes virus incubation and latency, while Boccara et al. [6] examined the motion of hosts through a heterogeneously distributed population. It is my intention to examine these and other models to create a composite model that allows an epidemiologist to tweak epidemic spread parameters and confidently extrapolate their effects.
To determine the suitability of CA for epidemic modelling I will first devise a model for epidemic spread and then try to implement this model with the CA paradigm. The ``goodness'' of this final implementation should give me an indication of how suited CA is for this application.
The first step to devising a model is to research the parameters that influence virus spread. This can be through research at local libraries and on the Web. However, after collating a list of virus spread parameters I will need to decide which factors need to be incorporated into my model and which can be safely omitted; there are two steps to this procedure. The first is to examine some existing models and see which factors have been implemented there. Secondly, I suspect that determining which factors can be neglected will be done throught performing experiments.
A series of test cases will need to be run in order to see which epidemic spread factors can be omitted. These tests will be run over simple idealised worlds and the results used to rank the significance of a particular spread factor.
Once a minimalist model is devised, I can begin to engineer a software implementation of that model. This will take the bulk of the project time and will be an iterative process. The CA paradigm does not give any indication how a model should be implemented; it only provides a framework on which to build on. The implementation phase will be based heavily around a schedule of test cases, each case adding another realism parameter to the model. The intention is that by the end of the implementation, all the features of the model will be in the software simulation also.
On top of the CA, a graphical user interface (GUI) will need to be designed to allow users to modify virus spread parameters in real-time and run experiments. At the end of implementation and testing I will perform some experiments myself and observe how each epidemic spread parameter affects the macroscopic behaviour of the whole.
The performance of the epidemic simulation is not of great importance so long as it runs in reasonable time. The inherent object-oriented nature of a CA model makes Java a suitable language to implement the model. A standard laboratory Celeron machine is an adequate architecture for this project.