There are some that say life is an entity of unparalleled complexity. If you believe the words of George Dyson (Darwin among the machines, 1998), machines are the next evolutionary step. However you wish to interpret it, as science has developed, some basic rules of existence and the way that living things progress based on their surroundings has been developed. This enables us to understand the effect that we as humans have on our environment, and prevent ecological tragedies from happening, as well as teaching our children to be environmentally responsible adults in the future. The purpose of this investigation is to develop a very simple model of an ecosystem for the purposes of demonstration to secondary school pupils based on just three creatures, but the principles behind it translate into a wide number of other areas. There are those that say life itself does not follow logical principles, but few would doubt that ecology does undoubtedly operate as a balanced system. I hope by looking at this problem I can illustrate the rules that machines find easy, and the nuances of life that a digital system struggles with, helping us gain a greater understanding of just what we really know, and the grey areas that black and white, on/off technology struggles to effectively interpret.
One of the first steps we must take to understanding the problem we are looking at is to examine the living entities involved, and their relationship to one another, enabling a clear picture of how the system works together.
The Lynx – This is the top predator in our model and relies on a plentiful supply of rabbits in order to sustain its population. Across a large time period, and with adequate food supplies, this entity will grow in numbers at a relatively slow rate.
The Rabbit – This is the middle entity of our model. As a herbivore, Rabbits depend on large supplies of grass in order to adequately sustain themselves. However rabbits are much more vulnerable to diminishing food supplies, and are likely to die faster should there be shortages. However with plentiful food, by the same token, they will increase in numbers with sustainable growth. Rabbits are of course also vulnerable to higher numbers of Lynx. Despite the fact they are vulnerable to death however, extinction level events rarely occur due to the relatively large numbers of animals involved.
The Grass – the grass is the entity of our model below the rabbit. It requires two things to prosper, sun and rain. Low levels of either will result in lower levels of grass acreage, which has a knock on effect on the populations higher up the food chain.
So in essence each entity has the following key functions.
Consumes – Entities further down the food chain.
Produces – Creates growth in numbers through reproduction
Dies. – Either through natural causes or being consumed by higher entities, or alternatively through a lack of resources.
Issues involving the base entity-grass
So lets look at grass. The core component of our ecosystem, as with all ecosystems is vegetation. Vegetation is the base entity for all living things, and in itself relies on water and sunlight for photosynthesis. One of the first elements of analysing the success of the grass in this example therefore is making an assessment of the light and water levels that are present, and calculating their effect on population. High levels of rain and sun will result in population growth, medium levels will result in a subsistence of grass levels, and low levels will result in a slow decline in the level of available vegetation for higher entities to feed on. For a sustainable ecosystem, vegetation levels must be proportional to population growth for a sustainable environment, and therefore a slow level of growth is required for equilibrium. Measuring this in a computer environment is obviously a matter of compromise, research such as that carried out at the University of Colorado (Grass Growth and Response to Grazing), gives us clues and pointers as to what assumptions to make, but does not give effective numerical data that can be used. Therefore we have to take the information that is available to us and try to produce an effective compromise. In this instance I have decided to represent the sun and rain as a figure added at the beginning of the simulation, which should provide adequate. For instance you could use a 1-10 scaling system: These numbers would then be added together and divided by the maximum (20) to produce a fraction that effectively gives us a percentage for nutrient level:
Initially we will consider any level between 40-90% as sustainable, any higher as growth and any lower as decline in vegetation mass. Each ten percent sector above and below that will then result in a proportional increase/decrease. For instance if nutrient levels are considered to be at 93%, this will result in a 3% growth rate per time sector in the number of acres of available grass. The following graphs indicate the change of grass population over time, given this one factor only:
The graph on the left indicates 5% decline. The graph on the right indicates maximum 10% growth per month. As you can see this single factor have extreme effects on the available vegetation and highlights its importance. In reality of course this level of increase and decline is not realistic due to the changing nature of weather patterns. It is indeed completely impossible to have 50% sunshine and 50% rain every day for nearly two years.
Another factor that needs to be included in calculating the availability of vegetation is natural death of plants over time. Grass tends to have higher levels of sustainability than other life forms, and I have therefore placed a threshold of decline of around 0.125% per month for this. This is of course open to modification, should figures suggest it unrealistic. The following graph shows the effect, a small decline in the instance of sustained vegetation levels, though the impact this has in normal conditions should be negligible.
As an independent entity we have included all of the factors that affect the level of grass in our ecosystem. To move further we need to look at the other entities and their effect on grass population.
Issues involving the rabbit population
As with grass, the rabbit in our model has three basic functions: – consumption, production and death. The grass population as with the environmental conditions in the previously discussed, also has a significant effect on all of these three factors.
The first issue we need to look at is consumption. The way to do this is to look at the rabbit numbers that are initialised within the system, and their average consumption level. These can then be multiplied to understand their effect on grass population, and to consider whether their presence is sustainable. If for instance many rabbits exist in an environment with a declining grass population, the number of rabbits will begin to decline:
It is therefore required that there is a 9.6acre per month regrowth rate within the grass population for sustainability of the existing population. If the growth/regrowth rate is significantly less than this then there will be a decline in rabbits within the system.
The second issue, rabbit reproduction is slightly more complex than with grass because it does not exclusively rely on an existence of sustainable resources. Therefore rabbit growth will rise exponentially minus the number of deaths accrued from lack of resources, predatory behaviour and natural causes. I have given a figure that rabbit population increases by 200% every 8 months, based on average breeding ages and litter sizes information obtained from the American Association for Laboratory Animal Science Inc. A graph to show the exponential increase in demand for resources is below: As we will be using an independent entity model for rabbit behaviour however, it is important to note that this is open to variation, and does not take effective account of death rates, which is discussed below.
We then move on to factors affecting the death rate of rabbits. We have already seen that the level of reproduction within the rabbit population has a significant effect on demand for the available vegetative resources. However, there are several factors that reduce the population and should enable equilibrium. One of these is the higher predator, the lynx that feeds on rabbits. This can have a significant effect on numbers. In addition, demand within nature for resources tends to match that which is available. As less food becomes available, more rabbits die out, reducing demand and enabling a recovery of the grass population. In addition, there is of course loss of population through natural death, which is a small but significant number.
I have made an assessment based on multiple sources regarding Lynx cat consumption that suggests 28 rabbits are removed for every month that a lynx is alive. This is based on the weight of meat requirement of a Lynx cat and an assessment of the average weight of a wild rabbit. Therefore if you multiply the number of lynx by 28, you have the numeric population reduction for this factor in relation to rabbits. If demand for grass outstrips supply, rabbits will die proportional to the shortage. Therefore referring to an earlier example, if 12 rabbits require 9.6acres but only 8.8 acres is available and within available space one rabbit will die that month, and it is likely more rabbits will die the following month due to a lack of sustainability within the grass population. In terms of natural death, advice I have received suggests that a rabbit has a life span of 96months. To do this, we will assess the age of each rabbit in an iterative process and if their age passes 95 months they will be removed.
Lynx cat issues
The lynx cat has almost exactly the same issues as those of the rabbit, the only exception is that it in this model at least it has no higher predator threatening its existence, and so provided that there are adequate supplies of rabbits, it will continue to sustain itself and grow in population. The only other issue surrounding this entity is that whilst changes lower down the food chain have less of a significant effect on its survival, as there are fewer numbers of predators than prey, over time they are more vulnerable to extinction level events, where temporary shortages of rabbits have devastating consequences.
As already covered, the average lynx cat tends to consume an average of 28 rabbits a month, but can survive on as little as 14. Therefore some relatively complex maths is required to ensure that an accurate calculation is made of the demand on rabbit numbers in times of low population. My opinion on the issue is that in times of shortage, a percentage catch one and a small percentage catch none and die. This is based on nothing more than guesswork however and makes no real allowance for the complexities of Darwinian “survival of the fittest” behaviour, but tries at least into introduce a certain dimension of variability.
Population growth is relatively fixed and quite slow as with larger mammals. I have placed a figure of increase of 50% across 12 months based on sources that are available.
As for death rates, these are determined by a lack of food and death by natural causes. With lack of food, in times of shortage those gaining no food will die, those that only obtain 50% of their required intake will die if two months of low food intake follow one another. As for lifespan, a lynx cat has an average life of 180 months, which is substantially higher than other entities within the model, therefore not proving statistically significant, but we will include a reduction of 0.6% per month in population due to death by natural causes. As we are dealing with individual entities this is once again done by an age check process.
Objectifying instances using class structures
It can clearly be illustrated from the above information that all of the living instances within the ecosystem have similar properties, and functions, and can therefore be generalised
An important issue that needs to be discussed is one of resource distribution. It is all very well saying that there are enough acres of grassland to support the rabbit, but if that land is distributed unevenly and is inaccessible, it is likely large numbers of animals will die. It is important to understand the concept of territorial ownership therefore in building a realistic ecological model. In the journal article “Mutualism Promotes Diversity and Stability in a Simple Artificial Ecosystem,” the issue is interpreted as layers of creatures operating within cells. At the bottom is the vegetation, covering all of the cells within the grid. Above that there are creatures, for instance rabbits would be a good example, that occupy cells within that grid, and take resources from within it, and also neighbouring cells, but do not wander the entire territory. Therefore when resources cease to be available they move to a neighbouring cell. Reproduction of vegetation then over time repairs the individual cells and produces new territory for new animals, enabling sustainability.
So having dealt with the concepts at work, we need to look at how this is actually implemented within a logical digital architecture. The first step of course is to deal with the base layer. This is done by the user entering the number of acres of territory that are grassland. This produces our grid, in this instance representing 120 acres of land, a small amount:
The next layer of detail is the rabbit. These are placed randomly on the grid, each representing 10 rabbits.
To understand the concept of sustainability, we need to ensure that the measurements that we have provided for growth in numbers are accurate. This is done by making an assessment of just how many of a higher species can be supported by a base species, in circumstances of normal behaviour.
This is done as a system however, making it quite complex to understand where the faults lie. For example we first need to look at how many rabbits can be supported by 10 acres.
The regrowth pattern for grass suggests 80% regrowth after one month. Therefore with one rabbit:
As you can see this is entirely sustainable. What about 5 rabbits?
We can therefore see that an area needs less than 5 rabbits per 10 acres of space. To be sustainable
Now lets see what happens when we look at the lynx’s consumption of rabbits. We already know from factual sources that a lynx requires 28 rabbits a month to survive. Therefore a degree of upscaling is necessary. Using only one lynx, we need to discover the level at which sustainability occurs:
As we can see, even 100 rabbits are not enough to sustain a lynx in ideal conditions.
Therefore a cell requires:
- 250+ acres.
- 100 + rabbits
- 1 lynx. For internal stability within an individual cell, provided that there are average weather conditions.
What is to be extrapolated from this information? Well we need to understand what seems like the most irrational fact. This should be that there is a requirement for more than 100 rabbits to sustain just one lynx cat. But the evidence that this is necessary is well validated. Admittedly due to the nature of reality versus the model, the lynx cat tends to eat a variety of creatures in actuality. However in this model it would be necessary for 28 to be consumed per month.
The next relationship stands between the rabbit and the grass level. Is it realistic to say that a rabbit requires more than 2 acres of land for sustainability? Well the data we base that on is not factual, and is based merely on conjecture from information obtained on grass regrowth and the level of vegetation consumption of a rabbit. Therefore if there are problems with the model, this is where we should look first.
This leaves us with the requirement for a number of formulae, and there is a specific sequence by which the calculations must be carried out.
For grassland this is quite simple in ideal conditions:
We now need to look at the rabbits. Whilst grass can be considered as a system as it isn’t sensible to look at every blade of grass, it is more realistic to use instantiated models for the actual animals in accordance with (Pachebsky, Taylor and Jones, 2002) in that it more accurately mimics behavioural patterns. This results in a higher degree of realism and transference between our model and the real world. If we consider the rabbits as a grouped entity, it does not do justice to the variance in effect they have on different parts of the artificial construct we have developed. Therefore we treat each rabbit as an entity and deal with its functionality, adding numbers it produces that may be relevant to our calculations.
So a rabbit has the following:
- Animal Number
On initialisation, therefore, the program takes the number of rabbits that have been selected and produces an array of rabbits.
The rabbits are therefore distributed within the environment randomly, replicating some aspects of behaviour in real life.
During the procedure looking at rabbit behaviour then, a loop looks at each of the rabbits in turn and makes a calculated assessment of their behaviour:
We then move on to the Lynx cats. The functionality for this is similar to those of the rabbit, with the exception of consumption and the lack of a higher predatory being acting to eliminate numbers. So once again, the key functions and properties are:
- Animal Number
- Birth date
Therefore all of the functions are as above. The only thing that separates them are variations in the mathematics. For instance:
In Conclusion we have developed a fairly complex and accurate model, illustrating the changes in population that occur when there is an imbalance of numbers of any one type of living entity. The problems however are when you try to translate this model into the real world, and try to make accurate comparatives to real world behaviour. The figures used in the algorithms that have been produced are based on sometimes-dubious information due to the lack of specific knowledge that is available. Noone has for example performed a huge scientific investigation into the degradation in grass after a large population of rabbit moves into the area, and so it is impossible to know whether the mathematical conclusions are accurate.
I have to say though that I would agree with the arguments put forward for instantiated entities rather than closed system concepts being used as a model for the system. Animals are individual and having varying patterns of behaviour. This would not be effectively mimicked by treating animals as a mass that simply increases/decreases in numbers.
One point that must be made of the achievements of this project however is that its founding principles and architecture work to the concepts of Darwinian evolutionary theory and, many of the ideas implemented are accurate and translatable to real life. That they may not match precisely the shifts of reality is not necessarily relevant, as the adjustments could be made on an iterative basis based on known science. The fact is this is an ecosystem within a digital system acting to a logical pattern. The question is, whether life is logical, or whether we are actually trying to force logic on life.