Car Source

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

Аналогично блоку Source, автомобили могут создаваться согласно заданной интенсивности, времени между прибытиями, изменяющейся во времени интенсивности, заданной с помощью расписания, расписанию, задающему точные времена и количество прибывающих автомобилей, или "вручную" путем вызова функции блока inject(). Количество создаваемых автомобилей можно ограничить (выбрав опцию Ограниченное кол-во прибытий, и задав Максимальное кол-во прибытий).

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

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

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

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

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

Параметры

Прибывают согласно
Определяет, будут ли автомобили прибывать согласно:
Интенсивности - автомобили прибывают согласно заданной интенсивности прибытия (эквивалентной экспоненциально распределенному времени между прибытиями со средним значением, равным 1/Интенсивность прибытия).
Времени между прибытиями - время между двумя последовательными прибытиями определяется заданным выражением (используйте эту опцию для периодической генерации автомобилей или для генерации автомобилей с интервалами времени, не подчиняющимся экcпоненциальному закону распределения).
Таблице базы данных - агенты прибывают согласно данным таблицы БД, которую пользователь указывает в параметре Таблица базы данных. Выберите столбец, содержащий моменты прибытий из раскрывающегося списка Столбец дат прибытий. Блок будет создавать одного агента для каждой записи данных в указанной таблице.
Расписанию интенсивностей - автомобили генерируются согласно указанному расписанию, в котором задано, как интенсивность прибытия автомобилей изменяется с течением времени.
Расписанию прибытий - автомобили генерируются согласно указанному расписанию, в котором заданы моменты появления автомобилей и количество автомобилей, прибывающее в каждый указанный в расписании момент времени.
Вызовам функции 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 arrivalSchedule
Изменить значение: set_arrivalSchedule(новое значение)
Расписание интенсивностей
[Параметр виден, если выбрана опция Прибывают согласноРасписанию интенсивностей] Имя расписания, в котором задано, как интенсивность прибытия автомобилей изменяется с течением времени.
Синтаксис: Schedule 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_ROADCarSource.IN_PARKING_LOT
Дорога [динамический]
[Параметр виден, если выбрана опция Появляется на: дороге ] Дорога, на которой будет расположен автомобиль после начала движения. Автомобиль помещается на полосу дороги, заданную в параметре Помещается на полосу (основного движения или встречного движения). Полоса либо выбирается случайным образом (если выбрана опция Случайная полоса), либо явно задается пользователем в параметре Номер полосы.
Автомобиль не сразу появляется в указанной точке. Автомобиль появляется и начинает движение только когда:
- в указанной точке дороги достаточно места, чтобы избежать столкновения, и
- Блок CarMoveTo отправляет автомобиль в другое место дорожной сети.
Тип значения: Road
Локальная переменная:  car - созданный блоком автомобиль
Помещается на полосу
[Параметр виден, если выбрана опция Появляется на: дороге ] Определяет направление полосы (основного движения или встречного движения), на которую будет помещен автомобиль. Если у дороги нет указанного направления (т.е. это дорога с односторонним движением), вы увидите сообщение об ошибке.
Получить значение: laneDirection
Установить новое значение во время выполнения: set_laneDirection(новое значение)
Допустимые значенияCarSource.FORWARD_LANECarSource.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(int n) - Создает новый автомобиль (во время вызова функции). Используется, когда в параметре Прибывают согласно выбрана опция Вызовам функции inject(). В качестве аргумента функции передается количество создаваемых за 1 вызов автомобилей, обычно это 1.

Порты

out
Выходной порт.