ResourcePool

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

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

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

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

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

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

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

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

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

Параметры

Во всех динамических параметрах ресурс доступен как локальная переменная 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
Новый ресурс [динамический]
Выражение, определяющее, какой ресурс будет создаваться (обычно просто вызов конструктора класса создаваемого ресурса).
Значение по умолчанию: 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 - ресурс
Тип обслуживания
[Параметр виден, если выбрана опция Обслуживание] Здесь вы можете выбрать, как моделировать обслуживание: просто как задержку (опция Задержка) или как сложный процесс, описанный отдельной диаграммой (v).
Синтаксис: 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
Значение по умолчанию: 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...)

void resetStats() - Удаляет собранную статистику использования ресурса.

Collection<ResourceRequest> getRequests() - Возвращает текущую очередь запросов к ресурсам этого набора. Запросы в очереди упорядочены по их приоритету. Этот список не может быть модифицирован.

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

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

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

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

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

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

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

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

Демо модель: Defining a Work Schedule for Resources