Foot and Mouth
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
(a general understanding of what the model is trying to show or explain)
HOW IT WORKS
(what rules the agents use to create the overall behavior of the model)
HOW TO USE IT
(how to use the model, including a description of each of the items in the Interface tab)
THINGS TO NOTICE
(suggested things for the user to notice while running the model)
THINGS TO TRY
(suggested things for the user to try to do (move sliders, switches, etc.) with the model)
EXTENDING THE MODEL
(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.)
NETLOGO FEATURES
(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)
RELATED MODELS
(models in the NetLogo Models Library and elsewhere which are of related interest)
CREDITS AND REFERENCES
(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links)
Comments and Questions
breed [animals animal]
breed [trucks truck]
breed [farms farm]
globals
[%animals-infected
repeat-again
tick-in-simulation
]
turtles-own
[ infected?
exposed?
exposured_length
t_farmcode ] ;; if true, the turtle is infectious
patches-own
[farm?
farm_code]
farms-own
[make-farm?]
to setup
__clear-all-and-reset-ticks
;;set road
ask patches
[
set pcolor brown + 3
if (pxcor >= 10 and pxcor <= 18) or (pycor >= 8 and pycor <= 10) [ set pcolor gray + 1 ]
if (pxcor >= -15 and pxcor <= -13) or (pycor >= 8 and pycor <= 10) [ set pcolor gray + 1 ]
if (pxcor >= -15 and pxcor <= -13) or (pycor >= -18 and pycor <= -16) [ set pcolor gray + 1 ]
; if (pxcor >= -24 and pxcor <= -23) and (pycor >= 1 and pycor <= 7) [ set pcolor gray ]
;;draw road lines
if ((pycor = 9) and ((pxcor mod 3) = 0)) [ set pcolor yellow + 2 ]
if ((pxcor = 14) and ((pycor mod 4) = 0)) [ set pcolor yellow + 2 ]
if ((pycor = -17) and ((pxcor mod 3) = 0)) [ set pcolor yellow + 2 ]
if ((pxcor = -14) and ((pycor mod 4) = 0)) [ set pcolor yellow + 2 ]
]
;;set fertilizer
ask patches with [ (pxcor >= 7 and pxcor <= 9) and (pycor >= 8 and pycor <= 10)] [ set pcolor white ]
ask patches with [ (pxcor >= 19 and pxcor <= 21) and (pycor >= 8 and pycor <= 10)] [ set pcolor white ]
ask patches with [ (pxcor >= -15 and pxcor <= -13) and (pycor >= 8 and pycor <= 10)] [ set pcolor white ]
ask patches with [ (pxcor >= -15 and pxcor <= -13) and (pycor >= -18 and pycor <= -16)] [ set pcolor white ]
ask patches with [ (pxcor >= 7 and pxcor <= 9) and (pycor >= -18 and pycor <= -16)] [ set pcolor white ]
ask patches with [ (pxcor >= 19 and pxcor <= 21) and (pycor >= -18 and pycor <= -16)] [ set pcolor white ]
setup-livestock
setup-animals
setup-trucks
setup-infect
end
to setup-livestock
create-farms Farm-Density
let farm-list [self] of farms
foreach farm-list [ livestock ->
ask livestock [
set infected? false
set exposed? false
set exposured_length false
move-to one-of patches with [
pxcor > -28 and pxcor < 28 and pycor > -28 and pycor < 28 and
pcolor = brown + 3 and
mean [pcolor] of patches in-radius 2 = brown + 3 and
count patches in-radius 3 with [pcolor = gray + 1] >= 1 and
count farms in-radius 3 = 0]
ask patch-here [set pcolor [color] of myself set farm? 1 set farm_code [who] of myself]
ask neighbors [set pcolor [color] of myself set farm? 1 set farm_code [who] of myself]
set make-farm? 1
set hidden? true
]
]
end
to setup-animals
create-animals 200
[
set color brown + 1
set size 0.8
set label-color black
set exposed? false
set infected? false
let r random 2
ifelse r = 0 [set shape "turtle"][set shape "cow"]
setxy random-xcor random-ycor ]
ask animals [ifelse [farm?] of patch-here != 1 [move-to one-of patches with [farm? = 1]]
[setxy xcor ycor]
set t_farmcode [farm_code] of patch-here]
end
to setup-infect
ask one-of animals with [ [farm?] of patch-here = 1] [set color red set infected? true]
end
to setup-trucks
set-default-shape trucks "truck"
create-trucks 50
[
set color 112
set size 1
set exposed? false
set infected? false
move-to one-of patches with [pcolor = gray + 1 ]
]
end
;---------------------------------------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------------------------------------
to go ;1TYM
if (all? animals [infected? = true]) [stop]
move-around
exposure
infect
move-trucks
wash-virus
cum-plot
update-plot
tick
end
;;;;;;;;;;;;;;;;;;;;;
to move-around
ask animals [
ifelse [farm?] of patch-here != 1
[ move-to one-of patches with [farm? = 1 and farm_code = [t_farmcode] of myself]]
[ move-to one-of patches with [farm? = 1 and farm_code = [t_farmcode] of myself]
set heading random 360 ]]
end
to exposure
ask turtles with [infected? or exposed?][
let prey one-of animals in-radius 2
if prey != nobody
[ ask prey [
if (random-float 100 < prob-of-infection) and ((-100)/ 53 * temperature >= random-float 10 )
[ set color 117 set exposed? true]]]]
end
to infect
let incubation (random 20)
ask turtles with [exposed? = true]
[ if exposured_length > incubation [
set color red set infected? true]
set exposured_length exposured_length + 1]
ask trucks [
let #infected animals in-radius 3 with [infected? = true]
if count #infected > 0
[ set infected? true set color red ]
]
;; Truck transmission
ask trucks with [infected? = true] [
let prey one-of turtles in-radius 3
if prey != nobody [ set color red set infected? true]]
end
to move-trucks
if (highway-effect = "highway")
[
ask trucks with[pxcor >= 15 and pxcor <= 16] [set heading ( 0 ) fd 1.5] ;Highway heading north
ask trucks with[pxcor >= 17 and pxcor <= 18] [set heading ( 0 ) fd 1]
ask trucks with[pxcor >= 12 and pxcor <= 13] [set heading ( 180 ) fd 1.5] ;Highway heading south
ask trucks with[pxcor >= 10 and pxcor <= 11] [set heading ( 0 ) fd 1.5]
ask trucks with[pxcor = 14] [set heading ( 0 + 180 * random 2 ) fd 1.5] ;Highway joongangsun
]
if (highway-effect = "road")
[
ask trucks with[pxcor >= 15 and pxcor <= 18] [set heading ( 0 ) fd 1] ;Highway heading north
ask trucks with[pxcor >= 10 and pxcor <= 13] [set heading ( 180 ) fd 1] ;Highway heading south
ask trucks with[pxcor = 14] [set heading ( 0 + 180 * random 2 ) fd 1] ;Highway joongangsun
]
; National Road(West Sero)
ask trucks with[pxcor = -13] [set heading ( 0 ) fd 1] ;Upper national road
ask trucks with[pxcor = -15] [set heading ( 180 ) fd 1] ;Upper national road
ask trucks with[pxcor = -14] [set heading ( 0 + 180 * random 2 ) fd 1] ; Joongangsun
; National Road(North)
ask trucks with[pycor = 8] [set heading ( (90)) fd 1] ;Lower national roady
ask trucks with[pycor = 10] [set heading ( 270 ) fd 1] ;Upper national road
ask trucks with[pycor = 9] [set heading ( 90 + 180 * random 2 ) fd 1] ; Joongangsun
; National Road(South)
ask trucks with[pycor = -18] [set heading ( (90)) fd 1] ;Lower national roady
ask trucks with[pycor = -16] [set heading ( 270 ) fd 1] ;Upper national road
ask trucks with[pycor = -17] [set heading ( 90 + 180 * random 2 ) fd 1] ; Joongangsun
; Junction
ask trucks with[pxcor >= -15 and pxcor <= -13 and pycor >= 8 and pycor <= 10] [set heading (random 4 * 90 ) fd 1]
ask trucks with[pxcor >= 10 and pxcor <= 18 and pycor >= 8 and pycor <= 10] [set heading (random 4 * 90 ) fd 1]
ask trucks with[pxcor >= 10 and pxcor <= 18 and pycor >= -18 and pycor <= -16] [set heading (random 4 * 90 ) fd 1]
ask trucks with[pxcor >= -15 and pxcor <= -13 and pycor >= -18 and pycor <= -16] [set heading (random 4 * 90 ) fd 1]
end
to wash-virus
if wash-virus?
[ask trucks
[if infected? = true
[if pcolor = white
[if random-float 100 < cure-rate [set color 112]]]]
]
end
to update-plot
set-current-plot "FMD Status"
set-current-plot-pen "susceptible"
plot (( count animals with [(color != red) and (color != 117)] ))
set-current-plot-pen "exposed"
;plot (( count cows with [exposed? = true] ) + ( count pigs with [exposed? = true]))
set-current-plot-pen "infected"
end
to cum-plot
set-current-plot "Cumulative plot"
set-current-plot-pen "infected"
plot (count animals with [infected? = true] )
end
to-report %infected
report (count animals with [infected? = true])
/ (count animals) * 100
end
;Copyright 2013 Hyesop Shin
There is only one version of this model, created 2 months ago by Hyesop Shin.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.
Download this model