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

RackPick

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

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

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

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

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

Параметры

Стеллаж / Зона хранения
Стеллажи или зона хранения RackSystem, откуда должен быть извлечен агент.
Тип значения: PalletRackAccess<T>
Локальная переменная: agent — агент
Место назначения
Задает место назначения:
Узел сети — агент перемещается в указанный узел сети
Аттрактор — агент перемещается в указанный аттрактор
Захваченный ресурс — агент перемещается в текущее местоположение захваченного ресурса (указанного ниже в поле Ресурс)
Агент/ресурс — агент перемещается в местоположение указанного агента
Точка — агент перемещается в точку с указанными координатами
Узел + Точка — агент перемещается в указанную точку в указанном узле сети
Имя: destinationType
Изменить значение: set_destinationType(новое значение)
Значение по умолчанию: Узел сети
Допустимые значения:
RackPick.DEST_NODE — Узел сети
RackPick.DEST_ATTRACTOR — Аттрактор
RackPick.DEST_RESOURCE — Захваченный ресурс
RackPick.DEST_AGENT — Агент/ресурс
RackPick.DEST_XYZ — Точка
RackPick.DEST_NODE_XYZ — Узел + Точка
Узел
[Параметр виден, если Место назначения: Узел сети или Узел Точка]
Узел сети, куда перемещаются агенты.
Тип значения: Node
Локальная переменная: agent — агент
Аттрактор
[Параметр виден, если Место назначения: Аттрактор]
Аттрактор, куда перемещаются агенты.
Тип значения: Attractor
Локальная переменная: agent — агент
Ресурс
[Параметр виден, если Место назначения: Захваченный ресурс]
Имя типа ресурсов того ресурса, в чье местоположение будет перемещаться агент. Если захвачены несколько ресурсов одного типа, будет выбран первый из списка.
Тип значения: ResourcePool
Локальная переменная: agent — агент
Агент
[Параметр виден, если Место назначения: Агент/ресурс]
Имя агента, в чье местоположение будет перемещаться агент. (Это может быть, например, ресурс другого агента).
Тип значения: Agent
Локальная переменная: agent — агент
Координаты X, Y, Z
[Параметр виден, если Местоположение прибытия: Точка или Узел Точка]
Координаты точки X,Y,Z, куда будет перемещаться агент.
Тип значения: double
Локальная переменная: agent — агент
Добавлять задержку
Если опция выбрана (true), то между достижением агентом ячейки и его фактическим помещением в эту ячейку будет добавляться задержка, моделирующая время, требуемая на выполнение этой операции.
Синтаксис: boolean useDelay
Значение по умолчанию: false
Время задержки
[Виден, если выбрана опция Добавлять задержку]
Выражение, вычисляющее время, необходимое для помещения агента в ячейку.
Тип значения: double
Локальные переменные:
agent — агент
RackSystem rackSystem — блок, моделирующий зону хранения (стеллажи)
PalletRack palletRack — стеллаж
int row — ряд ячейки
int position — место ячейки в ряду
int level — уровень ячейки
Взять агента из
Выберите, откуда взять агента: из ячейки (с повышением уровня), ячейки базового уровня или прохода.
Имя: movementDestination
Значение по умолчанию: ячейки (с повышением уровня) (RackPick.DEST_CELL_LEVEL)
Допустимые значения:
RackPick.DEST_CELL_LEVEL — ячейки (с повышением уровня)
RackPick.DEST_CELL_BASE — ячейки базового уровня
RackPick.DEST_AISLE — прохода
Время понижения на уровень
[Виден, если Взять агента из: ячейки (с повышением уровня)]
Тип значения: double
Локальная переменная: agent — агент

Ресурсы

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

Действия

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

Функции

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

Порты

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