TrainSource


С объекта TrainSource начинается диаграмма любого железнодорожного процесса.

Этот блок создает поезда, помещает их на один из путей ж/д узла, и вставляет агента-поезд в диаграмму процесса поезда.

Вы можете настроить объект TrainSource так, чтобы созданный поезд не добавлялся этим объектом в железнодорожный узел, а передавался дальше по диаграмме процесса как заявка-поезд, которая может проходить через объекты Библиотеки моделирования процессов. Это может быть нужно в том случае, если какая-то часть движения поезда моделируется на более высоком уровне абстракции, а не на детальном, физическом уровне. В этом случае добавить поезд в железнодорожный узел можно будет, поместив в дальнейшем в диаграмму процесса объект TrainEnter.

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

Новый состав (поезд) должен содержать хотя бы один вагон. Вы можете задать объекту TrainSource использование ваших собственных вагонов, то же относится и к поездам.

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

Новый поезд помещается на путь, и вы должны убедиться, что на этом пути есть свободное место для всех вагонов (при создании поезд должен полностью находиться на одном пути). Вам нужно задать, где будет помещен поезд (точка раcположения его первого вагона задается как расстояние от начала пути), а также направление поезда относительно пути. У поезда есть первый вагон (тот, который был создан первым) и последний вагон.

Крейсерская скорость поезда, а также его значения ускорения/торможения также задаются в объекте TrainSource, но впоследствии они могут быть изменены с помощью методов базового класса поезда Train. Скорость поезда в момент создания поезда равна его крейсерской скорости, так что, если нужно, поезд может мгновенно стартовать сразу с крейсерской скоростью.

Параметры

[Обратите внимание, что в приведенных ниже описаниях RC означает тип, заданный пользователем в поле Новый вагон (по умолчанию - RailCar. Так же и T означает Тип, заданный пользователем в поле Новый поезд.]
Поезда прибывают согласно
Задает режим создания поездов:
Времени между прибытиями - вы задаете выражение, вычисляющее время между двумя последовательными прибытиями поездов.
Расписанию прибытий из БД - поезда прибывают согласно данным таблицы БД, которую пользователь указывает в параметре Таблица базы данных. Выберите столбец, содержащий моменты прибытий из раскрывающегося списка Время прибытия. Блок будет создавать одного агента для каждой записи данных в указанной таблице.
Расписанию прибытий – поезда создаются в моменты времени, заданные расписанием прибытий.
Вызовам метода inject() - поезда не создаются автоматически, для их создания необходимо вызывать метод inject().
Значение по умолчанию: Времени между прибытиями
Получить значение: arrivalType
Задать значение: set_arrivalType(новое значение)
Допустимые значения: Source.INTERARRIVAL_TIME, Source.DATABASE_ARRIVAL_TABLE, Source.ARRIVAL_SCHEDULE, Source.MANUAL
Время между прибытиями [динамический]
[Виден, если в параметре Поезда прибывают согласно выбрана опция Времени между прибытиями] Выражение, используемое для вычисления интервала времени между двумя последовательными созданиями поездов.
Тип значения: double
Значение по умолчанию: 10 минут
Расписание прибытий
[Виден, если в параметре Поезда прибывают согласно выбрана опция Расписанию прибытий] Имя расписания с целым типом значения, содержащего времена прибытия поездов. Обычно столбец значений содержит значения "1", поскольку в каждый момент времени создается по одному поезду. Если по какой-то причине вы захотите создать два поезда в один и тот же момент времени, вы должны сделать так, что они будут помещены в различные места ж/д узла.
Синтаксис: Schedule arrivalSchedule
Кол-во прибытий ограничено
Если опция выбрана (true), то количество прибытий поездов в данном объекте будет ограничено параметром Максимальное кол-во прибытий.
Синтаксис: boolean limitArrivals
Значение по умолчанию: false
Максимальное кол-во прибытий
[Виден, если выбран Кол-во прибытий ограничено] Максимально допустимое количество поездов, которое может быть создано этим объектом.
Синтаксис: int maxArrivals
Значение по умолчанию: 1000
Таблица базы данных
[Параметр виден, если Поезда прибывают согласноРасписанию прибытий из БД] Выберите таблицу базы данных, которая содержит данные о прибытии агентов.
Время прибытия
[Параметр виден, если Поезда прибывают согласноРасписанию прибытий из БД] Выберите столбец Таблицы базы данных, который содержит отметки времени прибытия агентов.
Кол-во вагонов (включая локомотив) [динамический]
Количество вагонов в поезде. Значение должно быть не меньше 1.
Тип значения: int
Значение по умолчанию: 11
После создания
Параметр задает, что нужно сделать с созданным поездом. Есть два альтернативных варианта:
Поместить поезд на путь узла - Созданный поезд помещается на заданный путь узла (узел, путь, смещение и направление на пути задаются в этом случае в приведенных ниже параметрах объекта).
Оставить как заявку (потребует объекта TrainEnter в дальнейшем) - Созданный поезд не помещается на путь железнодорожного узла, а передается дальше по диаграмме процесса как заявка-поезд, которая может проходить через объекты Основной библиотеки. Это может быть нужно в том случае, если какая-то часть движения поезда моделируется на более высоком уровне абстракции, а не на детальном, физическом уровне. В этом случае добавить поезд в железнодорожный узел можно будет, поместив в дальнейшем в диаграмму процесса объект TrainEnter.
Синтаксис: boolean putInRailYard
Значение по умолчанию: Поместить поезд на путь узла (true)
Точка входа задается как
[Параметр виден, если После создания: Поместить поезд на путь узла] Здесь вы можете выбрать, как будет задаваться точка на ж/д пути, куда будет помещен новый поезд. Есть два варианта:
Точка ж/д пути - Задайте точку графически с помощью элемента разметки пространства Точка ж/д пути.
Смещение на пути - Задайте точку как расстояние от начальной или конечной точки пути до передней стороны первого вагона поезда, в метрах. Вы можете указать смещение в параметре ниже, в удобных единицах длины.
Синтаксис: locationType
Точка ж/д пути [динамический]
[Параметр виден, если Точка входа задается как: Точка ж/д пути] Выберите элемент Точка ж/д пути, задающий точку ж/д пути, куда будет помещен новый поезд.
Тип значения: PositionOnTrack
Локальная переменная: T train – поезд
Путь [динамический]
[Виден, если Точка входа задается как: Смещение на пути] Путь, на который будет помещен новый поезд (все вагоны при этом должны полностью находиться на этом пути).
Тип значения: RailwayTrack
Локальная переменная: T train – поезд
Смещение [динамический]
[Параметр виден, если Точка входа задается как: Смещение на пути] Выберите, как отсчитывать смещение: от конца пути или от начала пути.
Тип значения: boolean
Значение по умолчанию: false (от конца пути)
Локальная переменная: T train – поезд
Смещение первого вагона [динамический]
[Виден, если Точка входа задается как: Смещение на пути] Расстояние от начальной или конечной точки пути до переднего торца первого вагона поезда.
Тип значения: double
Значение по умолчанию: tracklength - 10
Локальные переменные: double tracklength – длина пути, в заданных для данного параметра единицах длины
T train – поезд
Направление на пути [динамический]
[Виден, если в параметре После создания выбрана опция Поместить поезд на путь узла] Задает, как направлен поезд относительно направления пути:
Вперед (первый вагон ближе к концу пути) – поезд направлен так же, как и путь
Назад (первый вагон ближе к началу пути) – поезд направлен в противоположную сторону
Синтаксис: boolean orientation
Значение по умолчанию: Вперед (первый вагон ближе к концу пути) - true
Локальная переменная: T train – поезд
Поезд и вагоны
Новый поезд [динамический]
Тип поезда, создаваемого этим объектом TrainSource. (Этот тип должен использоваться в диаграмме как train).
Тип значения: Agent
Крейсерская скорость, м/с [динамический]
Крейсерская скорость поезда (в м/с). Эта крейсерская скорость будет использоваться по умолчанию, но вы можете впоследствии изменить ее с помощью функций поезда или в объекте TrainMoveTo. Скорость поезда будет также задана равной крейсерской скорости в момент покидания поездом объекта TrainSource – подразумевается, что поезд уже как бы ехал со своей крейсерской скоростью. Поэтому если следующим объектом в диаграмме процесса будет TrainMoveTo, то поезд сможет начать движение сразу с крейсерской скоростью и времени на ускорение не потребуется.
Тип значения: double
Значение по умолчанию: 20
Локальная переменная: T train – поезд
Ускорение [динамический]
Ускорение поезда. Если вы будете ускорять поезд до желаемой скорости, то значение его скорости будет увеличиваться каждую единицу времени на заданное здесь значение ускорения. Это значение может быть изменено впоследствии с помощью функций поезда.
Тип значения: double
Локальная переменная: T train – поезд
Торможение [динамический]
Торможение поезда. Если вы будете тормозить поезд до желаемой скорости (или до остановки), то значение его скорости будет уменьшаться каждую единицу времени на заданное здесь значение торможения. Это значение может быть изменено впоследствии с помощью функций поезда.
Тип значения: double
Локальная переменная: T train – поезд
Добавить поезда в
Здесь вы можете указать, куда будут отправлены поезда, созданные этим блоком: в Популяцию по умолчанию или Другую популяцию (которую можно указать в параметре ниже).
Синтаксис: boolean addTrainToCustomPopulation
Значение по умолчанию: Популяцию по умолчанию (false)
Популяция поездов [динамический]
[Параметр виден, если Добавить поезда в: Другую популяцию] Имя популяции агентов, куда будут помещены поезда, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: T agent – поезд
Новый вагон [динамический]
Выражение, используемое объектом TrainSource для создания нового вагона. Вы можете вызвать конструкторы различных классов для различных вагонов с опмощью локальной переменной carindex, например: carindex == 0 ? new MyLocomotive() : new MyHopper()
Тип значения: Agent
Локальные переменные: int carindex - индекс создаваемого в данный момент вагона, нумерация начинается с 0
T train – поезд
Значение по умолчанию: newRailCar
Длина вагона [динамический]
Выражение, возвращающее длину вагона.
Тип значения: double
Локальные переменные: int carindex - индекс создаваемого в данный момент вагона, нумерация начинается с 0
T train – поезд
RC car – вагон
Инициализация вагона [код]
Код, который будет выполняться для каждого вагона. Здесь вы можете произвести дополнительную инициализацию вагона. Это второе (после предыдущего параметра) и последнее место, где вы можете изменить заданные по умолчанию длины ваших вагонов. Также вы можете задать фигуры анимации вагонов, произвести инициализацию переменных для сбора определенной статистики и т.д. Чтобы различать вагоны, используйте локальную переменную carindex, например: car.setWidth( carindex == 0 ? 3.5 : 4 );
Локальные переменные: RC car – инициализируемый вагон
int carindex - индекс инициализируемого вагона, нумерация начинается с 0
T train – поезд
Добавить вагоны в
Здесь вы можете указать, куда будут отправлены вагоны, созданные этим блоком: в Популяцию по умолчанию или Другую популяцию (которую можно указать в параметре ниже). Популяцию по умолчанию, содержащуюся внутри агента верхнего уровня (Java-коллекцию типа AgentList<Agent>), можно выбрать с помощью вызова функции агента getDefaultPopulation().
Синтаксис: boolean addCarToCustomPopulation
Значение по умолчанию: Популяцию по умолчанию (false)
Популяция вагонов [динамический]
[Параметр виден, если Добавить выгоны в: Другую популяцию] Имя популяции агентов, куда будут помещены вагоны, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: RC agent – вагон
Действия
При выходе [код]
Здесь вы можете задать код, который будет выполняться в тот момент, когда поезд будет покидать этот объект.
Локальная переменная: T train – поезд

Функции

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

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

Порты

out

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