CarSource


Создает машины, помещает их на одну из дорог и вставляет заявку типа Car в диаграмму процесса, задающую автотрафик. 

С объекта CarSource обычно начинается диаграмма процесса дорожного трафика.

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

По умолчанию создаются машины класса Car, но Вы можете создавать машины и других классов, унаследованных от этого, базового. Вы можете создавать машины нестандартной длины и присваивать им какие-то свои 2D или 3D фигуры анимации.Обратите внимание, что размер нестандартной фигуры анимации машины не будет автоматически изменяться в соответствии с заданной длиной машины, поэтому Вам будет нужно выбрать соответствующий масштаб фигуры анимации так, чтобы ее визуальная длина соответствовала логической.

Новая машина помещается на полосу заданной дороги с заданным смещением от ее начала. Машина будет помещена на дорогу только в том случае, если на этой дороге перед ней будет требуемое расстояние, свободное от машин. Иначе же машина будет храниться во внутреннем буфере объекта CarSource, пока такое расстояние не появится. Если количество машин в буфере достигнет его максимальной вместимости, возникнет ошибка.

По умолчанию машиной управляет стандартный водитель (мы не советуем задавать своих собственных водителей до выхода окончательной версии библиотеки). У водителя есть один параметр – коэффициент превышения скорости, который означает отношение комфортной скорости водителя к ограничению на скорость.

Вы также можете задавать в объекте CarSource ускорение и торможение машины.

Параметры класса

Класс машины
Класс машин, создаваемых этим объектом. Он должен быть унаследован от класса Car, который, в свою очередь, унаследован от Entity. Если Вы используете для машин собственный класс, то рекомендуем Вам указать его здесь, чтобы иметь возможность напрямую обращаться к собственным полям этого класса в динамических параметрах, таких, как Действие при входе. Также в этом случае Вам будет нужно вызвать конструктор этого класса в поле параметра Новая машина.
Синтаксис:  C extends Car
Значение по умолчанию: Car

Вложенные объекты

Source source

Управляет прибытием (созданием) машин.

Порты

Port out

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

Параметры

Объект RoadNetwork

Объект типа RoadNetwork, задающий топологию дорожной сети, в которую будут добавляться новые машины. В одной модели может быть несколько дорожных сетей.
Синтаксис: RoadNetwork roadNetwork

Машины прибывают согласно
Задает режим создания машин:
Интенсивности - машины прибывают согласно заданной интенсивности прибытия (эквивалентной экспоненциально распределенному врмени между прибытиями со средним значением, равным 1/интенсивность).
Времени между прибытиями - Вы задаете выражение, вычисляющее время между двумя последовательными прибытиями машин.
Расписанию интенсивностей – машины создаются согласно расписанию, задающему, как интенсивность прибытий машин (циклически) меняется со временем.
Расписанию прибытий – машины создаются в моменты времени, заданные расписанием прибытий.
Вызовам метода inject() - машины не создаются автоматически, для их создания необходимо вызывать метод inject().
Синтаксис: int arrivalType
Значение по умолчанию: Интенсивности
Допустимые значенияSource.RATE, Source.INTERARRIVAL_TIME, Source.RATE_SCHEDULE, Source.ARRIVAL_SCHEDULE, Source.MANUAL
Интенсивность появления, машин в минуту
[Виден, если Машины прибывают согласно Интенсивности] Интенсивность, с которой будут создаваться машины.
Синтаксис: double ratePerMinute
Значение по умолчанию: 1
Interarrival time, seconds [динамический]
[Виден, если Машины прибывают согласно Времени между прибытиями] Выражение. используемое для вычисления времени между двумя последовательными созданиями машин.
Синтаксис: double interarrivalTimeMinutes
Значение по умолчанию:
 10
Расписание прибытий
[Виден, если Машины прибывают согласно Расписанию прибытий] Имя расписания с целым типом значения, содержащего времена прибытия машин. Обычно столбец значений содержит значения "1", поскольку в каждый момент времени создается по одному машине. Если по какой-то причине Вы захотите создать две машины в один и тот же момент времени, Вы должны сделать так, что они будут помещены в различные места.
Синтаксис: Schedule< ? extends Integer > arrivalSchedule
Расписание интенсивностей
[Виден, если Машины прибывают согласно Расписанию интенсивностей] Имя расписания, задающего, как интенсивность прибытий машин (циклически) меняется со временем.
Синтаксис: Schedule rateSchedule
Ограниченное количество прибытий
Если опция выбрана (true), то количество прибытий, генерируемое этим объектом, будет ограничено заданным ниже Максимальным количеством прибытий.
Синтаксис: boolean limitArrivals
Значение по умолчанию: false
Максимальное количество прибытий
[Параметр виден, если выбрана опция Ограниченное количество прибытий] Максимальное количество прибытий, заданное для этого объекта.
Синтаксис: int maxArrivals
Значение по умолчанию: Integer.MAX_VALUE
Вместимость буфера
Максимальное количество машин, которые могут ожидать в объекте CarSource появления на дороге необходимого для их помещения на эту дорогу расстояния.
Значение по умолчанию: 1000
Синтаксис: int bufferCapacity
Дорога (фигура) [динамический]
Дорога (имя линии или дуги), на которой появится машина.
Синтаксис: Shape road
Значение по умолчанию: null
Локальная переменная: C car - машина
Полоса:
Определяет, как выбирается полоса на дороге, на которую будет помещена машина:
Выбирается случайно – машина будет помещена на случайно выбранную полосу дороги.
Задана – машина будет помещена на полосу, указанную ниже в параметре Полоса.
Синтаксис: boolean randomLane
Значение по умолчанию: Выбирается случайно (true)
Полоса (0 - самая левая) [динамический]
[Виден, если Полоса: Задана] Индекс полосы, на которую будет помещена машина (0 соответствует самой левой полосе.
Синтаксис: int laneIndex
Значение по умолчанию: 0
Локальная переменная: C car - машина 
Смещение заднего торца, м. [динамический]
Смещение заднего торца машины от начала дороги.
Синтаксис: int offset
Значение по умолчанию: null
Локальная переменная: C car - машина 
Расстояние перед машиной
Определяет способ задания минимально необходимого расстояния перед машиной:
Безопасное расстояние для ограничения скорости – расстояние равно безопасному расстоянию, заданному в объекте RoadNetwork.
Другое значение – расстояние задается ниже, параметром Расстояние
Синтаксис: boolean safeSpaceInFront
Значение по умолчанию: Безопасное расстояние для ограничения скорости (true)
Расстояние, м. [динамический]
Требуемое расстояние перед машиной для того, чтобы ее можно было поместить на дорогу.
Синтаксис: double spaceInFront
Значение по умолчанию: 10
Локальная переменная: C car - машина
Новая машина [динамический]
Выражение, используемое объектом для создания новой машины, обычно - вызов конструктора класса машины. Должен возвращаться объект класса машины Car или его подкласса.
Синтаксис: C newCar
Значение по умолчанию: new Car()
Длина, м. [динамический]
Длина машины, в метрах.
Синтаксис: double length
Значение по умолчанию: 4
Ширина, м. [динамический]
Ширина машины, в метрах.
Синтаксис: double width
Значение по умолчанию: 1.8
Цвет [динамический]
Цвет заданной по умолчанию фигуры анимации машины.
Синтаксис: Color color
Значение по умолчанию: null
Локальная переменная: C car - машина
Фигура анимации машины [динамический]
2D или 3D фигура, которая будет служить фигурой анимации машины. Если Вы оставите это поле пустым (значение null), то будут использоваться заданные по умолчанию фигуры анимации машин.
Синтаксис: Shape carAnimationShape
Значение по умолчанию: null
Локальная переменная: C car - машина
Ускорение, м/с2 [динамический]
Ускорение машины (в м/с2) по умолчанию. Может быть изменено с помощью функций класса машины Car.
Синтаксис: double acceleration
Значение по умолчанию: 10
Локальная переменная: C car - машина
Торможение, м/с2 [динамический]
Торможение машины (в м/с2) по умолчанию. Может быть изменено с помощью функций класса машины Car.
Синтаксис: double deceleration
Значение по умолчанию: -50
Локальная переменная: C car - машина
Машиной управляет
Задает водителя, который будет управлять машинами:
Стандартный водитель – будет использоваться водитель, заданный по умолчанию для библиотеки.
Нестандартный водитель (должен реализовывать интерфейс Driver) – будет использоваться нестандартный водитель, заданный пользователем ( его имя указывается ниже, в параметре Водитель (Driver))
Синтаксис: boolean customDriver
Значение по умолчанию: Стандартный водитель (false)
Коэффициент превышения скорости (1 = заданное ограничение) [динамический]
[Виден, если Машиной управляет Стандартный водитель] The ratio of the comfort speed for the default driver to the speed limit.
Синтаксис: double speedingFactor
Значение по умолчанию: uniform( 0.7, 1.2 ) 
Водитель (Driver) [динамический]
[Виден, если Машиной управляет Нестандартный водитель (должен реализовывать интерфейс Driver)] Здесь Вы можете указать имя объекта - водителя - экземпялра Вашего класса, реализующего интерфейс Driver).
Синтаксис: Driver driver
Действие при выходе [динамический]
Здесь Вы можете задать код, который будет выполняться, когда машина покинет объект.
Синтаксис: void onExit
Локальная переменная: C car - машина

Функции

void inject() - Немедленно создает новую машину (во время вызова). Обычно используется, когда в параметре Машины создаются согласно выбрана опция Вызовам метода inject().

int count() - Возвращает количество машин, покинувших объект.