На добавленной картинке видно, что вы работаете с моделью движения с одной полосой движения с очень узкой "финишной чертой", которую черепахи могут пересечь целиком за один тик.
Чтобы поймать перекрестки:
Одна вещь, которую вы могли бы сделать, это сделать более толстую «линию» на дальней стороне финишной линии. Может быть, сделать это 5 патчей в ширину. Вы можете покрасить его в желтый цвет во время тестирования и изменить на скрытый, если вы уверены, что он работает. Если черепаха находится на этом участке, она пересекла черту. Если вы сделаете его достаточно широким, его нельзя будет перепрыгнуть с любой скоростью. Это должно быть легко проверить, используя только одну черепаху и медленно управляя моделью.
Для подсчета остановленных машин:
Не видя ваш код, трудно понять, почему высчитать остановленные машины дважды. Можете ли вы опубликовать свой код или соответствующий раздел здесь? Я предполагаю, что у вас есть какой-то глобальный объект, который вы увеличиваете каждый раз, когда находите новую остановленную машину.
Менее эффективно, но гораздо надежнее позволить автомобилям иметь переменную типа "остановлено?"что вы инициализируете в false и устанавливаете в true, когда автомобиль пересекает линию. Затем в любой момент вы можете получить точное количество остановленных автомобилей с помощью
count cars with [ stopped? = true ]
. Предполагая, что у вас есть переменная my-count остановленных автомобилей, и вы хотите увидеть, когда что-то пойдет не так, вы можете вставитьстрока кода типа
if mycount != count cars with [stopped? = true] [user-message "count is wrong!"]