FinalProcess3
No preview image
Model was written in NetLogo 5.0.4
•
Viewed 139 times
•
Downloaded 19 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Click to Run Model
globals [ shape-names ;; list that holds the names of the non-sick shapes a student's turtle can have colorsl ;; list that holds the colors used for students' turtles color-names ;; list that holds the names of the colors used for students' turtles used-shape-colors ;; list that holds the shape-color pairs that are already being used max-possible-codes ;; total number of possible unique shape/color combinations ;; number of turtles that had infected? = true the last time we plotted. ] breed [fishes fish] breed [predators predator] breed [boats boat] breed [detritus detritu] boats-own [ user-id step-size base-shape ] turtles-own [ age flockmates nearest-neighbor energy] patches-own [seagrass] to startup hubnet-reset reset-ticks end to setup clear-all clear-drawing clear-patches ask patches [ set seagrass random-float 10.0 set pcolor scale-color blue seagrass 0 20 ] ask turtles [ set step-size 1 hubnet-send user-id "step-size" step-size ] create-fishes number-of-fish [ setxy random-xcor random-ycor set color red set shape "fish" set age random 3 set energy random 20 ] create-detritus 50 [ setxy random-xcor random-ycor set color green set shape "molecule hydrogen" set energy random 10 ] create-predators number-of-predator [ setxy random-xcor random-ycor set color yellow set shape "shark" set age random 5 set energy random 60 set size 2 ;; increase their size so they are a little easier to see ] if human-involoved? [ ask boats[ set shape base-shape ]] ; [ create-boats 10 [ ; setxy random-xcor random-ycor ; set color white ; set shape "boat" ; set size 2 ; ]] reset-ticks end to go if not any? turtles [ stop ] ask fishes [ ifelse flock? [ flock ;; avoid fd 1 set age age + 1 set energy energy - 1 ] [ avoid fd 1 set age age + 1 set energy energy - 2 ] check-fish-dead eat-what fish-reproduce ] ask detritus[ move ] ask predators [ chase eat-fish predator-reproduce check-if-dead set age age + 1 ] ifelse human-involoved? [ listen-clients every 0.1 [ tick ] ;; ask boats [ ;; move ;; ;; fishing ;; ] regrow-seagrass my-update-plots ] [ regrow-seagrass tick my-update-plots] end ;; ;; HubNet Procedures ;; to listen-clients while [hubnet-message-waiting?] [ hubnet-fetch-message ifelse hubnet-enter-message? [ create-new-boat ] [ ifelse hubnet-exit-message? [ remove-boat ] [ ask boats with [user-id = hubnet-message-source] [ execute-command hubnet-message-tag ] ] ] ] end to create-new-boat create-boats 1 [ set user-id hubnet-message-source set-unique-shape-and-color set label user-id set step-size 1 pen-down send-info-to-clients set-plot-y-range plot-y-min plot-y-max set-plot-x-range plot-x-min plot-x-max ] end to set-unique-shape-and-color set colorsl (list white brown green yellow (violet + 1) (sky + 1)) set shape "boat" set size 2 set color one-of colorsl end to remove-boat ask boats with [user-id = hubnet-message-source] [ die ] end to execute-command [command] if command = "step-size" [ set step-size hubnet-message stop ] if command = "up" [ execute-move 0 fishing stop ] if command = "down" [ execute-move 180 fishing stop ] if command = "right" [ execute-move 90 fishing stop ] if command = "left" [ execute-move 270 fishing stop ] end to send-info-to-clients ;; turtle procedure hubnet-send user-id "location" (word "(" pxcor "," pycor ")") end to execute-move [new-heading] set heading new-heading fd step-size send-info-to-clients end to flock ;; turtle procedure find-flockmates if any? flockmates [ find-nearest-neighbor ifelse distance nearest-neighbor < 0.75 [ separate ] [ align cohere ] ] end to find-flockmates ;; turtle procedure set flockmates other turtles in-radius 3 end to find-nearest-neighbor ;; turtle procedure set nearest-neighbor min-one-of flockmates [distance myself] end to separate ;; turtle procedure turn-away ([heading] of nearest-neighbor) 3.50 end to align ;; turtle procedure turn-towards average-flockmate-heading 5 end to cohere ;; turtle procedure turn-towards average-heading-towards-flockmates 5.75 end to turn-towards [new-heading max-turn] ;; turtle procedure turn-at-most (subtract-headings new-heading heading) max-turn end to turn-away [new-heading max-turn] ;; turtle procedure turn-at-most (subtract-headings heading new-heading) max-turn end to turn-at-most [turn max-turn] ;; turtle procedure ifelse abs turn > max-turn [ ifelse turn > 0 [ rt max-turn ] [ lt max-turn ] ] [ rt turn ] end to-report average-flockmate-heading ;; turtle procedure ;; We can't just average the heading variables here. ;; For example, the average of 1 and 359 should be 0, ;; not 180. So we have to use trigonometry. let x-component sum [dx] of flockmates let y-component sum [dy] of flockmates ifelse x-component = 0 and y-component = 0 [ report heading ] [ report atan x-component y-component ] end to-report average-heading-towards-flockmates ;; turtle procedure ;; "towards myself" gives us the heading from the other turtle ;; to me, but we want the heading from me to the other turtle, ;; so we add 180 let x-component mean [sin (towards myself + 180)] of flockmates let y-component mean [cos (towards myself + 180)] of flockmates ifelse x-component = 0 and y-component = 0 [ report heading ] [ report atan x-component y-component ] end to avoid ;; android procedure let candidates patches in-radius 1 with [ not any? predators ] ifelse any? candidates [ face one-of candidates ] [ rt (random 4) * 90 ] end to chase ifelse any? fishes in-radius 3 [ let candidates one-of fishes in-radius 3 face candidates fd ratio-speed-fishwolves set energy energy - 3] [ if random 100 < predator-fight-percent [fight ]] end to fight ifelse any? predators in-radius 1 [let candidates one-of predators in-radius 1 set energy energy - 4 face candidates fd 1 ask candidates [ die ] ] [ rt (random 4) * 90 fd 1 set energy energy - 2] end to eat-what ifelse any? detritus-here [ let candidates one-of detritus set energy energy + 2 ask candidates [ die ] ] [ eat-seagrass ] end to eat-seagrass if ( seagrass >= 1) [ set seagrass seagrass - 1 set pcolor scale-color blue seagrass 0 20 ] end to eat-fish if any? fishes in-radius 2 [ ask fishes in-radius 2 [ die ] set energy energy + 10 ] end to fishing if random 100 < 70 [ ifelse any? predators-here [ let target one-of predators ask target [ die ]] [ ask fishes in-radius 3 [ die ] ] ] end to fish-reproduce if random 100 < fish-reproduce-percent [ if age > 3 [ hatch fish-hatch-number [ set age 0 set energy random 10] die ask detritus [hatch 1] ] ] end to predator-reproduce if random 100 < predator-reproduce-percent and energy > 20[ hatch 1 [ set age 0] set energy energy - 20 ] end to check-if-dead if age > 8 or energy < 1 [ die ask detritus [hatch 2] ] end to check-fish-dead if energy < 1 [ die ask detritus [hatch 1] ] end to regrow-seagrass ask patches [ set seagrass seagrass + 0.1 if seagrass > 10 [ set seagrass 10 ] set pcolor scale-color blue seagrass 0 20 ] end to my-update-plots set-current-plot-pen "fish" plot count fishes set-current-plot-pen "shark" plot count predators * 10 ;; scaling factor so plot looks nice set-current-plot-pen "seagrass" plot sum [seagrass] of patches / 50 ;; scaling factor so plot looks nice end end to boat-move rt random 360 forward 2 end to move rt random 360 forward 1 end
There is only one version of this model, created over 11 years ago by Yun Zhou.
This model does not have any ancestors.
This model does not have any descendants.
Yun Zhou
What should I upload for the Hubnet clients? (Question)
Is the HTML file produced by the project should be uploaded?
Posted over 11 years ago
David Weintrop
HTML?
I'm not sure what HTML file you're talking about? I think the answer is no, but I'm not sure, where did the HTML file come from? did you generate it? what is it called?
Posted over 11 years ago