This model simulates the transmission and perpetuation of a 
virus in a human population.  Ecological biologists have
suggested a number of factors which may influence the
survival of a directly transmitted virus within a population.
   (Yorke, et al. "Seasonality and the requirements for
    perpetuation and eradication of viruses in populations."
    Journal of Epidemiology, volume 109, pages 103-123)

The model is initialized with 700 people, of which 10 are
infected.  People move randomly about the screen in one of
three states: healthy and susceptible to infection (green),
sick and infectious (red), and healthy and immune (white). 
People may die of infection or old age.  When the population
dips below the environment's "carrying capacity" (set at 700
in this model) healthy people may reproduce healthy and
susceptible offspring. 

Some of these factors are summarized below with
an explanation of how each one is treated in this model.    

	The density of the population
Population density affects how often infected, immune and
susceptible individuals come into contact with each other. 
In this model, the maximum population is preset at 700.

	Population turnover
As individuals die, some who die will be infected, some will be
susceptible and some will be immune.  All the new
individuals who are born, replacing those who die, will be 
susceptible.  People may die from the virus, the chances of
which are determined by the slider CHANCE-RECOVER, or they
may die of old age.  In this model, people die of old age
at the age of approximately 27 years.  Reproduction rate is
constant in this model.  Each turn, every healthy individual
has a chance to reproduce.  That chance is set so that each
person will on average reproduce four times if they live 27

	Degree of immunity
If a person has been infected and recovered, how 
immune are they to the virus?  We often assume that immunity
lasts a lifetime and is assured, but in some cases immunity 
wears off in time and immunity might not be absolutely
secure.  Nonetheless, in this model, immunity does last
forever and is secure.

	Infectiousness (or transmissibility)
How easily does the virus spread?  Some viruses with 
which we are familiar spread very easily.  Some viruses
spread from the smallest contact every time.  Others (the
HIV virus, which is responsible for AIDS, for example)
require significant contact, perhaps many times, before the 
virus is transmitted.  In this model, infectiousness is 
determined by a slider.

	Duration of infectiousness
How long is a person infected before they either 
recover or die?  This length of time is essentially the
virus's window of opportunity for transmission to new hosts.
In this model, duration of infectiousness is determined by a

Each "tick" represents a week in the time scale of this

The INFECTIOUSNESS slider determines how great the chance is
that virus transmission will occur when an infected person
and susceptible person occupy the same patch.  For instance,
when the slider is set to 50, the virus will spread roughly
once every two chance encounters.

The DURATION slider determines the percent of the average
life-span (which is 1500 weeks, or approximately 27 years, 
in this model) that an infected person goes through before
the infection ends in either death or recovery.  Note that
although zero is a slider possibility, it produces an
infection of very short duration (approximately 2 weeks) not
an infection with no duration at all.

The CHANCE-RECOVERY slider controls the likelihood that an 
infection will end in recovery/immunity.  When this slider
is set at zero, for instance, the infection is always deadly.

The SETUP button resets the graphics and plot windows and
randomly distributes 690 green susceptible people and 10 red
infected people (of randomly distributed ages).  The GO
button starts the simulation and the plotting function.

Three output monitors show the percent of the population
that is infected, the percent that is immune, and the number
of years that have passed.  The plot window produces a
graph showing (in their respective colors) the number of
susceptible, infected, and immune people.  It also shows the
number of individuals in the total population in blue.


The factors controlled by the three sliders interact to
influence how likely the virus is to thrive in this
population.  Notice that in all cases, these factors must
create a balance in which an adequate number of potential
hosts remain available to the virus and in which the virus
can adequately access those hosts.

Often there will initially be an explosion of infection
since no one in the population is immune and the population
density is at its maximum.  This approximates the initial
"outbreak" of a viral infection in a population, one that
often has devastating consequences for the humans concerned.
Soon, however, the virus becomes less common as the
population dynamics change.  What ultimately happens to the
virus is determined by the factors controlled the sliders.

Notice that viruses that are too successful at first
(infecting almost everyone) may not survive in the long
term.  Since everyone infected generally dies or becomes
immune as a result, the potential number of hosts is often
limited.  The exception to the above is when the DURATION
slider is set so high that population turnover
(reproduction) can keep up and provide new hosts.  

Think about how different slider values might approximate
the dynamics of real-life viruses.  The famous Ebola virus
in central Africa has a very short duration, a very high
infectiousness value, and an extremely low recovery rate. 
For all the fear this virus has raised, how successful is
it?  Set the sliders appropriately and watch what happens.

The HIV virus which causes AIDS, has an extremely long
duration, an extremely low recovery rate, but an extremely
low infectiousness value.  How  does a virus with these
slider values fair in the StarlogoT model?

Add additional sliders controlling the carrying capacity of
the world (how many people can be on the screen at one time)
and the average lifespan of the people.

Build a similar model simulating viral infection of a
non-human host with very different reproductive rates,
lifespans, and population densities.

Add a slider controlling how long immunity lasts so that
immunity is not perfect or eternal.

Notice that in order to potentially infect every turtle
sharing its patch, infection is first passed on to the patch
from a sick turtle with the command TSETINFECT? TRUE.  Then,
in the same subroutine, every susceptible turtle occupying
that patch has a random chance to become infected with the
command PSETSICK? TRUE.  

The code was written with this double variable exchange so
that each turtle has a separate chance to become infected by
a sick turtle.  The other option was to write the code so
that on a random chance sick turtles would execute
SETSICK?-AT 0 0 TRUE, but this would change every neighbor
turtle at once instead of evaluating each neighbor's chances