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

Функции ресурсов

Если вам нужно использовать API ресурсов для получения информации о ресурсах и их изменения, рекомендуем использовать нестандартный тип ресурсов.

Ресурсы блоков ResourcePool и ресурсы, используемые агентами, формируют отдельные списки агентов (ресурсов). Такой список невозможно модифицировать, но с его помощью вы можете получить доступ к отдельным ресурсам.

  • Чтобы получить список ресурсов из набора ресурсов resourcePool:
    resourcePool.resourceUnits();
  • Чтобы получить список ресурсов, используемых агентом:
    agent.resourceUnits();
  • Чтобы получить список ресурсов, используемых агентом в блоке Service, называющемся service:
    service.getResourceUnits(agent);
  • Чтобы получить список ресурсов, используемых блоком Service, называющимся service:
    service.resourceUnits();

Есть несколько способов получить доступ к отдельному ресурсу из списка.

Предположим, модель содержит набор ресурсов miningCarts, каждый ресурс в котором — агент типа MiningCart. Перемещающиеся по диаграмме процесса агенты используют ресурс, находясь в блоке Service.

Чтобы взаимодействовать с ресурсом в описанном сценарии, нам нужно вызвать его и привести его тип:

  • С помощью итератора:
    List resources = agent.resourceUnits();
    MiningCart unit = (MiningCart)resources.iterator().next();
    
  • С помощью индекса ресурса в списке:
    List resources = agent.resourceUnits();
    int index = 0;
    MiningCart unit = (MiningCart)resources.get(index);
При вызове ресурса через локальную переменную unit в действии или динамическом свойстве блока (например, действия При начале блока Downtime), вам также необходимо явно привести тип ресурса.

После вызова и приведения типа ресурса, вы можете использовать любую из функций, доступных для ресурсов, работающих в диаграммах процессов Библиотеки моделирования процессов и Библиотеки производственных систем:

Информация о ресурсах
Функция Описание
ResourcePool resourcePool() Возвращает блок ResourcePool, которому принадлежит этот ресурс.
ResourceType getResourceType() Возвращает тип ресурса (RESOURCE_STATIC, RESOURCE_MOVING, RESOURCE_PORTABLE).
Состояние
Функция Описание
boolean isBusy() Проверяет, занят ли текущий ресурс (захвачен, движется к базовому местоположению или к месту применения). Возвращает true, если ресурс занят, в противном случае — false.
boolean isIdle() Проверяет, свободен ли текущий ресурс, и можно ли его занять. Возвращает true, если ресурс свободен, в противном случае возвращает false.
boolean isReserved() Возвращает true, если ресурс зарезервирован определенным запросом — ресурс при этом может быть свободен, то есть запрос не завершен, или занят другой задачей, которая будет прервана и вытеснена, когда запрос завершится.
Agent getReservedBy() Возвращает агента, который зарезервировал этот ресурс, или null (если этот ресурс не зарезервирован, см. isReserved()).
Agent getServicedEntity() Возвращает агента, который в данный момент владеет этим ресурсом. Возвращает null, если этот ресурс свободен либо занят сторонней задачей, не относящейся к агенту (к примеру, ремонт ресурсов).
Статистика загруженности
Функция Описание
double getUtilization() Возвращает загруженность ресурса: долю времени, в течение которой ресурс был занят. Возвращаемое значение загруженности ресурса находится в диапазоне [0..1]. Если доступность этого ресурса задана в блоке ResourcePool с помощью расписания, то коэффициент загрузки рассчитывается только для рабочих часов.
double timeInState(ResourceUsageState state) Возвращает время, которое ресурс провел в заданном состоянии.

state — состояние ресурса (ResourceUsageState.USAGE_IDLE или ResourceUsageState.USAGE_BUSY)
double timeInState(ResourceUsageState state, TimeUnits units) Возвращает время, которое ресурс провел в заданном состоянии (в заданных единицах измерения времени).

state — состояние ресурса (ResourceUsageState.USAGE_IDLE или ResourceUsageState.USAGE_BUSY)
units — константа, определяющая единицу измерения времени.
void resetStats() Производит сброс статистики загруженности.
Статистика обслуживания, аварий, перерывов
Функция Описание
double totalDowntime() Возвращает время, которое ресурс провел в простое любого типа.
double totalDowntime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел в простое любого типа.

units — константа, определяющая единицу измерения времени
double totalRepairTime() Возвращает время, которое ресурс провел в состоянии аварии.
double totalRepairTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел в состоянии аварии.

units — константа, определяющая единицу измерения времени
double totalMaintenanceTime() Возвращает время, которое ресурс провел на обслуживании.
double totalMaintenanceTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел на обслуживании.

units — константа, определяющая единицу измерения времени
double totalBreaksTime() Возвращает время, которое ресурс провел на перерывах.
double totalBreaksTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс провел на перерывах.

units — константа, определяющая единицу измерения времени
double totalCustomTasksTime() Возвращает время, которое ресурс потратил на дополнительные задачи.
double totalCustomTasksTime(TimeUnits units) Возвращает время (в указанных единицах измерения времени), которое ресурс потратил на дополнительные задачи.

units — константа, определяющая единицу измерения времени
Прикрепление ресурсов
Функция Описание
void setAttached(boolean attached) Прикрепляет ресурс к агенту или отсоединяет ресурс от агента, который им владеет. Применимо только к захваченным агентами ресурсам, в противном случае будет выдана ошибка.

attached — при значении true ресурс присоединяется; false — отсоединяется
boolean isAttached() Проверяет, прикреплен ли ресурс к агенту. Возвращает true, если прикреплен, в противном случае возвращает false.
Задачи
Функция Описание
ResourceTaskType currentTaskType() Возвращает тип текущей задачи или null, если ресурс свободен.

Допустимые значения:

TASK_ENTITY — задача, которая выполняется, пока ресурс захвачен агентом
TASK_END_OF_SHIFT — ресурс находится в промежутке между рабочими сменами в соответствии с расписанием
TASK_WRAP_UP — завершающая задача, которая выполняется после того, как ресурс выполнил основную задачу и освободился от агента
TASK_BREAK — ресурс на перерыве
TASK_REPAIR — задача определена как ремонт
TASK_MAINTENANCE — задача определена как обслуживание
TASK_CUSTOM — нестандартная задача из списка, указанного в блоке Downtime
ResourceUnitTask currentTask() Возвращает текущую задачу этого ресурса в виде экземпляров соответствующих классов. Если ресурс свободен, возвращает null.

Допустимые значения:

ResourceUnitBasicTask — в данном случае ресурс находится на перерыве либо выполняет задачу, определенную как ремонт или обслуживание
ResourceUnitEntityServiceSubTask — ресурс выполняет задачу, будучи захваченным агентом
ResourceUnitCustomTask — ресурс выполняет нестандартную задачу из списка, заданного в блоке Downtime
ResourceUnitEndOfShiftTask — ресурс находится между задачами в соответствии с расписанием и не выполняет никаких задач
ResourceUnitWrapUpTask — ресурс выполняет задачу, которая выполняется после того, как ресурс закончил основную задачу и освободился от агента
Базовое местоположение
Функция Описание
void setHomeLocation(INode home) Задает базовое местоположение для ресурса.

home — базовое местоположение
INode getHomeLocation() Возвращает узел сети, заданный в качестве базового местоположения для этого ресурса.
void setHomePosition(double x, double y) Задает координаты базового местоположения ресурса.

x — X координата
y — Y координата
void setHomePosition(double x, double y, double z) Задает координаты базового местоположения ресурса.

x — X координата
y — Y координата
z — Z координата
double getHomeX() Возвращает X координату базового местоположения ресурса.
double getHomeY() Возвращает Y координату базового местоположения ресурса.
double getHomeZ() Возвращает Z координату базового местоположения ресурса.
double getHomeRotation() Возвращает угол вращения базового местоположения ресурса.
Как мы можем улучшить эту статью?