NetLo go -Пусть черепахи передвигаются только по улице / конкретным c участкам определенного цвета? - PullRequest
1 голос
/ 10 июля 2020

Я новичок в NetLo go, и я хочу, чтобы мои черепахи перемещались только по улице (патчи с pcolor = gray), но я не знаю, как это сделать. У меня в модели есть улица, по которой должны двигаться черепахи. Я уже смотрел библиотеки моделей, но не нашел полезного.

Вот мой код:

extensions [gis]
globals [streets-dataset 
  roads] 
to setup
  clear-all
   gis:load-coordinate-system (word "data/" projection ".prj")
  set streets-dataset gis:load-dataset "data/Test4.shp"
  gis:set-world-envelope (gis:envelope-of streets-dataset)

  ask patches gis:intersecting streets-dataset
  [
    set pcolor grey]
  set roads patches with [pcolor = grey]
  create-turtles 5 [spawn-cars]
  reset-ticks
end

to spawn-cars
  move-to patch -336 226
end

to go
  ask turtles [if any? patches with [pcolor = grey] [set heading towards one-of patches with[pcolor = grey] fd 1]]
end

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Самый полезный пример в библиотеке моделей для этого случая - не самое очевидное название; Взгляните на модель Look Ahead Example в разделе «Примеры кода» Библиотеки моделей, чтобы получить почти то, что вам нужно, с небольшим поворотом. Черепахи в 'Look Ahead Example' могут не перемещаться на синие участки своего мира - вы можете понять, как инвертировать код в этом примере (соответствующий раздел цитируется ниже), чтобы ваши черепахи оставались на ваших дорогах эт c.

ifelse [pcolor] of patch-ahead 1 = blue
  [ lt random-float 360 ]   ;; We see a blue patch in front of us. Turn a random amount.
  [ fd 1 ]                  ;; Otherwise, it is safe to move forward.
0 голосов
/ 11 июля 2020

Вы можете попробовать установить доступные патчи, которые представляют собой серые пятна pcolor, а затем ограничить черепах только доступными патчами.

...