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

Retrieve

Блок Retrieve извлекает агента из ячейки склада и перемещает его в заданное место. Склад задается с помощью элемента разметки пространства Склад или блока Storage System, который объединяет несколько складов в одну систему

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

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

Свойства

Агенты перемещаются
Здесь задается способ, которым агенты покидают склад:
с помощью транспортеров — агент перемещается транспортером
с помощью ресурсов — агент перемещается ресурсом
самостоятельно — агент перемещается самостоятельно
Синтаксис: RackResourceType resourceType Допустимые значения:
Retrieve.RESOURCE_TRANSPORTER
Retrieve.RESOURCE_PML
Retrieve.RESOURCE_NONE
Автопарк
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать автопарк (блок Transporter Fleet), транспортеры из которого перемещают агентов со складов.
Локальная переменная: T agent — агент (материальный объект)
Набор ресурсов
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Здесь можно задать набор ресурсов (блок Resource Pool) для извлечения агента из склада.
Локальная переменная: T agent — агент (материальный объект)
Время разгрузки
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Задает отрезок времени, в течение которого агент (материальный объект) должен быть выгружен.
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Место назначения
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Задает пункт назначения для агента, который покинул склад. Возможные пункты назначения:
Узел — агент перемещается в заданный узел
Аттрактор — агент перемещается в заданный аттрактор
Путь — агент перемещается на заданный путь
Конвейер — агент перемещается на заданный конвейер
Точка конвейера — агент перемещается в заданную точку конвейера
Станция обработки — агент перемещается в заданную станцию обработки
Точка (x, y, z) — агент перемещается в точку с заданными координатами
Синтаксис: DestinationType destinationTypeTransporter
Допустимые значения:
Retrieve.DEST_NODE — узел
Retrieve.DEST_ATTRACTOR — аттрактор
Retrieve.DEST_PATH — путь
Retrieve.DEST_CONVEYOR — конвейер
Retrieve.DEST_POSITION_ON_CONVEYOR — точка конвейера
Retrieve.DEST_CONVEYOR_STATION — станция обработки
Retrieve.DEST_XYZ — точка с заданными координатами
Узел
[Параметр виден, если Место назначения: Узел]
Узел, в который переместится агент (материальный объект).
Тип значения: INode
Локальная переменная: T agent — агент (материальный объект)
Аттрактор
[Параметр виден, если Место назначения: Аттрактор]
Аттрактор, в который переместится агент (материальный объект).
Тип значения: Attractor
Локальная переменная: T agent — агент (материальный объект)
Путь
[Параметр виден, если Место назначения: Путь]
Путь, на который переместится (материальный объект).
Тип значения: Path
Локальная переменная: T agent — агент (материальный объект)
Конвейер
[Параметр виден, если Место назначения: Конвейер]
Конвейер, на который переместится агент (материальный объект).
Тип значения: 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 — транспортер
Изменить ориентацию
[Параметр виден, если Место назначения: Конвейер, или Точка конвейера, или Станция обработки]
Если опция выбрана, вы сможете менять ориентацию попадающего на конвейер материального объекта, задав передний торец объекта в поле Ориентация ниже.
Тип значения: boolean
Локальная переменная: T agent — агент (материальный объект)
Ориентация
[Параметр виден, если выбрана опция Изменить ориентацию]
Если нужно повернуть помещаемый на конвейер материальный объект, задайте здесь сторону, которая должна быть впереди относительно направления движения:
Передняя сторона
Задняя сторона
Левая сторона
Правая сторона
Тип значения: AgentOrientation
Локальная переменная: T agent — агент (материальный объект)
Точка X, Y, Z
[Параметр виден, если Место назначения: Точка (x, y, z)]
X, Y, Z координаты точки, куда переместится агент.
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
... расположена
[Параметр виден, если Агенты перемещаются: с помощью транспортеров и Место назначения: Точка (x, y, z)]
Здесь можно выбрать, где будет находиться точка, в которой окажется агент (материальный объект): на уровне или в сети.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
Уровень
[Параметр виден, если ... расположена: на уровне]
Уровень, на котором расположена точка, куда будет помещен агент.
Тип значения: Level
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
Сеть
[Параметр виден, если ... расположена: Сеть]
Сеть, в которой расположена точка, куда будет помещен агент.
Тип значения: INetwork
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
Место разгрузки
[Параметр виден, если Агенты перемещаются: с помощью ресурсов или самостоятельно]
Задает место разгрузки для агента, который покинул склад. Возможные пункты назначения:
Узел — агент перемещается в заданный узел
Аттрактор — агент перемещается в заданный аттрактор
Захваченный ресурс — агент перемещается в текущее местоположение захваченного ресурса (указанного ниже в поле Ресурс)
Агент / ресурс — агент перемещается в местоположение указанного агента
Точка (x, y, z) — агент перемещается в точку с заданными координатами
Узел + точка (x, y, z) — агент перемещается в указанную точку в указанном узле сети
Синтаксис: DestinationType destinationType
Допустимые значения:
Retrieve.DEST_NODE — узел
Retrieve.DEST_ATTRACTOR — аттрактор
Retrieve.DEST_RESOURCE — захваченный ресурс
Retrieve.DEST_AGENT — агент / ресурс
Retrieve.DEST_XYZ — точка с заданными координатами
Retrieve.DEST_NODE_XYZ — точка с заданными координатами внутри узла
Узел
[Параметр виден, если Место разгрузки: Узел или Узел + точка (x, y, z)]
Узел, в который переместится агент (материальный объект).
Тип значения: INode
Локальная переменная: T agent — агент (материальный объект)
Аттрактор
[Параметр виден, если Место разгрузки: Аттрактор]
Аттрактор, в который переместится агент (материальный объект).
Тип значения: Attractor
Локальная переменная: T agent — агент (материальный объект)
Ресурс
[Параметр виден, если Место разгрузки: Захваченный ресурс]
Ресурс, к которому переместится агент (материальный объект).
Тип значения: ResourcePool
Локальная переменная: T agent — агент (материальный объект)
Агент
[Параметр виден, если Место разгрузки: Агент / ресурс]
Заданный агент, к которому переместится агент (материальный объект).
Тип значения: Agent
Локальная переменная: T agent — агент (материальный объект)
Точка X, Y, Z
[Параметр виден, если Место разгрузки: Точка (x, y, z) или Узел + точка (x, y, z)]
X, Y, Z координаты точки, куда переместится агент.
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Извлечь агента из
Здесь вы задаете место внутри склада, из которого будет извлечен агент. Агент может быть извлечен из:
ячейки — агент забирается из ячейки внутри склада. При этом учитываются параметры склада Тип стеллажа и Скорость внутри слота.
проезда — агент забирается с места на проезде, которое находится напротив зарезервированного слота на нулевом уровне. Движение внутри слота не моделируется, агент «прыгает» из своей ячейки на проезд. Тип склада не влияет на движение.
На складах типов FIFO и LIFO материальные объекты можно извлекать только с определенной «разгрузочной» стороны. В случае складов типа LIFO это та же сторона, что и «загрузочная».
Синтаксис: Retrieve.TakeAgentFrom takeAgentFrom
Задать новое значение при выполнении: set_takeAgentFrom(новое значение)
Допустимые значения:
Retrieve.TAKE_FROM_CELL — ячейка
Retrieve.TAKE_FROM_AISLE — узел
Скорость опускания
[Параметр виден, если Извлечь агента из: ячейки]
Здесь задается скорость вертикального движения агента в проезде склада.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер или ресурс
Время извлечения
[Параметр виден, если Извлечь агента из: проезда]
Здесь задается время, за которое агент перемещается на проезд из своей ячейки.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Storage storage — склад
StorageSystem storageSystem — система складов
StorageCell cell — ячейка
Agent unit — транспортер или ресурс
Транспортеры и ресурсы
Приоритет задачи
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Задает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Может вытеснять другие задачи
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Если опция выбрана, эта задача сможет вытеснять другие задачи захватываемого транспортера.
Тип значения: boolean
Локальная переменная: T agent — агент (материальный объект)
Правило вытеснения задач
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь можно задать правило поведения, если для захваченного транспортера поступают еще какие-то задачи:
Вытеснения нет — текущая задача продолжит выполняться
Захватывать любой ресурс — задача прервется и агент (материальный объект) пытается захватить любой транспортер заданного типа
Локальная переменная: T agent — агент (материальный объект)
После освобождения транспортер
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Задает поведение транспортера после его освобождения. Транспортер:
Возвращается на текущую базу
Возвращается на ближайшую базу — это место выбирается из списка базовых местоположений, который задан в свойствах блока TransporterFleet). Когда транспортер достигнет узла, который удовлетворяет этим требованиям, этот узел будет считаться текущей базой для этого транспортера.
Отправляется в... — транспортер отправляется на место, указанное в параметре Место назначения
Остается на месте
Тип значения: ReleaseTransporter.TransporterReleaseMovingPolicy
Допустимые значения:
Retrieve.MP_RETURNS_TO_HOME — возвращается на текущую базу
Retrieve.MP_RETURNS_TO_NEAREST_HOME — возвращается на ближайшую базу
Retrieve.MP_GO_TO — Отправляется в...
Retrieve.MP_STAYS_WHERE_IT_IS — остается на месте
Локальная переменная: Agent unit — освобожденный транспортер
Место назначения
[Параметр виден, если После освобождения транспортер: Отправляется в...]
Задает пункт назначения для освобожденного транспортера:
Узел — транспортер перемещается в заданный узел
Аттрактор — транспортер перемещается в заданный аттрактор
Путь — транспортер перемещается на заданный путь
Конвейер — транспортер перемещается на заданный конвейер
Точка конвейера — транспортер перемещается в заданную точку конвейера
Станция обработки — транспортер перемещается в заданную станцию обработки
(x, y, z) — транспортер перемещается в точку с заданными координатами
Синтаксис: DestinationType transporterReleaseDestinationType
Допустимые значения:
Retrieve.RELEASE_NODE — узел
Retrieve.RELEASE_ATTRACTOR — аттрактор
Retrieve.RELEASE_PATH — путь
Retrieve.RELEASE_CONVEYOR — конвейер
Retrieve.RELEASE_POSITION_ON_CONVEYOR — точка конвейера
Retrieve.RELEASE_CONVEYOR_STATION — станция обработки
Retrieve.RELEASE_XYZ — точка с координатами
Узел
[Параметр виден, если Место назначения: Узел]
Узел,в который отправляется транспортер.
Тип значения: INode
Локальная переменная: 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
Локальная переменная: Agent unit — транспортер
Уровень
[Параметр виден, если ... расположена: на уровне]
Уровень, на который будет отправлен транспортер после освобождения.
Тип значения: Level
Локальная переменная: Agent unit — транспортер
Сеть
[Параметр виден, если ... расположена: Network]
Сеть, в которую отправится освободившийся транспортер.
Тип значения: INetwork
Локальная переменная: Agent unit — транспортер
Возвращается
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Задает условие возвращения транспортера после освобождения. Он может перейти к выполнению следующей задачи (если задача есть) и отправиться в заданное местоположение, только когда не останется задач, или может отправляться в указанное местоположение каждый раз после освобождения и только по достижении этого местоположения переходить к выполнению следующей задачи.
Тип значения: ReleaseTransporter.TransporterReleaseReturnPolicy
Допустимые значения:
Retrieve.RP_IF_NO_OTHER_TASKS — если не осталось задач
Retrieve.RP_EACH_TIME — всегда
Локальная переменная: T unit — освобождаемый блоком транспортер
Задать выбор транспортера
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Если опция выбрана, можно задать определенный транспортер для извлечения агента из склада (используя параметр Условие выбора транспортера ниже).
Синтаксис: boolean customizeTransporterChoice
Условие выбора транспортера
[Параметр виден, если выбрана опция Задать выбор транспортера]
Здесь вы можете указать логическое выражение ( boolean), которое будет вычисляться, чтобы найти нужный транспортер для выполнения этой задачи. Если ни один из доступных транспортеров не соответствует указанному условию (выражение возвращает false), блок будет ждать, пока освободится первый транспортер, соответствующий условию.
Обычно вы задаете какое-либо поле внутри типа агента (к примеру, transport), помещаете туда ссылку на транспортер, когда он начинает работать с агентом ( agent.transport=transporter), и затем указываете здесь условие agent.transport==transporter позволяющее только этому конкретному транспортеру продолжать работу с этим конкретным агентом.
Тип значения: boolean
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
TransporterFleet fleet — автопарк
Политика выбора транспортера
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете выбрать, как должен выбираться транспортер для перемещения агента (материального объекта). Если выше выбрана опция Задать выбор транспортера, то транспортер будет выбираться только из того набора транспортеров, которые удовлетворяют заданному выше Условию выбора транспортера. Возможные варианты:
Ближайший к агенту — Выбирается транспортер, ближайший к текущему агенту (материальному объекту). Расстояние между транспортером и агентом рассчитывается по прямой линии, не учитывая препятствия (для транспортеров с произвольной навигацией) или длину маршрута в сети (для транспортеров с навигацией по заданному пути)
Кратчайший маршрут к месту погрузки — Выбирается транспортер, чей маршрут движения к месту погрузки короче всех
Наиболее предпочтительный — Транспортер выбирается путем сравнения транспортеров друг с другом. Алгоритм сравнения (или его вызов) помещается в поле unit1 предпочтительнее, чем unit2
По рейтингу — Выбирается транспортер с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг транспортера
Не применяется — Политика выбора транспортера не применяется, просто выбирается какой-то из доступных транспортеров
Синтаксис: SeizeTransporter.DispatchingPolicy dispatchingPolicy
Допустимые значения:
MoveByTransporter.DISPATCHING_POLICY_NEAREST — ближайший к агенту
MoveByTransporter.DISPATCHING_POLICY_SHORTEST_PATH — кратчайший маршрут к месту погрузки
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 — текущий материальный объект
Приоритет задачи
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Задает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Может вытеснять другие задачи
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Если опция выбрана, задача сможет вытеснять другие задачи требуемого ресурса (если допускается приоритетность задач и приоритет текущей задачи ниже).
Тип значения: boolean
Значение по умолчанию: true
Локальная переменная: T agent — агент (материальный объект)
Правило вытеснения задач
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Задает правило поведения при нескольких входящих задачах для ресурса:
Вытеснения нет — текущая задача продолжит выполняться
Ожидать оригинал ресурса — задача прервется, и агент (материальный объект) будет ждать, когда ресурс, захваченный изначально, сможет ее закончить
Захватывать любой ресурс — задача прервется, и агент (материальный объект) попытается захватить любой ресурс заданного типа
Значение по умолчанию: Вытеснения нет Допустимые значения:
Retrieve.PP_NO_PREEMPTION — Вытеснения нет
Retrieve.PP_WAIT_FOR_ORIGINAL_RESOURCE — Ожидать оригинал ресурса
Retrieve.PP_SEIZE_ANY_RESOURCE — Захватывать любой ресурс
После освобождения ресурсы
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Определяет, должны ли ресурсы после освобождения возвращаться в их базовое местоположение (если их не захватывает другой агент) или оставаться в том же месте сети.
Синтаксис: boolean resourcesGoHome
Значение по умолчанию: true — возвращаются в базовую точку Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Возвращаться
[Параметр виден, если После освобождения ресурсы: возвращаются в базовую точку]
Выберите режим завершения для ресурсов: должны ли они всегда возвращаться в базовую точку, или только если нет других задач или выберите другое и укажите приоритет и правило вытеснения для завершения ниже.
В этом случае приоритет задачи возвращения будет сравниваться с приоритетами других входящих задач, после чего политика вытеснения задач выберет следующую задачу для этого конкретного.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Приоритет "завершения"
[Параметр виден, если Возвращаться: другое]
Здесь вы можете приоритет завершающей задачи.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Правило вытеснения
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Задает правило вытеснения для задачи завершения:
Вытеснения нет — задача возвращения не может быть вытеснена
Прекратить — задача возвращения может быть вытеснена и прекращена
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Задать выбор ресурса
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Если эта опция выбрана, вы можете указать определенные ресурсы для перемещения агента на склад (используя параметр Условие выбора ресурса, расположенный ниже).
Синтаксис: boolean customizeResourceChoice Значение по умолчанию: false
Условие выбора ресурса
[Параметр виден, если выбрана опция Задать выбор ресурса]
Здесь вы можете указать булево выражение, которое будет вычисляться, чтобы найти требуемые ресурсы для выполнения операции. Если нет доступных ресурсов, подходящих под условие (условие возвращает false), этот блок будет ожидать первый доступный ресурс, для которого выполняется условие. Обычно вы задаете какой-либо параметр внутри типа агента (например, myAssistant), помещаете туда ссылку на ресурс, когда он начинает работать с агентом (agent.myAssistant=unit), и затем указываете здесь условие agent.myAssistant==unit, позволяющее только этому конкретному ресурсу продолжать работу с этим конкретным агентом.
Тип значения: boolean
Значение по умолчанию: true
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
ResourcePool pool — набор ресурсов
Политика выбора ресурса
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете указать политику выбора ресурса для агента.
Не применяется — политика выбора ресурса не применяется, просто выбирается какой-то из доступных ресурсов
Ближайший к агенту — выбирается ресурс, ближайший к текущему агенту
Наиболее предпочтительный — ресурс выбирается путем сравнения ресурсов друг с другом. Алгоритм сравнения (или его вызов) помещается в поле "unit1 предпочтительнее unit2"
По рейтингу — выбирается ресурс с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг ресурса.
Значение по умолчанию: Не применяется Допустимые значения:
Retrieve.RESOURCE_SELECTION_SOME_UNIT — Не применяется
Retrieve.RESOURCE_SELECTION_NEAREST — Ближайший к агенту
Retrieve.RESOURCE_SELECTION_BASED_ON_COMPARISON — Наиболее предпочтительный
Retrieve.RESOURCE_SELECTION_BASED_ON_RATING_VALUE — По рейтингу
Локальные переменные:
T agent — агент (материальный объект)
ResourcePool pool — набор ресурсов
unit1 предпочтительнее unit2
[Параметр виден, если Политика выбора ресурса: Наиболее предпочтительный]
Вызов алгоритма для сравнения ресурсов для определения наиболее подходящего для выполнения задачи данного агента. Алгоритм должен возвращать true, если сравниваемый ресурс unit1 предпочтительнее, чем ресурс unit2 (а если наоборот, включая равенство при сравнении, то возвращается значение false). Алгоритм должен соблюдать транзитивность.
Тип значения: boolean
Значение по умолчанию: false
Локальные переменные:
Agent unit1 — первый ресурс для сравнения
Agent unit2 — второй ресурс для сравнения
T agent — агент (материальный объект)
Рейтинг ресурса
[Параметр виден, если Политика выбора ресурса: По рейтингу]
Значение рейтинга ресурса (чем больше значение, тем выше рейтинг). С помощью рейтинга производится выбор ресурса для выполнения операции текущего агента — выбирается ресурс с высшим рейтингом. Чаще всего здесь помещается алгоритм или вызов функции, производящей подсчет рейтинга с помощью имеющихся в распоряжении локальных переменных.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс

Действия

При входе
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) попадает в блок.
Локальные переменные:
T agent — агент (материальный объект)
StorageCell cell — ячейка
При захвате транспортера
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) захватит транспортер, который извлечет его со склада.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
При начале разгрузки
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент начала разгрузки транспортера (перемещение агента (материального объекта) из захваченного транспортера).
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
При завершении разгрузки
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент завершения разгрузки транспортера (перемещение агента (материального объекта) из захваченного транспортера).
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
При захвате ресурса
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) захватит ресурс, который извлечет его со склада.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
По прибытии ресурса
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете задать код, который будет выполняться в момент прибытия, когда ресурс прибыл для изъятия агента (материального объекта).
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
При начале извлечения
[Параметр виден, если Извлечь агента: из проезда]
Здесь вы можете задать код, который будет выполняться в момент начала извлечения.
Локальные переменные:
T agent — текущий агент (материальный объект)
Agent unit — ресурс или транспортер
double retrievingTime — время ожидания
StorageCell cell — ячейка
При завершении извлечения
[Параметр виден, если Извлечь агента: из проезда]
Здесь вы можете задать код, который будет выполняться в момент завершения извлечения.
Локальная переменная: T agent — агент (материальный объект)
При освобождении транспортера
[Параметр виден, если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) освобождает транспортер.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
При освобождении ресурса
[Параметр виден, если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) освобождает ресурс.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
При выходе
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) покидает блок.
Локальная переменная: T agent — агент (материальный объект)
При удалении
Здесь вы можете задать код, который будет выполняться в момент, когда агент удаляется из блока вызовом функции remove().
Локальная переменная: T agent — агент (материальный объект)
При приостановке задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов или с помощью транспортеров и Правило вытеснения задач: Захватывать любой ресурс или Ожидать оригинал ресурса]
Здесь вы можете задать код, который будет выполняться в момент приостановки задачи из-за правил вытеснения, когда ресурс захватывается другой задачей с более высоким приоритетом.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс или транспортер
При возобновлении задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов или с помощью транспортеров и Правило вытеснения задач: Захватывать любой ресурс или Ожидать оригинал ресурса]
Здесь вы можете задать код, который будет выполняться в момент возобновления задачи, приостановленной из-за правил вытеснения.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс или транспортер

Функции

Функции блока Retrieve
Функция Описание
int nWaitingForResource() Возвращает количество агентов (материальных объектов), ожидающих ресурсы в блоке.
remove(Agent agent) Удаляет агента из блока.

Agent agent — агент, который находится в блоке
Существует ряд особенностей поведения модели при вызове этой функции. Поведение может отличаться в зависимости от того, каким образом агент (материальный объект) покидает склад, и того, когда именно была вызвана функция.
recalculateResourceChoiceConditions(Agent agent) Производит перерасчет условий выбора для заданного агента, который находится в очереди этого блока. Эту функцию можно использовать, когда ресурсы, ранее недоступные определенному агенту, могли стать доступными для захвата из-за новых условий.

Agent agent — агент (материальный объект), который в данный момент находится в очереди этого блока
recalculateResourceChoiceConditions() Производит перерасчет условий выбора для всех агентов, которые находятся в очереди этого блока. Эту функцию можно использовать, когда ранее недоступные ресурсы могли стать доступными для захвата из-за новых условий.
recalculateAgentPriority(Agent agent) Производит перерасчет приоритетности задач для заданного агента, который находится в очереди этого блока. Вызов этой функции может повлечь за собой вытеснение ресурсов.

Agent agent — агент (материальный объект), который в данный момент находится в очереди этого блока
recalculatePriorities() Производит перерасчет приоритетности задач для всех агентов, которые в данный момент находятся в очереди этого блока. Вызов этой функции может повлечь за собой вытеснение ресурсов.
Особенности поведения модели при вызове функции remove()
  • Агенты перемещаются: с помощью транспортеров
    • Если в момент вызова функции агент находится в ожидании транспортера, то агент будет удален из блока. Задача транспортера будет отменена.
    • Если в момент вызова функции транспортер уже двигается к агенту, чтобы извлечь его из склада, но еще не доехал до слота, то агент будет удален из блока. Транспортер освободится и направится на базу (при отсутствии других задач).
    • Агент не будет удален, если функция вызвана, когда транспортер начал процесс извлечения (движется внутри слота, ожидает, пока истечет Время извлечения, находится в режиме погрузки)
    • Агент не будет удален, если функция вызвана, когда транспортер уже извлек агента со склада и движется с ним в заданное место назначения.
  • Агенты перемещаются: с помощью ресурсов
    • Если в момент вызова функции агент находится в ожидании ресурса или если ресурс уже перемещает его в место разгрузки, то агент будет удален из блока. Задача ресурса будет отменена. Ресурс направится на базу (при отсутствии других задач).
    • Агент не будет удален, если в момент вызова функции агент движется внутри слота, во Время извлечения, или во время спуска агента с верхних полок.
  • Агенты перемещаются: самостоятельно
    • Агент будет удален из блока, если в момент вызова функции он движется к месту разгрузки.
    • Агент не будет удален, если вызов функции произошел во Время извлечения, в момент выхода агента из слота или во время спуска с верхних полок.

Порты

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