Beetle Navigation

Beetle Navigation preview image

1 collaborator

Default-person Jake Hofgard (Author)

Tags

biology 

Tagged by Jake Hofgard 9 months ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.0.3 • Viewed 162 times • Downloaded 4 times • Run 0 times
Download the 'Beetle Navigation' modelDownload this modelEmbed this model

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

breed [ boxes box ]

breed [ beetles beetle ]

beetles-own [
  beetle-home
  distance-home
  moving-timer
  time-reorienting
  x-position
  y-position
]

to setup
  clear-all
  ask patches [ set pcolor green + (random-float 0.8) - 0.4 ]
  setup-beetle
  setup-obstacles
  reset-ticks
end 

to setup-beetle
  create-beetles 1 [
    set shape "bug"
    set color black
    set size 3.5
  ]
  ask beetles [
    setxy -24 0
    facexy 25 0
    set moving-timer number-steps
    set time-reorienting reorient-timer
    set beetle-home patch-here
    ifelse show-pen?
      [ pen-down ]
      [ pen-up ]
  ]
end 

to setup-obstacles
  ask n-of number-obstacles patches with [
    distancexy -25 0 > 4 and abs pxcor < (max-pxcor - 5) and
    abs pycor < (max-pycor - 5)
  ] [
    sprout-boxes 1 [
      set shape "circle"
      set size size-obstacles
      set color 1.5
    ]
  ]
end 

to go
  if all? beetles [ xcor >= 24 ]
  [ stop ]
  ask beetles [
  ifelse moving-timer >= 1
    [ move-beetles ]
    [ reorient ]
  ]
  tick
end 

to move-beetles
  ask beetles [
    set heading random-float step-angle + 90
    fd 1
    set distance-home distance beetle-home
    set moving-timer moving-timer - 1
    if count boxes in-cone (size-obstacles) 180 > 0
    [ go-another-direction ]
    if abs pxcor >= 25 or abs pycor >= 24
    [ set heading random 360
      bk 1 ]
  ]
end 

to go-another-direction
  ask beetles [
    let target one-of boxes in-radius size-obstacles
    set x-position [ xcor ] of target
    set y-position [ ycor ] of target
    ifelse step-angle < 90 [
      ifelse y-position > ycor
      [ lt random 45
        bk 1
        lt random 90
        bk 1 ]
      [ rt random 45
        bk 1
        rt random 90
        bk 1 ]
    ]
    [
      if x-position < xcor and y-position < ycor
      [ case-one ]
      if x-position > xcor and y-position > ycor
      [ case-one ]
      if x-position > xcor and y-position < ycor
      [ case-two ]
      if x-position < xcor and y-position > ycor
      [ case-two ]
    ]
  ]
end 

to case-one
  ask beetles [
    bk 1
    rt random 15
    bk 1
]
end 

to case-two
  ask beetles [
    bk 1
    lt random 15
    bk 1
]
end 

to reorient
  ask beetles [
    set shape "rotating bug"
    set color 3
    set heading heading + ( 1 / reorient-timer ) * 360
    set time-reorienting time-reorienting - 1
    if time-reorienting < 1 [
      set heading 90
      set shape "bug"
      set color black
      set moving-timer number-steps
      set time-reorienting reorient-timer
    ]
  ]
end 

There are 9 versions of this model.

Uploaded by When Description Download
Jake Hofgard 9 months ago Changes default speed Download this version
Jake Hofgard 9 months ago Updated Info Download this version
Jake Hofgard 9 months ago Information added Download this version
Jake Hofgard 9 months ago Obstacle navigation corrected Download this version
Jake Hofgard 9 months ago Syntax Error Corrected Download this version
Jake Hofgard 9 months ago Deleted unnecessary code Download this version
Jake Hofgard 9 months ago Obstacle navigation partially fixed Download this version
Jake Hofgard 9 months ago Setup button fixed Download this version
Jake Hofgard 9 months ago Initial upload Download this version

Attached files

File Type Description Last updated
Beetle Navigation.png preview Preview for 'Beetle Navigation' 9 months ago, by Jake Hofgard Download

This model does not have any ancestors.

This model does not have any descendants.