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

ResourcePool

Задает набор ресурсов, которые могут захватываться и освобождаться агентами с помощью блоков Seize, Release, Assembler и Service.

Типы ресурсов

Ресурсы могут быть трех типов:

  • Статические ресурсы привязаны к определенному местоположению (например, узлу) внутри сети и не могут быть перемещаться или быть перемещены. Примером статического ресурса может быть рентгеновский кабинет или весы-платформа.
  • Движущиеся ресурсы могут перемещаться сами по себе, они могут представлять персонал, транспорт, и т.д.
  • Переносные ресурсы могут быть перемещены агентами или движущимися ресурсами. Переносное ультразвуковое устройство или кресло-каталка могут быть примерами переносных ресурсов.

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

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

Движущиеся ресурсы не служат препятствиями друг для друга, поэтому их движение не в полной мере соответствует реальности. Если при создании модели вы хотите учитывать возможные столкновения и разрешение навигационных конфликтов, более подходящим инструментом для этого будут транспортеры либо двигающиеся по заданному пути, либо с произвольной навигацией.

Блоки библиотеки, которые работают с ресурсами

Библиотека Моделирования Процесса поддерживает разнообразные операции с ресурсами: агент может захватить один или несколько ресурсов (блок Seize), освободить ресурсы (блок Release), отправить захваченные ресурсы в определенное местоположение (блок ResourceSendTo), прикреплять ресурсы так, чтобы они перемещались вместе с агентом (блок ResourceAttach), и отсоединять прикрепленные ресурсы (блок ResourceDetach). Совершая операции над множеством ресурсов, укажите их список в параметре ResourcePool; например, чтобы захватить двух медсестер и один рентгеновский кабинет, укажите: Nurse, Nurse, XRay.

Если запросы от блоков Seize и Service не могут быть удовлетворены в текущий момент времени, эти запросы помещаются в очередь блока ResourcePool. Эта очередь может быть либо обычной очередью FIFO, либо учитывать приоритеты запросов.

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

  • Если задачи имеют одинаковый приоритет, они будут выполняться последовательно в соответствии с настройками времени выполнения каждой из них. Если освободившихся единиц ресурса хватает, то такие задачи могут выполняться одновременно. Если у двух задач одинаковый приоритет, но одна из них по какой-то причине была ранее приостановлена, то выбирается приостановленная задача.1
  • Если для задач не задан механизм вытеснения, они будут выполняться последовательно в соответствии с настройками времени выполнения каждой из них. Если освободившихся единиц ресурса хватает, то такие задачи могут выполняться одновременно.
  • Начало выполнения задачи, заданной в одном блоке, не сбрасывает приоритеты задач, заданных в других блоках.
1 Каждый ресурс получает запросы из разных источников. Когда у ресурса есть несколько задач с одинаковым приоритетом (новых или ранее приостановленных), при выборе задачи к исполнению учитываются следующие правила:
  • Самый высокий приоритет — у приостановленных задач из «индивидуальной» очереди единицы ресурса.
    Такие очереди формируются агентами, находящимися в блоках, для которых значение свойства Правило вытеснения задач установлено на Ожидать оригинал ресурса.
  • После этого обрабатываются прерванные задачи из очереди блока ResourcePool.
    Эта очередь формируется агентами, находящимися в блоках, для которых значение свойства Правило вытеснения задач установлено на Захватывать любой ресурс.

После выполнения задач из этих очередей ресурс сначала выполняет задачи из «индивидуальной очереди», а затем — из очереди блока ResourcePool.

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

Способы задать количество ресурсов

Количество ресурсов может быть задано напрямую: вы просто указываете определенное число в поле Количество ресурсов. Вы можете динамически изменять вместимость блока с помощью функции set_capacity() во время запуска модели.

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

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

Также вы можете использовать опцию ...на основе аттракторов. Тогда количество ресурсов будет равно количеству аттракторов в "домашнем" узле.

Если вы зададите количество ресурсов несколькими узлами с аттракторами и без, то итогом будет общая сумма этих элементов. Например, если вы назначите в качестве базового местоположения 1 узел с 10 аттракторами и 2 узла без аттракторов, то количество ресурсов будет равно 12: по 1 ресурсу на аттрактор и по 1 ресурсу на каждый узел без аттракторов.

Задание количества ресурсов расписанием

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

  • Расписанием — расписанием, в котором будет задано, как количество ресурсов будет меняться с течением времени (Тип значения расписания — целое). Вы задаете интервалы времени, и затем указываете количество ресурсов для каждого из них в столбце Значение.

  • Расписанием доступности — расписанием, задающем то, как меняется статус доступности ресурсов с течением времени (Тип значения расписания — да/нет). Здесь вы задаете интервалы и для каждого устанавливаете Значение: да или нет. Затем, в свойствах блока ResourcePool, вы указываете количество ресурсов, доступных во время интервала со значениями да. Во время интервалов нет доступны 0 ресурсов.

  • Сменами: расписаниями групп — выберите несколько расписаний типа целое в параметре Расписания:

    Эти расписания запустятся одновременно, задавая количество ресурсов в соответствии с количеством, заданным в столбце Значение для интервалов в них. Вы можете создавать эти расписания так, чтобы смены пересекались или не пересекались между собой:

  • Планом смен — здесь вы можете задать количество ресурсов одним расписанием, но сразу для нескольких смен (примеры расписаний сменной работы можно найти в Википедии). Вы указываете количество ресурсов для каждой смены в свойстве Размеры смен { size1, size2,.. } блока ResourcePool. На примере ниже смена с ID 1 содержит 10 ресурсов, смена с ID 2 содержит 8 ресурсов, а смена с ID 3 — 5 ресурсов. Эти ID являются простым счетом от 1 и далее, и вам не нужно их нигде специально задавать.
    Далее, в свойствах расписания типа целое вы присваиваете каждому интервалу времени ID смены: например, интервал с 1 часа до 7 часов утра — смена с ID 1. Это значит, что во время этого интервала количество ресурсов будет составлять 10 единиц, как указано в свойстве Размеры смен { size1, size2,.. }.
    Используйте значение -1, чтобы обозначить общее время вне смен (Значение по умолчанию).

    Во время выполнения модели расписание отображает ID смен:

Демо-модель: Defining a Work Schedule for Resources Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Во всех динамических параметрах ресурс доступен как локальная переменная unit.

Тип
Тип ресурсов:
Движущийся
Статический
Переносной
Имя: type
Значение по умолчанию: ResourcePool.RESOURCE_MOVING (Движущийся)
Доступные значения
ResourcePool.RESOURCE_MOVING — Движущийся
ResourcePool.RESOURCE_STATIC — Статический
ResourcePool.RESOURCE_PORTABLE — Переносной
Количество задано
Определяет, как задано количество ресурсов:
Напрямую — явно заданным численным значением
Базовым местоположением — количество ресурсов будет равно количеству узлов, заданных в параметре Базовое местоположение (узлы) или количеству аттракторов в этом узле
Расписанием — расписанием, в котором будет задано, как количество ресурсов будет меняться с течением времени (тип значения расписания —  целое)
Расписанием доступности — расписанием, задающем то, как меняется статус доступности ресурсов с течением времени (тип значения расписания —  да/нет)
Сменами: расписаниями групп — количество ресурсов задается несколькими расписаниями
Планом смен — количество ресурсов задается расписанием со сменами, а количество ресурсов нужно указать в параметрах ниже
Имя: capacityDefinitionType
Значение по умолчанию: ResourcePool.CAPACITY_DIRECT (Напрямую)
Доступные значения:
ResourcePool.CAPACITY_DIRECT — Напрямую
ResourcePool.CAPACITY_HOME_LOCATION — Базовым местоположением
ResourcePool.CAPACITY_SCHEDULE — Расписанием
ResourcePool.CAPACITY_SCHEDULE_ON_OFF — Расписанием доступности
ResourcePool.CAPACITY_SHIFT_GROUP_SCHEDULES — Сменами: расписаниями групп
ResourcePool.CAPACITY_SHIFT_PLAN — Планом смен
Количество ресурсов
[Параметр виден, если Количество задано: Напрямую]
Количество ресурсов.
Синтаксис: int capacity
Значение по умолчанию: 1
Установить новое значение во время выполнения: set_capacity(новое значение)
При уменьшении кол-ва
[Параметр виден, если Количество задано: Напрямую, Расписанием или Расписанием доступности]
Выберите здесь, что должно происходить с лишними ресурсами:
ресурсы сохраняются (конец смены) — когда снижается количество ресурсов, лишние ресурсы сохраняются (как при окончании смены) и снова используются при повышении количества ресурсов
ресурсы уничтожаются — лишние ресурсы уничтожаются (и удаляются из своей популяции), так что для увеличения количества будут созданы новые ресурсы
Синтаксис: boolean destroyExcessUnits
Значение по умолчанию: false (ресурсы сохраняются (конец смены))
... на основе аттракторов
[Параметр виден, если Количество задано: Базовым местоположением]
Если выбрано, количество ресурсов будет равно количеству аттракторов внутри узла, указанного в параметре Базовое местоположение (узлы). Иначе количество ресурсов равняется количеству узлов в этом же параметре.
Синтаксис: boolean capacityBasedOnAttractors
Расписание
[Параметр виден, если Количество задано: Расписанием]
Расписание, задающее, как количество ресурсов будет изменяться с течением времени (тип значения расписания —  целое).
Синтаксис: Schedule<Integer> capacitySchedule
Расписание доступности
[Параметр виден, если Количество задано: Расписанием доступности]
Расписание, задающее то, как меняется статус доступности ресурсов с течением времени (тип значения расписания — да/нет). В те интервалы времени, которым будет соответствовать значению расписания нет, все ресурсы будут недоступны. В те интервалы времени, которым будет соответствовать значению расписания да, количество доступных ресурсов будет равно значению, заданному в поле Количество ресурсов ("да").
Синтаксис: Schedule<Boolean> capacityScheduleOnOff
Количество ресурсов ("да")
[Параметр виден, если Количество задано: Расписанием доступности]
Количество ресурсов, когда значение расписания да.
Тип значения: int
Значение по умолчанию: 1
Расписания
[Параметр виден, если Количество задано: Сменами: расписаниями групп]
Здесь вы можете добавить сразу несколько расписаний (тип значения расписания —  целое).
Синтаксис: Schedule<Integer>[] shiftGroupSchedules
Размеры смен { size1, size2,.. }
[Параметр виден, если Количество задано: Планом смен]
Количество ресурсов для каждой смены через запятую.
Синтаксис: int[] shiftGroupSizes
Расписание по ID смен
[Параметр виден, если Количество задано: Планом смен]
Расписание, содержащее ID смен, где 1 — это первая смена. Используйте значение -1, чтобы обозначить общее время вне смен, когда смены не используются.
Синтаксис: Schedule<Integer> shiftGroupsPlan
Новый ресурс
Выражение, определяющее, какой ресурс будет создаваться (обычно просто вызов конструктора класса создаваемого ресурса). Упоминается ниже как T.
Значение по умолчанию: Agent
Скорость
[Параметр виден, если Тип ресурса: Движущийся]
Скорость, с которой движется ресурс.
Синтаксис: double speed
Базовое местоположение (узлы)
Выберите узел (узлы), которые будут использоваться как базовое местоположение для ресурсов.
Синтаксис: Node[] homeNodes
Отображать анимацию по умолчанию
[Параметр виден, если Тип ресурса: Статический]
Если опция выбрана, и ресурсы являются агентами заданного по умолчанию типа Agent (а не созданного пользователем типа ресурса), то ресурсы будут отображаться на анимации с помощью маленьких кружков разных цветов. Эта опция чаще всего используется для проверки того, что статические ресурсы были правильно расположены в необходимых узлах.
Значение по умолчанию: true

Обслуживание, аварии, смены, перерывы

Задается c помощью
Здесь вы можете выбрать, каким способом для набора ресурсов будут создаваться задачи, описывающие техническое обслуживание, поломки, перерывы и т.д. По умолчанию задачи такого рода описываются с помощью Блока Downtime, или Свойств блока ResourcePool.
Синтаксис: ResourcePool.DowntimeSource downtimeSource
Установить новое значение во время выполнения: set_downtimeSource(новое значение)
Доступные значения:
ResourcePool.DOWNTIME_LIST — Блок(и) Downtime
ResourcePool.DOWNTIME_RESOURCE_POOL_PROPERTIES — Свойства блока ResourcePool
Блок(и) Downtime
[Параметр виден, если Задается с помощью: Блока Dowtime]
Здесь вы можете перечислить нужные вам блоки Downtime.
Синтаксис: Downtime[] downtimeList
Установить новое значение во время выполнения: set_downtimeList(новое значение)
Обслуживание
[Параметр виден, если Задается с помощью: Свойств блока ResourcePool]
Если опция выбрана, ресурсы будут проходить техническое обслуживание. Свойства задачи обслуживания настраиваются ниже.
Синтаксис: boolean enableMaintenance
Установить новое значение во время выполнения: set_enableMaintenance(новое значение)
Время до первого обслуживания
[Параметр виден, если выбрана опция Обслуживание]
Время до первого обслуживания.
Тип значения: double
Локальная переменная: T unit — ресурс
Время до следующего обслуживания
[Параметр виден, если выбрана опция Обслуживание]
Время между задачами обслуживания (отсчет начинается, когда задача обслуживания заканчивается).
Тип значения: double
Локальная переменная: T unit — ресурс
Приоритет (ТО)
[Параметр виден, если выбрана опция Обслуживание]
Приоритет задачи обслуживания. Чем выше значение, тем выше приоритет. Он будет сравниваться с приоритетами других задач, чтобы решить, какая задача может вытеснять другие.
Тип значения: double
Значение по умолчанию: 100
Локальная переменная: T unit — ресурс
Может вытеснять (ТО)
[Параметр виден, если выбрана опция Обслуживание]
Если опция выбрана, задача обслуживания может вытеснять производимую в текущий момент задачу (если возможно согласно свойствам задачи, и приоритет задачи ниже).
Тип значения: boolean
Локальная переменная: T unit — ресурс
Тип обслуживания
[Параметр виден, если выбрана опция Обслуживание]
Здесь вы можете выбрать, как моделировать обслуживание: просто как задержку (опция Задержка) или как сложный процесс, описанный отдельной диаграммой (Отправить в диаграмму процесса).
Синтаксис: ResourcePool.MaintenanceType maintenanceType
Установить новое значение во время выполнения: set_maintenanceType(новое значение)
Значение по умолчанию: Задержка (ResourcePool.MAINTENANCE_DELAY)
Доступные значения:
ResourcePool.MAINTENANCE_DELAY — Задержка
ResourcePool.MAINTENANCE_FLOWCHART — Отправить в диаграмму процесса
Время обслуживания
[Параметр виден, если выбрана опция Обслуживание и Тип обслуживания: Задержка]
Время обслуживания.
Тип значения: double
Локальная переменная: T unit — ресурс
Блок ResourceTaskStart (ТО)
[Параметр виден, если выбрана опция Обслуживание и Тип обслуживания: Отправить в диаграмму процесса]
Блок ResourceTaskStart, задающий начало диаграммы процесса, моделирующей процесс ремонта ресурсов.
Тип значения: ResourceTaskStart
Локальная переменная: T unit — ресурс
В статистике
[Параметр виден, если выбрана опция Обслуживание]
Здесь вы можете выбрать, хотите ли вы рассматривать время обслуживания как "занятое" время, как "свободное" время, или оно не учитывается вовсе.
Тип значения: ResourceUsageState
Значение по умолчанию: ResourcePool.USAGE_NOT_COUNTED (не учитывается)
Локальная переменная: T unit — ресурс

Аварии / ремонты

[Параметр виден, если Задается с помощью: Свойств блока ResourcePool]
Если опция выбрана, у данных ресурсов будут случаться аварии. Свойства аварий настраиваются ниже.
Синтаксис: boolean enableFailuresRepairs
Установить новое значение во время выполнения: set_enableFailuresRepairs(новое значение)
Время до первой аварии
[Параметр виден, если выбрана опция Аварии / ремонты]
Время до первой аварии.
Тип значения: double
Значение по умолчанию: uniform(0, 1000) секунд
Локальная переменная: T unit — ресурс
Время до следующей аварии
[Параметр виден, если выбрана опция Аварии / ремонты]
Время между авариями (отсчет начинается, когда начинается ремонт).
Тип значения: double
Локальная переменная: T unit — ресурс
Учитывать только рабочее время
Если данная опция выбрана, время между авариями (время до аварии) учитывается только в том случае, если ресурс занят какой-либо задачей. Если опция не выбрана, учитывается все время, вне зависимости от занятости ресурса.
Синтаксис: boolean countBusyOnlyTimeToFailure
Установить новое значение во время выполнения: set_countBusyOnlyTimeToFailure(новое значение)
Тип ремонта
[Параметр виден, если выбрана опция Аварии / ремонты]
Здесь вы можете выбрать, как моделировать ремонт: просто как задержку (опция Задержка) или как сложный процесс, описанный отдельной диаграммой ( Отправить в диаграмму процесса).
Синтаксис: ResourcePool.RepairType repairType
Установить новое значение во время выполнения: set_repairType(новое значение)
Значение по умолчанию: ResourcePool.REPAIR_DELAY (Задержка)
Время ремонта
[Параметр виден, если Тип ремонта: Задержка]
Время, требуемое на исправление аварии.
Тип значения: double
Значение по умолчанию: triangularAV( 10, 0.1 ) секунд
Локальная переменная: T unit — ресурс
Блок ResourceTaskStart (ремонт)
[Параметр виден, если Тип ремонта: Отправить в диаграмму процесса]
Блок ResourceTaskStart, задающий начало диаграммы процесса, моделирующей процесс ремонта ресурсов.
Тип значения: ResourceTaskStart
Локальная переменная: T unit — ресурс
В статистике
[Параметр виден, если выбрана опция Аварии / ремонты]
Здесь вы можете выбрать, хотите ли вы рассматривать время аварий как "занятое" время, как "свободное" время, или оно не учитывается вовсе.
Тип значения: ResourceUsageState
Значение по умолчанию: ResourcePool.USAGE_NOT_COUNTED (не учитывается)
Локальная переменная: T unit — ресурс
Приоритет (конец смены)
Приоритет расписания смены. Чем выше значение, тем выше приоритет.
Тип значения: double
Значение по умолчанию: 100
Локальная переменная: T unit — ресурс
Правило вытеснения (конец смены)
Здесь вы можете выбрать, могут ли другие задачи прекратить текущую задачу (опция Прекратить) или нет (Вытеснения нет).
Тип значения: ResourcePreemptionPolicy
Значение по умолчанию: ResourcePool.PP_NO_PREEMPTION (Вытеснения нет)
Локальная переменная: T unit — ресурс
Может вытеснять (конец смены)
Устанавливает, может ли задача конец смены вытеснять задачу, воспроизводимую в текущий момент, если такие есть. Другими словами, true означает, что ресурс "бросит свою работу" ровно в момент окончания смены. Если false, тогда ресурс закончит свои задачи с меньшим приоритетом.
Тип значения: boolean
Значение по умолчанию: false
Локальная переменная: T unit — ресурс
Перерывы
[Параметр виден, если Задается с помощью: Свойств блока ResourcePool]
Если опция выбрана, то ресурсы будут иметь перерывы. Свойства перерывов настраиваются ниже.
Синтаксис: boolean enableBreaks
Установить новое значение во время выполнения: set_enableBreaks(новое значение)
Расписание перерывов
[Параметр виден, если выбрана опция Перерывы]
Укажите имя расписания, которое задает расписание перерывов для этих ресурсов (тип значения расписания —  да/нет).
Синтаксис: Schedule<Boolean> breaksSchedule
Приоритет (перерыв)
[Параметр виден, если выбрана опция Перерывы]
Приоритет задачи перерыв. Чем выше значение, тем выше приоритет. Он будет сравниваться с приоритетами других задач, чтобы решить, какая задача может вытеснять другие.
Если в момент, когда ресурс должен был уйти на перерыв, выполнялась более приоритетная задача, то начало перерыва отложится ровно настолько, сколько понадобится ресурсу, чтобы завершить более приоритетную задачу.
Например, рассмотрим перерыв, заданный с помощью расписания с интервальным режимом. Интервал "on", в течение которого ресурс находится на перерыве, длится 2 часа и повторяется каждые 10 часов. Интервал "off" соответственно длится 8 часов. Если более приоритетная задача займет первый час интервала "on", то перерыв начнется со второго часа и продлится 2 часа, как и было запланировано. Интервал "off" в свою очередь сократится ровно на столько времени, сколько отняла в расписании более приоритетная задача, и будет длиться не 8 часов, а 7.
Тип значения: double
Значение по умолчанию: 50
Локальная переменная: T unit — ресурс
Может вытеснять (перерыв)
[Параметр виден, если выбрана опция Перерывы]
Если опция выбрана, задача перерыв может вытеснять производимую в текущий момент задачу (если возможно согласно свойствам задачи, и приоритет задачи ниже).
Тип значения: boolean
Локальная переменная: T unit — ресурс
Правило вытеснения
[Параметр виден, если выбрана опция Перерывы]
Здесь вы можете выбрать, могут ли другие задачи прекратить текущую задачу (опция Прекратить) или нет (Вытеснения нет).
Тип значения: ResourcePreemptionPolicy
Значение по умолчанию: ResourcePool.PP_TERMINATE (Прекратить)
Локальная переменная: T unit — ресурс
В статистике
[Параметр виден, если выбрана опция Перерывы]
Здесь вы можете выбрать, хотите ли вы рассматривать время перерывов как "занятое" время, как "свободное" время, или оно не учитывается вовсе.
Тип значения: ResourceUsageState
Значение по умолчанию: ResourcePool.USAGE_NOT_COUNTED (не учитывается)
Локальная переменная: T unit — ресурс
Дополнительные задачи
[Параметр виден, если Задается с помощью: Свойств блока ResourcePool]
Если эта опция выбрана, вы можете задать больше задач для ресурсов c помощью блока Downtime. Используйте эту опцию, когда ваша задача не может быть задана стандартными шаблонами, предоставленными для аварий, перерывов, обслуживания.
Синтаксис: boolean enableCustomTasks
Установить новое значение во время выполнения: set_enableCustomTasks(новое значение)
Список задач
[Параметр виден, если выбрана опция Дополнительные задачи]
Список блоков Downtime типа Нестандартная, задающих дополнительные задачи для этих ресурсов.
Синтаксис: DowntimeDescriptor[] customTasks
Установить новое значение во время выполнения: set_customTasks(новое значение)

Специфические

Настроить выбор задачи
Если эта опция выбрана, ресурсы будут учитывать Условие выбора задачи при выборе следующей задачи.
Синтаксис: boolean customizeRequestChoice
Значение по умолчанию: false
Условие выбора задачи
[Параметр виден, если выбрана опция Настроить выбор задачи]
Здесь вы можете указать булево выражение, которое будет вычисляться, чтобы найти подходящую задачу для ресурса. Если нет доступных задач, подходящих под условие (условие возвращает false), то ресурс останется свободным. Если условие возвращает true, из всех удовлетворяющих условию задач ресурс выберет задачу с наиболее высоким приоритетом.
Тип значения: boolean
Значение по умолчанию: true
Локальные переменные:
agent — агент
unit — ресурс
self — набор ресурсов
Добавить ресурсы в
Здесь вы можете указать, куда будут помещены ресурсы, созданные этим блоком, в популяцию по умолчанию или в другую популяцию агентов, которую вы можете выбрать ниже.
Синтаксис: boolean addToCustomPopulation
Значение по умолчанию: false (популяцию по умолчанию)
Популяция агентов
[Параметр виден, если Добавить ресурсы в: другую популяцию агентов]
Имя популяции агентов, куда будут помещены ресурсы, созданные этим блоком.
Тип значения: AgentList
Локальная переменная: T unit — ресурс
Включить сбор статистики
Этот блок собирает статистику: как собственную, так и для содержащихся в нем ресурсов.
Если сбор статистики глобально отключен для всех блоков Библиотеки моделирования процессов с помощью блока PML Settings, то эта опция позволяет переопределить эту настройку и включить сбор статистики для этого конкретного блока. Иначе статистика собирается вне зависимости от этой настройки.
Больше информации о статистике, собираемой отдельными ресурсами — в разделе, посвященном функциям статистики загруженности ресурса.
Синтаксис: boolean forceStatisticsCollection
Установить новое значение во время выполнения: set_forceStatisticsCollection(новое значение)
Значение по умолчанию: false

Действия

При создании нового ресурса
Код, выполняемый при создании нового ресурса (может использоваться для дополнительной инициализации).
Локальная переменная: T unit — только что созданный ресурс
При уничтожении ресурса
Код, выполняемый при уничтожении ресурса.
Локальная переменная: T unit — ресурс
При захвате
Код, выполняемый при захвате ресурса.
Локальные переменные:
T unit — ресурс
Agent agent — агент, захвативший этот ресурс
При освобождении
Код, выполняемый при освобождении ресурса.
Локальные переменные:
T unit — ресурс
Agent agent — агент, освобождающий ресурс
При завершении
Код, выполняемый при завершении задачи ресурса.
Локальная переменная: T unit — ресурс
При изменении состояния ресурса
Код, выполняемый, когда ресурс меняет свое действие.
Локальные переменные:
T unit — ресурс
boolean busy — true, если ресурс занят (это не значит, что он был свободен ранее), false, если свободен
ResourceTaskType type — один из типов задач, если ресурс занят:
TASK_ENTITY
TASK_END_OF_SHIFT
TASK_WRAP_UP
TASK_BREAK
TASK_REPAIR
TASK_MAINTENANCE
TASK_CUSTOM
Agent agent — агент, сопоставимый с этой задачей единицы ресурса. Актуально для типов TASK_ENTITY (где агент владеет ресурсом) и TASK_WRAP_UP (агент, который прежде использовал эту единицу ресурса и недавно освободил ее)
ResourceTask task — дескриптор задачи, применим в случае типа TASK_CUSTOM: будет ссылка на блок Downtime, который представляет текущую задачу ресурса
При начале ТО
[Виден, если выбрана опция Обслуживание]
Код, выполняемый при начале обслуживания.
Локальная переменная: T unit — ресурс
При окончании ТО
[Виден, если выбрана опция Обслуживание]
Код, выполняемый при окончании обслуживания.
Локальная переменная: T unit — ресурс
При поломке
[Виден, если выбрана опция Аварии / ремонты]
Код, выполняемый при аварии.
Локальная переменная: T unit — ресурс
При починке
[Виден, если выбрана опция Аварии / ремонты]
Код, выполняемый при окончании ремонтных работ.
Локальная переменная: T unit — ресурс
При начале перерыва
[Виден, если выбрана опция Перерывы]
Код, выполняемый при начале перерыва в работе ресурсов.
Локальная переменная: T unit — ресурс
При окончании перерыва
[Виден, если выбрана опция Перерывы]
Код, выполняемый при окончании перерыва в работе ресурсов.
Локальная переменная: T unit — ресурс
При прекращении перерыва
[Виден, если выбрана опция Перерывы]
Код, выполняемый при прерывании перерыва в работе ресурсов.
Локальная переменная: T unit — ресурс

Функции

Функция Описание
double utilization() Возвращает среднее значение коэффициентов загрузки каждого ресурса этого блока (собранное за время, прошедшее с последнего вызова функции resetStats()). Если количество доступных ресурсов задано с помощью расписания, то коэффициент загрузки рассчитывается только для рабочих часов.
int idle() Возвращает количество свободных ресурсов.
int busy() Возвращает количество занятых ресурсов, включая те, которые находятся в завершении, обслуживании, перерыве, аварии.
boolean containsUnit(Agent unit) Проверяет, содержит ли набор ресурс указанный ресурс. Возвращает true, если содержит; иначе, false).
void setShiftGroupCapacity(int id, int capacity) ;Устанавливает новый размер смены. Не убирает лишние ресурсы, а присваивает им задачу "out-of-shift" (сначала незанятым ресурсам, затем ресурсам с задачами с меньшим приоритетом).
int size() Возвращает общее количество ресурсов, включая те, которые не входят в текущую рабочую смену.
int sizeActive() Возвращает общее количество ресурсов в текущей смене.
int sizeOfShiftGroup(int id) Возвращает общее количество ресурсов (включая те, которые не входят в смену) в смене с заданным ID.

id — id смены (1, 2, 3...)
boolean isStatisticsCollected() Возвращает true, если блок собирает статистику.
void resetStats() Удаляет собранную статистику использования ресурса.
Collection<ResourceRequest> getRequests() Возвращает текущую очередь запросов к ресурсам этого набора. Запросы в очереди упорядочены по их приоритету. Этот список не может быть модифицирован.
Как мы можем улучшить эту статью?