Netlo go код, добавляющий людей в один патч - PullRequest
2 голосов
/ 03 марта 2020

Я активно пытаюсь перепрограммировать образец модели Traffi c 2 полос, но своим собственным добавлением я добавил то, что выглядит как пешеходная дорожка с людьми внизу, но когда я запускаю код, он добавляет 4 людям иногда требуется один и тот же патч. Как мне это исправить?

to make-people
create-people 4 [setup-turtles] 
end

to setup-turtles  ;;Turtle Procedure
set shape "person"
let y-coordinates (list -8 -7 -6 -5)
let remove-index random length y-coordinates
set ycor item remove-index y-coordinates
set y-coordinates remove-item remove-index y-coordinates
set xcor 19 



end


Остальная часть кода такая же, как пример модели в Netlo go в области социальных наук под названием Traffi c 2 Lanes, с группой людей, которых он только другая разница.

1 Ответ

3 голосов
/ 03 марта 2020

Проблема в том, что каждый человек снова определяет список y-coordinates для своего собственного создания. Список не переносится с создания одного человека на другого, поэтому удаление одним человеком одного из элементов в списке не окажет никакого влияния на список, который следующий человек определяет заново при создании. Самый простой способ обойти это - определить y-coordinates как переменную global, чтобы каждый человек работал в одном и том же списке. Таким образом, когда один человек удаляет координату, следующий человек получит этот сокращенный список. Попробуйте

breed [people person]
globals [y-coordinates]

to make-people
  set y-coordinates (list -8 -7 -6 -5)
  create-people 4 [setup-turtles] 
end

to setup-turtles  ;;Turtle Procedure
  set shape "person"
  let remove-index random length y-coordinates
  set ycor item remove-index y-coordinates
  set y-coordinates remove-item remove-index y-coordinates
  set xcor 19 
  show y-coordinates
end

Оператор show покажет вам, что список y-coordinates действительно сокращается каждой новой черепахой.

Надеюсь, это поможет, Чарльз

...