Anylogic Road Traffic Library Lane Change error - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь смоделировать систему дорог, но получаю эту ошибку:

root. [3]: автомобилю не удалось сменить полосу движения (это было необходимо для продолжения движения) или маршрут к указанному месту назначения не найден

Полный код ошибки:

java.lang.RuntimeException: root. [3]: Автомобильне удалось изменить полосу движения (это было необходимо для продолжения движения) или маршрут к указанному пункту назначения не найден по адресу com.anylogic.engine.Engine.error (неизвестный источник) по адресу com.anylogic.engine.Agent.error (неизвестный источник) по адресуcom.anylogic.engine.Utilities.error (неизвестный источник) на com.anylogic.libraries.road.Car_xjal.error (неизвестный источник) на com.anylogic.libraries.road.Car_xjal.a (неизвестный источник) на com.anylogic.иблиотекаanylogic.engine.Engine.c (Неизвестный источник)на com.anylogic.engine.Engine.gc (неизвестный источник) на com.anylogic.engine.Engine.a (неизвестный источник) на com.anylogic.engine.Engine $ i.run (неизвестный источник)

Вот мои настройки (скриншот разметки с ошибкой):

Space markup with error

Способ настройки (скриншот логики):

Road Traffic Library logic

То есть существует Select Output, который выбирает, по какой дороге автомобиль будет двигаться.Я полагаю, что outWayNotFound используется, когда агент автомобиля не может найти путь, по которому он хочет двигаться, и способ, которым я его настроил, - это если машина хочет выбрать какой-либо путь, но не находит его,просто продолжайте путь, по которому он в данный момент находится.

Я не уверен, что здесь означает ошибка, так как я думаю, что я рассмотрел здесь мои базы.Что мне не хватает?Любая помощь будет высоко оценена.

Обновление 1

Снимок экрана блок-схемы RTL при возникновении ошибки:

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Самое простое решение - дать автомобилям достаточно времени для перехода на нужную полосу движения, просто растягивая входящую дорогу: в случае выше просто продлите дорогу в южном направлении, чтобы у машин было достаточно времени, чтобы перейти на нужную полосу движения.

https://www.benjamin -schumann.com / blog / 2016/5/15 / использование библиотеки anylogic-road-traffic-for-good

0 голосов
/ 30 ноября 2018

Это интересный вопрос, потому что это одна из общих концептуальных проблем, связанных с библиотекой дорожного движения, когда вы с ней не знакомы.

Разделение вашей модели на ошибку почти всегда является ошибкойнесколько «carMoveTo» для определения траектории движения автомобиля в дорожной сети.

Если возможно, вам всегда следует избегать этого.Есть 2 причины, по которым это является проблемой:

  1. Поскольку созданное вами пересечение считается частью дороги, по которой оно пойдет первым.carMoveTo3 начинает думать, что начальная точка - это начало малой дороги, но, поскольку она находится в полосе, которая не позволяет движение, она даже не может начать движение.
  2. Потому что, когда вы запускаете новый автомобильMoveTo, если там слишком много трафика, автомобили не могут правильно рассчитать, где находятся другие автомобили, пока они находятся на перекрестке.Это приводит к тому, что автомобили сталкиваются и ведут себя хаотично, если есть движение.

Обе точки можно считать ошибкой AnyLogic, если хотите, но эта дорожная библиотека была создана, думая, что ее следует использовать в полностьюдругой путь.(По крайней мере, я так думаю)

Итак, как правильно это сделать?

Хорошо ... вам нужно иметь только 1 carMoveTo, удаляя selectOutputи определение того, по какому маршруту должен следовать автомобиль до carMoveTo или в самом carMoveTo.

И в carMoveTo вы можете определить стратегию действий, когда маршрут невозможен.

Здеськак бы я сделал вашу модель: new Model

В carMoveTo я бы выбрал road1 или road2 с вероятностью 50% (что является правильным способом выполнения выбора selectOutput, который вы используете).Я не знаю, как вы выбираете дорогу, но вы можете определить в этом месте.

carMoveTo

...