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

RackStore

Это устаревший блок. Для моделирования складов мы рекомендуем использовать блоки Библиотеки производственных систем (Store, Retrieve, StorageSystem) и соответствующий элемент разметки пространства Склад.

RackStore помещает агента в ячейку заданного стеллажа или зоны хранения RackSystem. При этом агент перемещается из его текущего местоположения в сети к ячейке (при необходимости, с помощью движущихся сетевых ресурсов). Вы можете добавить задержку, моделирующую время, требуемое на помещение агента в ячейку; время задержки может зависеть от координат ячейки, например, от уровня этой ячейки.

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

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

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

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

На момент выхода агента из блока RackStore, он будет храниться в ячейке. Если это конечная точка моделируемого вами процесса обработки агентов, вы можете добавить блок Exit после блока RackStore, но вы не должны оставлять его выходной порт несоединенным. При этом не будет корректным добавлять блок Sink после этого блока Exit, поскольку агент будет по-прежнему оставаться в системе.

Параметры

Стеллаж / Зона хранения
Стеллажи или зона хранения RackSystem, куда должен быть помещен агент.
Тип значения: PalletRackAccess<T>
Локальная переменная: agent — агент
Ячейка
Определяет, как будет выбираться ячейка, в которую нужно будет добавить агента: будет ли она Задана явно пользователем, или же она Выбирается автоматически.
Синтаксис: boolean autoChooseCell
Локальная переменная: agent — агент
Значение по умолчанию: Выбирается автоматически ( true)
Ряд
[Виден, если Ячейка: Задана явно]
Ряд ячейки.
Тип значения: int
Локальная переменная: agent — агент
Место
[Виден, если Ячейка: Задана явно]
Место ячейки в ряду.
Тип значения: int
Локальная переменная: agent — агент
Уровень
[Виден, если Ячейка: Задана явно]
Уровень ячейки.
Тип значения: int
Локальная переменная: agent — агент
Для стеллажей с двумя проходами
[Виден, если Ячейка: Задана явно]
Взять из левого прохода
Взять из правого прохода
Тип значения: boolean
Значение по умолчанию: true (взять из левого прохода)
Локальные переменные:
agent — агент
RackSystem rackSystem — блок, моделирующий зону хранения (стеллажи)
PalletRack palletRack — стеллаж
Выбрать ячейку, ближайшую к
[Виден, если Ячейка: Выбирается автоматически]
Определяет, будет ли выбираться ячейка, ближайшая к Началу стеллажа/зоны хранения или к Концу стеллажа/зоны хранения.
Синтаксис: boolean closeToFront
Значение по умолчанию: true (Началу стеллажа/зоны хранения)
Переместить агента в
Перемещает агента в указанное место назначения:
ячейку (с повышением уровня)
ячейку базового уровня
проход
Имя: movementDestination
Значение по умолчанию: ячейку RackStore.DEST_CELL_LEVEL (с повышением уровня)
Время поднятия на уровень
[Виден, если Переместить агента в: ячейку (с повышением уровня)]
Тип значения: double
Локальная переменная: agent — агент
Добавлять задержку
Если опция выбрана (true), то между достижением агентом ячейки и ее фактическим помещением в эту ячейку будет добавляться задержка, моделирующая время, требуемая на выполнение этой операции.
Синтаксис: boolean useDelay
Значение по умолчанию: false
Время задержки
[Виден, если выбрана опция Добавлять задержку]
Выражение, вычисляющее время, необходимое для помещения агента в ячейку.
Тип значения: double
Локальные переменные:
agent — агент
RackSystem rackSystem — блок, моделирующий зону хранения (стеллажи)
PalletRack palletRack — стеллаж
int row — ряд ячейки
int position — место ячейки в ряду
int level — уровень ячейки
Место агентов (queue)
Фигура разметки вложенного блока queue.
Синтаксис: AnimationStaticLocationProvider entityLocationQueue

Ресурсы

Перемещать с помощью ресурсов
Если опция выбрана (true), то агент будет перемещаться с помощью указанных движущихся ресурсов.
Синтаксис: boolean useResources
Значение по умолчанию: false
Набор(ы) ресурсов
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Здесь вы можете задать требуемые наборы ресурсов (блоки ResourcePool). Вы можете добавить несколько наборов с помощью кнопки Добавить список. Ресурсы набираются согласно их доступности.
Локальная переменная: T agent — агент
Перемещать со скоростью ресурса
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Если опция выбрана (true), агент движется с заданной скоростью движущихся ресурсов.
Синтаксис: boolean moveWithSpeedOfResourceUnit
Значение по умолчанию: false
Движущийся ресурс
[Виден, если выбрана опция Перемещать со скоростью ресурса]
Если опция выбрана (true), указанные движущиеся ресурсы используются, чтобы перемещать агента.
Тип значения: ResourcePool
Локальная переменная: agent — агент
Приоритет задачи
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Приоритет задачи для поступающего агент.
Тип значения: double
Значение по умолчанию: 0
Локальная переменная: agent — агент
Может вытеснять другие задачи
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Если опция выбрана, задача может вытеснять производимую в текущий момент задачу (если возможно согласно свойствам задачи, и приоритет задачи ниже).
Тип значения: boolean
Значение по умолчанию: true
Локальная переменная: agent — агент
Правило вытеснения задач
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Здесь вы можете выбрать, что будет происходить, если поступает какая-либо новая задача для уже занятых ресурсов.
Вытеснения нет — продолжает выполнять текущую задачу
Ожидать оригинал ресурса — прерывает задачу и ожидает, когда тот ресурс сможет ее закончить
Прекратить обслуживание — задача прерывается и более не возобновляется
Захватывать любой ресурс — прерывает задачу и пытается захватить любой ресурс указанного типа
Продолжать без ресурса — задача завершается без участия ресурса
Значение по умолчанию: Вытеснения нет
Допустимые значения:
RackStore.PP_NO_PREEMPTION) — Вытеснения нет
RackStore.PP_WAIT_FOR_ORIGINAL_RESOURCE — Ожидать оригинал ресурса
RackStore.PP_TERMINATE_SERVING — Прекратить обслуживание
RackStore.PP_SEIZE_ANY_RESOURCE — Захватывать любой ресурс
RackStore.PP_CONTINUE_WITHOUT_RESOURCE — Продолжать без ресурса
Локальная переменная: agent — агент
Авто приостановка/возобновление
[Параметр виден, если Правило вытеснения задач: Ожидать оригинал ресурса или Захватывать любой ресурс]
Этим параметром задается, должен ли агент, выполнение задачи которого приостановлено, быть автоматически приостановлен в текущей диаграмме процесса и автоматически возобновлен, когда будут доступны ресурсы.
Синтаксис: boolean suspendResumeEntities
Значение по умолчанию: true
Вход для прекращенных агентов
[Параметр виден, если Правило вытеснения задач: Прекратить обслуживание]
Блок Enter для агентов, которые теряют все ресурсы, полученные ими в этом блоке из-за прекращения обслуживания, когда один из наборов ресурсов (заданных в этом блоке) оказывается захваченным задачей с более высоким приоритетом.
Локальные переменные:
agent — агент
Agent unit — ресурс, который запустил прекращение
После освобождения ресурсы
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Определяет, должны ли ресурсы после освобождения возвращаться в их базовое местоположение или оставаться в том же месте сети.
Синтаксис: boolean resourcesGoHome
Значение по умолчанию: true (Возвращаются в базовую точку)
Возвращаться
[Параметр виден, если После освобождения ресурсы: Возвращаются в базовую точку]
Задача завершения для перемещения ресурсов и базовое местоположение или для завершающей диаграммы процесса. Выберите режим завершения для ресурсов: должны ли они всегда возвращаться в базовую точку, или только если нет других задач или выберите другое и укажите приоритет и правило вытеснения для завершения ниже.
Локальные переменные:
agent — агент
Agent unit — ресурс
Приоритет "завершения"
[Параметр виден, если Возвращаться: другое]
Здесь вы можете задать приоритет завершающей задачи.
Тип значения: double
Локальные переменные:
agent — агент
Agent unit — ресурс
Правило вытеснения
[Параметр виден, если Возвращаться: другое]
Задает правило вытеснения для задачи завершения:
Вытеснения нет — задача не может быть вытеснена
Прекратить — задача может быть вытеснена и прекращена
Локальные переменные:
T agent — агент
Agent unit — ресурс
Задать выбор ресурса
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Если эта опция выбрана, вы можете указать для выполнения операции определенные ресурсы (используя параметр Условие выбора ресурса, расположенный ниже).
Синтаксис: boolean customizeResourceChoice
Значение по умолчанию: false
Условие выбора ресурса
[Параметр виден, если выбрана опция Задать выбор ресурса]
Здесь вы можете указать булево выражение, которое будет вычисляться, чтобы найти требуемые ресурсы для выполнения операции. Если нет доступных ресурсов, подходящих под условие (условие возвращает false), блок RackStore будет ожидать первый доступный ресурс, для которого выполняется условие. Обычно вы задаете какой-либо параметр внутри типа агента (например, myAssistant), помещаете туда ссылку на ресурс, когда он начинает работать с агентом (agent.myAssistant=unit), и затем указываете здесь условие agent.myAssistant==unit, позволяющее только этому конкретному ресурсу продолжать работу с этим конкретным агентом.
Тип значения: boolean
Значение по умолчанию: true
Локальные переменные:
T agent — агент
Agent unit — ресурс
ResourcePool pool — набор ресурсов
Выбор ресурса
Здесь вы можете указать политику выбора ресурса.
Не применяется — политика выбора ресурса не применяется, просто выбирается какой-то из доступных ресурсов. Ближайший к агенту — выбирается ресурс, ближайший к текущему агенту.
Наиболее предпочтительный — ресурс выбирается путем сравнения ресурсов друг с другом. Алгоритм сравнения (или его вызов) помещается в поле "unit1 предпочтительнее unit2".
По рейтингу — выбирается ресурс с лучшим рейтингом. Рейтинг (или алгоритм его вычисления) задается пользователем в поле Рейтинг ресурса.
Значение по умолчанию: Не применяется
Допустимые значения:
RackStore.RESOURCE_SELECTION_SOME_UNIT) — Не применяется
RackStore.RESOURCE_SELECTION_NEAREST — Ближайший к агенту
RackStore.RESOURCE_SELECTION_BASED_ON_COMPARISON — Наиболее предпочтительный
RackStore.RESOURCE_SELECTION_BASED_ON_RATING_VALUE — По рейтингу
Локальные переменные:
agent — агент
ResourcePool pool — набор ресурсов
"unit1 предпочтительнее unit2"
[Параметр виден, если Выбор ресурса: Наиболее предпочтительный]
Вызов алгоритма для сравнения ресурсов для определения наиболее подходящего для выполнения задачи данного агента. Алгоритм должен возвращать true, если сравниваемый ресурс unit1предпочтительнее, чем ресурс unit2 (а если наоборот, включая равенство при сравнении, то возвращается значение false). Алгоритм должен соблюдать транзитивность.
Тип значения: boolean
Локальные переменные:
Agent unit1 — первый ресурс для сравнения
Agent unit2 — второй ресурс для сравнения
agent — текущий агент
Рейтинг ресурса
[Параметр виден, если Выбор ресурса: По рейтингу]
Значение рейтинга ресурса (чем больше значение, тем выше рейтинг). С помощью рейтинга производится выбор ресурса для выполнения операции текущего агента — выбирается ресурс с высшим рейтингом. Чаще всего здесь помещается алгоритм или вызов функции, производящей подсчет рейтинга с помощью имеющихся в распоряжении локальных переменных.
Тип значения: double
Локальные переменные:
agent — агент
Agent unit — ресурс

Действия

При входе
Код, выполняемый, когда агент поступает в блок.
Локальная переменная: T agent — агент
По прибытии ресурсов
[Виден, если выбрана опция Перемещать с помощью ресурсов]
Код, выполняемый, когда ресурсы прибывают в текущее местоположение ячейки.
Локальная переменная: agent — агент
При начале задержки
[Виден, если выбрана опция Добавлять задержку]
Код, выполняемый, когда начинается время задержки, связанной с помещением агента в ячейку.
Локальные переменные:
agent — агент
double delayTime — время задержки
RackSystem rackSystem — блок, моделирующий зону хранения (стеллажи) PalletRack palletRack — стеллаж
int row — ряд ячейки
int position — место ячейки в ряду
int level — уровень ячейки
По окончании задержки
[Виден, если выбрана опция Добавлять задержку]
Код, выполняемый, когда заканчивается время задержки, связанной с помещением агента в ячейку.
Локальная переменная: T agent — агент
При выходе
Код, выполняемый, когда агент покидает блок.
Синтаксис: void onExit
Локальные переменные:
agent — агент
RackSystem rackSystem — блок, моделирующий зону хранения (стеллажи)
PalletRack palletRack — стеллаж
int row — ряд ячейки
int position — место ячейки в ряду
int level — уровень ячейки
При приостановке задачи
[Виден, если Правило вытеснения задач: Ожидать оригинал ресурса или Захватывать любой ресурс]
Код, выполняемый, когда задача агента приостановлена из-за этих правил вытеснения, когда ее ресурс захватывается другой задачей с более высоким приоритетом.
Локальные переменные:
agent — агент
Agent unit — ресурс
При возобновлении задачи
[Виден, если Правило вытеснения задач: Ожидать оригинал ресурса или Захватывать любой ресурс]
Код, выполняемый, когда агент возобновляет выполнение своей задачи после того, как была приостановлена из-за этих правил вытеснения.
Локальные переменные:
agent — агент
Agent unit — ресурс
При прекращении задачи
[Виден, если Правило вытеснения задач: Прекратить обслуживание]
Код, выполняемый, когда агент теряет все ресурсы, полученные в этом блоке из-за правила вытеснения, когда один из наборов ресурсов (заданных в этом блоке RackStore) оказывается захваченным задачей с более высоким приоритетом.
Локальные переменные:
agent — агент
Agent unit — ресурс, который запустил прекращение

Функции

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

Порты

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