С объекта TrainSource начинается диаграмма любого железнодорожного процесса.
Этот блок создает поезда, помещает их на пути ж/д узла, и вставляет агента-поезд в диаграмму процесса поезда.
Вы можете настроить объект TrainSource так, чтобы созданный поезд не добавлялся этим объектом в железнодорожный узел, а передавался дальше по диаграмме процесса как агент-поезд, которая может проходить через объекты Библиотеки моделирования процессов. Это может быть нужно в том случае, если какая-то часть движения поезда моделируется на более высоком уровне абстракции, а не на детальном, физическом уровне. В этом случае добавить поезд в железнодорожный узел можно будет, поместив в дальнейшем в диаграмму процесса объект TrainEnter.
"Времена прибытий" поездов, т.e. времена возникновения поездов в модели, задаются аналогично временам появления агентов в объекте Source Библиотеки моделирования процессов — либо с помощью расписания прибытий, либо путем задания времен между прибытиями. Кроме того, есть "ручной режим" создания, при котором объект TrainSource будет создавать поезда только в моменты вызова его функции inject(). Вы можете задать максимально допустимое количество прибытий.
Новый состав (поезд) должен содержать хотя бы один вагон. Вы можете задать объекту TrainSource использование ваших собственных вагонов, то же относится и к поездам.
Вы можете присвоить вагонам любые 2D или 3D фигуры анимации и выполнить любую дополнительную инициализацию для каждого вагона в параметре Инициализация вагона, (например, задать нестандартную длину). Обратите внимание, что размер нестандартной фигуры анимации вагона не будет автоматически изменяться в соответствии с заданной длиной вагона, поэтому вам будет нужно выбрать соответствующий масштаб фигуры анимации так, чтобы между вагонами поезда не было пустот, и в то же время они не накладывались друг на друга.
Новый поезд помещается на путь и может занять несколько путей. Вам нужно задать, где будет помещен поезд (точка расположения его первого вагона задается как расстояние от начала пути), а также направление поезда относительно пути. Если поезд не помещается на один путь, он займет следующий путь в соответствии с ближайшей стрелкой. Количество занятых путей будет зависеть от длины поезда.
У поезда есть первый вагон (тот, который был создан первым) и последний вагон.
Крейсерская скорость поезда, а также его значения ускорения/торможения также задаются в объекте TrainSource, но впоследствии они могут быть изменены с помощью методов базового класса поезда Train. Скорость поезда в момент создания поезда равна его крейсерской скорости, так что, если нужно, поезд может мгновенно стартовать сразу с крейсерской скоростью.
[Обратите внимание, что в приведенных ниже описаниях RC означает тип, заданный пользователем в поле Новый вагон (по умолчанию — RailCar. Так же и T означает Тип, заданный пользователем в поле Новый поезд.]
- Поезда прибывают согласно
-
Задает режим создания поездов:
Времени между прибытиями - вы задаете выражение, вычисляющее время между двумя последовательными прибытиями поездов.
Расписанию прибытий из БД — поезда прибывают согласно данным таблицы БД, которую пользователь указывает в параметре Таблица базы данных. Выберите столбец, содержащий моменты прибытий из раскрывающегося списка Время прибытия. Блок будет создавать одного агента для каждой записи данных в указанной таблице.
Расписанию прибытий – поезда создаются в моменты времени, заданные расписанием прибытий.
Вызовам метода inject() — поезда не создаются автоматически, для их создания необходимо вызывать метод inject().Значение по умолчанию: Времени между прибытиями
Получить значение: arrivalType
Задать значение: set_arrivalType(новое значение
Допустимые значения:
trainSource.INTERARRIVAL_TIME trainSource.DATABASE_ARRIVAL_TABLE trainSource.ARRIVAL_SCHEDULE trainSource.MANUAL -
[Виден, если Поезда прибывают согласно: Времени между прибытиями]
Выражение, используемое для вычисления интервала времени между двумя последовательными созданиями поездов.Тип значения: double
Значение по умолчанию: 10 минут - Первое прибытие происходит
-
[Параметр виден, если Поезда прибывают согласно: Времени между прибытиями]
Задает время прибытия первых поездов в блок TrainSource.После заданного времени - первое прибытие происходит по истечении времени, заданного в параметре Время между прибытиями.
При запуске модели - первое прибытие происходит в момент запуска модели.
В другое время — первое прибытие происходит в момент времени, заданный в параметре Время первого прибытия.Синтаксис: FirstArrivalMode firstArrivalMode Допустимые значения:
trainSource.AFTER_TIMEOUT
trainSource.AT_START
trainSource.AT_TIME - Время первого прибытия
-
[Параметр виден, если Первое прибытие происходит: В другое время]
Точное время, когда блок TrainSource генерирует первый поезд. Это время не может быть меньше времени запуска модели или времени создания и запуска данного блока TrainSource.Синтаксис: double firstArrivalTime - Расписание прибытий
- [Виден, если Поезда прибывают согласно: Расписанию прибытий]
Имя расписания с целым типом значения, содержащего времена прибытия поездов. Обычно столбец значений содержит значения "1", поскольку в каждый момент времени создается по одному поезду. Если по какой-то причине вы захотите создать два поезда в один и тот же момент времени, вы должны сделать так, что они будут помещены в различные места ж/д узла.Синтаксис: Schedule<Integer> arrivalSchedule - Считать параметры агентов из БД
-
[Параметр виден, если в свойстве Прибывают согласно не выбрана опция Таблице базы данных или Вызовам функции inject()]
Если опция выбрана, то вы сможете инициализировать создаваемые поезда данными из базы данных модели. Подобный подход описан здесь для блока Source, считывающего параметры создаваемых агентов из встроенной базы данных модели.Синтаксис: boolean setAgentParametersFromDB
Изменить значение: set_setAgentParametersFromDB(новое значение) - Таблица базы данных
-
[Параметр виден, если выбрана опция Считать параметры агентов из БД]
Укажите таблицу базы данных, которая содержит данные о поездах.Синтаксис: TableInput databaseTable
Изменить значение: set_databaseTable(новое значение) - Кол-во прибытий ограничено
-
Если опция выбрана (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
Значение по умолчанию: 10
Локальные переменные:
double tracklength — длина пути, в заданных для данного параметра единицах длины
T train – поезд -
[Виден, если После создания: Поместить поезд на путь узла]
Задает, как направлен поезд относительно направления пути:
Вперед (первый вагон ближе к концу пути) — поезд направлен так же, как и путь
Назад (первый вагон ближе к началу пути) — поезд направлен в противоположную сторонуСинтаксис: boolean orientation Значение по умолчанию: Вперед (первый вагон ближе к концу пути) Локальная переменная: T train – поезд
-
Тип поезда, создаваемого этим объектом TrainSource. (Этот тип должен использоваться в диаграмме как train).
Тип значения: Agent
-
Начальная скорость поезда. Значение этой скорости должно быть >= 0. Если начальная скорость меньше крейсерской, поезд начнет разгоняться до крейсерской скорости с момента возникновения на ж/д пути.
Тип значения: double
Значение по умолчанию: 20
Локальная переменная: T train – поезд -
Крейсерская скорость поезда. Эта скорость должна быть > 0. Она будет использоваться по умолчанию, но вы можете впоследствии изменить ее с помощью функций поезда или в объекте TrainMoveTo.
Тип значения: double
Значение по умолчанию: 20
Локальная переменная: T train – поезд -
Ускорение поезда. Значение этого параметра должно быть > 0. Если вы будете ускорять поезд до желаемой скорости, то значение его скорости будет увеличиваться каждую единицу времени на заданное здесь значение ускорения. Это значение может быть изменено впоследствии с помощью функций поезда.
Тип значения: double
Локальная переменная: T train – поезд -
Торможение поезда. Значение этого параметра должно быть > 0. Если вы будете тормозить поезд до желаемой скорости (или до остановки), то значение его скорости будет уменьшаться каждую единицу времени на заданное здесь значение торможения. Это значение может быть изменено впоследствии с помощью функций поезда.
Тип значения: 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
- Выходной порт.
-
Как мы можем улучшить эту статью?
-