TransporterFleet

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

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

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

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

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

Параметры

Количество транспортеров
Количество транспортеров в этом автопарке. Заданное количество не должно превышать количество аттракторов (если они есть) в базовом местоположении.
Синтаксис: int capacity
Установить новое значение во время выполнения: set_capacity(новое значение)
Тип навигации
Здесь вы можете выбрать, каким образом транспортеры данного автопарка выполняют движение к заданной цели. Тип навигации По заданным путям используется для моделирования транспортеров, которые двигаются по заранее проложенным направляющим (например, по магнитным лентам). Произвольное перемещение используется для моделирования транспортеров, которые двигаются без направляющих, диагностируют размещение препятствий в окружающем пространстве и самостоятельно прокладывают путь к заданной цели.
Синтаксис: TransporterNavigationType navigationType
Установить новое значение во время выполнения: set_navigationType(новое значение)
Допустимые значения: TransporterFleet.LINE_BASED_NAVIGATIONTransporterFleet.FREE_SPACE_NAVIGATION
Этаж
[Параметр виден, если выбрана опция Произвольное перемещениев параметре Тип навигации] Здесь вы можете задать этаж, на котором будут перемещаться транспортеры данного автопарка.
Синтаксис: Ground ground
Установить новое значение во время выполнения: set_ground(новое значение)
Базовое местоположение (узлы)
Местоположение, в котором базируются транспортеры, и в которое они могут возвращаться, когда освобождены. Базовое местоположение можно задавать с помощью Прямоугольного узла, Многоугольного узла или Точечного узла. Прямоугольные и многоугольные узлы могут содержать Аттракторы, определяющие точные места нахождения транспортеров. Количество аттракторов, помещенных в узлах, определяет максимальное количество транспортеров, которые они могут принять. Пустые прямоугольные и многоугольные узлы могут содержать неограниченное количество транспортеров. В Точечном узле может находиться только один транспортер.
Синтаксис: AreaNode[] homeNodes
Установить новое значение во время выполнения: set_homeNodes(новое значение)
Радиус поворота
[Параметр виден, если выбрана опция Произвольное перемещение в параметре Тип навигации] Радиус минимального допустимого кругового поворота, который может выполнить транспортер данного автопарка.
Синтаксис: double turnRadius
Установить новое значение во время выполнения: set_turnRadius(new value)
Мин расстояние до препятствий
Здесь вы можете задать минимальное расстояние, на которое транспортеры этого автопарка могут подъезжать к другим транспортерам (как этого, так и другого автопарков). Расстояние рассчитывается от края фигуры транспортера.
Это ограничение учитывается только при соблюдении дистанции до транспортера, находящегося перед данным транспортером, по ходу его движения.
Синтаксис: double minDistanceToObstacle
Установить новое значение во время выполнения: set_minDistanceToObstacle(новое значение)
Значение по умолчанию: 1 метр
Транспортер
Новый транспортер [динамический]
Задайте тип транспортеров в этом автопарке.
Тип значения: Agent
Изменить размеры [динамический]
Если опция выбрана, позволяет задавать размеры транспортеров (длину, ширину, высоту) в этом автопарке.
Тип значения: boolean
Локальные переменная:  unit - транспортер
Длина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Длина транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Ширина [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Ширина транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Высота [динамический]
[Параметр виден, если выбрана опция Изменить размеры] Высота транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Максимальная скорость [динамический]
Максимальная скорость транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Ускорение [динамический]
Ускорение транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Замедление [динамический]
Замедление транспортера.
Тип значения: double
Локальные переменная:  unit - только что созданный транспортер
Задержка на прокладывание маршрута [динамический]
Если транспортеры данного типа тратят определенное время на прокладывание маршрута перед тем, как начать движение к новой цели, то при необходимости учета данного фактора вы можете задать это время здесь.
Тип значения: double
Локальная переменная: T unit - транспортер
Специфические
Нестандартная маршрутизация
Выбрав эту опцию, вы сможете задать для ваших транспортеров индивидуальный маршрут из одной точки в другую вместо кратчайшего маршрута, который рассчитывается автоматически. Маршрут, заданный с помощью этой опции, является приоритетным по сравнению с маршрутом, заданным в блоке TransporterControl.
Найти путь [динамический]
Здесь вы можете задать индивидуальный алгоритм маршрутизации в виде функции, которая возвращает маршрут (объект RouteData).
Type of value: RouteData
Local variables: T unit - транспортер
                            Agent agent - агент
                            ILocation source - исходная точка
                            ILocation target - цель
Исключить пути
Список путей (один или несколько), которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров. 
Type of value: Path[]
Local variables: T unit - the transporter
                            Agent agent - the agent
Исключить узлы
Список узлов (один или несколько), которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров.
Type of value: Node[]
Local variables: T unit - the transporter
                            Agent agent - the agent
Добавить транспортеры в
Здесь вы можете указать, куда будут помещены транспортеры, созданные этим блоком, в популяцию по умолчанию или в другую популяцию, которую вы можете выбрать ниже.
Синтаксис:  boolean addToCustomPopulation
Значение по умолчанию: популяцию по умолчанию (false)
Популяция агентов [динамический]
[Параметр виден, если в Добавить транспортеры в: выбрана опция другую популяцию] Имя популяции агентов, куда будут помещены транспортеры, созданные этим блоком.
Тип значения:  AgentList
Локальная переменнаяT unit - транспортер
Действия
При создании транспортера [код]
Здесь вы можете задать код, который будет выполняться в момент создания нового транспортера (может использоваться для дополнительных настроек).
Локальная переменная:  unit - только что созданный транспортер
При захвате [код]
Здесь вы можете задать код, который будет выполняться при захвате транспортера.
Локальные переменные:  unit - захваченный транспортер
                                              Agent agent - агент, захватывающий транспортер
При освобождении [код]
Здесь вы можете задать код, который будет выполняться при освобождении транспортера.
Локальные переменные:  unit - освобожденный транспортер
                                              Agent agent - агент, освобождающий транспортер
При изменении состояния транспортера [код]
Здесь вы можете задать код, который будет выполняться при изменении состояния транспортера.
Локальные переменныеunit - транспортер, сменивший состояние
                                             TransporterState state - одно из состояний транспортера:
                      
TransporterState.DELIVERING, TransporterState.GOING_TO_AGENT, TransporterState.GOING_HOME, TransporterState.IDLE, TransporterState.PROCESSING.
При входе на путь [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер попадает на путь.
Локальные переменные:  unit - транспортер, который начал движение по этому пути
                                              Path path - путь, по которому движется транспортер
При выходе с пути [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер покидает путь.
Локальные переменные:  unit - транспортер, покидающий путь
                                              Path path - путь, который покидает транспортер
При входе в узел [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер входит в узел.
Локальные переменные:  unit - транспортер, поступающий в узел
                                              Node node - узел, в который входит транспортер
При выходе из узла [код]
Здесь вы можете задать код, который будет выполняться, когда транспортер покидает узел.
Локальные переменные:  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) - Задает индивидуальный алгоритм маршрутизации.