Я задаю этот вопрос со ссылкой на предыдущий вопрос, на который здесь дан ответ: Есть ли способ создать непроходимые барьеры в NetLogo?
Пользователь услужливо предложил способ создания закрытых патчей (то есть барьеров) в NetLogo. Однако, как он упомянул, агенты будут по-прежнему обладать способностью «перепрыгивать» через эти барьеры, если они приближаются с определенных углов. Это нежелательное поведение для моей модели, так как я моделирую заборы и движения, поэтому прыгать через барьеры нереально.
Я пытался изменить этот код:
ask patches in-radius 1
[if f = 1
[ask myself
[set heading towards min-one-of patches [distance myself] + 180 - random 10 + random 10 ]
]
]
уменьшением «радиуса» до единицы, в надежде, что это помешает агенту видеть достаточно далеко, чтобы пересечь барьеры, но это не работает. «F = 1» - это просто переменная патча, используемая для обозначения того, какие патчи являются заборами.
Есть ли способ предотвратить это поведение?
Вот поведение, которое я хочу - навигация вокруг барьеров
Вот поведение, которое я не хочу - прыгать барьеры, если подойти с определенных углов
Фактическая процедура перемещения, которой следуют агенты, выглядит следующим образом:
ask turtles[
let moveset patches in-radius 30 with [f = 0 and n > 0]
pen-down
let target max-one-of moveset [n]
ifelse patch-here != target
[set heading towards target]
[]
ask patches in-radius 1
[if f = 1
[ask myself
[set heading towards min-one-of patches [distance myself] + 180 - random 10 + random 10]
fd 1]