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

CarSource

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

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

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

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

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

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

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

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

Демо-модель: CarSource

Параметры

Прибывают согласно
Определяет, будут ли автомобили прибывать согласно:
Интенсивности — автомобили прибывают согласно заданной интенсивности прибытия (эквивалентной экспоненциально распределенному времени между прибытиями со средним значением, равным 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()]
Если опция выбрана, появится параметр Таблица базы данных, в котором вы можете указать таблицу БД, задающую параметры агентов.
Синтаксис: 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
Выходной порт.
Как мы можем улучшить эту статью?