Менеджер расписания
Экземплярная модель Менеджер расписания (users.%.models.scheduleManager), входящая в состав %AGMES% Planning and Scheduling, является основным инструментом для составления расписания. Экземпляры этой модели, доступные из корня системного дерева, позволяют составлять расписание для различных частей предприятия.
Переменные менеджера расписания
Настройки
Переменная Статус
Переменная Статус (status) показывает текущий статус менеджера расписаний.
Поле | Тип | Описание |
|---|---|---|
status | Integer | Текущий статус менеджера расписания:
|
Переменная Настройки алгоритма
Переменная Настройки алгоритма (algorithmSettings) задаёт общие настройки влияющие на создаваемое менеджером расписание.
Поле | Тип | Описание |
|---|---|---|
mode | Integer | Режим работы менеджера:
|
minStorageTime | Long | Минимальное время хранения - минимально возможное время хранения лота в ячейке хранения. |
maximumTravelTimeForParallelJobs | Long | Максимальное время в пути для параллельных работ - максимальное время перемещения сотрудника между двумя производственными сущностями, чтобы он мог параллельно выполнять на них рабочие заказы. |
WOExecutionTimeError | Long | Погрешность времени выполнения рабочего заказа - временная погрешность, с которой может начаться или закончиться выполнение рабочего заказа, без автоматического перерасчета расписания. |
WOInfluenceTimeArea | Long | Временная зона влияния рабочего заказа. Временной интервал до и после планируемого рабочего заказа. Если в рабочем заказе произошли изменения и в его интервал влияния попадают рабочие заказы каким-либо образом с ним взаимосвязанные, то это будет поводом для перерасчета расписания. |
autoUpdateDelay | Long | Задержка автоматического обновления. После возникновения события требующего перерасчёт расписания менеджер расписания будет ждать заданное количество времени перед тем, как начать автоматический перерасчет. |
autoUpdateShift | Long | Сдвиг автоматического обновления. Сдвиг начальной даты интервала формирования расписания при вызове автоматического перерасчета. Задаётся с учётом предполагаемого времени формирования расписания. |
Переменная Список событий
Переменная Список событий (eventList) хранит информацию о произошедших триггерных событиях, которые повлекут за собой перерасчет составленного менеджером расписания, если менеджер работает в одном из автоматических режимов. Переменная очищается во время перерасчета расписания, то есть по истечении времени autoUpdateDelay с момента появления первого триггерного события.
Поле | Тип | Описание |
|---|---|---|
entity | String | Контекст сущности, в которой произошло триггерное событие. |
dateTime | Date | Дата и время возникновения события. |
type | String | Тип триггерного события. |
Вход
Группа переменных, определяющих основные входные параметры алгоритма планирования менеджера расписания.
Переменная Временной диапазон
Переменная Временной диапазон (timeRange) задаёт временной интервал в рамках, которого должны быть выставлены рабочие заказы того расписания, которое создаёт данный менеджер.
Поле | Тип | Описание |
|---|---|---|
baseDateStart | Date | Дата начала расписания. |
baseDateEnd | Date | Дата окончания расписания. |
Переменная Корневая производственная сущность
Переменная Корневая производственная сущность (rootProductionEntity) определяет производственную область, для которой менеджер будет составлять расписание.
Поле | Тип | Описание |
|---|---|---|
rootProductionEntity | String | Контекст корневой производственной сущности. |
Переменная Коммерческие заказы
Переменная Коммерческие заказы (commercialOrders) определяет перечень коммерческих заказов, для которых менеджер составляет расписание. По мере завершения всех рабочих заказов относящихся к конкретному коммерческому заказу этот заказ удаляется из списка.
Поле | Тип | Описание |
|---|---|---|
product | String | Контекст производимого продукта. |
quantity | Double | Количество производимого продукта. |
measurementUnit | String | Единицы измерения производимого продукта. |
commercialID | String | Идентификатор коммерческого заказа. |
commercialOrder | Data Table | Дополнительные пользовательские данные коммерческого заказа. |
Переменная Отмененные рабочие заказы
Переменная Отмененные рабочие заказы (cancelledWorkorders) определяет перечень существующих рабочих заказов, отменяемых в рамках процесса составления расписания.
Слепки Системы
Данная группа обозначает ряд переменных, хранящих в себе различные слепки системных данных, создаваемых на первой фазе работы алгоритма планирования:
переменная Смены (shifts) - слепок информации о рабочих сменах сотрудников,
переменная Единицы хранения (storageUnits) - слепок информации о ячейках хранения и их текущих лотах, лотах после отмены рабочих заказов и ожидаемых лотах с учётом составленного менеджером расписания.
переменная Сотрудники (employees) - слепок информации о сотрудниках, их почасовых ставках, существующих рабочих заказах и рабочем графике,
переменная Производственные объекты (productionEntities) - слепок информации о производственных сущностях и их рабочих заказах,
переменная Инструменты (tools) - слепок информации об инструментах и их рабочих заказах.
Выход
Группа переменных, определяющих выходные данные алгоритма планирования расписания.
Переменная Возможные рабочие заказы
В переменной Возможные рабочие заказы (possibleWorkorders) хранится составляемое менеджером расписание.
Поле | Тип | Описание |
|---|---|---|
n | Integer | Порядковый номер строки. |
ID | String | Уникальный идентификатор рабочего заказа. |
type | String | Тип рабочего заказа (см. модель Типы рабочих заказов):
|
orderID | String | Уникальный идентификатор коммерческого заказа. |
segment | String | Сегмент, который выполняется в рамках заказа. |
cycleCount | Integer | Необходимое количество повторений сегмента. |
inputProducts | Data Table | Список лотов входных продуктов. |
outputProducts | Data Table | Список лотов выходных продуктов. |
productionEntity | String | Контекст производственной сущности рабочего заказа. |
workload | Double | Рабочая загрузка производственной сущности при выполнении рабочего заказа. |
employees | Data Table | Команда сотрудников, которые назначены на выполнение рабочего заказа. |
kit | Data Table | Набор инструментов необходимых для выполнения заказа. |
start | Date | Предполагаемая дата и время начала выполнения заказа. |
end | Date | Предполагаемая дата и время окончания выполнения заказа. |
cost | Double | Условная стоимость выполнения рабочего заказа, выставленная менеджером. |
code | Integer | Код расчёта условной стоимости. |
comment | String | Комментарий расчёта менеджера условной стоимости. |
Переменная Сегменты
Переменная Сегменты (segments) хранит заготовки под производственные заказы менеджера расписания.
Переменная Предупреждения
Переменная Предупреждения (warnings) хранит список предупреждений менеджера о возможных нестыковках в составленном им расписании.
Поле | Тип | Описание |
|---|---|---|
warning | String | Текст предупреждения. |
data | Data Table | Дополнительные данные предупреждения. |
code | Integer | Код предупреждения. |
wt | Integer | Вес (важность) предупреждения. |
entity | String | Контекст сущности, с которой связано предупреждение. |
type | String | Тип предупреждения. |
Основные функции менеджера расписания
Основной функционал менеджера расписания - это планирование и составление расписания. Алгоритм составления расписания работает в несколько фаз.
Вызов первой фазы
Функция вызывает первую фазу алгоритма планирования. На первой фазе алгоритм создает несколько слепков части системных данных и сохраняет их в переменных модели, в том числе информацию о стандартном рабочем расписании сотрудников с указанием конкретных рабочих и нерабочих временных периодов, данные состояния складов и складских остатков, входящих в область корневой производственной сущности, данные выполняемых рабочих заказов производственных сущностей области корневой производственной сущности.
![]() | По завершении этой фазы оператор, запустивший планирование, может изменить полученные слепки системы, таким образом может проводиться планирование “Что если?”. |
Функция: | callPhase1 | ||
Разрешения: | Доступно на уровне разрешений наблюдателя | ||
Входные записи: | 1 | ||
Входной формат: | Поле | Тип | Описание |
|---|---|---|---|
start | Date | Дата начала формирования расписания. | |
end | Date | Дата окончания формирования расписания. | |
rootProductionEntity | String | Корневая производственная сущность. | |
commercialOrders | Data Table | Перечень коммерческих заказов. | |
globalSchedule | Data Table | Глобальное расписание. | |
cancelledWorkorders | Data Table | Перечень отменяемых рабочих заказов. | |
Выходные записи: | 0...неограниченно | ||
Выходной формат: | Функция возвращает глобальное расписание с учётом отмененных рабочих заказов. | ||
Поле | Тип | Описание | |
ID | String | Уникальный идентификатор рабочего заказа. | |
type | String | Тип рабочего заказа (см. модель Типы рабочих заказов). | |
orderID | String | Уникальный идентификатор коммерческого заказа. | |
segment | String | Сегмент, который выполняется в рамках заказа. | |
cycleCount | Integer | Необходимое количество повторений сегмента. | |
workload | Double | Рабочая загрузка производственной сущности при выполнении рабочего заказа. | |
inputProducts | Data Table | Список лотов входных продуктов. | |
outputProducts | Data Table | Список лотов входных продуктов. | |
employees | Data Table | Команда сотрудников, которые назначены на выполнение рабочего заказа. | |
kit | Data Table | Набор инструментов необходимых для выполнения заказ-наряд. | |
start | Date | Ожидаемая/предполагаемая дата и время начала выполнения заказа. | |
end | Date | Ожидаемая/предполагаемая дата и время окончания выполнения заказа. | |
description | String | Развёрнутое описание заказа. | |
status | String | Текущий статус рабочего заказа (см. модель Статусы рабочих заказов). | |
currentCycleCount | Integer | Текущее количество повторений. | |
scrapRate | Integer | Количество текущих непригодных повторений. | |
realStart | Date | Действительные дата и время начала выполнения заказа. | |
realEnd | Date | Действительные дата и время окончания выполнения заказа. | |
disableAutoCancelling | Boolean | Флаг обозначающий, что рабочий заказ не будет отменен при автоматическом пересчете расписания. | |
Вызов второй фазы
Функция вызывает вторую фазу алгоритма планирования. На основе данных о складских остатках, информации о рецептах производства и коммерческих заказах рекурсивно воссоздаётся генеалогия производственных заказов, необходимых для выполнения коммерческого заказа. По информации о складских остатках часть ветвей дерева рабочих заказов может быть отсечена, в случае если на складах существуют свободные (не зарезервированные) лоты продуктов, так как нет необходимости их производить. “Заготовки” под производственные заказы составляются под размеры минимальных партий продуктов. На этом шаге также конкретизируются рецепты производства продуктов и входные/выходные продукты сегментов рецепта.
В конце второй фазы составленное дерево заготовок производственных заказов проходит проверку на наличие всего необходимого для производства сырья. Также заготовки производственных заказов дополняются информацией о производственных сущностях, на одной из которых может быть выполнен заказ, о командах сотрудников и наборах инструментов, подходящих для выполнения задачи, о ячейках хранения, из которых могут быть взяты входные продукты и в которые могут быть помещены выходные, и рядом дополнительных параметров.
Функция: | callPhase2 | ||
Разрешения: | Доступно на уровне разрешений наблюдателя | ||
Входные записи: | 1 | ||
Входной формат: | Поле | Тип | Описание |
|---|---|---|---|
removedEmployees | Data Table | Удаляемые сотрудники - перечень контекстов сотрудников, исключаемых из процесса планирования. | |
removedProductionEntities | Data Table | Удаляемые производственные сущности - перечень контекстов производственных сущностей исключаемых из процесса планирования. | |
removedTools | Data Table | Удаляемые инструменты - перечень контекстов инструментов исключаемых из процесса планирования. | |
Выходные записи: | 1 | ||
Выходной формат: | Поле | Тип | Описание |
result | Data Table | Дерево производственных заказов. | |
storageStatus | Data Table | Предварительное состояние лотов после выполнения необходимых производственных заказов. | |
segments | Data Table | Заготовки производственных рабочих заказов. | |
code | Integer | Код завершения функции:
| |
Вызов третьей фазы
Основной задачей третьей фазы работы алгоритма планирования является выбор наиболее выгодного варианта выполнения каждого производственного заказа. Различные варианты выполнения рабочего заказа определяются комбинацией производственной сущности, команды сотрудников и временем начала выполнения задачи (таймслотом). При этом набор рассматриваемых таймслотов зависит, как от рабочей команды задачи, так и от производственной сущности варианта рабочего заказа.
Задача выбора наиболее выгодного варианта выполнения заказ-наряда сводится к задаче минимизации функции условной стоимости выполнения задачи. В коробочном решении вещественные значения этой функции зависят от нескольких параметров: почасовой рабочей и сверхурочной ставок сотрудников команды варианта выполнения заказа, суммарной стоимости непроизводственных рабочих заказов (переналадок и т.п.), которые связаны с выполнением задачи на конкретном оборудовании в конкретный момент времени, и удаленности начала выполнения заказа от начала интервала формирования расписания. Учёт этих трёх параметров при формировании стоимости выполнения заказа позволяет оптимизировать расписание по стоимости труда сотрудников, по времени/количеству переналадок и по времени выполнения коммерческого заказа. В рамках функции расчёта стоимости вариант заказа проходит ряд проверок на возможность его выполнения. Если вариант с заданными производственной сущностью и рабочей командой по тем или иным причинам не может быть выполнен в указанное время, то его стоимость считается бесконечной. Дополнительной задачей функции стоимости является конкретизация лотов входных и выходных продуктов варианта и набора инструментов.
Алгоритм последовательно ищет наилучшие варианты выполнения каждой задачи по списку, сформированному на предыдущей фазе, при этом учитываются уже найденные наилучшие варианты предыдущих задач в списке (выставленные рабочие заказы). В случае невозможности составления непротиворечивого расписания, то есть если для какой-либо из задач нет варианта её выполнения с вещественной стоимостью, алгоритм досрочно заканчивает свою работу.
После завершения формирования расписания оно проходит несколько дополнительных проверок на непротиворечивость с низким приоритетом. На основе этих проверок может быть сформирован список предупреждений о возможных минорных ошибках в расписании. Составленное расписание и список предупреждений сохраняются в переменные Возможные рабочие заказы и Предупреждения соответственно.
Функция: | callPhase3 |
Разрешения: | Доступно на уровне разрешений наблюдателя |
Входные записи: | 0 |
Входной формат: | |
Выходные записи: | 0 |
Выходной формат: |
Вызов четвёртой фазы
В ручном режиме работы менеджера расписания функция возвращает информацию о созданном расписании рабочих заказов и лотов. В автоматическом режиме работы функция автоматически назначает и отменяет рабочие заказы на производственных сущностях и лоты в единицах хранения.
Функция: | callPhase4 | ||
Разрешения: | Доступно на уровне разрешений наблюдателя | ||
Входные записи: | 0 | ||
Входной формат: | |||
Выходные записи: | 0-1 | ||
Выходной формат: | Выходной формат функции динамический и зависит от режима работы менеджера расписания. Если менеджер работает в одном из автоматических режимов, функция вернет null, если же менеджер работает в ручном режиме, функция вернет таблицу следующего формата: | ||
Поле | Тип | Описание | |
addedWO | Data Table | Перечень созданных рабочих заказов. | |
removedWO | Data Table | Перечень отменяемых рабочих заказов. | |
addedLots | Data Table | Перечень добавленных (новых) лотов. | |
removedLots | Data Table | Перечень отменяемых лотов. | |
changedLots | Data Table | Перечень изменяемых лотов. | |
Вызов создания расписания
Функция предназначена для работы менеджера в одном из автоматических режимов. Она последовательно вызывает каждую фазу алгоритма планирования.
Функция: | callCreateSchedule | ||
Разрешения: | Доступно на уровне разрешений наблюдателя | ||
Входные записи: | 1 | ||
Входной формат: | Поле | Тип | Описание |
|---|---|---|---|
start | Date | Дата начала формирования расписания. | |
end | Date | Дата окончания формирования расписания. | |
rootProductionEntity | String | Корневая производственная сущность. | |
commercialOrders | Data Table | Перечень коммерческих заказов. | |
globalSchedule | Data Table | Глобальное расписание. | |
cancelledWorkorders | Data Table | Перечень отменяемых рабочих заказов. | |
Выходные записи: | 0...неограниченно | ||
Выходной формат: | Выходной формат функции динамический. Если на одной из фаз алгоритма планирования произойдёт запланированная ошибка функция вернет информацию об этой ошибке, в противном случае null. | ||
Was this page helpful?
