Я изо всех сил пытаюсь понять, как рассказать своим черепахам двигаться вперед 1 на свободный патч, как только они уже обернуты в процедуре под названием «черепаха».Перемещайте черепах на вакантный патч в NetLogo
let ahead patch-ahead 1
let vacant-ahead ahead with [not any? turtles-here ] ;;this line needs fixing
if any? turtles
[turn-turtle if vacant-ahead [fd 1]]
Он производит эту ошибку, которую я понимаю, но не могу решить, как исправить.
WITH expected input to be an agentset but got the patch (patch 1 -2) instead.
error while solute 2 running WITH
called by procedure MOVE-TURTLE
called by procedure GO
called by Button 'go'
Просто ответить на некоторые комментарии в более доступной форме: К сожалению, я не думаю, что я объяснил это очень хорошо, так как я только что капельку моего кода вне. Возможно, это имеет смысл.
to go
ask turtles
[move-turtle]
end
to move-turtle
turn-turtle
if (not any? turtles-on patch-ahead 1)
[fd 1]
end
Так что я просто хочу этот код, чтобы переместить черепах, которые были повернутые «под черепаху» в пустой патч вперед 1, предпочтительно занимают весь участок, как если бы они были «проросли». Благодаря!
Что бы вы хотели, если патч не был вакантным? –
в основном ошибка говорит, что вы не можете использовать «с» на одном патче. В вашем коде вы определяете переменную «впереди» как один патч (исправление 1), а затем вы пытаетесь использовать «с» на нем, чтобы определить переменную «vacant-ahead». Это невозможно, потому что вы не можете сделать подмножество чего-то, что не является набором. Неясно, какова цель вашего кода: что именно должна делать черепаха? – drstein
В основном на словах я просто хочу, чтобы черепаха была повернута, чтобы двигаться вперед 1 в свободную позицию. Если он не пуст, он ничего не делает. Я попытался использовать «и» вместо, например, для. «Пусть свободные (впереди) и (а не« черепахи »здесь)», но это тоже не помогает. –