Virus CoronaVirus
Model was written in NetLogo 6.1.1
•
Viewed 153 times
•
Downloaded 7 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
turtles-own [ sick? ;; if true, the turtle is sick infected? ;; if true, turtle is infected remaining-immunity ;; how many weeks of immunity the turtle has left sick-infected-time ;; how long, in weeks, the turtle has been infectious age ;; how many weeks old the turtle is sick-around ;; is there anyone sick around the turtle? nearest-sick ;; the nearest sick turtle around the full-life ;; how much the turtle will live get-sick-factor ;; disease recovery changes with age reproduce-number ;; Maximum number of sons/daughers a turtle may generate ] globals [ %infected ;; what % of the population is infectious %sick ;; what % of the population is sick %immune ;; what % of the population is immune %dead ;; Sickness death relative to total death (dead-sick / total-dead) dead-sick ;; How many ppl died by sickness dead-total ;; How many ppl died births ;; How many ppl born lifespan ;; the average lifespan of the turtle population chance-reproduce ;; The probability of a turtle being hatched each simulation tick per turtle in the simulation reproduce-factor ;; Factor of reproduction carrying-capacity ;; the number of turtles that can be in the world at one time immunity-duration ;; how many weeks immunity lasts ] ;; The setup is divided into four procedures to setup clear-all setup-constants setup-turtles update-global-variables update-display reset-ticks end ;; We create a variable number of turtles of which 10 are infectious, ;; and distribute them randomly to setup-turtles create-turtles number-people [ setxy random-xcor random-ycor set age random lifespan ;; Age is set full-life random-normal lifespan (10 * 52) while [full-life < age] [set age random lifespan] set sick-infected-time 0 set remaining-immunity 0 set infected? false update-size ;; easier to see set-get-sick-factor set-reproduce-number get-healthy ] ask n-of 0 turtles [ get-infected ] end to setup-constants set lifespan 70 * 52 ;; 70 times 52 weeks = 70 years = 3640 weeks old set carrying-capacity 2000 set reproduce-factor 0.1 set immunity-duration 9999 end to go update-chance-reproduce if random-float 100 < chance-new-infected [create-new-infected] if random-float 100 < chance-new-sick [create-new-sick] ask turtles [ update-size set-get-sick-factor get-older move flee if infected? [ infect get-sick ] if sick? [ recover-or-die ] ifelse sick? [ infect ] [ reproduce ] ] update-global-variables update-display tick end to set-get-sick-factor set get-sick-factor random-normal ( ((age / 52) ^ 6) * (1.78 * (10 ^ -11)) ) ( 0.5 ) end to get-sick ;; turtle procedure if sick-infected-time > 2 and random-float 100 < (chance-getting-sick * get-sick-factor);; [ set infected? false set sick? true set remaining-immunity 0] if sick-infected-time > duration [become-immune] end to get-infected ;; set infected? true set remaining-immunity 0 end to get-healthy ;; turtle procedure set sick? false set infected? false set remaining-immunity 0 set sick-infected-time 0 end to become-immune ;; turtle procedure set sick? false set infected? false set sick-infected-time 0 set remaining-immunity immunity-duration end to update-chance-reproduce if count turtles > 0 ;;[set chance-reproduce random-normal (100 * (reproduce-factor / count turtles) - (reproduce-factor / (count turtles * 10))) (count turtles / 10 ^ 4)] ;; The most ppl on the simulation, lesser is the intention of reproducing. Needs improvement [set chance-reproduce 1] end to set-reproduce-number ifelse maximum-sons-by-person > 0 [ set reproduce-number random (maximum-sons-by-person + 1) ] ;; random command excludes the number eg: random 4 generates 0, 1, 2 or 3. So I summed 1 to the variable. [ set reproduce-number 0 ] end to create-new-infected create-turtles 1 [ setxy random-xcor random-ycor set age random lifespan set full-life random-poisson lifespan set sick-infected-time 0 set remaining-immunity 0 update-size set-reproduce-number get-healthy get-infected ] end to create-new-sick create-turtles 1 [ setxy random-xcor random-ycor set age random lifespan set full-life random-poisson lifespan set sick-infected-time 0 set remaining-immunity 0 update-size set-reproduce-number get-healthy get-infected get-sick ] end to flee if flee-from-sick? [ find-sicks if any? sick-around [find-nearest-sick if distance nearest-sick < 2 [ bk 3 ]] ] end to find-sicks ;; Find group of sick ppl next to agent. set sick-around other turtles in-radius 5 with [ sick? ] end to find-nearest-sick ;; People Flee from nearest sick in the simulation set nearest-sick min-one-of sick-around [distance myself] end ;;Turtle counting variables are advanced. to get-older ;; turtle procedure ;; Turtles die of old age once their age exceeds the ;; lifespan (set at 50 years in this model). set age age + 1 if age > full-life [ set dead-total dead-total + 1 die ] if immune? [ set remaining-immunity remaining-immunity - 1 ] if infected? [ set sick-infected-time sick-infected-time + 1 ] if sick? [ set sick-infected-time sick-infected-time + 1 ] end ;; Turtles move about at random. to move ;; turtle procedure ifelse sick-can-move? [ rt random 100 lt random 100 ifelse age < (50 * 52) [ fd 1.0 ] [ fd 0.5 ] ] [ rt random 100 lt random 100 if sick? = false [ifelse age < (50 * 52) [ fd 1.0 ] [ fd 0.5 ] ]] end ;; If a turtle is sick, it infects other turtles on the same patch. ;; Immune turtles don't get sick. to infect ;; turtle procedure ask other turtles-here with [ not infected? and not immune? and not sick? ] [ if random-float 100 < infectiousness [ get-infected ] ] end ;; Once the turtle has been sick long enough, it ;; either recovers (and becomes immune) or it dies. to recover-or-die ;; turtle procedure if sick-infected-time > duration ;; If the turtle has survived past the virus' duration, then [ ifelse random-float 100 < chance-recover ;; either recover or die [ become-immune ] [ set dead-total dead-total + 1 set dead-sick dead-sick + 1 die ] ] end ;; If there are less turtles than the carrying-capacity ;; then turtles can reproduce. to reproduce if age > (18 * 52) and age < (55 * 52) [ if count turtles < carrying-capacity and random-float 100 < chance-reproduce and reproduce-number > 0 [ set reproduce-number reproduce-number - 1 set births births + 1 hatch 1 [ set age 1 set full-life random-normal lifespan (25 * 52) set-reproduce-number update-size set-get-sick-factor lt 45 fd 1 get-healthy ] ] ] end to update-size set size ((age / lifespan) * 1.5) + 0.5 end to update-global-variables if count turtles > 0 [ set %infected ((count turtles with [ infected? ] + count turtles with [sick?]) / count turtles) * 100 set %immune (count turtles with [ immune? ] / count turtles) * 100 set %sick (count turtles with [sick?] / count turtles) * 100 if dead-total > 0 [ set %dead (dead-sick / dead-total) * number-people ] ] end to update-display ask turtles [ if shape != turtle-shape [ set shape turtle-shape ] set color ifelse-value infected? [orange] ifelse-value sick? [ red ] [ ifelse-value immune? [ grey ] [ green ] ] if age > (55 * 52) [set shape "old"] ] end to-report immune? report remaining-immunity > 0 end to startup setup-constants ;; so that carrying-capacity can be used as upper bound of number-people slider end ; Copyright 1998 Uri Wilensky. ; See Info tab for full copyright and license.
There is only one version of this model, created almost 4 years ago by Ramon Barros.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Virus CoronaVirus.png | preview | Preview for 'Virus CoronaVirus' | almost 4 years ago, by Ramon Barros | Download |
This model does not have any ancestors.
This model does not have any descendants.