AnyLogic
Развернуть
Размер шрифта

SeizeTransporter

Захватывает один транспортер из указанного автопарка, заданного блоком TransporterFleet. Направляет транспортер в заданное место.

Используйте блок ReleaseTransporter, чтобы освободить захваченный транспортер. Все захваченные транспортеры должны быть освобождены до того, как блок Sink уничтожит агента.

Демо-модель: SeizeTransporter and ReleaseTransporter Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Автопарк
Блок TransporterFleet, задающий автопарк транспортеров. Этот блок захватит одного транспортера из заданного автопарка.
Тип значения: TransporterFleet
Локальная переменная: T agent — текущий материальный объект
Место назначения
Задает место, в которое направится транспортер:
Агент — транспортер отправляется к текущему местонахождению агента
Узел — транспортер отправляется в заданный узел сети
Аттрактор — транспортер отправляется к заданному аттрактору
Путь — транспортер отправляется к заданному пути
Конвейер — транспортер отправляется на заданный конвейер
Точка на конвейере — транспортер отправляется в заданную точку конвейера
Станция обработки — транспортер отправляется в заданную станцию обработки
Точка (x, y, z) — транспортер отправляется в точку с заданными координатами
Синтаксис: DestinationType destinationType Допустимые значения:
MoveByTransporter.DEST_AGENT — агент
MoveByTransporter.DEST_NODE — узел
MoveByTransporter.DEST_ATTRACTOR — аттрактор
MoveByTransporter.DEST_PATH — путь
MoveByTransporter.DEST_CONVEYOR — конвейер
MoveByTransporter.DEST_POSITION_ON_CONVEYOR — точка на конвейере
MoveByTransporter.DEST_CONVEYOR_STATION — станция обработки
MoveByTransporter.DEST_XYZ — точка (x, y, z)
Узел
[Параметр виден, если Место назначения: Узел]
Узел сети, к которому направится транспортер.
Тип значения: Node
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
Аттрактор
[Параметр виден, если Место назначения: Аттрактор]
Аттрактор, к которому направится транспортер.
Тип значения: Attractor
Локальные переменные: T agent — текущий материальный объект
Agent unit — транспортер
Путь
[Параметр виден, если Место назначения: Путь]
Путь, к которому направится транспортер.
Тип значения: Path
Локальные переменные: T agent — текущий материальный объект
Agent unit — транспортер
Конвейер
[Параметр виден, если Место назначения: Конвейер]
Конвейер, к которому направится транспортер.
Тип значения: ConveyorPath
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
Смещение от
[Параметр виден, если Место назначения: Путь или Конвейер]
Задает точку отсчета для смещения на конвейере или пути: от начала конвейера/пути или от конца конвейера/пути.
Тип значения: boolean
Локальные переменные: T agent — текущий материальный объект
Agent unit — транспортер
Смещение
[Параметр виден, если Место назначения: Путь или Конвейер]
Точка отсчета для смещения от начала или конца конвейера/пути (зависит от параметра Смещение от), задающая точное место назначение для транспортера.
Тип значения: double
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
Точка конвейера
[Параметр виден, если Место назначения: Точка конвейера]
Точка конвейера, к которой направится транспортер.
Тип значения: PositionOnConveyor
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
Станция обработки
[Параметр виден, если в параметре Место назначения: Станция обработки]
Станция обработки, к которой направится транспортер.
Тип значения: ConveyorStation
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
Точка X, Y, Z
[Параметр виден, если Место назначения: Точка (x, y, z)]
X, Y, Z координаты точки, к которой направится транспортер.
Тип значения: double
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
... расположена
[Параметр виден, если Место назначения: Точка (x, y, z)]
Здесь можно выбрать, где будет находиться точка, в которой окажется агент (материальный объект), когда он освободит транспортер: на уровне или в сети.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Уровень
[Параметр виден, если ...расположена: на уровне]
Уровень, на котором расположена точка, куда будет помещен агент, когда он освободит транспортер.
Тип значения: Level
Локальные переменные:
T agent — агент
Agent unit — транспортер
Сеть
[Параметр виден, если ...расположена: в сети]
Сеть, в которой расположена точка, куда будет помещен агент, когда он освободит транспортер.
Тип значения: INetwork
Локальные переменные:
T agent — агент
Agent unit — транспортер
Приоритеты
Приоритет задачи
Задает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
Может вытеснять другие задачи
Если опция выбрана, задача сможет вытеснять другие задачи требуемого транспортера.
Тип значения: boolean Локальная переменная: T agent — текущий материальный объект
Правило вытеснения задач
Здесь можно задать правило поведения при нескольких входящих задачах для транспортера.
Вытеснения нет — текущая задача продолжит выполняться
Захватывать любой ресурс — задача прервется и пытается захватить любой транспортер заданного типа
Тип значения: SeizeTransporter.TransporterTaskPreemptionPolicy
Допустимые значения:
TransporterTaskPreemptionPolicy.PP_NO_PREEMPTION — вытеснения нет
TransporterTaskPreemptionPolicy.PP_SEIZE_ANY_RESOURCE — захватывать любой ресурс
Локальная переменная: T agent — текущий материальный объект
Специфические
Задать выбор транспортера
Если опция выбрана, для выполнения задачи можно задать определенный транспортер (используя параметр Условие выбора транспортера ниже).
Синтаксис: boolean customizeTransporterChoice
Условие выбора транспортера
[Параметр виден, если выбрана опция Задать выбор транспортера]
Здесь вы можете указать логическое выражение (boolean), которое будет вычисляться, чтобы найти требуемый транспортер для выполнения этой задачи. Если ни один из доступных транспортеров не соответствует указанному условию (выражение возвращает false), блок будет ждать, пока освободится первый транспортер, соответствующий условию. Обычно вы задаете какое-либо поле внутри типа агента (к примеру, transport), помещаете туда ссылку на транспортер, когда он начинает работать с агентом (agent.transport=transporter), и затем указываете здесь условие agent.transport==transporter позволяющее только этому конкретному транспортеру продолжать работу с этим конкретным агентом.
Тип значения: boolean
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
TransporterFleetfleet — автопарк
Политика выбора транспортера
Здесь вы можете выбрать, как должен выбираться транспортер. Если выше выбрана опция Задать выбор транспортера, то транспортер будет выбираться только из того набора транспортеров, которые удовлетворяют заданному выше Условию выбора транспортера. Возможные варианты:
Ближайший к агенту — Выбирается транспортер, ближайший к текущему агенту (материальному объекту). Расстояние между транспортером и агентом рассчитывается по прямой линии, не учитывая препятствия (для транспортеров с произвольной навигацией) или длину маршрута в сети (для транспортеров с навигацией по заданному пути).
Кратчайший маршрут к месту назначения — Выбирается транспортер, чей маршрут движения к месту назначения короче всех.
Наиболее предпочтительный — Транспортер выбирается путем сравнения транспортеров друг с другом. Алгоритм сравнения (или его вызов) помещается в поле unit1 предпочтительнее, чем unit2.
По рейтингу — Выбирается транспортер с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг транспортера.
Не применяется — Политика выбора транспортера не применяется, просто выбирается какой-то из доступных транспортеров.
Синтаксис: SeizeTransporter.DispatchingPolicy dispatchingPolicy
Допустимые значения:
SeizeTransporter.DISPATCHING_POLICY_NEAREST — Ближайший к агенту
SeizeTransporter.DISPATCHING_POLICY_SHORTEST_PATH — Кратчайший маршрут к месту назначения
SeizeTransporter.DISPATCHING_POLICY_BASED_ON_COMPARISON — Наиболее предпочтительный
SeizeTransporter.DISPATCHING_POLICY_BASED_ON_RATING_VALUE — По рейтингу
SeizeTransporter.DISPATCHING_POLICY_SOME_TRANSPORTER — Не применяется
unit1 предпочтительнее, чем unit2
[Параметр виден, если Политика выбора транспортера: Наиболее предпочтительный]
Вызов алгоритма сравнения транспортеров для определения транспортера, наиболее подходящего для выполнения задачи данного материального объекта. Алгоритм должен возвращать true, если сравниваемый транспортер unit1предпочтительнее, чем транспортер unit2 (а если наоборот, включая равенство при сравнении, — то возвращается значение false). Алгоритм должен соблюдать транзитивность.
Тип значения: boolean
Локальные переменные:
Agent unit1 — первый транспортер для сравнения
Agent unit2 — второй транспортер для сравнения
T agent — текущий материальный объект
Рейтинг транспортера
[Параметр виден, если Политика выбора транспортера: По рейтингу]
Значение рейтинга транспортера (чем больше значение, тем выше рейтинг). С помощью рейтинга производится выбор транспортера для выполнения операции текущего агента (материального объекта) — выбирается транспортер с высшим рейтингом. Чаще всего здесь помещается алгоритм или вызов функции, производящей подсчет рейтинга с помощью имеющихся в распоряжении локальных переменных.
Тип значения: double
Значение по умолчанию: 0
Локальные переменные:
Agent unit — транспортер
T agent — текущий материальный объект
При отмене задачи транспортер
Задает поведение транспортера, который был захвачен уже после того, как агент покинул блок по таймауту, из-за вытеснения или по вызову функции remove(). Вы можете выбрать одну из следующих опций:
транспортер возвращается на текущую базу
транспортер возвращается на ближайшую базу, которая выбирается из списка местоположений, заданных в свойствах блока TransporterFleet. Когда транспортер достигнет узла, который удовлетворяет этим требованиям, этот узел будет считаться текущей базой для этого транспортера.
транспортер отправляется на место, указанное в параметре Место назначения
транспортер останется на том же месте, где он находился в момент освобождения
Тип значения: ReleaseTransporter.TransporterReleaseMovingPolicy
Локальная переменная: T unit — освобождаемый блоком транспортер
Допустимые значения:
SeizeTransporter.MP_RETURNS_TO_HOME — Возвращается на текущую базу
SeizeTransporter.MP_RETURNS_TO_NEAREST_HOME — Возвращается на ближайшую базу
SeizeTransporter.MP_GO_TO — Отправляется в...
SeizeTransporter.MP_STAYS_WHERE_IT_IS — Остается на месте
Место назначения
Задает место, в которое транспортер отправится после отмены задачи:
Узел — транспортер отправляется в заданный узел сети
Аттрактор — транспортер отправляется к заданному аттрактору
Путь — транспортер отправляется к заданному пути
Конвейер — транспортер отправляется на заданный конвейер
Точка на конвейере — транспортер отправляется в заданную точку конвейера
Станция обработки — транспортер отправляется в заданную станцию обработки
Точка (x, y, z) — транспортер отправляется в точку с заданными координатами
Синтаксис: DestinationType canceledDestinationType
Допустимые значения:
SeizeTransporter.CANCELED_NODE — узел
SeizeTransporter.CANCELED_ATTRACTOR — аттрактор
SeizeTransporter.CANCELED_PATH — путь
SeizeTransporter.CANCELED_CONVEYOR — конвейер
SeizeTransporter.CANCELED_POSITION_ON_CONVEYOR — точка на конвейере
SeizeTransporter.CANCELED_CONVEYOR_STATION — станция обработки
SeizeTransporter.CANCELED_XYZ — точка (x, y, z)
Узел
[Параметр виден, если Место назначения: Узел]
Узел сети, к которому направится транспортер.
Тип значения: Node
Локальная переменная: Agent unit — транспортер
Аттрактор
[Параметр виден, если Место назначения: Аттрактор]
Аттрактор, к которому направится транспортер.
Тип значения: Attractor
Локальная переменная: Agent unit — транспортер
Путь
[Параметр виден, если Место назначения: Путь]
Путь, к которому направится транспортер.
Тип значения: Path
Локальная переменная: Agent unit — транспортер
Конвейер
[Параметр виден, если Место назначения: Конвейер]
Конвейер, к которому направится транспортер.
Тип значения: ConveyorPath
Локальная переменная: Agent unit — транспортер
Смещение от
[Параметр виден, если Место назначения: Путь или Конвейер]
Задает точку отсчета для смещения на конвейере или пути: от начала конвейера/пути или от конца конвейера/пути.
Тип значения: boolean
Локальная переменная: Agent unit — транспортер
Смещение
[Параметр виден, если Место назначения: Путь или Конвейер]
Точка отсчета для смещения от начала или конца конвейера/пути (зависит от параметра Смещение от), задающая точное место назначение для транспортера.
Тип значения: double
Локальная переменная: Agent unit — транспортер
Точка конвейера
[Параметр виден, если Место назначения: Точка конвейера]
Точка конвейера, к которой направится транспортер.
Тип значения: PositionOnConveyor
Локальная переменная: Agent unit — транспортер
Станция обработки
[Параметр виден, если Место назначения: Станция обработки]
Станция обработки, к которой направится транспортер.
Тип значения: ConveyorStation
Локальная переменная: Agent unit — транспортер
X, Y, Z
[Параметры видны, если Место назначения: Точка (x, y, z)]
X, Y, Z координаты точки, к которой направится транспортер.
Тип значения: double
Локальная переменная Agent unit — транспортер
... расположена
[Параметр виден, если Место назначения: Точка (x, y, z)]
Здесь можно выбрать, где будет находиться точка, в которой окажется освободившийся транспортер: на уровне или в сети.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Уровень
[Параметр виден, если ...расположена: на уровне]
Уровень, на котором расположена точка, куда отправится освободившийся транспортер.
Тип значения: Level
Локальная переменная: Agent unit — транспортер
Сеть
[Параметр виден, если ...расположена: в сети]
Сеть, в которой расположена точка, куда куда отправится освободившийся транспортер.
Тип значения: INetwork
Локальная переменная: Agent unit — транспортер

Действия

При входе
Здесь вы можете задать код, который будет выполняться в момент поступления агента (материального объекта) в этот блок.
Локальная переменная: T agent — текущий материальный объект
При захвате транспортера
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) захватит транспортер.
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
При извлечении
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) покинет конвейер.
Локальная переменная: T agent — текущий материальный объект
При выходе
Здесь вы можете задать код, который будет выполняться, когда агент (материальный объект) покинет этот блок.
Локальная переменная: T agent — текущий материальный объект
При приостановке задачи
[Параметр виден, если Правило вытеснения задач: Захватывать любой ресурс]
Вызов действия происходит при приостановке задачи из-за правила Захватывать любой ресурс, когда транспортер захватывает другая задача с более высоким приоритетом.
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер
При возобновлении задачи
[Параметр виден, если Правило вытеснения задач: Захватывать любой ресурс]
Вызов действия происходит при возобновлении задачи после того, как она была приостановлена из-за правила Захватывать любой ресурс.
Локальные переменные:
T agent — текущий материальный объект
Agent unit — транспортер

Функции

Функции блока SeizeTransporter
Функция Описание
T get(int index) Возвращает агента c заданном индексом index (ближайший к выходу агент имеет номер 0).
int size() Возвращает количество агентов, находящихся в данный момент в очереди.
void recalculateResourceChoiceConditions() Заново рассчитывает условие выбора транспортера для всех агентов, которые сейчас находятся в блоке.
void recalculateResourceChoiceConditions(Agent agent) Заново рассчитывает условие выбора транспортера для указанного агента.
T suspend(Agent agent) Приостанавливает все операции с указанным агентом до вызова функции resume().
T resume(Agent agent) Возобновляет ранее приостановленные операции с указанным агентом.

Порты

in
Входной порт.
out
Выходной порт.
Как мы можем улучшить эту статью?