Aly
Aly

Reputation: 11

turtles walk to the wall instead of door in netlogo

I write a code that evacuates turtles to the only exit door. But as I noticed that the turtles are divided into several groups. There are turtles that walk toward the exit door and the others walk to the nearest wall. I want to create a simulation that all the turtles will go to the exit doors. Here's my code. Can anyone advise, please?

globals [
  ;wall
  door
  goal-x goal-y
  n
]

patches-own [ path? ]

turtles-own [
  direction
  fast?
  other-nearby
]

to setup
  clear-all
  setup-patches
  set-default-shape turtles "person"
  ask n-of number-room1 patches with [pxcor < 47 and pxcor > 0 and pycor < 45 and pycor > 0 and pcolor = black]
  [
    sprout 1 [
      facexy 41 45
      set direction 1
      set color yellow
    ]
  ]
  reset-ticks
end

to setup-patches
  draw-wall
  draw-exit
  
  ask patch 21 41 [
    set plabel-color white
    set plabel "Room1"
  ]
end

to draw-wall
  ask patches with [pxcor <= 38 and pxcor >= 0 and pycor = 45]
    [set pcolor blue]
  ask patches with [pxcor <= 47 and pxcor >= 44 and pycor = 45]
    [set pcolor blue]
  ask patches with [pxcor <= 47 and pxcor >= 0 and pycor = 0]
    [set pcolor blue]
  ask patches with [pxcor = 0 and pycor <= 45 and pycor >= 0]
    [set pcolor blue]
  ask patches with [pxcor = 47 and pycor <= 45 and pycor >= 0]
    [set pcolor blue]
end

to draw-exit
  ask patches with [pxcor <= 43 and pxcor >= 39 and pycor = 45]
    [set pcolor green]
end

to go
  if ticks >= 100 [stop]
  ask turtles [walk]
  tick
end

to walk
  let room1 patches with [pxcor < 47 and pxcor > 0 and pycor < 45 and pycor > 0]
  ;let exitpoint patches with [pxcor < 46 and pxcor > 33 and pycor < 45 and pycor > 32]
  
  ask turtles-on room1
  [face one-of patches with [pxcor <= 43 and pxcor >= 39 and pycor = 47]
    fd 0.01
  ]
  ;ask turtles-on exitpoint
  ;[face one-of patches with [pxcor <= 42 and pxcor >= 38 and pycor = 47]
  ;  fd 0.01
  ;]
end

Upvotes: 0

Views: 108

Answers (1)

bee
bee

Reputation: 41

You can try these 2 steps to make it work:

  1. Check the setting of your simulation (besides the simulation speed slider on the top right side), make sure to uncheck world wrap horizontally & world wrap vertically. If it is still checked, it means that the turtles can go beyond your vertical/horizontal boundary and appear on the other side. That's why some group of turtles is moving towards the wall, they assume they can pass the boundary and arrive at the exit, while they will be stuck there because of your code constraint.

  2. After making sure that the setting is okay, if you still have some of them stuck in the upper side of the wall near the exit, you can try to replace your to walk code with this:

    to walk
       set heading towards one-of patches with [pcolor = green]
       fd 1
    end
    

Hopefully, this will help you solve the problem

Upvotes: 2

Related Questions