MoveByTransporter

Этот блок управляет перемещением агента с помощью транспортера. Блок содержит набор параметров, позволяющих захватить транспортер, погрузить на него требуемого агента, направить транспортер к нужному месту назначения, выгрузить там агента, после чего освободить транспортер.

Захват и освобождение транспортера  можно задать блоками SeizeTransporter и ReleaseTransporter соответственно (используйте эти блоки, чтобы задать транспортировку более детальной диаграммой процесса). В этом случае необходимо отключить параметры Захватывать транспортер и Освобождать транспортер в этом блоке MoveByTransporter.

Транспортер выберет кратчайший путь к заданному месту назначения сразу после того, как будет захвачен и послан за агентом. Если требуемый узел не в сети, транспортер постарается подъехать максимально близко к нему. 

Демо модель: MoveByTransporter

Параметры

Место назначения
Задает место, в которое транспортер переместит агента:
Узел - транспортер отправляется в заданный узел сети.
Аттрактор
- транспортер отправляется к заданному аттрактору.
Путь - транспортер отправляется к заданному пути.
Конвейер - транспортер отправляется на заданный конвейер.
Точка на конвейере - транспортер отправляется в заданную точку конвейера.
Станция обработки - транспортер отправляется в заданную станцию обработки.
Точка (x, y, z) -  транспортер отправляется в точку с заданными координатами.
Синтаксис: DestinationType destinationType
Установить новое значение во время выполнения: set_destinationType(новое значение)
Допустимые значения: MoveByTransporter.DEST_NODE; MoveByTransporter.DEST_ATTRACTOR; MoveByTransporter.DEST_PATH; MoveByTransporter.DEST_CONVEYOR; MoveByTransporter.DEST_POSITION_ON_CONVEYOR; MoveByTransporter.DEST_CONVEYOR_STATION; MoveByTransporter.DEST_XYZ
Путь [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Путь] Путь, к которому направится транспортер.
Тип значения: Path
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Конвейер [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Конвейер] Конвейер, к которому направится транспортер.
Тип значения: ConveyorPath
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Смещение от [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Путь или Конвейер] Задает точку отсчета для смещения на конвейере или пути: от начала конвейера/пути, или от конца конвейера/пути.
Тип значения: boolean
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Смещение [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Путь или Конвейер] Точка отсчета для смещения от начала или конца конвейера/пути (зависит от параметра Смещение от), задающая точное место назначение для транспортера.
Тип значения: double
Локальные переменные:  T agent - текущий материальный объект
                                               Agent transporter - транспортер
Изменить ориентацию [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Конвейер] Выбрав эту опцию, вы сможете задать одну из сторон материального объекта, поступившего на конвейер, в качестве переднего торца (с помощью выпадающего списка Ориентация).
Тип значения: boolean
Локальная переменная:  T agent - текущий материальный объект
Ориентация [динамический]
[Параметр виден, если выбрана опция Изменить ориентацию] Здесь вы можете выбрать передний торец материального объекта (т.е. какой стороной вперед объект будет двигаться по конвейеру): Передней стороной, Задней стороной, Левой стороной или Правой стороной
Допустимые значения: AGENT_ORIENTATION_FRONT, AGENT_ORIENTATION_REAR, AGENT_ORIENTATION_LEFT, AGENT_ORIENTATION_RIGHT
Локальная переменная: T agent - текущий материальный объект
Аттрактор [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Аттрактор] Аттрактор, к которому направится транспортер.
Тип значения: Attractor
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Узел [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Узел] Узел сети, к которому направится транспортер.
Тип значения: Node
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Точка конвейера [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Точка конвейера] Точка конвейера, к которой направится транспортер.
Тип значения: PositionOnConveyor
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Станция обработки [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Станция обработки] Станция обработки, к которой направится транспортер.
Тип значения: ConveyorStation
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
X, Y, Z [динамический]
[Параметры видны, если в параметре Место назначения выбрана опция Точка (x, y, z)] X, Y, Z координаты точки, к которой направится транспортер.
Тип значения: double
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
... в сети [динамический]
[Параметр виден, если в параметре Место назначения выбрана опция Точка (x, y, z)] Если опция выбрана, то агент, отпустив транспортер, будет помещен в указанную сеть.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Сеть [динамический]
[Параметр виден, если выбрана опция ...в сети] Сеть, в которую будет помещен материальный объект после того, как отпустит транспортер.
Тип значения: INetwork
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Захват транспортера
Захватывать транспортер
[Выбрано по умолчанию] Позволяет блоку захватить один транспортер из указанного автопарка, заданного блоком TransporterFleet. Чтобы перемещать агентов, транспортер должен быть захвачен. Убедитесь, что у вас либо эта опция выбрана и настроена, либо в диаграмме процессов перед этим блоком MoveByTrasnporter находится корректно настроенный блок SeizeTransporter.
Синтаксис: boolean seizeTransporter
Установить новое значение во время выполнения: set_seizeTransporter(новое значение)
Автопарк [динамический]
[Параметр виден, если выбрана опция Захватывать транспортер] Блок TransporterFleet, задающий автопарк транспортеров. Этот блок захватит одного транспортера из заданного автопарка.
Тип значения: TransporterFleet
Локальная переменная:  T agent - текущий материальный объект
Время погрузки [динамический]
[Параметр виден, если выбрана опция Захватывать транспортер] Время, за которое требуемый агент (материальный объект) будет погружен на транспортер.
Тип значения: double
Локальная переменная:  T agent - текущий материальный объект
Место
[Параметр виден, если выбрана опция Захватывать транспортер] Задает место, в котором транспортер подберет агента (материальный объект):
Агент - транспортер отправляется к текущему местонахождению агента.
Узел - транспортер отправляется в заданный узел сети.
Аттрактор
- транспортер отправляется к заданному аттрактору.
Путь - транспортер отправляется к заданному пути.
Конвейер - транспортер отправляется на заданный конвейер.
Точка на конвейере - транспортер отправляется в заданную точку конвейера.
Станция обработки - транспортер отправляется в заданную станцию обработки.
Точка (x, y, z) -  транспортер отправляется в точку с заданными координатами.
Синтаксис: SeizeTransporter.DestinationType seizeDestinationType
Установить новое значение во время выполнения: set_seizeDestinationType(новое значение)
Допустимые значения: MoveByTransporter.PICKUP_AGENT; MoveByTransporter.PICKUP_NODE; MoveByTransporter.PICKUP_ATTRACTOR; MoveByTransporter.PICKUP_PATH; MoveByTransporter.PICKUP_CONVEYOR  MoveByTransporter.PICKUP_POSITION_ON_CONVEYOR; MoveByTransporter.PICKUP_CONVEYOR_STATION; MoveByTransporter.PICKUP_XYZ
Путь [динамический]
[Параметр виден, если в параметре Место выбрана опция Путь] Путь, к которому направится транспортер.
Тип значения: Path
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Конвейер [динамический]
[Параметр виден, если в параметре Место выбрана опция Конвейер] Конвейер, к которому направится транспортер.
Тип значения: ConveyorPath
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Смещение от [динамический]
[Параметр виден, если в параметре Место выбрана опция Путь или Конвейер] Задает точку отсчета для смещения на конвейере или пути: от начала конвейера/пути, или от конца конвейера/пути.
Тип значения: boolean
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Смещение [динамический]
[Параметр виден, если в параметре Место выбрана опция Путь или Конвейер] Точка отсчета для смещения от начала или конца конвейера/пути (зависит от параметра Смещение от), задающая точное место назначение для транспортера.
Тип значения: double
Локальные переменные:  T agent - текущий материальный объект
                                            Agent transporter - транспортер
Аттрактор [динамический]
[Параметр виден, если в параметре Место выбрана опция Аттрактор] Аттрактор, к которому направится транспортер.
Тип значения: Attractor
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Узел [динамический]
[Параметр виден, если в параметре Место выбрана опция Узел] Узел сети, к которому направится транспортер.
Тип значения: Node
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Точка конвейера [динамический]
[Параметр виден, если в Место выбрана опция Точка конвейера] Точка конвейера, к которой направится транспортер.
Тип значения: PositionOnConveyor
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Станция обработки [динамический]
[Параметр виден, если в параметре Место выбрана опция Станция обработки] Станция обработки, к которой направится транспортер.
Тип значения: ConveyorStation
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Точка X, Y, Z [динамический]
[Параметр виден, если в параметре Место выбрана опция Точка (x, y, z)] X, Y, Z координаты точки, к которой направится транспортер.
Тип значения: double
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
Приоритет задачи [динамический]
[Параметр виден, если выбрана опция Захватывать транспортерЗадает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная:  T agent - текущий материальный объект
Может вытеснять другие задачи [динамический]
[Параметр виден, если выбрана опция Захватывать транспортер] Если опция выбрана, задача сможет вытеснять другие задачи с требуемого транспортера.
Тип значения: boolean
Локальная переменная:  T agent - текущий материальный объект
Правило вытеснения задач [динамический]
[Параметр виден, если выбрана опция Захватывать транспортер] Здесь можно задать правило поведения при нескольких входящих задачах для транспортера.
Вытеснения нет - текущая задача продолжит выполняться.
Захватывать любой ресурс - задача прервется и пытается захватить любой транспортер заданного типа.
Тип значения: SeizeTransporter.TransporterTaskPreemptionPolicy
Локальная переменная:  T agent - текущий материальный объект
Задать выбор транспортера
[Параметр виден, если выбрана опция Захватывать транспортер] Если опция выбрана, для выполнения задачи можно задать определенный транспортер (используя параметр Условие выбора транспортера ниже). 
Синтаксис: boolean customizeTransporterChoice
Установить новое значение во время выполнения: set_customizeTransporterChoice(новое значение)
Условие выбора транспортера [динамический]
[Параметр виден, если выбрана опция Задать выбор транспортераЗдесь вы можете указать логическое выражение (boolean), которое будет вычисляться, чтобы найти требуемый транспортер для выполнения этой задачи. Если ни один из доступных транспортеров не соответствует указанному условию (выражение возвращает false), блок будет ждать, пока освободится первый транспортер, соответствующий условию. 
Обычно вы задаете какое-либо поле внутри типа агента (к примеру, transport), помещаете туда ссылку на транспортер, когда он начинает работать с заявкой (agent.transport=transporter), и затем указываете здесь условие agent.transport==transporter позволяющее только этому конкретному транспортеру продолжать работу с этим конкретным агентом.
Тип значения: boolean
Локальные переменные:  T agent - текущий материальный объект
                                              Agent transporter - транспортер
                                              TransporterFleet fleet - автопарк
Политика выбора транспортера
Здесь вы можете выбрать, как должен выбираться транспортер для перемещения агента (материального объекта). Если выше выбрана опция Задать выбор транспортера, то транспортер будет выбираться только из того набора транспортеров, которые удовлетворяют заданному выше Условию выбора транспортера.
Возможные варианты:
Ближайший к агенту - Выбирается транспортер, ближайший к текущему агенту (материальному объекту).
Наиболее предпочтительный - Транспортер выбирается путем сравнения транспортеров друг с другом. Алгоритм сравнения (или его вызов) помещается в поле unit1 предпочтительнее, чем unit2.
По рейтингу - Выбирается транспортер с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг транспортера.
Не применяется - Политика выбора транспортера не применяется, просто выбирается какой-то из доступных транспортеров.
Синтаксис: SeizeTransporter.DispatchingPolicy dispatchingPolicy
Установить новое значение во время выполнения: set_dispatchingPolicy(new value)
Допустимые значения: MoveByTransporter.DISPATCHING_POLICY_NEAREST; MoveByTransporter.DISPATCHING_POLICY_BASED_ON_COMPARISON; MoveByTransporter.DISPATCHING_POLICY_BASED_ON_RATING_VALUE; MoveByTransporter.DISPATCHING_POLICY_SOME_TRANSPORTER
unit1 предпочтительнее, чем unit2 [динамический]
[Параметр виден, если выбрана Политика выбора транспортера: Наиболее предпочтительный] Вызов алгоритма сравнения транспортеров для определения транспортера, наиболее подходящего для перемещения данного материального объекта. Алгоритм должен возвращать true, если сравниваемый транспортер unit1 предпочтительнее, чем транспортер unit2 (а ели наоборот, включая равенство при сравнении, - то возвращается значение false). Алгоритм должен соблюдать транзитивность.
Тип значения: boolean
Локальные переменные: Agent unit1 - первый транспортер для сравнения
                                             Agent unit2 - второй транспортер для сравнения
                                             T agent - текущий материальный объект
Рейтинг транспортера [динамический]
[Параметр виден, если выбрана Политика выбора транспортера: По рейтингу] Значение рейтинга транспортера (чем больше значение, тем выше рейтинг). С помощью рейтинга производится выбор транспортера для перемещения текущего агента (материального объекта) - выбирается транспортер с высшим рейтингом.
Чаще всего здесь помещается алгоритм или вызов функции, производящей подсчет рейтинга с помощью имеющихся в распоряжении локальных переменных. 
Тип значения: double
Значение по умолчанию: 0
Локальные переменные:  Agent unit - транспортер
                                              T agent - текущий материальный объект
Освобождение транспортера
Освобождать транспортер
[Выбрано по умолчанию] Позволяет этому блоку освобождать ранее захваченный транспортер. Транспортер мог быть захвачен этим блоком, или блоком SeizeTransporter.
Синтаксис: boolean releaseTransporter
Установить новое значение во время выполнения: set_releaseTransporter(новое значение)
Время разгрузки [динамический]
[Параметр виден, если выбрана опция Освобождать транспортер] Время, требуемое, чтобы выгрузить агента (материального объекта) с транспортера.
Тип значения: double
Локальная переменная:  T agent - текущий материальный объект
Транспортер [динамический]
[Параметр виден, если выбрана опция Освобождать транспортер] Задает поведение транспортера, который после освобождения Возвращается на базу, если нет других задач (если он не будет мгновенно захвачен другим агентом), Возвращается на базу каждый раз, или Остается на месте.
Тип значения: ReleaseTransporter.TransporterReleaseMovingPolicy
Допустимые значения: Возвращается на базу, если нет других задачReleaseTransporter.MP_RETURNS_TO_HOME_IF_NO_OTHER_TASKS
                     Возвращается на базу каждый разReleaseTransporter.MP_RETURNS_TO_HOME
                     Остается на местеReleaseTransporter.MP_STAYS_WHERE_IT_IS
Локальная переменная:  Agent transporter - транспортер
Действия
При входе [код]
Здесь вы можете задать код, который будет выполняться в момент поступления агента (материального объекта) в этот блок.
Локальная переменная:  T agent - текущий материальный объект
При подготовке к выходу [код]
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) решает, что он скорее всего покинет этот блок.
Локальная переменная:  T agent - текущий материальный объект
При выходе [код]
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) покинет этот блок.
Локальная переменная:  T agent - текущий материальный объект
При извлечении [код]
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) покинет конвейер.
Локальная переменная:  T agent - текущий материальный объект
При захвате транспортера [код]
[Параметр виден, если выбрана опция Захватывать транспортер] Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) захватит транспортер.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При начале погрузки [код]
[Параметр виден, если выбрана опция Захватывать транспортер] Здесь вы можете задать код, который будет выполняться при погрузке агента (материального объекта) на транспортер.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При окончании погрузки [код]
[Параметр виден, если выбрана опция Захватывать транспортер] Здесь вы можете задать код, который будет выполняться при завершении погрузки агента (материального объекта) на транспортер.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При приостановке задачи [код]
[Параметр виден, если в Правило вытеснения задач выбрана опция Захватывать любой ресурс] Вызов действия происходит при приостановке задачи из-за правила Захватывать любой ресурс, когда транспортер захватывает другая задача с более высоким приоритетом. 
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При возобновлении задачи [код]
[Параметр виден, если в Правило вытеснения задач выбрана опция Захватывать любой ресурс] Вызов действия происходит при возобновлении задачи после того, как она была приостановлена из-за правила Захватывать любой ресурс.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При освобождении транспортера [код]
[Параметр виден, если выбрана опция Освобождать транспортер] Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) освобождает транспортер.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При начале разгрузки [код]
[Параметр виден, если выбрана опция Освобождать транспортер] Здесь вы можете задать код, который будет выполняться при выгрузке агента (материального объекта) c транспортера.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit - транспортер
При окончании разгрузки [код]
[Параметр виден, если выбрана опция Освобождать транспортер] Здесь вы можете задать код, который будет выполняться при завершении выгрузки агента (материального объекта) c транспортера.
Локальные переменные:  T agent - текущий материальный объект
                                              Agent unit -  транспортер

Порты

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