TransporterFleet

Задает автопарк транспортеров, которые агенты (материальные объекты) могут захватить и освободить с помощью блоков SeizeTransporter и ReleaseTransporter.

Примером транспортеров могут служить мобильные роботы (AGV).

У транспортеров есть базовое местоположение, куда они могут при необходимости вернуться. Транспортеры одного автопарка могут обладать разными свойствами, анимацией, хранить статистику своего использования и т.д.

В зависимости от выбранного типа навигации, движение транспортеров осуществляется по путям и узлам сети или произвольно. По умолчанию транспортеры выбирают самый короткий путь.

Вы можете самостоятельно прокладывать маршрут транспортеров, движущихся по путям сети. Для этого необходимо задать алгоритм для прокладывания маршрута в качестве динамического значения параметра Найти путь блока TransporterControl. Настройки этого блока будут влиять на движение транспортеров всех автопарков с подходящим типом навигации. Отдельные правила маршрутизации для одного автопарка можно задать, выбрав опцию Нестандартная маршрутизация в свойствах соответствующего блока TransporterFleet.

Вы можете изменить количество транспортеров в автопарке во время выполнения модели с помощью функции set_capacity(). Если количество транспортеров уменьшается, их поведение будет зависеть от текущего состояния:

Параметры

Тип навигации
Здесь вы можете выбрать, каким образом транспортеры данного автопарка выполняют движение к заданной цели. Тип навигации По заданным путям используется для моделирования транспортеров, которые двигаются по заранее проложенным направляющим (например, по магнитным лентам). Произвольное перемещение используется для моделирования транспортеров, которые двигаются без направляющих, диагностируют размещение препятствий в окружающем пространстве и самостоятельно прокладывают путь к заданной цели.
Синтаксис: TransporterNavigationType navigationType
Установить новое значение во время выполнения: set_navigationType(новое значение)
Допустимые значения:
Видеть все транспортеры
При выборе этой опции, транспортеры данного автопарка будут воспринимать другие транспортеры с любым типом навигации в качестве препятствий и двигаться соответствующим образом. В противном случае препятствиями будут считаться только транспортеры с тем же типом навигации, что и у транспортеров этого автопарка.
Синтаксис: boolean recognizeAllTransporters
Установить новое значение во время выполнения: set_recognizeAllTransporters(новое значение)
Количество задано
Здесь вы можете выбрать, каким образом в вашей модели будет задано количество транспортеров данного автопарка: Напрямую или с помощью Расписания.
Синтаксис: TransporterFleet.CapacityDefinitionType capacityDefinitionType
Установить новое значение во время выполнения: set_capacityDefinition Type(новое значение)
Допустимые значения:
Количество транспортеров
Количество транспортеров в этом автопарке. Заданное количество не должно превышать количество аттракторов (если они есть) в базовом местоположении.
Синтаксис: int capacity
Установить новое значение во время выполнения: set_capacity(новое значение)
Расписание
Здесь вы можете выбрать расписание, с помощью которого задается количество транспортеров в этом автопарке.

Примечание: Используйте расписание типа целое, чтобы задать количество транспортеров.

Синтаксис: Schedule capacitySchedule
Установить новое значение во время выполнения: set_capacitySchedule(новое значение)
Базовое местоположение (узлы)
Местоположение, в котором базируются транспортеры, и в которое они могут возвращаться, когда освобождены. Базовое местоположение можно задавать с помощью Прямоугольного узла, Многоугольного узла или Точечного узла. Прямоугольные и многоугольные узлы могут содержать Аттракторы, определяющие точные места нахождения транспортеров. Количество аттракторов, помещенных в узлах, определяет максимальное количество транспортеров, которые они могут принять. Пустые прямоугольные и многоугольные узлы могут содержать неограниченное количество транспортеров. В Точечном узле может находиться только один транспортер.
Синтаксис: AreaNode[] homeNodes
Установить новое значение во время выполнения: set_homeNodes(новое значение)
Радиус поворота
[Параметр виден, если Тип навигации: Произвольное перемещение] Радиус минимального допустимого кругового поворота, который может выполнить транспортер данного автопарка.
Синтаксис: double turnRadius
Установить новое значение во время выполнения: set_turnRadius(новое значение)
Мин расстояние до препятствий
Здесь вы можете задать минимальное расстояние, на которое транспортеры могут приближаться к препятствиям. Расстояние рассчитывается от края транспортера. Для транспортеров, передвигающихся по путям и узлам сети препятствием является другой транспортер как этого, так и других автопарков с таким же типом навигации. Ограничение учитывается только при соблюдении дистанции до транспортера, находящегося перед данным транспортером, по ходу его движения. Для транспортеров, передвигающихся в режиме произвольной навигации, препятствием являются только статические объекты (стены, конвейеры и т.д.). Транспортеры могут нарушать это ограничение, чтобы избежать столкновения с другими транспортерами, или когда расстояние между двумя стенами, где транспортер должен проехать, меньше, чем расстояние, заданное этим параметром.
Синтаксис: double minDistanceToObstacle
Установить новое значение во время выполнения: set_minDistanceToObstacle(новое значение)

Примечание: Эту функцию можно использовать только для транспортеров, передвигающихся по узлам и путям сети.

Значение по умолчанию: 1 метр
Задать макс скорость у препятствия [динамический]
[Параметр виден, если Тип навигации: Произвольное перемещение] Выбрав данную опцию, вы сможете задать ограничение скорости движения транспортеров, когда расстояние до препятствия становится меньше значения заданного в параметре Мин расстояние до препятствий.
Синтаксис: boolean isSpeedLimitedNearObstacle
Установить новое значение во время выполнения: set_isSpeedLimitedNearObstacle(новое значение)
Макс скорость у препятствия [динамический]
[Параметр виден, если выбрана опция Задать макс скорость у препятствия] Максимально допустимая скорость транспортера, если расстояние, когда препятствия становится меньше значения, заданного в параметре Мин расстояние до препятствий.
Синтаксис: double maxSpeedNearObstacle
Установить новое значение во время выполнения: set_maxSpeedNearObstacle(новое значение) Значение по умолчанию: 1 м/с
Транспортер
Новый транспортер [динамический]
Задайте тип транспортеров в этом автопарке.
Тип значения: Agent
Изменить размеры [динамический]
Если опция выбрана, позволяет задавать размеры транспортеров (длину, ширину, высоту) в этом автопарке.
Тип значения: boolean
Локальная переменная: T unit - транспортер
Длина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Длина транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Ширина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Ширина транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Высота [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Высота транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Максимальная скорость [динамический]
Максимальная скорость транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Задать скорость на повороте [динамический]
Выбрав данную опцию, вы сможете задать ограничение скорости движения транспортеров, когда транспортеры двигаются по изогнутому сегменту сети. Если скорость транспортера не успевает опуститься до заданного значения, пока транспортер еще двигается по прямому сегменту, то понижение скорости произойдет мгновенно, как только транспортер войдет на изогнутый сегмент.
Синтаксис: boolean limitSpeedOnCurvedSegment
Установить новое значение во время выполнения: set_limitSpeedOnCurvedSegment(новое значение)
Макс скорость на повороте [динамический]
[Параметр виден, если выбрана опция Задать скорость на повороте] Максимально допустимая скорость транспортера на изогнутом сегменте сети. Обратите внимание, что приоритет значения, задаваемого в этом параметре, ниже, чем приоритет значения параметра Максимальная скорость. Вне зависимости от скорости, заданной в этом параметре, на изогнутом сегменте транспортер сможет разогнаться только до заданной максимальной скорости.
Синтаксис: double maximumSpeedOnCurvedSegment
Установить новое значение во время выполнения: set_maximumSpeedOnCurvedSegment(новое значение) Значение по умолчанию: 1 м/с
Ускорение [динамический]
Ускорение транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Замедление [динамический]
Замедление транспортера.
Тип значения: double
Локальная переменная: T unit - только что созданный транспортер
Задержка на прокладывание маршрута [динамический]
Если транспортеры данного типа тратят определенное время на прокладывание маршрута перед тем, как начать движение к новой цели, то при необходимости учета данного фактора вы можете задать это время здесь.
Тип значения: double
Локальная переменная: T unit - транспортер
Задержка перед повторным стартом
Здесь вы можете задать время, которое потребуется транспортеру, чтобы возобновить движение после остановки из-за препятствия на пути.
Тип значения: double delayToResumeMovement
Специфические
Нестандартная маршрутизация
Выбрав эту опцию, вы сможете задать для ваших транспортеров индивидуальный маршрут из одной точки в другую вместо кратчайшего маршрута, который рассчитывается автоматически. Маршрут, заданный с помощью этой опции, является приоритетным по сравнению с маршрутом, заданным в блоке TransporterControl.
Синтаксис: boolean customRouting
Установить новое значение во время выполнения: set_customRouting(новое значение)
Найти путь [динамический]
Здесь вы можете задать индивидуальный алгоритм маршрутизации в виде функции, которая возвращает маршрут (объект RouteData).
Тип значения: RouteData
Локальные переменные:
T unit - транспортер
Agent agent - агент
ILocation source - исходная точка
ILocation target - цель
Исключить пути
Список путей (один или несколько), которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров.
Тип значения: Path[]
Локальные переменные:
T unit - транспортер
Agent agent - агент
Исключить узлы
Список узлов (один или несколько), которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров.
Тип значения: Node[]
Локальные переменные:
T unit - транспортер
Agent agent - агент
Включить пути
Список путей (один или несколько), которые вы хотите включить в автоматически рассчитываемый маршрут транспортеров.
Тип значения: Path[]
Локальные переменные:
T unit - транспортер
Agent agent - агент
Добавить транспортеры в
Здесь вы можете указать, куда будут помещены транспортеры, созданные этим блоком, в популяцию по умолчанию или в другую популяцию, которую вы можете выбрать ниже.
Синтаксис: boolean addToCustomPopulation
Значение по умолчанию: популяцию по умолчанию(false)
Популяция агентов [динамический]
[Параметр виден, если Добавить транспортеры в: другую популяцию] Имя популяции агентов, куда будут помещены транспортеры, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: T unit - транспортер
Действия
При создании транспортера [код]
Здесь вы можете задать код, который будет выполняться в момент создания нового транспортера (может использоваться для дополнительных настроек).
Локальная переменная: T unit - только что созданный транспортер
При захвате [код]
Здесь вы можете задать код, который будет выполняться при захвате транспортера.
Локальные переменные:
T unit - захваченный транспортер
Agent agent - агент, захватывающий транспортер
При освобождении [код]
Здесь вы можете задать код, который будет выполняться при освобождении транспортера.
Локальные переменные:
T unit - освобожденный транспортер
Agent agent - агент, освобождающий транспортер
При изменении состояния транспортера [код]
Здесь вы можете задать код, который будет выполняться при изменении состояния транспортера.
Локальные переменные:
T unit - транспортер, сменивший состояние
TransporterState state - одно из состояний транспортера:
При входе на путь [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер попадает на путь.
Локальные переменные:
T unit - транспортер, который начал движение по этому пути
Path path - путь, по которому движется транспортер
При выходе с пути [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер покидает путь.
Локальные переменные:
T unit - транспортер, покидающий путь
Path path - путь, который покидает транспортер
При входе в узел [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер входит в узел, осуществляя движение по сети. Исключением является ситуация, когда транспортер создается в узле. В этот момент код, заданный в этом поле, выполняться не будет. Если есть необходимость, чтобы при создании транспортера в узле выполнялся тот же код, что и при входе в узел, продублируйте этот код в поле При создании транспортера.
Локальные переменные:
T unit - транспортер, поступающий в узел
Node node - узел, в который входит транспортер
При выходе из узла [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер покидает узел.
Локальные переменные:
T unit - транспортер, покидающий узел
Node node - узел, который покидает транспортер

Функции

double utilization() - Возвращает среднее значение коэффициентов загрузки каждого транспортера этого блока (собранное за время, прошедшее с последнего вызова функции resetStats()).

int numberOfIdle() - Возвращает количество свободных транспортеров.

int numberOfBusy() - Возвращает количество занятых транспортеров.

boolean containsUnit(Agent unit) - Проверяет, содержит ли автопарк указанный транспортер. Возвращает true, если содержит; иначе, false).

int size() - Возвращает общее количество транспортеров в этом автопарке, включая те, которые не входят в текущую рабочую смену.

void resetStats() - Удаляет собранную статистику использования автопарка, а также сбрасывает расстояние, пройденное отдельными транспортерами (см. Функции транспортера).

Collection<ResourceRequest> getRequests() - Возвращает текущую очередь запросов к транспортерам этого автопарка. Запросы в очереди упорядочены по их приоритету. Этот список не редактируется.

Iterator iterator() - Возвращает итератор над транспортерами в этом автопарке.

RouteData findShortestPath (ILocation source, ILocation target, Node[], nodesToAvoid, Path[], pathsToAvoid) - Задает индивидуальный алгоритм маршрутизации.