Car Move To

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

В качестве цели движения могут выступать: дорогапарковкаавтобусная остановка или стоп-линия. Указанное место назначения должно находиться в той же дорожной сети, что и автомобиль. Если от текущего местоположения автомобиля к указанному месту нет пути, автомобиль покидает блок через порт outWayNotFound.

Если в качестве цели движения задана дорога, необходимо дополнительно указать направление движения. Автомобиль попытается воспользоваться кратчайшим путем, чтобы добраться до начала указанной дороги. Когда автомобиль окажется на указанной дороге, он продолжит движение по дороге до ее конца. Как только автомобиль доедет до конца дороги, его необходимо сразу удалить из модели блоком CarDispose, или он должен попасть в другой блок CarMoveTo, чтобы продолжить движение. Если в конце дороги автомобиль не может мгновенно покинуть ее, будет показано сообщение об ошибке.

Если в качестве цели движения задана парковка, автомобиль направится к этой парковке и попытается зарезервировать свободное парковочное место. Автомобили могут резервировать свободные места, только когда они подъезжают к парковке. Если зарезервировать свободное место не получается, автомобиль покидает блок через порт outWayNotFound. В случае, когда свободное место есть, автомобиль занимает парковочное место и покидает текущий блок. На парковке автомобиль может находиться до тех пор, пока его не удалят из дорожной сети или не направят к следующему месту назначения другим блоком CarMoveTo.

Если в качестве цели движения задана автобусная остановка, и эта остановка уже занята другим автомобилем, то подъезжающий транспорт остановится у остановки и будет ждать, пока она не освободится. Когда автомобиль заезжает на автобусную остановку, он паркуется и покидает блок. На автобусной остановке автомобиль может находиться до тех пор, пока его не удалят из дорожной сети, или направят к следующему месту назначения другим блоком CarMoveTo.

Если автомобилю указана стоп-линия в качестве цели движения, то возможны два варианта поведения автомобиля у стоп-линии, описание которых доступны ниже, в параметре Поведение у стоп-линии.

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

Демо модель: CarMoveTo

Параметры

Цель движения
Тип пункта назначения, к которому отправляется автомобиль: дорога, парковка, стоп-линия или автобусная остановка.
Получить значение: movesTo
Установить новое значение во время выполнения: set_movesTo(новое значение)
Допустимые значения: CarMoveTo.ROAD; CarMoveTo.PARKING_LOT; CarMoveTo.STOP_LINE; CarMoveTo.BUS_STOP
Дорога [динамический]
[Параметр виден, если выбрана опция Цель движения: Дорога] Дорога, к которой направлен автомобиль. Необходимо указать направление движения по дороге в параметре Доехать до конца полосы.
Вы увидите ошибку, если указанная Дорога не указана или отсутствует в дорожной сети.
Если автомобиль не может найти путь к указанной дороге через дорожную сеть, он покидает блок через порт outWayNotFound.
Тип значения: Road
Локальная переменная:  car - автомобиль, направляемый к дороге
Доехать до конца полосы
[Параметр виден, если выбрана опция Цель движения: Дорога] Здесь вы можете указать полосу дороги, к концу которой будет двигаться автомобиль: основного движения или встречного движения. Если указанная полоса отсутствует (к примеру, дорога с односторонним движением), будет показано сообщение об ошибке.
Получить значение: destination
Установить новое значение во время выполнения: set_destination(новое значение)
Допустимые значения: CarMoveTo.END_OF_FORWARD_LANECarMoveTo.END_OF_BACKWARD_LANE
Парковка [динамический]
[Параметр виден, если выбрана опция Цель движения: Парковка] Парковка, к которой направляют автомобиль. Автомобиль начинает движение от своего текущего местонахождения к указанной парковке. Приближаясь к парковке, он пытается зарезервировать парковочное место. Если получается, автомобиль паркуется в этом месте и покидает текущий блок CarMoveTo. Если автомобиль не может зарезервировать место на парковке (все места заняты), модель выдаст ошибку. Вы увидите ошибку, если указанная Парковка не указана или отсутствует в дорожной сети.
Если автомобиль не может найти путь к указанной парковке через дорожную сеть, он покидает блок через порт outWayNotFound.
Тип значения: ParkingLot
Локальная переменная:  car - автомобиль, направляемый к парковке
Стоп-линия [динамический]
[Параметр виден, если выбрана опция Цель движения: Стоп-линияСтоп-линия, к которой направляют автомобиль. Автомобиль начинает движение от его текущего местонахождения к указанной стоп-линии. Приближаясь к стоп-линии, автомобиль замедляется, останавливается и покидает блок CarMoveTo (действие автомобиля можно задать в опции Поведение у стоп-линии).
Вы увидите ошибку, если указанная Стоп-линия не указана или отсутствует в дорожной сети.
Если автомобиль не может найти путь к указанной стоп-линии через дорожную сеть, он покидает блок через порт outWayNotFound.
Тип значения: StopLine
Локальная переменная:  car - автомобиль, направляемый к стоп-линии
Поведение у стоп-линии
[Параметр виден, если выбрана опция Цель движения: Стоп-линия] Определяет поведение у заданной стоп-линии:
Проехать через стоп-линию - Автомобиль не останавливается перед стоп-линией и покидает блок CarMoveTo сразу после того, как проедет указанную стоп-линию. Автомобиль должен быть немедленно удален из модели или направлен к другому месту назначения блоком CarMoveTo, в противном случае, появится сообщение об ошибке.
Остановиться перед стоп-линией – Автомобиль остановится у указанной стоп-линии. Автомобиль покинет блок CarMoveTo с нулевой скоростью. В этом случае нет необходимости в немедленном удалении автомобиля из модели или направлении его к другому месту назначения.
Получить значение: stopLineBehavior
Установить новое значение во время выполнения: set_stopLineBehavior(новое значение)
Локальная переменная:  car - автомобиль, направляемый к стоп-линии
Допустимые значения: CarMoveTo.PASS_THROUGH_STOP_LINECarMoveTo.STOP_BEFORE_STOP_LINE
Автобусная остановка [динамический]
[Параметр виден, если выбрана опция Цель движения: Автобусная остановкаАвтобусная остановка, к которой направляют автомобиль. Он начинает движение от своего текущего местонахождения к указанной автобусной остановке. Приближаясь к остановке, он пытается зарезервировать место. Если получается, автомобиль заезжает на остановку и покидает текущий блок CarMoveTo. Если автомобиль не может зарезервировать место на остановке (все места заняты), он останавливается на дороге рядом с автобусной остановкой и ожидает своей очереди. Вы увидите ошибку, если указанная Автобусная остановка не указана или отсутствует в дорожной сети.
Если автомобиль не может найти путь к указанной автобусной остановке через дорожную сеть, он покидает блок через порт outWayNotFound.
Тип значения: BusStop
Локальная переменная:  car - автомобиль, направляемый к автобусной остановке
Действия
При входе [код]
Здесь вы можете задать код, который будет выполняться, когда автомобиль поступает в блок.
Локальная переменная:  car - автомобиль, который поступает в блок
При выходе [код]
Здесь вы можете задать код, который будет выполняться, когда автомобиль достигнет места назначения. К примеру, если в качестве назначения указана Дорога, код будет выполнен в конце дороги назначения.
Локальная переменная:  car - автомобиль, достигший места назначения
При ненахождении пути [код]
Код, выполняемый, когда автомобиль не может найти путь к конечной цели движения из его текущего местоположения.
Локальная переменная:  car - автомобиль, который не может найти путь

Функции

long size() - Возвращает количество автомобилей в этом блоке.

java.util.List<Agent> getCars() - Возвращает нередактируемую коллекцию, содержащую автомобили, находящиеся в данный момент внутри этого блока.

Порты

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