Cellular Automata is a distinct theory defining how life lives, and how we can create a computer model of it. I’ve written a paper and a program that you may like! Please feel free to email me with questions you may have. Enjoy!
>>Cells.c
>>Cellular-Automata.exe is a compile version that just displays the interation number and colony population. If you compile the code yourself, you can, for instance, see the colony visually during various phases.
Life. The most complicated thing on earth. So complicated, in fact, that no computer program has yet to come close to modeling our actual behavior. Mostly, this is due to our free thinking: what sort of decision will we make?
Thus, scientists went to much simpler life forms to attempt to model first. Here, I present the simplest form: a cell. Despite that fact that a cell is so simple, it still has rules that describe its life. For instance, is it too crowded? Are there enough “neighbor” cells to keep me warm/hydrated?
This is Cellular Automata: the theory of rules that define how life lives. In a simulation, if things are a bit off at all, the colony crashes out and dies, usually in a short time.
There have been many instances of Cellular Automata in computers in the past, such as Life, and more complicated games as Sim City. Sim City attempted to model humans. It was very interesting, and though not a perfect simulation by any means, it assigned humans several necessary “traits” that would drive their actions: hunger, boredom, etc. The object of the game was to create a world in which the Sims (people) would be “happy”, ie, have their simulated needs met.
After learning of this, I decided to create my own small cell colony. Rather than following ideas people in the past had used, I made up some new rules that I felt would lead to a successful colony life.
I sat down, and tried to think, what sort of rule set would allow cells to reproduce, die, and yet end up living in a colony for a while after the population stabilized? I realized that since these cells don’t move, they cannot change their environment. Thus, the only way the colony as a whole can survive is if the right amount of cells die off: then each cell has the right amount of neighbors.
Also, I realized that in nature Chaos plays a great part in evolution, and things of that sort. Evolution is indeed chaotic and not random, but I decided that reproduction and initial populations could be pseudorandom (meaning as random as a computer can be) without a noticable difference.
The initial ruleset I devised was:
1) Out of possible cell “positions”, approximately 1/3 of those would be occupied (cells spaced randomly).
2) Each cell would have a life span of 1-7:
i. Just Born
ii. Living
iii. Living
iv. Can Reproduce
v. Can Reproduce
vi. Living
vii. Dead
3) Then, during each iteration, each cell would evaluate its neighbors, then have it’s life incremented or decremented as follows: (remember, a positive value brings the cell closer to death)
i. +2
ii. +1
iii. 0
iv. -1 (if more than 6)
v. -1 (if more than 6)
vi. 0
vii. +1
viii. +2
4) If the cell’s life was 4 or 5, and there was room around the cell, it would split, and create a new cell with life 1.
5) Iterate several times.
The results, unfortunately, were not what I was hoping for. With those values, and some tweaking around them, the colony population died miserably after not many iterations. Here is a graph of the colony population in those first few tests:

Through further experimentation, I realized the a) the cells simply died too fast and b) that they were not reproducing fast enough. I implemented a number of changes:
Though these changes seem absurd by thinking about them in terms of the way we as people live, they did happen to create a very nice colony. As you can see, the colony population stays fairly stable, within 20 cells or so:

Here’s a close up of how it wavers within:

The interesting shape the line takes is due to the pseudorandom nature of the cells lives. However, it is evident that the colony keeps its population in check: when the population becomes more crowded, more cells die, and visa versa.
Obviously some boundaries were jumped here, particularly ones of the physicals nature (for instance, that recently dead cells sometimes come back). However, for the purpose of the experiment, these changes were ok, because they provided an alternate method to creating a stable living system. The rule set provided works, and it was also tested to successfully expand to colonies of a much greater size: they still thrive in much the same way.
Throughout this process, I discovered that it is entirely possible to create one’s own living ecosystem, as complicated as she may like to design it. Once this knowledge has been obtained, this method can be expanded upon greatly: one can write much more complicated rule sets and use larger/different type cells, or even multi-cellular systems in which a symbiosis exists. One could also employ parallel processing techniques to make the process faster (with only a 64×64 cell grid, my program took 3 minutes to run). Finally, one could create an evolving colony in which the human doesn’t need to change the rules, only let the cells sort themselves out.
The main point I’d like to emphasize here is, life is not easy to design. I spent many hours tweaking values and interpreting results. Just remember: if it takes a week to simulate cells, imagine what it would take for humans.