Kind of like the Omega Syndrome, but with turtles!
This model simulates the spread of an infectious disease traveling via contact through a randomly moving population. The user can draw walls, buildings, or obstacles in the environment to simulate different environments.
A video overview of the model can be found on my YouTube Channel - Complxity Geek.
powered by NetLogo
A working copy of the model can be downloaded from My Google Drive.
WHAT IS IT?
This model simulates the spread of an infectious disease traveling via contact through a randomly moving population. The user can draw walls, buildings, or obstacles in the environment to simulate different environments.
HOW IT WORKS
The agents wander randomly throughout the simulation grid. If a healthy agent occupies a patch with a sick or infected agent, the healthy agent has a chance to become infected. This is controled by the immune-chance slider. A healthy agent that does not become infected, becomes immune. An agent remains infected for a period determined by the incubation-period slider. During this time, the agent is contagious. Once the incubation period ends, the agent becomes sick. Sick agents remain contagious through the length of the disease period (controlled by the disease-period slider). At the end of the disease period, the agent either dies or recovers and becomes immune. This is determined by the terminal-chance slider.
HOW TO USE IT
1. Use the Draw Walls button to create different landscapes for
the agents to move around.
2. Set the initial healthy and sick populations.
3. Set the incubation and disease period to desired levels.
4. Set the chance for immunity and terminal illness.
5. Click Setup to populate the simulation grid.
6. Click Go to set the agents in motion.
Note: Click Clear Turtles to remove agents and leave landscape in place. Click Clear All to restart from scratch.
EXTENDING THE MODEL
This model is for infectious disease that spreads via contact. Future models will show the progression of air-borne, food-borne and fixed source contact diseases.
CREDITS AND REFERENCES
This model was developed as a part of research work for The Center for Complexity in Health at Kent State University Ashtabula.
PROCEDURES
;;Infectious Disease Model ver. 1 ;;This model simulates the spread of an infectious disease traveling via contact through ;;a randomly moving population. The user can draw walls, buildings, or obstacles in the ;;environment to simulate different environments. breed [healthy] ;;Different breeds of turtles to show heatlh state. breed [infected] breed [sick] breed [immune] breed [dead] globals [ ;; Global variables. total-healthy total-sick total-infected total-immune total-dead ] turtles-own [ ;; Turtle variables. turn-check wall-turn-check incubate sickness terminal-check immune-check ] to building-draw ;; Use the mouse to draw buildings. if mouse-down? [ ask patch mouse-xcor mouse-ycor [ set pcolor grey ]] end to setup ;; Initialize the model. clear-turtles pop-check setup-agents update-globals do-plots end to go ;; Run the model. disease-check repeat 5 [ ask healthy [ fd 0.2 ] display ] repeat 5 [ ask infected [ fd 0.2 ] display ] repeat 5 [ ask sick [ fd 0.2 ] display ] repeat 5 [ ask immune [ fd 0.2 ] display ] update-globals do-plots tick end to setup-agents ;; Setup the begining number of agents and their initial states. set-default-shape healthy "person" set-default-shape infected "person" set-default-shape sick "person" set-default-shape immune "person" set-default-shape dead "caterpillar" ask n-of initial-healthy patches with [pcolor = black] [ sprout-healthy 1 [ set color blue ] ] ask n-of initial-sick patches with [pcolor = black] [ sprout-sick 1 [ set color yellow set sickness disease-period ] ] end to disease-check ;; Check to see if an infected or sick turtle occupies the same patch. ask healthy[ if any? other turtles-here with [color = yellow] [infect] if any? other turtles-here with [color = pink] [infect] wander ] ask sick[ if any? other turtles-here with [color = blue] [infect] wander set sickness sickness - 1 if sickness = 0 [live-or-die] ] ask infected[ if any? other turtles-here with [color = blue] [infect] wander set incubate incubate - 1 if incubate = 0 [get-sick] ] ask immune[wander] end to infect ;; Infect a healthy turtle, test if it is immune and set the incubation timer if it isn't. set immune-check random 100 ifelse immune-check < immune-chance [recover] [ask healthy-on patch-here[ set breed infected set incubate incubation-period] ask infected-on patch-here [set color pink]] end to get-sick ;; Change an infected turtle into an sick turtle and set the disease progression timer. set breed sick set color yellow set sickness disease-period end to terminate ;; Kill a sick turtle who reaches the end of the disease progression and fails the terminal check. set breed dead set color white end to live-or-die ;; Test if the turtle dies from the disease. set terminal-check random 100 ifelse terminal-check < terminal-chance [terminate] [recover] end to recover ;; Change turtle breed to immune. set breed immune set color sky end to wander ;; Random movement for agents. set turn-check random 20 if turn-check > 15 [right-turn] if turn-check < 5 [left-turn] if [pcolor] of patch-ahead 1 != black [wall] end to wall ;; Turn agent away from wall set wall-turn-check random 10 if wall-turn-check >= 6 [wall-right-turn] if wall-turn-check <= 5 [wall-left-turn] end to wall-right-turn ;;Generate a random degree of turn for the wall sub-routine. rt 170 end to wall-left-turn ;;Generate a random degree of turn for the wall sub-routine. lt 170 end to right-turn ;;Generate a random degree of turn for the wander sub-routine. rt random-float 10 end to left-turn ;;Generate a random degree of turn for the wander sub-routine. lt random-float 10 end to update-globals ;;Set globals to current values for reporters. set total-healthy (count healthy) set total-infected (count infected) set total-sick (count sick) set total-immune (count immune) set total-dead (count dead) end to do-plots ;; Update graph. set-current-plot "Population Totals" set-current-plot-pen "Healthy" plot total-healthy set-current-plot-pen "Infected" plot total-infected set-current-plot-pen "Sick" plot total-sick set-current-plot-pen "Immune" plot total-immune set-current-plot-pen "Dead" plot total-dead end to pop-check ;; Make sure total population does not exceed total number of patches. if initial-healthy + initial-sick > count patches [ user-message (word "This simulation only has room for " count patches " agents.") stop ] end ; *** NetLogo 4.1 Model Copyright Notice *** ; ; Copyright 2010 by Michael D. Ball. All rights reserved. ; ; Permission to use, modify or redistribute this model is hereby granted, ; provided that both of the following requirements are followed: ; a) this copyright notice is included. ; b) this model will not be redistributed for profit without permission ; from Michael D. Ball. ; Contact Michael D. Ball for appropriate licenses for redistribution for ; profit. ; ; To refer to this model in academic publications, please use: ; Ball, M. (2010). Infectious Disease Model ver. 1. ; http://www.personal.kent.edu/~mdball/netlogo_models.htm. ; The Center for Complexity in Health, ; Kent State University at Ashtabula, Ashtabula, OH. ; ; In other publications, please use: ; Copyright 2010 Michael D. Ball. All rights reserved. ; See http://www.personal.kent.edu/~mdball/netlogo_models.htm ; for terms of use. ; ; *** End of NetLogo 4.1 Model Copyright Notice ***