Prehistoric Seafaring Coiba
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Explore how simple boats and decision rules could enable travel between islands under variable winds, currents, and visibility.
HOW IT WORKS
Boats: Carry paddlers, have speed, heading, fatigue, and risk of capsizing. Islands: Targets and waypoints with elevation used to determine visibility range.
HOW TO USE IT
Wind and current vectors: Spatially varying fields updated stochastically each tick. Sea state: Derived from wind speed; affects capsize risk and effective speed.
THINGS TO NOTICE
Movement: Effective velocity = paddling + drift. v ⃗
boat
v ⃗ paddle + v ⃗ current + α ⋅ v ⃗ wind Wayfinding: Sightline hopping if islands are within visibility; otherwise dead-reckoning, downwind drift, or tacking. Fatigue: Reduces paddling speed over time; rest on land. Risk: Capsize probability grows with wind and wave exposure.
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
; Prehistoric Seafaring in Coiba Archipelago ; Author: Copilot + Diana Carvajal ; NetLogo 6.x breed [boats boat] breed [islands island] boats-own [ speed-base speed-eff heading fatigue endurance-hours hours-paddled alive? route-target strategy reached-target? ] islands-own [ elev name ] globals [ km-per-patch hours-per-tick visibility-km wind-heading current-heading success-count failure-count ] to setup clear-all set km-per-patch 2 ; 1 patch = 2 km set hours-per-tick 0.5 ; each tick = 30 minutes set visibility-km 30 set wind-heading 225 ; NE trade winds (blowing SW) set current-heading 240 ; Panama Bight current set success-count 0 set failure-count 0 setup-islands setup-boats reset-ticks end to setup-islands ; Approximate positions (replace with GIS coordinates if available) create-islands 1 [ setxy 0 0 set name "Coiba" set elev 416 set color green set size 2 set label name ] create-islands 1 [ setxy 10 -5 set name "Jicarón" set elev 322 set color green set size 2 set label name ] create-islands 1 [ setxy 12 -8 set name "Jicarita" set elev 180 set color green set size 2 set label name ] ; Add more islands: Cébaco, Papagayo, Canales, Montuoso... end to setup-boats let origin one-of islands with [name = "Coiba"] create-boats 20 [ setxy [xcor] of origin [ycor] of origin set color white set speed-base kmh-to-patches-per-tick 5 set speed-eff speed-base set fatigue 0 set endurance-hours 8 set hours-paddled 0 set alive? true set route-target one-of islands with [name != "Coiba"] set strategy one-of ["sight-hop" "dead-reckon" "downwind" "tack"] set heading towards route-target ] end to go if not any? boats [ stop ] ask boats with [alive?] [ navigate move check-landfall ] tick end to navigate if strategy = "sight-hop" [ let vis-radius patches-from-km visibility-km let seen islands in-radius vis-radius if any? seen [ set heading towards min-one-of seen [distance myself] ] ] if strategy = "dead-reckon" [ set heading towards route-target ] if strategy = "downwind" [ set heading wind-heading ] if strategy = "tack" [ if ticks mod 40 < 20 [ set heading (towards route-target) + 45 ] if ticks mod 40 >= 20 [ set heading (towards route-target) - 45 ] ] end to move set speed-eff speed-base * (1 - fatigue * 0.5) fd speed-eff set hours-paddled hours-paddled + hours-per-tick if hours-paddled > endurance-hours [ set fatigue fatigue + 0.05 ] end to check-landfall let nearby one-of islands in-radius 1 if nearby != nobody [ if nearby = route-target [ set reached-target? true set success-count success-count + 1 set color green die ] ] end ; Utility conversions to-report kmh-to-patches-per-tick [kmh] report (kmh / km-per-patch) * hours-per-tick end to-report patches-from-km [km] report km / km-per-patch end
There is only one version of this model, created about 7 hours ago by Diana Carvajal.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.
Download this model