# COVID-19 Educational Model

Model was written in NetLogo 6.1.0
•
Viewed 18 times
•
Downloaded 0 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

globals [dt school housepatch gym library cafeteria hospital dining-halls playground num-students clock num-houses num-trees max-infected transmissibility infection-radius R0 R0-avg length-of-infection mean-onset-time mean-recovery-time ] breed[houses house] breed[trees tree] breed [students student] breed [schoolso schoolo] breed [libraryso libraryo] breed [gyms gymnasium] breed [hosps hosp] breed [cafs caf] breed [pebbles pebble] students-own[ target infected? exposed? immune? recovered? hospitalized? infectedcount count-down infectcount-down dorm contacts-per-tick masked? ] to setup clear-all setup-circle set num-students 200 set num-houses 25 set num-trees 8 ask patches with [pxcor > 5 and pxcor < 180 and pycor < 537 and pycor > 397] [set pcolor [255 255 255]] ask patches with [pxcor > 5 and pxcor < 180 and pycor < 744 and pycor > 582] [set pcolor [38 115 0]] ask patches with [pxcor > 5 and pxcor < 180 and pycor < 352 and pycor > 212] [set pcolor [168 0 132]] ask patches with [pxcor > 5 and pxcor < 180 and pycor < 167 and pycor > 5] [set pcolor brown + 3] ask patches with [pxcor > 287 and pxcor < 462 and pycor < 537 and pycor > 397] [set pcolor [255 170 0]] ask patches with [pxcor > 287 and pxcor < 462 and pycor < 167 and pycor > 5] [set pcolor brown + 3] ask patches with [pxcor > 287 and pxcor < 462 and pycor < 744 and pycor > 582] [set pcolor brown + 3] ask patches with [pxcor > 287 and pxcor < 462 and pycor < 352 and pycor > 212] [set pcolor brown + 3] ask patches with [pxcor > 570 and pxcor < 745 and pycor < 352 and pycor > 212] [set pcolor brown + 3] ask patches with [pxcor > 570 and pxcor < 745 and pycor < 537 and pycor > 397] [set pcolor [0 112 255]] ask patches with [pxcor > 570 and pxcor < 745 and pycor < 167 and pycor > 5] [set pcolor [200 191 231]] set cafeteria patches with [pcolor =[255 255 255]] set school patches with [pcolor = [255 170 0]] set playground patches with [pcolor = [38 115 0]] set gym patches with [pcolor = [168 0 132]] set library patches with [pcolor = [0 112 255]] set housepatch patches with [pcolor = brown + 3] set hospital patches with [pcolor = [200 191 231]] draw-sidewalk draw-roads draw-trees draw-houses ask turtle 2[ create-link-to turtle 1 [set color white] show link 1 2 ] ask patches with [pxcor > 570 and pxcor < 745 and pycor < 744 and pycor > 582] [set pcolor grey] set clock patches with [pcolor = grey] ;; Assign values for infection parameters set transmissibility 0.00075 set infection-radius 10 / sqrt(200) * sqrt(num-students) set length-of-infection 336 ;; 2 ticks = 30 min :: 7 * 24 * 2 set R0-avg 0 set mean-onset-time 4 set mean-recovery-time 10 populate-students setup-infected draw-cafeteria draw-hospital draw-gym draw-school draw-library reset-ticks end to draw-houses ask patches with [pcolor = brown + 3] [ if count neighbors with [pcolor = brown + 3] = 8 and not any? turtles in-radius 50 [ sprout-houses 1 [ set shape one-of ["house" "house bungalow" "house ranch" "house colonial" "house efficiency" "house two story"] set size 40 stamp ] ] ] ask patches with [pcolor = brown + 3] [ if count neighbors with [pcolor = brown + 3] = 8 and not any? turtles in-radius 35[ if random 100 > 90 [ sprout-trees 1 [ set shape one-of ["tree" "tree pine"] set size 35 set color green stamp ] ] ] ] ask houses [die] ask trees [die] end to draw-trees ask patches with [pcolor = [38 115 0]] [ if count neighbors with [pcolor = [38 115 0]] = 8 and not any? turtles in-radius 50[ sprout-trees 1 [ set shape one-of ["tree" "tree pine"] set size 35 set color green stamp ] ] ] ask trees [die] end to draw-school ask school [ if count schoolso < 1[ sprout-schoolso 1[ set xcor 375 set ycor 445 set shape "school" set color orange set heading 0 set size 220 ] ] ] end to draw-library ask library [ if count libraryso < 1[ sprout-libraryso 1[ set xcor 655 set ycor 455 set heading 0 set shape "building institution" set color blue set size 140 ] ] ] end to draw-hospital ask hospital [ if count hosps < 1[ sprout-hosps 1[ set xcor 655 set ycor 75 set heading 0 set shape "hospital" set size 195 ] ] ] end to draw-gym ask gym [ if count gyms < 1[ sprout-gyms 1[ set xcor 90 set ycor 250 set heading 0 set shape "gym" set size 180 ] ] ] end to draw-cafeteria ask cafeteria [ if count cafs < 1[ sprout-cafs 1[ set xcor 90 set ycor 430 set heading 0 set shape "cafeteria" set size 210 ] ] ] end to draw-roads ;create crossroads ask patches with [(pxcor > 210 and pxcor < 257) or (pxcor > 492 and pxcor < 540) ] [ set pcolor grey sprout 1 [ set shape "road2" set color grey set heading 90 set size 20 stamp die ] ] ask patches with [(pycor < 567 and pycor > 552) or (pycor < 382 and pycor > 367) or (pycor < 197 and pycor > 182) ] [ set pcolor grey sprout 1 [ set shape "road2" set color grey set heading 90 set size 20 stamp die ] ] ; ask patches with [(pxcor > 230 and pxcor < 235) or (pxcor > 515 and pxcor < 520) and pycor mod 83 = 0 and meaning != "crossroad"] [ ; set pcolor grey ; sprout 1 [ ; set shape "road" ; set color grey ; set heading 90 ; set size 15 ; ; stamp die ; ] ; ] ; ask patches with [(pycor > 557 and pycor < 562) or (pycor > 372 and pycor < 377) or (pycor > 187 and pycor < 192) and pxcor mod 105 = 0 and meaning != "crossroad"] [ ; set pcolor grey ; sprout 1 [ ; set shape "road" ; set color grey ; set heading 0 ; set size 15 ; ; stamp die ; ] ; ] end to draw-sidewalk ask patches with [pcolor = black] [ ; sprout-pebbles 1 [ ; set shape "tile stones" ; set size 15 ; set color 36 ; stamp ;die ; ] set pcolor brown + 2 ] ; ask pebbles[die] end to setup-infected ask n-of Initially-Infected students [ set exposed? false set infected? true set color [255 0 0] ] end to setup-circle ;;clear-all set-default-shape turtles "circle" ;; turtles should be evenly spaced around the circle crt 1 [make-sun-moon-start] crt 1 [make-center] let center clock create-ordered-turtles 12 [ move-to patch 660 665 set size 4 ;; easier to see set color white fd 50 rt 90 ] crt 1 [make-top] end to make-sun-moon-start set shape "moon" set color white set size 40 set xcor 725 set ycor 725 end to make-sun-moon if ticks = 28[ set shape "sun" set color yellow ] if ticks = 76 [ set shape "moon" set color white ] if (ticks - 28) mod 96 = 0 and ticks != 0 [ set shape "sun" set color yellow ] if (ticks - 76) mod 96 = 0 and ticks != 0 [ set shape "moon" set color white ] set size 40 set xcor 725 set ycor 725 end to make-top set shape "circle" set color white set size 3 set xcor 660 set ycor 715 end to make-center set size 3.5 set shape "circle" set color yellow set xcor 660 set ycor 665 end to move-hour-hand ;fd ( pi * 50 / 180) * (480 / 60) ;rt 480 / 60 let theta 6.25 * 180 / ( pi * 50 ) rt theta / 2 fd 6.25 rt theta / 2 end to go ask turtle 2 [ pen-down move-hour-hand ] ask turtle 0 [ make-sun-moon ] if stay-at-home? [ ask students [move-to one-of housepatch] ] if quarantine? [ ask students with [infected?][move-to one-of housepatch] ] ;;stop if everyone or no one is infected if (count students with [infected? and not hospitalized?] = 0) or (count students with [infected?] = num-students) [stop] infect-susceptibles ask students with [exposed? and count-down > 0][ set count-down count-down - 1 ] ask students with [exposed? and count-down <= 0][ ifelse (random-float 1 < 0.03)[ hospitalize ] [infect] ] ask students with [infected? and infectcount-down >= 0][ if infectcount-down = 0[ setupinfect-timer ] set infectcount-down infectcount-down - 1 ] ask students with [infected? and hospitalized? = false and infectcount-down <= 0][ recover ] move-students student-schedule calculate-max-infected tick end to setupexpose-timer set count-down 288 end to setupinfect-timer set infectcount-down 1440 end to infect-susceptibles ask students with [not immune? and not infected? and not exposed? and not recovered?] [ let infected-neighbors-no-masks (count other students with [infected? and not masked?] in-radius infection-radius) let infected-neighbors-masked (count other students with [infected? and masked?] in-radius infection-radius) let effective-beta transmissibility if social-distancing? = false [set effective-beta 2 * transmissibility] if patch-here = playground [set effective-beta 2 * effective-beta ] ;; Formula of transmissibility to avoid the probability exceeding 1 if (random-float 1 < (1 - ((1 - effective-beta) ^ (infected-neighbors-no-masks)) * ((1 - 0.2 * effective-beta) ^ (infected-neighbors-masked)))) [ expose ] ] end to expose setupexpose-timer set exposed? true set color [225 175 0] end to infect setupinfect-timer set exposed? false set infected? true set color [255 0 0] end to hospitalize set exposed? false set infected? true set hospitalized? true set color blue move-to one-of hospital end to recover set infected? false set recovered? true set immune? true set color gray end to student-schedule let fourth-of-students floor num-students / 4 let half-of-students floor num-students / 2 if ticks mod 97 = 0 [ ask students [ set masked? false ] ] if ticks mod 97 = 0 [ ask n-of (floor %mask-compliance * num-students / 100) students [ set masked? true ] ] ;;1 tick = 15min ;;4 ticks = 1hr ;;96 ticks = 1 day ;;8 am School if ticks = 32 or ((ticks - 32) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false ][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of school ] ] ] if ticks = 32 or ((ticks - 32) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true ][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to one-of school ] ] ] ;;12 pm lunch if ticks = 48 or ((ticks - 48) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to one-of cafeteria ] ] ] if ticks = 48 or ((ticks - 48) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of cafeteria ] ] ] if ticks = 54 or ((ticks - 54) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of school ] ] ] if ticks = 54 or ((ticks - 54) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to one-of school ] ] ] ;;2 pm activities if ticks = 56 or ((ticks - 56) mod 96 = 0 and ticks != 0) [ let half (count students with [infected? = false]) / 2 ask n-of half students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of gym ] ] ask n-of half students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of playground ] ] ] if ticks = 56 or ((ticks - 56) mod 96 = 0 and ticks != 0) [ let half (count students with [infected? = true]) / 2 ask n-of half students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to one-of gym ] ] ask n-of half students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to one-of playground ] ] ] ;;4 pm back home if ticks = 64 or ((ticks - 64) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to dorm ] ] ] if ticks = 64 or ((ticks - 64) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false[ move-to dorm ] ] ] if ticks = 68 or ((ticks - 68) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of housepatch ] ] ] if ticks = 68 or ((ticks - 68) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and quarantine? = false [ move-to one-of housepatch ] ] ] if ticks = 70 or ((ticks - 70) mod 96 = 0 and ticks != 0) [ let half (count students with [infected? = false]) / 2 ask n-of half students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to one-of library ] ] ] if ticks = 70 or ((ticks - 70) mod 96 = 0 and ticks != 0) [ let half (count students with [infected? = true]) / 2 ask n-of half students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false [ move-to one-of library ] ] ] if ticks = 78 or ((ticks - 78) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to dorm ] ] ] if ticks = 78 or ((ticks - 78) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false [ move-to dorm ] ] ] if ticks = 81 or ((ticks - 81) mod 96 = 0 and ticks != 0) [ ask students with [infected? = false][ if stay-at-home? = false and hospitalized? = false and (quarantine? = false or infected? = false)[ move-to dorm ] ] ] if ticks = 81 or ((ticks - 81) mod 96 = 0 and ticks != 0) [ ask students with [infected? = true][ if stay-at-home? = false and hospitalized? = false and quarantine? = false [ move-to dorm ] ] ] end to move-students ;; Global procedure to move students ;; Procedue to make the students perform random walk ask students with [hospitalized? = false] [ if quarantine? = false or infected? = false [ let color-here [pcolor] of patch-here set target one-of patches in-cone 3 180 with [ pcolor = color-here] motion if pcolor != color-here [motion]] ] end to motion ;; Turtle procedure to perform random walk rt random 30 - 15 if target != nobody [ face target move-to target ] fd random 0.05 end to populate-students ;; Procedure to create agents for students ask n-of num-students housepatch [ sprout-students 1] ask students [ set size 10 set shape "person" set color green set dorm patch-here set infected? false set immune? false set exposed? false set contacts-per-tick 0 set masked? false set recovered? false set hospitalized? false ] end to calculate-max-infected let x (count students with [infected?]) if x > max-infected [set max-infected x] end

There is only one version of this model, created 7 days ago by Alexandra LaMattina.

## Attached files

File | Type | Description | Last updated | |
---|---|---|---|---|

COVID-19 Educational Model.png | preview | Preview for 'COVID-19 Educational Model' | 7 days ago, by Alexandra LaMattina | Download |

This model does not have any ancestors.

This model does not have any descendants.