CarSource

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

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

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

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

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

Примечание: Если в качестве места появления автомобиля указана дорога, в дорожную сеть он сможет попасть, только если на полосе впереди будет достаточно места. Чем больше скорость автомобиля, тем длиннее нужен путь для добавления в дорожную сеть. Автомобили, которые не могут попасть в дорожную сеть мгновенно, не создаются блоком 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
Выходной порт.