Менеджер расписания

Экземплярная модель Менеджер расписания (users.%.models.scheduleManager), входящая в состав %AGMES% Planning and Scheduling, является основным инструментом для составления расписания. Экземпляры этой модели, доступные из корня системного дерева, позволяют составлять расписание для различных частей предприятия.

Переменные менеджера расписания

Настройки

Переменная Статус

Переменная Статус (status) показывает текущий статус менеджера расписаний.

Поле

Тип

Описание

status

Integer

Текущий статус менеджера расписания:

  • 0 - Свободный - менеджер не занят никакими коммерческими заказами.

  • 11 - В работе (Фаза 1) - запущена первая фаза алгоритма планирования/планирование прервано на первой фазе.

  • 12 - В работе (Фаза 2) - запущена вторая фаза алгоритма планирования/планирование прервано на второй фазе.

  • 13 - В работе (Фаза 3) - запущена третья фаза алгоритма планирования.

  • 14 - В работе (Фаза 4) - запущена четвёртая фаза алгоритма планирования.

  • 20 - Завершено (Ручной) - менеджер завершил свою работу в ручном режиме.

  • 21 - Мониторинг (Авто) - менеджер отслеживает изменения в расписании в автоматическом режиме.

  • 22 - Мониторинг (Следующий заказ) - менеджер отслеживает изменения в расписании в режиме следующего заказа.

  • 3 - Ошибка - менеджер не смог составить непротиворечивое расписание.

Переменная Настройки алгоритма

Переменная Настройки алгоритма (algorithmSettings) задаёт общие настройки влияющие на создаваемое менеджером расписание.

Поле

Тип

Описание

mode

Integer

Режим работы менеджера:

  • 0 - Ручной - оператор в ручную запускает процесс планирования и согласовывает составленное расписание.

  • 1 - Автоматический - после составления расписания менеджер отслеживает изменения в составленном им расписании и связанных с расписанием сущностях. При появлении критических изменений менеджер автоматически полностью пересчитывает составленное расписание, отменяет ранее проставленные им рабочие заказы и назначает новые.

  • 2 - Следующий заказ - менеджер составляет частичное расписание, не планируя длинные цепочки рабочих заказов. Менеджер отслеживает изменения в составленном расписании и по мере его изменения и выполнения рабочих заказов перепланирует расписание, по необходимости дополняя его новыми рабочими заказами.

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

Тип рабочего заказа (см. модель Типы рабочих заказов):

  • production - производственный (производственный)

  • cleaning - очистка (не производственный)

  • maintenance - обслуживание (не производственный)

  • changeover - переналадка (не производственный)

  • testing - тестирование (не производственный)

  • training - тренировка (не производственный)

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

Код завершения функции:

  • 0 - заготовки рабочих заказов составлены успешно;

  • 1 - конечные продукты коммерческих заказов уже доступны на складах;

  • 2 - недостаток сырья для выполнения коммерческих заказов;

  • 3 - недостаточно производственных ресурсов для выполнения рабочего заказа.

Вызов третьей фазы

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

Задача выбора наиболее выгодного варианта выполнения заказ-наряда сводится к задаче минимизации функции условной стоимости выполнения задачи. В коробочном решении вещественные значения этой функции зависят от нескольких параметров: почасовой рабочей и сверхурочной ставок сотрудников команды варианта выполнения заказа, суммарной стоимости непроизводственных рабочих заказов (переналадок и т.п.), которые связаны с выполнением задачи на конкретном оборудовании в конкретный момент времени, и удаленности начала выполнения заказа от начала интервала формирования расписания. Учёт этих трёх параметров при формировании стоимости выполнения заказа позволяет оптимизировать расписание по стоимости труда сотрудников, по времени/количеству переналадок и по времени выполнения коммерческого заказа. В рамках функции расчёта стоимости вариант заказа проходит ряд проверок на возможность его выполнения. Если вариант с заданными производственной сущностью и рабочей командой по тем или иным причинам не может быть выполнен в указанное время, то его стоимость считается бесконечной. Дополнительной задачей функции стоимости является конкретизация лотов входных и выходных продуктов варианта и набора инструментов.

Алгоритм последовательно ищет наилучшие варианты выполнения каждой задачи по списку, сформированному на предыдущей фазе, при этом учитываются уже найденные наилучшие варианты предыдущих задач в списке (выставленные рабочие заказы). В случае невозможности составления непротиворечивого расписания, то есть если для какой-либо из задач нет варианта её выполнения с вещественной стоимостью, алгоритм досрочно заканчивает свою работу.

После завершения формирования расписания оно проходит несколько дополнительных проверок на непротиворечивость с низким приоритетом. На основе этих проверок может быть сформирован список предупреждений о возможных минорных ошибках в расписании. Составленное расписание и список предупреждений сохраняются в переменные Возможные рабочие заказы и Предупреждения соответственно.

Функция:

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?