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

Store

Блок Store размещает агента (материальный объект) в ячейке заданного склада. Вы можете задать конкретный элемент разметки Склад или блок Storage System, объединяющий несколько таких элементов в одну систему складов. Когда агент входит в блок Store, блок начинает поиск свободной ячейки, чтобы разместить в ней агента. Найдя ячейку, блок резервирует ее под этого агента. После резервирования, агент перемещается в ячейку. Это перемещение можно моделировать различными способами: агент может переместиться самостоятельно, а может использовать для этого транспортеры или ресурсы.

Блок Store поддерживает несколько политик для резервирования ячейки на складе:

  • по правилам выбранного склада — блок резервирует следующую свободную ячейку в соответствии с типом стеллажа
  • в случайно выбранной ячейке — блок резервирует свободную ячейку, находящуюся на самой глубокой позиции в случайно выбранном стеллаже и слоте
  • в конкретном слоте — пользователь указывает слот, в котором блок резервирует свободную ячейку, находящуюся на самой глубокой позиции. Чтобы получить нужный слот, используйте соответствующие функции элемента разметки пространства Склад.
    Если вы хотите использовать эту политику размещения для набивного склада, имейте в виду, что блок Store будет размещать агента на следующей по порядку свободной полке в выбранной секции вне зависимости от того, какую полку вы указали в функции getSlot().
    Чтобы изменить этот порядок размещения в набивных складах, используйте функцию setReservation(), чтобы зарезервировать нужный вам слот, а затем — функцию store(), чтобы поместить агента в зарезервированный слот.

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

Размещение агента на стеллаже также можно моделировать на разных уровнях абстракции. Один из вариантов — переместить агента непосредственно в зарезервированную ячейку. В таком случае при движении учитывается тип стеллажа и скорость движения в слоте. Если ячейка находится на верхних полках, можно задать даже Скорость подъема. С этой скоростью агент будет подниматься вверх в проходе перед тем, как войти в слот.

Второй вариант — упрощенный. Агент достигает места в проходе напротив секции, где находится зарезервированная ячейка. Подъем наверх (если он необходим) и движение агента внутри слота не моделируются: агент просто "прыгает" в зарезервированную ячейку по истечении заданного Времени размещения. При этом тип стеллажа никак не влияет на перемещение агента.

Демонстрационная модель: Slotting Policies in Drive-in Storage

Свойства

Агенты перемещаются
Здесь вы можете задать, каким способом агенты перемещаются на склад:
с помощью транспортеров — захваченный транспортер привозит агента на склад
с помощью ресурсов — захваченный ресурс привозит агента на склад
самостоятельно — агент прибывает на склад самостоятельно
Синтаксис: RackResourceType resourceType
Допустимые значения:
Store.RESOURCE_TRANSPORTER
Store.RESOURCE_PML
Store.RESOURCE_NONE
Автопарк
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Здесь можно указать автопарк (блок TransporterFleet ), откуда агент будет выбирать транспортер для перемещения на склад.
Тип значения: TransporterFleet Локальная переменная: T agent — агент (материальный объект)
Набор ресурсов
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Здесь можно задать набор ресурсов (блок Resource Pool) для перемещения агента на склад.
Тип значения: ResourcePool
Локальная переменная: T agent — агент (материальный объект)
Время погрузки
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Время, за которое требуемый агент (материальный объект) будет погружен на транспортер.
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Место погрузки
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Задает место, в котором транспортер подберет агента (материальный объект):
Агент — транспортер переместится к текущему местоположению агента
Узел — транспортер переместится в заданный узел
Аттрактор — транспортер переместится в заданный Аттрактор
Путь — транспортер переместится на заданный путь
Конвейер — транспортер переместится на заданный конвейер
Точка конвейера — транспортер переместится в заданную точку конвейера
Станция обработки — транспортер переместится в заданную станцию обработки
Точка (x, y, z) — транспортер переместится в точку с заданными координатами
Синтаксис: SeizeTransporter.DestinationType seizeDestinationType
Установить новое значение во время выполнения: set_seizeDestinationType(новое значение)
Допустимые значения:
Store.PICKUP_AGENT
Store.PICKUP_NODE
Store.PICKUP_ATTRACTOR
Store.PICKUP_PATH
Store.PICKUP_CONVEYOR
Store.PICKUP_POSITION_ON_CONVEYOR
Store.PICKUP_CONVEYOR_STATION
Store.PICKUP_XYZ
Узел
[Параметр виден, если Место погрузки: Узел]
Узел, в который переместится транспортер.
Тип значения: 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 — транспортер
Точка (z, 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 — транспортер
Размещение
Здесь можно задать, как блок выбирает слот, в котором доложен хранится агент:
по правилам выбранного склада — блок резервирует следующую свободную ячейку, согласно типу стеллажа
в случайно выбранной ячейке — блок резервирует свободную ячейку на самой глубокой позиции в случайно выбранном стеллаже и слоте
в конкретном слоте — вы можете указать слот, в котором блок зарезервирует свободную ячейку на самой глубокой позиции
Синтаксис: Store.SlottingPolicy slottingPolicy
Допустимые значения:
Store.SP_ACCORDING_TO_STORAGE
Store.SP_RANDOM_AVAILABLE
Store.SP_EXPLICIT
Склад
[Параметр виден, если Размещение: по правилам выбранного склада или в случайно выбранной ячейке]
Склад или Зона Хранения, в которой должен храниться агент.
Тип значения: RackUnitAggregator
Локальная переменная: T agent — агент (материальный объект)
Слот
[Параметр виден, если Размещение: в конкретном слоте]
Здесь можно задать слот, в котором должен храниться агент.
Тип значения: int
Локальная переменная: T agent — агент (материальный объект)
Переместить агента
Здесь можно задать место, в котором агент попадает в склад:
в ячейку — агент помещается в ячейку внутри стеллажа. Учитываются следующие параметры Склада: Тип стеллажа и Скорость внутри слота.
в проезд — агент помещается в проезд напротив зарезервированного слота на нулевом уровне. Движение внутри слота не моделируется, агент «прыгает» в ячейку из проезда. Тип стеллажа не влияет на движение.
Синтаксис: Store.AgentDestination moveAgentTo
Установить новое значение во время выполнения: set_moveAgentTo(новое значение)
Допустимые значения:
Store.AGENT_DESTINATION_CELL
Store.AGENT_DESTINATION_AISLE
Скорость подъема
[Параметр виден, если Переместить агента: в ячейку]
Здесь задается скорость вертикального движения агента.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс или транспортер
Время размещения
[Параметр виден, если Переместить агента: в проезд]
Здесь можно задать время, за которое агент перемещается в ячейку из проезда.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
StorageSystem storageSystem — система складов
Storage storage — склад
StorageCell cell — ячейка
Agent unit — ресурс или транспортер

Транспортеры и ресурсы

Приоритет задачи
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Задает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Может вытеснять другие задачи
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Если опция выбрана, задача сможет вытеснять другие задачи требуемого транспортера.
Тип значения: boolean
Локальная переменная: T agent — агент (материальный объект)
Правило вытеснения задач
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Здесь можно задать правило поведения при нескольких входящих задачах для транспортера:
Вытеснения нет — транспортер продолжит выполнять текущую задачу
Захватывать любой ресурс — задача прервется и агент (материальный объект) пытается захватить любой транспортер заданного типа
Тип значения: SeizeTransporter.TransporterTaskPreemptionPolicy
Локальная переменная: T agent — агент (материальный объект)
После освобождения транспортер
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Задает поведение транспортера после его освобождения. Транспортер может:
Возвращается на текущую базу
Возвращается на ближайшую базу — Это место выбирается из списка базовых местоположений, который задан в свойствах блока TransporterFleet). Когда транспортер достигнет узла, который удовлетворяет этим требованиям, этот узел будет считаться текущей базой для этого транспортера.
Отправляется в... — транспортер отправляется в место, заданное в параметре Место назначения
Остается на месте
Тип значения: ReleaseTransporter.TransporterReleaseMovingPolicy
Допустимые значения:
Store.MP_RETURNS_TO_HOME — Возвращается на текущую базу
Store.MP_RETURNS_TO_NEAREST_HOME — Возвращается на ближайшую базу
Store.MP_GO_TO — Отправляется в...
Store.MP_STAYS_WHERE_IT_IS — Остается на месте
Локальная переменная: Agent unit — Транспортер
Место назначения
[Параметр виден, если После освобождения транспортер: отправляется в...]
Задает пункт назначения для освобожденного транспортера:
Узел — транспортер перемещается в заданный узел.
Аттрактор — транспортер перемещается в заданный аттрактор.
Путь — транспортер перемещается на заданный путь.
Конвейер — транспортер перемещается на заданный конвейер.
Точка конвейера — транспортер перемещается в заданную точку конвейера.
Станция обработки — транспортер перемещается в заданную станцию обработки.
Точка(x, y, z) — транспортер перемещается в точку с заданными координатами.
Синтаксис: DestinationType destinationType
Допустимые значения:
Store.RELEASE_NODE
Store.RELEASE_ATTRACTOR
Store.RELEASE_PATH
Store.RELEASE_CONVEYOR
Store.RELEASE_POSITION_ON_CONVEYOR
Store.RELEASE_CONVEYOR_STATION
Store.RELEASE_XYZ
Узел
[Параметр виден, если Место погрузки: Узел]
Узел, в который переместится транспортер.
Тип значения: 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 — транспортер
Возвращается
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Задает условие возвращения транспортера после освобождения. Он может перейти к выполнению следующей задачи (если задача есть) и отправиться в заданное местоположение, только когда не останется задач, или может отправляться в указанное местоположение каждый раз после освобождения и только по достижении этого местоположения переходить к выполнению следующей задачи.
Тип значения: ReleaseTransporter.TransporterReleaseReturnPolicy
Допустимые значения:
Store.RP_IF_NO_OTHER_TASKS — если не осталось задач
Store.RP_EACH_TIME — всегда
Локальная переменная: Agent unit — освобождаемый блоком транспортер
Задать выбор транспортера
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Если опция выбрана, можно задать определенный транспортер для переноса агента из склада (используя параметр Условие выбора транспортера ниже).
Синтаксис: boolean customizeTransporterChoice
Условие выбора транспортера
[Параметр виден, если Задать выбор транспортера]
Здесь вы можете указать логическое выражение ( boolean ), которое будет вычисляться, чтобы найти требуемый транспортер для выполнения этой задачи. Если ни один из доступных транспортеров не соответствует указанному условию (выражение возвращает false ), блок будет ждать, пока освободится первый транспортер, соответствующий условию. Обычно вы задаете какое-либо поле внутри типа агента (к примеру, transport ), помещаете туда ссылку на транспортер, когда он начинает работать с заявкой ( agent.transport=transporter ), и затем указываете здесь условие agent.transport==transporter позволяющее только этому конкретному транспортеру продолжать работу с этим конкретным агентом.
Тип значения: boolean
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
TransporterFleet fleet — автопарк
Политика выбора транспортера
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете выбрать, как должен выбираться транспортер для перемещения агента (материальный объект). Если выше выбрана опция Задать выбор транспортера , то транспортер будет выбираться только из того набора транспортеров, которые удовлетворяют заданному выше Условию выбора транспортера . Возможные варианты: Ближайший к агенту — Выбирается транспортер, ближайший к текущему агенту (материальному объекту). Расстояние между транспортером и агентом рассчитывается по прямой линии, не учитывая препятствия (для транспортеров с произвольной навигацией) или длину маршрута в сети (для транспортеров с навигацией по заданному пути)
Кратчайший маршрут к месту погрузки — Выбирается транспортер, чей маршрут движения к месту погрузки короче всех
Наиболее предпочтительный — Транспортер выбирается путем сравнения транспортеров друг с другом. Алгоритм сравнения (или его вызов) помещается в поле unit1 предпочтительнее, чем unit2
По рейтингу — Выбирается транспортер с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг транспортера
Не применяется — Политика выбора транспортера не применяется, просто выбирается какой-то из доступных транспортеров
Синтаксис: SeizeTransporter.DispatchingPolicy dispatchingPolicy
Допустимые значения:
Store.DISPATCHING_POLICY_NEAREST
Store.DISPATCHING_POLICY_SHORTEST_PATH
Store.DISPATCHING_POLICY_BASED_ON_COMPARISON
Store.DISPATCHING_POLICY_BASED_ON_RATING_VALUE
Store.DISPATCHING_POLICY_SOME_TRANSPORTER
unit1 предпочтительнее, чем unit2
[Параметр виден, если Политика выбора транспортера: Наиболее предпочтительный]
Вызов алгоритма сравнения транспортеров для определения транспортера, наиболее подходящего для перемещения данного материального объекта. Алгоритм должен возвращать true , если сравниваемый транспортер unit1 предпочтительнее, чем транспортер unit2 (а если наоборот, включая равенство при сравнении, то возвращается значение false ). Алгоритм должен соблюдать транзитивность.
Тип значения: boolean
Локальные переменные:
Agent unit1 — первый транспортер для сравнения
Agent unit2 — второй транспортер для сравнения
T agent — агент (материальный объект)
Рейтинг транспортера
[Параметр виден, если Политика выбора транспортера: По рейтингу]
Значение рейтинга транспортера (чем больше значение, тем выше рейтинг). С помощью рейтинга производится выбор транспортера для перемещения текущего агента (материальный объект) — выбирается транспортер с высшим рейтингом.
Тип значения: double
Значение по умолчанию: 0 Локальные переменные: T agent — агент (материальный объект)
Agent unit — транспортер
Приоритет задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Задает приоритет для задачи входящего агента (чем выше значение, тем выше приоритет).
Тип значения: double
Локальная переменная: T agent — агент (материальный объект)
Может вытеснять другие задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Если опция выбрана, задача сможет вытеснять другие задачи с требуемого ресурса (если допускается приоритетность задач и приоритет текущей задачи ниже).
Тип значения: boolean
Локальная переменная: T agent — агент (материальный объект)
Правило вытеснения задач
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Задает правило поведения при нескольких входящих задачах для ресурса:
Вытеснения нет — текущая задача продолжит выполняться
Ожидать оригинал ресурса — задача прервется, и агент (материальный объект) будет ждать, когда ресурс, захваченный изначально, сможет ее закончить
Захватывать любой ресурс — задача прервется, и агент (материальный объект) попытается захватить любой ресурс заданного типа
Тип значения: TaskPreemptionPolicy
Значение по умолчанию: Вытеснения нет
Допустимые значения:
Store.PP_NO_PREEMPTION
Store.PP_WAIT_FOR_ORIGINAL_RESOURCE
Store.PP_SEIZE_ANY_RESOURCE
Локальная переменная: T agent — агент (материальный объект)
После освобождения ресурсы
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Определяет, должны ли ресурсы после освобождения возвращаться в их базовое местоположение (если их не захватывает другой агент) или оставаться в том же месте сети.
Синтаксис: boolean movingGoHome
Значение по умолчанию: true — возвращаются в базовую точку
Возвращаться
[Параметр виден, если После освобождения ресурсы: возвращаются в базовую точку]
Выберите режим завершения для ресурсов: должны ли они всегда возвращаться в базовую точку, или только если нет других задач или выберите другое и укажите приоритет и правило вытеснения для завершения ниже.
В этом случае приоритет задачи возвращения будет сравниваться с приоритетами других входящих задач, после чего политика вытеснения задач выберет следующую задачу для этого конкретного.
Тип значения: WrapUpPolicy
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Приоритет ’завершения’
[Параметр виден, если Возвращаться: другое]
Здесь вы можете приоритет завершающей задачи.
Тип значения: double
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Правило вытеснения
[Параметр виден, если Возвращаться: другое]
Задает правило вытеснения для задачи завершения:
Вытеснения нет — задача возвращения не может быть вытеснена
Прекратить — задача возвращения может быть вытеснена и прекращена
Тип значения: ResourcePreemptionPolicy
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Время возвращения
[Параметр виден, если После освобождения ресурсы: возвращаются в базовую точку]
Выберите, должно ли учитываться время, затраченное на возвращение ресурсов в их базовое местоположение, как "занятое" время , или же как "свободное" время , или же оно не учитывается в статистике вовсе.
Тип значения: ResourceUsageState
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
Задать выбор ресурса
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Если эта опция выбрана, вы можете указать определенные ресурсы для перемещения агента на склад (используя параметр Условие выбора ресурса , расположенный ниже).
Синтаксис: boolean customizeResourceChoice
Установить новое значение во время выполнения: set_customizeResourceChoice(новое значение)
Значение по умолчанию: false
Условие выбора ресурса
[Параметр виден, если выбрана опция Задать выбор ресурса]
Здесь вы можете указать булево выражение, которое будет вычисляться, чтобы найти требуемые ресурсы для выполнения операции. Если нет доступных ресурсов, подходящих под условие (условие возвращает false ), этот блок будет ожидать первый доступный ресурс, для которого выполняется условие. Обычно вы задаете какой-либо параметр внутри типа агента (например, myAssistant), помещаете туда ссылку на ресурс, когда он начинает работать с агентом (agent.myAssistant=unit), и затем указываете здесь условие agent.myAssistant==unit , позволяющее только этому конкретному ресурсу продолжать работу с этим конкретным агентом.
Тип значения: boolean
Значение по умолчанию: true
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
ResourcePool pool — набор ресурсов
Политика выбора ресурса
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете указать политику выбора ресурса для агента. Не применяется — политика выбора ресурса не применяется, просто выбирается какой-то из доступных ресурсов. Ближайший к агенту — выбирается ресурс, ближайший к текущему агенту. Наиболее предпочтительный — ресурс выбирается путем сравнения ресурсов друг с другом. Алгоритм сравнения (или его вызов) помещается в поле "unit1 предпочтительнее unit2" . По рейтингу — выбирается ресурс с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг ресурса.
Тип значения: ResourceSelectionMode
Значение по умолчанию: Не применяется
Допустимые значения:
Store.RESOURCE_SELECTION_SOME_UNIT
Store.RESOURCE_SELECTION_NEAREST
Store.RESOURCE_SELECTION_BASED_ON_COMPARISON
Store.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 — агент (материальный объект)
При захвате транспортера
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент агент (материальный объект) захватит транспортер.
Локальные переменные:
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 storingTime — период ожидания
StorageCell cell — ячейка
При завершении размещения
[Параметр виден, если Переместить агента: в проезд]
Здесь вы можете задать код, который будет выполняться в момент задержки, моделирующей завершение размещения материального объекта на складе.
Локальная переменная: T agent — агент (материальный объект)
При освобождении транспортера
[Виден и доступен, только если Агенты перемещаются: с помощью транспортеров]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) освобождает транспортер.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер
При освобождении ресурса
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов]
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) освобождает ресурс.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — ресурс
При выходе
Здесь вы можете задать код, который будет выполняться в момент, когда агент (материальный объект) покидает блок.
Локальные переменные:
T agent — агент (материальный объект)
StorageSystem storageSystem — система складов
StorageCell cell — ячейка
При удалении
Здесь вы можете задать код, который будет выполняться в момент когда агент удаляется из блока вызовом функции remove().
Локальная переменная: T agent — агент (материальный объект)
При приостановке задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов или с помощью транспортеров и Правило вытеснения задач: Захватывать любой ресурс или Ожидать оригинал ресурса]
Здесь вы можете задать код, который будет выполняться в момент приостановки задачи из-за правил вытеснения, когда ресурс или транспортер захватывается другой задачей с более высоким приоритетом.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер или ресурс
При возобновлении задачи
[Виден и доступен, только если Агенты перемещаются: с помощью ресурсов или с помощью транспортеров и Правило вытеснения задач: Захватывать любой ресурс или Ожидать оригинал ресурса]
Здесь вы можете задать код, который будет выполняться в момент возобновления задачи, приостановленной из-за правил вытеснения.
Локальные переменные:
T agent — агент (материальный объект)
Agent unit — транспортер или ресурс

Функции

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

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

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

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

Порты

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