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

MoveByCrane

Этот блок управляет перемещением агента с помощью крана.

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

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

По умолчанию блок выбирает агентов для перемещения в соответствии с правилом FIFO ("первым пришел — первым ушел"). Вы можете самостоятельно настроить правило выбора агента в соответствии с требованиями вашего эксперимента.

Правила захвата крана

Вы можете выбрать для захвата как сам кран, так и конкретный мост.

  • Если выбранный мост занят другим агентом, новый агент становится в очередь к этому мосту.
  • Если вы выбрали кран с несколькими мостами, агент захватит ближайший свободный мост, который физически способен забрать его и доставить в место назначения.
  • Если все мосты крана заняты, агент будет ожидать в очереди крана, пока не освободится один из мостов, после чего проверит, может ли этот мост доставить его в заданное место назначения. В случае успешной проверки, агент захватит этот мост.
  • Если одновременно освобождается несколько мостов, агент выберет ближайшего из тех, которые могут доставить его в место назначения.
Демо-модель: MoveByCrane Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Место назначения
Задает место, в которое кран переместит агента:
Узел — кран отправляется в заданный узел сети
Аттрактор — кран отправляется к заданному аттрактору
Конвейер — кран отправляется на заданный конвейер
Точка на конвейере — кран отправляется в заданную точку конвейера
Точка (x, y, z) — кран отправляется в точку с заданными координатами Агент — кран отправляется к заданному объекту (типа Agent)
Синтаксис: DestinationType destinationType
Узел
[Параметр виден, если Место назначения: Узел]
Узел сети, в который отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: Node
Локальная переменная: T agent — текущий материальный объект
Аттрактор
[Параметр виден, если Место назначения: Аттрактор]
Аттрактор, к которому отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: Attractor
Локальная переменная: T agent — текущий материальный объект
Конвейер
[Параметр виден, если Место назначения: Конвейер]
Конвейер, к которому отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: ConveyorPath
Локальная переменная: T agent — текущий материальный объект
Смещение от
[Параметр виден, если Место назначения: Конвейер]
Задает точку отсчета для смещения на конвейере: от начала конвейера или от конца конвейера. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: boolean
Локальная переменная: T agent — текущий материальный объект
Смещение
[Параметр виден, если Место назначения: Конвейер]
Точка отсчета для смещения от начала или конца конвейера (зависит от параметра Смещение от), задающая точное место назначения для крана. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
Точка на конвейере
[Параметр виден, если Место назначения: Точка на конвейере]
Точка конвейера, к которой отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: PositionOnConveyor
Локальная переменная: T agent — текущий материальный объект
X, Y, Z
[Параметр виден, если Место назначения: Точка (x, y, z)]
X, Y или Z координата точки, к которой отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
... расположена
[Параметр виден, если Место назначения: Точка (x, y, z)]
Здесь можно выбрать, где будет находиться точка, в которой окажется агент (материальный объект), когда кран его отпустит: на уровне или в сети.
Тип значения: boolean destinationInNetwork
Значение по умолчанию: false
Уровень
[Параметр виден, если ...расположена: на уровне]
Уровень, на котором расположена точка, куда будет помещен агент, когда кран его отпустит.
Тип значения: Level
Локальные переменные:
T agent — агент
Agent unit — кран
Сеть
[Параметр виден, если ...расположена: в сети]
Сеть, в которой расположена точка, куда будет помещен агент, когда кран его отпустит.
Тип значения: INetwork
Локальные переменные:
T agent — агент
Agent unit — кран
Агент
[Параметр виден, если Место назначения: Агент]
Объект (типа Агент), к которому отправится кран. Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: Agent
Локальная переменная: T agent — текущий материальный объект
Безопасная высота подъема
Задает минимальное значение высоты, на которую кран должен поднять агента для перемещения (например, чтобы избежать столкновений с препятствиями).
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
Использовать время работы
Выбрав эту опцию, вы сможете напрямую задать время, которое кран должен потратить на то, чтобы переместиться к агенту (материальному объекту), забрать его и отвезти в место назначения. Значения скорости рассчитываются заново для каждого агента в соответствии с заданным временем работы крана.
Синтаксис: boolean useOperationTime
Время работы крана
[Параметр виден, если выбрана опция Использовать время работы]
Задает отрезок времени, в течение которого кран должен переместить агента. В зависимости от того, каким способом происходит захват и освобождение крана, этот отрезок времени может рассчитываться различными способами:
кран захватывается и освобождается блоком MoveByCrane — учитывается Время загрузки, само перемещение и Время разгрузки
кран захватывается блоком SeizeCrane —  Время загрузки не учитывается
кран освобождается блоком ReleaseCrane —  Время разгрузки не учитывается
Значение параметра рассчитывается для каждого агента непосредственно после того, как выполняется действие На подходе ко входу, и сохраняется до тех пор, пока кран не отпустит агента.
Тип значения: double
Локальная переменная: T agent — текущий материальный объект

Захват крана

Захватывать кран
[Выбрано по умолчанию]
Позволяет блоку захватить кран. Чтобы перемещать агентов, кран должен быть захвачен. Убедитесь в том, что у вас выбрана и настроена эта опция или в диаграмме процессов перед этим блоком MoveByCrane есть соответствующим образом настроенный блок SeizeCrane.
Синтаксис: boolean seizeCrane
Кран
Кран, который перемещает агента (материальный объект).
Тип значения: Crane
Локальная переменная: Agent agent — текущий материальный объект
Время загрузки
Задает отрезок времени, в течение которого кран должен забрать агента и поднять его на рабочую высоту (материальный объект). Значение параметра рассчитывается непосредственно после подъема агента краном.
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
Способ выбора агентов
Задает способ, согласно которому кран выбирает агента для дальнейшего перемещения: либо FIFO (по умолчанию), либо Частный (согласно выражению, заданному в параметре Правило выбора).
Синтаксис: boolean customPriority
Задать новое значение во время выполнения: set_customPriority(новое значение)
Допустимые значения:
true — Частный
false — FIFO
Правило выбора
[Параметр виден, если выбрана опция Частный]
Задает выражение, результат которого используется краном для вычисления очередности обслуживания агентов. Результат выражения должен быть целым числом. Приоритет — у того агента, для которого выражение возвращает наибольшее значение.
Самый простой способ использования Правила выбора — это создание целочисленного параметра для того типа агента, который будет обслуживаться краном. Затем вы можете указать этот параметр в качестве Правила выбора. Так, если у типа агента есть параметр priority, задающий приоритет обслуживания каждого отдельного агента целым числом, то вы можете задать в качестве значения поля Правило выбора следующее выражение: agent.priority.
Тип значения: int
Локальная переменная: T agent — текущий материальный объект

Освобождение крана

Освобождать кран
[Выбрано по умолчанию]
Позволяет этому блоку освобождать ранее захваченный кран. Кран может быть захвачен либо этим блоком, либо блоком SeizeCrane.
Синтаксис: boolean seizeCrane
Время разгрузки
Задает отрезок времени, в течение которого кран должен отпустить агента (материальный объект). Значение параметра рассчитывается непосредственно перед тем, как кран отпускает агента.
Тип значения: double
Локальная переменная: T agent — текущий материальный объект
В режиме ожидания крюк
Здесь вы можете выбрать поведение крюка после того, как кран отпустит материальный объект: крюк либо Остается на месте, либо Возвращается в исходную позицию, если нет других задач. В случае стрелового крана, исходная позиция крюка рассчитывается в соответствии со значениями, заданными в параметрах Начальный поворот плеча и Местоположение каретки свойств крана. В случае мостового крана, начальное положение крюка зависит от значения, заданного в параметрах Местоположение моста и Местоположение каретки свойств крана.
Тип значения: MoveByCrane.CraneReleaseMovingPolicy
Локальная переменная: Crane crane — кран

Действия

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

Функции

Функции блока MoveByCrane
Функция Описание
int size() Возвращает количество агентов, в данный момент перемещаемых этим краном.
T remove(Agent agent) Извлекает заданного агента из крана, который его перемещает.
T get(int index) Возвращает агента с заданным индексом index. Порядок агентов соответствует порядку, в котором их подобрал кран.
boolean contains(Agent agent) Возвращает значение true, если заданный агент находится в данный момент внутри этого блока. В обратном случае возвращает значение false.
void cancel(T agent) Заставляет заданного агента немедленно покинуть блок через порт ccl. При вызове этой функции выполняется код, заданный для действия При отмене.
int numberOfLoading() Количество агентов, которые находятся в процессе погрузки на кран. Например, в случае крана с несколькими балками таких агентов тоже может быть несколько.
int numberOfUnloading() Количество агентов, которые находятся в процессе разгрузки с крана. Например, в случае крана с несколькими балками таких агентов тоже может быть несколько.

Порты

in
Входной порт.
out
Выходной порт.
ccl
Выходной порт, через который агенты покидают объект в случае события "отмены", возникшего в результате вызова метода cancel().
Как мы можем улучшить эту статью?