AnyLogic
Развернуть
Размер шрифта

CarSource

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

Аналогично блоку Source, автомобили могут создаваться согласно:

  • заданной интенсивности
  • времени между прибытиями
  • изменяющейся во времени интенсивности, заданной с помощью расписания
  • расписанию, задающему точные времена и количество прибывающих автомобилей
  • вызову функции блока inject()

Количество создаваемых автомобилей можно ограничить (выбрав опцию Ограниченное кол-во прибытий и задав Максимальное кол-во прибытий).

Чтобы создавать автомобили заданного вами типа, выберите этот тип в параметре Новый автомобиль.

Если в качестве места появления автомобиля указана дорога, необходимо дополнительно указать направление дороги. Автомобили будут появляться в начале указанной дороги, после чего будут начинать движение в указанном направлении. По умолчанию, выбран параметр Случайная полоса, поэтому автомобили будут появляться на случайных полосах дороги (если на указанной дороге больше одной полосы в выбранном направлении). Можно явно указать номер полосы, на которой будут появляться автомобили. Для этого необходимо снять флажок с опции Случайная полоса и указать номер в параметре Номер полосы.

Если в качестве места появления автомобиля указана дорога, в дорожную сеть он сможет попасть, только если на полосе впереди будет достаточно места. Чем больше скорость автомобиля, тем длиннее нужен путь для добавления в дорожную сеть. Автомобили, которые не могут попасть в дорожную сеть мгновенно, не создаются блоком CarSource вообще. Это может привести к тому, что реальное количество автомобилей, созданных блоком в ходе выполнения модели, будет ниже заданной Интенсивности прибытия.

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

Демо-модель: CarSource Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Прибывают согласно
Определяет, будут ли автомобили прибывать согласно:
Интенсивности — автомобили прибывают согласно заданной интенсивности прибытия (эквивалентной экспоненциально распределенному времени между прибытиями со средним значением, равным 1/Интенсивность прибытия).
Времени между прибытиями — время между двумя последовательными прибытиями определяется заданным выражением (используйте эту опцию для периодической генерации автомобилей или для генерации автомобилей с интервалами времени, не подчиняющимся экспоненциальному закону распределения).
Таблице базы данных — агенты прибывают согласно данным таблицы БД, которую пользователь указывает в параметре Таблица базы данных. Выберите столбец, содержащий моменты прибытий из раскрывающегося списка Столбец дат прибытий. Блок будет создавать одного агента для каждой записи данных в указанной таблице.
Расписанию интенсивностей — автомобили генерируются согласно указанному расписанию, в котором задано, как интенсивность прибытия автомобилей изменяется с течением времени.
Расписанию прибытий — автомобили генерируются согласно указанному расписанию, в котором заданы моменты появления автомобилей и количество автомобилей, прибывающее в каждый указанный в расписании момент времени.
Вызовам функции inject()  — автомобили создаются не автоматически, а только при вызове функции inject().
Имя параметра: arrivalType
Изменить значение: set_arrivalType(новое значение)
Допустимые значения:
CarSource.RATE
CarSource.INTERARRIVAL_TIME
CarSource.RATE_SCHEDULE
CarSource.ARRIVAL_SCHEDULE
CarSource.MANUAL
Интенсивность прибытия
[Параметр виден, если выбрана опция Прибывают согласно: Интенсивности]
Интенсивность прибытия автомобилей. Если значение интенсивности становится равным нулю, то следующее появление автомобиля не будет запланировано до тех пор, пока значение интенсивности не примет положительное значение.
Синтаксис: double rate
Изменить значение: set_rate(новое значение)
Время между прибытиями
[Параметр виден, если выбрана опция Прибывают согласно: Времени между прибытиями]
Выражение, вычисляющее время до прибытия следующего автомобиля.
Тип значения: double
Таблица базы данных
[Параметр виден, если выбрана опция Поезда прибывают согласно: Таблице базы данных]
Выберите таблицу базы данных, которая содержит данные о прибытиях агентов.
Столбец дат прибытий
[Параметр виден, если выбрана опция Поезда прибывают согласно: Таблице базы данных]
Выберите столбец Таблицы базы данных, который содержит отметки времени прибытия агентов.
Расписание прибытий
[Параметр виден, если выбрана опция Прибывают согласно: Расписанию прибытий]
Имя расписания, в котором заданы моменты появления автомобилей. Обычно в столбце значения в расписании будут введены значения "1", поскольку в каждый момент времени в модели должна будет появиться одна машина.
Синтаксис: Schedule<Integer> arrivalSchedule
Изменить значение: set_arrivalSchedule(новое значение)
Расписание интенсивностей
[Параметр виден, если выбрана опция Прибывают согласно: Расписанию интенсивностей]
Имя расписания, в котором задано, как интенсивность прибытия автомобилей изменяется с течением времени.
Синтаксис: Schedule<Integer> rateSchedule
Изменить значение: set_rateSchedule(новое значение)
Изменять интенсивность
[Параметр виден, если в свойстве Прибывают согласно не выбрана опция Расписанию интенсивностей]
Если опция выбрана, появится параметр Согласно выражению, в котором вы можете задать выражение, изменяющее интенсивность прибытия автомобилей.
Синтаксис: boolean modifyRate
Изменить значение: set_modifyRate(новое значение)
Согласно выражению
[Параметр виден, если выбрана опция Изменять интенсивность]
Выражение, согласно которому изменяется интенсивность.
Тип значения: double
Локальная переменная: double baseRate — текущее значение интенсивности, взятое из расписания интенсивностей
Считать параметры агентов из БД
[Параметр виден, если в свойстве Прибывают согласно не выбрана опция Таблице базы данных или Вызовам функции inject()]
Если опция выбрана, то вы сможете инициализировать создаваемые автомобили данными из базы данных модели. Подобный подход описан здесь для блока Source, считывающего параметры создаваемых агентов из встроенной базы данных модели.
Синтаксис: boolean setAgentParametersFromDB
Изменить значение: set_setAgentParametersFromDB(новое значение)
Таблица базы данных
[Параметр виден, если выбрана опция Считать параметры агентов из БД]
Укажите таблицу базы данных, которая содержит данные об автомобилях.
Синтаксис: TableInput databaseTable
Изменить значение: set_databaseTable(новое значение)
Ограниченное кол-во прибытий
[Параметр виден, если в параметре Прибывают согласно не выбрано Вызовам функции inject()]
Если опция выбрана (true), то количество автомобилей, генерируемое этим блоком, будет ограничено параметром Максимальное количество прибытий, расположенным ниже.
Синтаксис: boolean limitArrivals
Изменить значение: set_limitArrivals(новое значение)
Максимальное кол-во прибытий
[Параметр виден, если выбрана опция Ограниченное количество прибытий]
Максимальное количество автомобилей, которое сможет сгенерировать этот блок.
Синтаксис: int maxArrivals
Изменить значение: set_maxArrivals(новое значение)
Появляется
[Параметр виден, если выбрана опция Появляется на: дороге]
В этом пункте вы указываете, будут ли создаваемые этим блоком автомобили появляться на дороге или на парковке. на дороге  — автомобили будут расположены в начале дороги, указанной ниже в параметре Дорога.
на парковке — автомобили будут расположены на случайно выбранном парковочном месте на парковке, указанной ниже в параметре Парковка.
Получить значение: appears
Установить новое значение во время выполнения: set_appears(новое значение)
Допустимые значения:
CarSource.ON_ROAD
CarSource.IN_PARKING_LOT
Дорога
[Параметр виден, если выбрана опция Появляется на:дороге]
Дорога, на которой будет расположен автомобиль после начала движения. Автомобиль помещается на полосу дороги, заданную в параметре Помещается на полосу (основного движения или встречного движения). Полоса либо выбирается случайным образом (если выбрана опция Случайная полоса), либо явно задается пользователем в параметре Номер полосы.
Автомобиль не сразу появляется в указанной точке. Автомобиль появляется и начинает движение только когда:
  • в указанной точке дороги достаточно места, чтобы избежать столкновения, и
  • Блок CarMoveTo отправляет автомобиль в другое место дорожной сети.
Тип значения: Road
Локальная переменная: car — созданный блоком автомобиль
Помещается на полосу
[Параметр виден, если выбрана опция Появляется на: дороге]
Определяет направление полосы (основного движения или встречного движения), на которую будет помещен автомобиль. Если у дороги нет указанного направления (т.е. это дорога с односторонним движением), вы увидите сообщение об ошибке.
Получить значение: laneDirection
Установить новое значение во время выполнения: set_laneDirection(новое значение)
Допустимые значения:
CarSource.FORWARD_LANE
CarSource.BACKWARD_LANE
Случайная полоса
[Параметр виден, если выбрана опция Появляется на: дороге]
Указывает, будет ли автомобиль помещен на случайно выбранную полосу дороги. Если эта опция не выбрана, то автомобиль будет помещен на полосу с номером, указанном в параметре Номер полосы.
Синтаксис: boolean isRandomLane
Изменить значение: set_isRandomLane(новое значение)
Номер полосы
[Параметр виден, если не выбрана опция Случайная полоса]
Здесь задается номер полосы дороги, на которую будет помещен автомобиль (нумерация полос начинается с нуля). Номера полос начинаются с внешней полосы. Если у выбранной Дороги нет полосы с указанным здесь номером, то вы увидите сообщение об ошибке.
Тип значения: int
Локальная переменная: car — созданный блоком автомобиль
Парковка
[Параметр виден, если выбрана опция Появляется на: парковке]
Парковка, на которой, после поступления в этот блок, сразу появляется автомобиль. Если на парковке нет свободных мест, вы увидите ошибку. Автомобиль не покинет парковочное место, пока блок CarMoveTo не направит его в другое место дорожной сети.
Тип значения: ParkingLot
Локальная переменная: car — созданный блоком автомобиль

Автомобиль

Новый автомобиль
Тип автомобиля, созданный блоком CarSource. (У созданного типа должна быть выбрана опция, что он будет использоваться в диаграммах процессов как автомобиль).
Значение по умолчанию: Agent
Длина
Длина созданного автомобиля, должна быть > 0.
Тип значения: double
Локальная переменная: car — созданный блоком автомобиль
Начальная скорость
Начальная скорость созданного автомобиля. Начальная скорость должна быть >= 0. Если начальная скорость меньше предпочитаемой скорости, автомобиль начнет ускоряться до предпочитаемой скорости, как только блок CarMoveTo направит его в другое место дорожной сети.
Тип значения: double
Локальная переменная: car — созданный блоком автомобиль
Предпочитаемая скорость
Предпочитаемая скорость созданного автомобиля. Предпочитаемая скорость должна быть >= 0. Если предпочитаемая скорость и начальная скорость равны 0, автомобиль не начнет движение, даже если блок CarMoveTo направит его в другое место дорожной сети. Автомобиль может начать движение, только если при вызове функции setPreferredSpeed( speed ) задана положительная начальная скорость.
Автомобиль всегда пытается ехать со скоростью, равной предпочитаемой. Следующие факторы не позволяют автомобилю двигаться с предпочитаемой скоростью:
  • Отсутствие возможности немедленно ускориться или замедлиться до предпочитаемой скорости
  • Автомобиль впереди, движущийся со скоростью меньшей, чем предпочитаемая скорость этого автомобиля
  • Стоп-линия с красным сигналом светофора впереди
  • Близость к парковке или автобусной остановке, у которой автомобиль должен замедлиться, чтобы припарковаться или остановиться
  • Скоростное ограничение
Тип значения: double
Локальная переменная: car — созданный блоком автомобиль
Макс. ускорение
Максимальное ускорение созданного автомобиля. Максимальное ускорение должно быть > 0.
Тип значения: double
Локальная переменная: car — созданный блоком автомобиль
Макс. торможение
Максимальное торможение созданного автомобиля. Максимальное торможение должно быть > 0. Автомобиль замедляется с максимальным торможением только в экстремальных случаях. В остальных случаях используется определенная доля максимального торможения.
Тип значения: double
Локальная переменная: car — созданный блоком автомобиль

Специфические

Добавить автомобили в
Здесь вы можете указать, куда будут помещены автомобили, созданные этим блоком: в популяцию по умолчанию или в другую популяцию (указанную ниже в поле Популяция агентов ).
Синтаксис: boolean addToCustomPopulation
Изменить значение: set_addCarToCustomPopulation(новое значение)
Популяция агентов
[Параметр виден, если выбрана опция Добавить автомобили в: другую популяцию]
Имя популяции агентов, куда будут помещены агенты-автомобили, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: car — созданный блоком автомобиль

Действия

При выходе
Здесь вы можете задать код, который будет выполняться, когда автомобиль покинет блок.
Локальная переменная: car — автомобиль, покидающий блок

Функции

Функция Описание
void inject() Создает один новый автомобиль (во время вызова функции). Используется, когда в параметре Прибывают согласно выбрана опция Вызовам функции inject().
void inject(int n) Создает новый автомобиль (во время вызова функции). Используется, когда в параметре Прибывают согласно выбрана опция Вызовам функции inject(). В качестве аргумента функции передается количество создаваемых за 1 вызов автомобилей.

Порты

out
Выходной порт.
Как мы можем улучшить эту статью?