Package google.research.optimization.v1.workforce

Индекс

Перерыв

Период времени, в течение которого сотрудник прерывает свою работу во время смены.

Поля
start_date_time

DateTime

Время начала перерыва.

duration_minutes

int32

Продолжительность перерыва в минутах.

BreakRule

Правило, определяющее время начала перерыва в смене и его продолжительность. Список всех возможных перерывов, которые учитываются, определяется с шагом rule_increment_minutes . Например, если правило перерыва моделирует 30-минутный перерыв, который может начаться с 10:00 до 11:00, а приращение правила составляет 20 минут, учитываются следующие списки перерывов: [10:00, 10 :30], [10:20, 10:50], [10:40, 11:10], [11:00, 11:30].

Поля
earliest_start_time

DateTime

Самое раннее время начала перерыва (включительно). Можно установить только hours и minutes .

latest_start_time

DateTime

Самое позднее время начала перерыва (включительно). Можно установить только hours и minutes .

duration_minutes

int32

Продолжительность перерыва в минутах.

rule_increment_minutes

int32

[Необязательно] Приращение времени в минутах для всех перерывов, которые могут учитываться в этом правиле перерывов. Если не установлено, по умолчанию используется duration_minutes .

Требование к бюджету

Бюджетные требования на заданный интервал.

Поля
total_budget

double

Общий бюджет за заданный интервал. Общий бюджет должен быть указан, если приоритет равен PRIORITY_MANDATORY .

Если total_budget не установлен, то общая стоимость расписания минимизируется в соответствии с указанным priority . Например, если priority бюджета — PRIORITY_MEDIUM , то решатель минимизирует стоимость, прежде чем уменьшать любое нарушение ограничений с приоритетом PRIORITY_LOW .

start_date_time

DateTime

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

end_date_time

DateTime

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

priority

Priority

Уровень приоритета для удовлетворения бюджетных требований в течение указанного временного окна. Приоритет по умолчанию — PRIORITY_LOW . Если приоритет установлен на PRIORITY_MANDATORY , то необходимо установить total_budget .

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

Требование к покрытию

Требование покрытия определяет количество сотрудников, необходимых для выполнения набора ролей и/или навыков в течение определенного периода времени и в данном месте. Интервалы DateTime в определенном месте не могут перекрываться. Альтернативно, вместо временного окна и местоположения может быть предоставлен список идентификаторов смен. Этому требованию могут соответствовать только сотрудники, которым может быть назначена конкретная роль (или которые обладают определенными навыками).

Для данной роли и/или навыка требование покрытия выполняется, когда по крайней мере количество сотрудников target_employee_count работает в каждый момент временного окна (или для каждой смены в shift_ids ). Напротив, требование покрытия нарушается, если в любой момент временного окна (или для любой из смен в shift_ids ) количество сотрудников, работающих в течение временного окна, меньше target_employee_count . Большее количество работающих сотрудников, чем target_employee_count по-прежнему удовлетворяет требованию, но решающая программа сводит к минимуму чрезмерную численность персонала.

Поля
start_date_time

DateTime

Время начала требования к покрытию (включительно). Если установлено, shift_ids должен быть пустым.

end_date_time

DateTime

Время окончания требования к страховому покрытию (эксклюзивное). Если установлено, shift_ids должен быть пустым.

location_id

string

Место, где требуются сотрудники. shift_ids не пусто, это поле должно быть пустым.

shift_ids[]

string

Если этот параметр установлен, требования к роли и навыкам применяются индивидуально к каждому идентификатору смены в этом списке. Еслиshift_ids непусто, то start_date_time , end_date_time и location_id должны быть пустыми.

role_requirements[]

RoleRequirement

Требуемое количество сотрудников, которые будут назначены на указанные роли в течение временного окна. Для каждого идентификатора роли должно быть указано не более одного role_requirement . Уровень приоритета по умолчанию для каждого из требований — PRIORITY_MANDATORY . Эти ограничения нарушаются, если в любой момент временного окна указанным ролям назначено меньшее количество сотрудников, чем target_employee_count .

skill_requirements[]

SkillRequirement

Требуемое количество сотрудников с указанными навыками, назначенных на смены в течение временного окна. Для каждого идентификатора навыка должно быть указано не более одного skill_requirement . Уровень приоритета по умолчанию для каждого из требований — PRIORITY_LOW . Эти ограничения нарушаются, если количество сотрудников, обладающих заданными навыками, в любой момент временного окна меньше target_employee_count .

РольТребование

Требуемое количество сотрудников, которые будут назначены на указанную роль в течение временного окна.

Поля
role_id

string

Идентификатор роли для требования.

target_employee_count

int32

Желаемое количество сотрудников, назначенных на эту роль в течение временного окна.

priority

Priority

Уровень приоритета для этого ограничения требования. Приоритет по умолчанию для всех ограничений ресурсов — PRIORITY_MANDATORY .

Требование к навыку

Необходимое количество сотрудников, работающих в течение определенного временного окна и обладающих указанными навыками.

Поля
skill_id

string

Идентификатор навыка для требования.

target_employee_count

int32

Желаемое количество сотрудников с заданной квалификацией, работающих в течение определенного временного окна.

priority

Priority

Уровень приоритета для этого ограничения требования. Приоритет по умолчанию для всех ограничений ресурсов — PRIORITY_LOW .

Нарушение покрытия спроса

Указывает нарушение покрытия спроса для данного интервала. Спрос на работника одинаков на протяжении всего заданного интервала.

Поля
start_date_time

DateTime

Дата и время начала интервала спроса (включительно). Это значение указывается с точностью до минуты.

end_date_time

DateTime

Дата и время окончания интервала спроса (эксклюзивно). Это значение указывается с точностью до минуты.

coverage_violation

int32

Нарушение покрытия в течение указанного интервала. Положительное значение указывает на то, что спрос перекрыт, а отрицательное значение указывает на то, что спрос недостаточно покрыт.

Сотрудник

Сотрудник из числа сотрудников, подлежащих планированию.

Поля
id

string

Уникальный идентификатор, присвоенный этому сотруднику.

role_ids[]

string

Идентификаторы ролей, которые может выполнять этот сотрудник. Должна быть указана хотя бы одна роль. При назначении сотрудника на смену ему также назначается одна роль из этого списка. Сотруднику могут быть назначены различные роли во время окна планирования.

skill_ids[]

string

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

shift_preferences[]

ShiftPreference

Изменить предпочтения этого сотрудника. Указанные здесь смены представляют собой смены, на которые сотрудник предпочел бы быть назначен во время окна планирования. Идентификаторы смен, указанные в shift_preferences должны быть уникальными. Решатель попытается максимизировать сумму значений ShiftPreference.preference по всем удовлетворенным shift_preferences .

scheduling_constraints[]

SchedulingConstraint

Список ограничений планирования для этого сотрудника. Уровень приоритета по умолчанию для каждого из этих ограничений — PRIORITY_MEDIUM . Дополнительные сведения см. в перечислении Priority .

resource_constraints[]

ResourceConstraint

Любые дополнительные ограничения планирования, не указанные в scheduling_constraints могут быть добавлены сюда в resource_constraints . ResourceConstraint — это более абстрактное представление ограничения ресурсов для сотрудника. Уровень приоритета по умолчанию для каждого из этих ограничений — PRIORITY_MEDIUM . Дополнительные сведения см. в перечислении Priority .

shift_requests[]

ShiftRequest

Список заявок на смену для сотрудника. Запрос может заключаться в назначении или не назначении сотрудника на определенные смены. Любые фиксированные назначения планирования для сотрудника могут быть представлены с помощью ShiftRequest с приоритетом PRIORITY_MANDATORY . Идентификатор смены может появиться не более чем в одном запросе на планирование для этого сотрудника. Уровень приоритета по умолчанию для каждого из этих запросов — PRIORITY_LOW . Дополнительные сведения см. в перечислении Priority .

hourly_contract

HourlyContract

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

Спрос на сотрудников

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

Поля
start_date_time

DateTime

Начало временного интервала для данной заявки (включительно). Эти значения считываются с точностью до минуты; секунды, а все меньшие единицы игнорируются.

end_date_time

DateTime

Конец временного интервала для данного спроса (эксклюзивного). Эти значения считываются с точностью до минуты; секунды, а все меньшие единицы игнорируются.

employee_count

int32

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

График работы сотрудников

Упорядоченный список смен, соответствующий одному ShiftTemplate , который должен быть назначен нескольким сотрудникам.

Поля
shift_template_id

string

Идентификатор шаблона, который использовался для создания этого набора смен.

shifts[]

ShiftWithEvents

Список смен, которым назначено количество employee_count . Смены и события, выбранные для расписания, были сгенерированы по единому шаблону. Смены отсортированы в хронологическом порядке и не дублируются. Если SolverConfig.multi_day_schedule имеет значение true, выходной день неявно обозначается отсутствием смены, начинающейся в этот день.

employee_count

int32

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

ShiftWithEvents

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

Поля
start_date_time

DateTime

Дата и время начала смены. Это значение указывается с точностью до минуты; секунды и более мелкие единицы не приводятся.

end_date_time

DateTime

Дата и время окончания смены. Это значение указывается с точностью до минуты; секунды и более мелкие единицы не приводятся.

events[]

Event

Список событий, включенных в этот сдвиг, сопоставленных точно и в том же порядке, что и ShiftTemplate.Event s. Если SolverConfig.shift_events_can_change имеет значение true, время начала и окончания событий может различаться для всех ShiftWithEvents этого расписания.

Событие

Указывает начальную и конечную дату и время определенного события в смене, созданной решателем.

Поля
event_template_id

string

Идентификатор шаблона, который использовался для создания этого события.

start_date_time

DateTime

Дата и время начала мероприятия. Это значение указывается с точностью до минуты; секунды и более мелкие единицы не приводятся.

end_date_time

DateTime

Дата и время окончания мероприятия. Это значение указывается с точностью до минуты; секунды и более мелкие единицы не приводятся.

Шаблон события

Шаблон, определяющий правила для создания одного события, происходящего во время смены. Событие может представлять собой встречу, перерыв, обед и т. д.

Поля
id

string

Уникальный идентификатор этого шаблона.

minimum_minutes_after_shift_start

int32

Минимальное количество минут после начала смены, после которого может начаться это событие.

maximum_minutes_after_shift_start

int32

Максимальное количество минут после начала смены, в течение которого может начаться это событие.

duration_minutes

int32

Фиксированная продолжительность этого события в минутах.

start_time_increment_minutes

int32

Приращение времени (в минутах), используемое для создания набора возможных времен начала события между minimum_minutes_after_shift_start и maximum_minutes_after_shift_start . Например, если минимальное количество минут после начала смены равно 30, максимальное количество минут после начала смены равно 45, а приращение времени начала составляет 5 минут, событие может произойти через 30, 35, 40 или 45 минут после начала смены. .

Почасовой контракт

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

Поля
base_hourly_rate

double

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

hourly_rate_shift_differentials

map<string, double>

Разница в почасовой ставке, выплачиваемая сверх base_hourly_rate . Например, если базовая почасовая ставка составляет 30 долларов США в час, «shift_1» оплачивается по ставке 40 долларов США в час, а «shift_2» оплачивается по ставке 45 долларов США в час, то прототипное представление будет следующим: base_hourly_rate: 30 hourly_rate_shift_differentials {key: "shift_1" value: 10} hourly_rate_shift_differentials {key: "shift_2" value: 15} .

overtime_periods[]

OvertimePeriod

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

Сверхурочная работаПериод

Фиксированный и регулярно повторяющийся период (обычно 168 часов или семь последовательных 24-часовых периодов), который используется для определения суммы компенсации за сверхурочную работу. Каждый период имеет множитель сверхурочной работы (например, 1,5) относительно base_hourly_rate и ограничение на количество часов, которые считаются обычной (не сверхурочной) работой. Любая смена, которая перекрывается с временным окном start_date_time (включительно) и end_date_time (исключительно), засчитывается в общее количество часов, отработанных за период. Если перекрытие частичное, учитываются только перекрывающиеся часы.

Поля
overtime_multiplier

double

Множитель для расчета почасовой ставки за сверхурочную работу (должен быть больше или равен 1,0). Почасовая ставка сверхурочной работы обычно рассчитывается как base_hourly_rate * overtime_multiplier . Если hourly_rate_shift_differentials задано несколько ставок, решатель аппроксимирует почасовую ставку за сверхурочную работу с помощью простого среднего значения ставок, применимых в течение периода сверхурочной работы. Примечание: правила в разных местах могут требовать разных расчетов компенсации за сверхурочную работу. Решатель аппроксимирует компенсацию за сверхурочную работу, чтобы либо минимизировать приблизительную общую стоимость, либо уложиться в бюджет, но он не предназначен в качестве инструмента для расчета заработной платы.

start_date_time

DateTime

Время начала дополнительного периода. Если смена перекрывает это время, часы такой смены отсчитываются от start_date_time .

end_date_time

DateTime

Время окончания сверхурочного периода. Если смена перекрывает это время, часы такой смены отсчитываются до end_date_time .

maximum_regular_hours

double

Максимальное количество рабочих часов, оплачиваемых по обычной ставке (без сверхурочной работы). Эта величина должна быть положительной.

Приоритет

Уровень приоритета для любого ограничения графика сотрудника или требований к покрытию. К ним относятся SchedulingConstraint , ResourceConstraint , ShiftRequest и CoverageRequirement . Поскольку могут существовать противоречивые ограничения, не всегда возможно удовлетворить каждое ограничение. Таким образом, каждый тип ограничения имеет приоритет (задаваемый пользователем или значение по умолчанию), который информирует решатель об относительной важности всех ограничений, заданных для полного расписания.

Перечисления
PRIORITY_UNSPECIFIED Неизвестный уровень приоритета.
PRIORITY_LOW Самый низкий уровень приоритета. Ограничения с этим приоритетом менее важны, чем другие ограничения. Они в первую очередь рассматриваются на предмет нарушения, если невозможно найти осуществимое решение.
PRIORITY_MEDIUM Уровень приоритета средний. Ограничения с этим приоритетом более важны, чем ограничения с приоритетом PRIORITY_LOW , но менее важны, чем ограничения с приоритетом PRIORITY_HIGH . Если допустимое решение не может быть найдено после ослабления всех ограничений с приоритетом PRIORITY_LOW , то следующими на предмет нарушения считаются ограничения с приоритетом PRIORITY_MEDIUM .
PRIORITY_HIGH Самый высокий уровень приоритета. Ограничения с этим уровнем приоритета являются наиболее важными. Их нарушение следует рассматривать в последнюю очередь, если допустимое решение не может быть найдено после ослабления ограничений более низких уровней приоритета.
PRIORITY_MANDATORY Уровень приоритета, который представляет собой то, что не может быть нарушено решателем. Если решатель возвращает SolutionStatus.INFEASIBLE , это может быть связано со слишком большим количеством ограничений PRIORITY_MANDATORY .

РесурсОграничение

Общее ограничение, ограничивающее количество определенного «ресурса», используемого сотрудником. Это абстрактная версия более конкретного SchedulingConstraint , более гибкая для пользователя. Многие ограничения планирования, которые нельзя указать в SchedulingConstraint.type можно вместо этого указать с помощью этого сообщения.

Поля
priority

Priority

Уровень приоритета этого ограничения ресурса. Приоритет по умолчанию для всех ограничений ресурсов — PRIORITY_MEDIUM .

resource_usages

map<string, double>

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

minimum_resource_usage

double

Минимальное использование ресурсов для удовлетворения ограничения ресурсов.

maximum_resource_usage

double

Максимальное использование ресурсов для удовлетворения ограничения ресурсов.

Ограничение планирования

Конкретное ограничение планирования для конкретного сотрудника. Указанное ограничение применяется только в течение заданного интервала [start_date_time, end_date_time) .

Поля
priority

Priority

Уровень приоритета для этого ограничения планирования. Приоритет по умолчанию для всех ограничений планирования — PRIORITY_MEDIUM .

start_date_time

DateTime

Время начала применения этого ограничения планирования (включительно).

end_date_time

DateTime

Время окончания применения этого ограничения планирования (эксклюзивное).

type поля объединения. Указанный тип ограничения. Каждое ограничение применяется только в течение указанного выше временного окна. type может быть только одним из следующих:
minimum_minutes

int32

Минимальное количество минут, в течение которых сотрудник может работать. Если сотрудник назначен на смену, которая перекрывает (полностью или частично) временное окно, в этот подсчет включается количество минут, в течение которых смена перекрывает временное окно.

maximum_minutes

int32

Максимальное количество минут, в течение которых сотрудник может работать во временном окне. Если сотрудник назначен на смену, которая перекрывает (полностью или частично) временное окно, в этот подсчет включается количество минут, в течение которых смена перекрывает временное окно.

minimum_consecutive_work_days

int32

Минимальное количество дней подряд, в течение которых сотрудник может работать. Сотрудник работает в определенный день, если ему назначена смена, которая начинается в этот день. Любая смена, на которую назначен сотрудник и которая начинается во временном окне, включается в этот подсчет.

maximum_consecutive_work_days

int32

Максимальное количество дней подряд, в течение которых сотрудник может работать. Сотрудник работает в определенный день, если ему назначена смена, которая начинается в этот день. Любая смена, на которую назначен сотрудник и которая начинается во временном окне, включается в этот подсчет.

minimum_shift_count

int32

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

maximum_shift_count

int32

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

minimum_rest_minutes

int32

Минимальное количество минут, в течение которых сотрудник должен отдыхать после окончания одной смены, прежде чем его переведут на другую смену. Это ограничение применяется к каждой паре смен, которые полностью включены в [ start_date_time , end_date_time ].

Сдвиг

Смена определяет фиксированный временной интервал, в течение которого сотрудники могут работать.

Поля
id

string

Уникальный идентификатор, присвоенный этой смене.

location_id

string

Идентификатор локации, в которой работает данная смена. Это может быть пусто.

start_date_time

DateTime

Время начала смены (включительно).

end_date_time

DateTime

Время окончания смены (эксклюзивное). В настоящее время решатель допускает только смены продолжительностью менее 24 часов.

break_rules[]

BreakRule

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

Назначение смены

Сотрудник, которому предстоит сменить роль.

Поля
employee_id

string

Назначаемый идентификатор сотрудника.

shift_id

string

Идентификатор смены, присвоенный сотруднику.

role_id

string

Идентификатор роли, которую назначается сотруднику на смену.

breaks[]

Break

Список перерывов для этой смены.

Статус ShiftGenerationSolutionStatus

Статус решения указывается в ответе решателя.

Перечисления
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED Неопределенный статус ответа.
SHIFT_GENERATION_SOLVED Решатель нашел решение за отведенное время.
SHIFT_GENERATION_NOT_SOLVED Проблема не позволяла решателю генерировать сдвиги.
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED Не удалось создать смены для покрытия спроса в установленный срок.

Сдвиг предпочтений

Числовое предпочтение для определенного идентификатора смены.

Поля
shift_id

string

Идентификатор смены, для которой указано предпочтение.

preference

int32

Более высокие значения предпочтения означают более желательный сдвиг.

ShiftRequest

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

Поля
priority

Priority

Уровень приоритета этого запроса планирования. Приоритет по умолчанию для всех запросов планирования — PRIORITY_LOW .

shift_ids[]

string

Идентификаторы смены запроса на планирование.

type

WorkStatus

Тип запроса, например, может ли запрос быть назначен или не назначен набору смен.

ShiftШаблон

Шаблон, определяющий правила формирования смен. Смена — это единица работы, которая определяет время начала и окончания и может содержать события (например, обед, перерывы и т. д.). В ответе смена будет назначена на конкретную дату.

Поля
id

string

Уникальный идентификатор этого шаблона.

earliest_start_time

TimeOfDay

Самое раннее время дня, когда может начаться смена. Это значение указывается в часах и минутах; секунды и нано игнорируются.

latest_start_time

TimeOfDay

Самое позднее время в течение дня, когда может начаться смена. Это значение указывается в часах и минутах; секунды и нано игнорируются. Если это значение меньше значения earliest_start_time , то смена, созданная этим шаблоном, может начаться до или после полуночи.

duration_minutes

int32

Фиксированная продолжительность смены, созданная этим шаблоном.

start_time_increment_minutes

int32

Приращение времени (в минутах), используемое для создания набора возможных времен начала между earliest_start_time и latest_start_time . Например, если самое раннее время начала — 8:00, самое позднее время начала — 8:30, а приращение времени начала — 10 минут, то все возможные времена начала для этого шаблона смены: 8:00, 8:10, 8:20 и 8:30.

days_off_count_per_week

int32

Фиксированное количество выходных в неделю. Сотруднику предоставляется выходной, если он не назначен на смену, начинающуюся в этот день. Неделя состоит из 7 дней и начинается в воскресенье.

event_templates[]

EventTemplate

Правила генерации событий для каждой смены. В каждую смену для каждого указанного события будет включено ровно одно событие.

minimum_interevent_gap_minutes

int32

Минимальное количество минут между окончанием одного события и началом следующего.

maximum_employee_count

int32

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

Статус решения

Статус решения (т. е. расписания) указывается в ответе решателя.

Перечисления
SOLUTION_STATUS_UNSPECIFIED Неопределенный статус ответа.
FEASIBLE Возвращенное расписание возможно, но может быть неоптимальным.
OPTIMAL Возвращенный график является оптимальным.
INFEASIBLE Для данных ограничений не существует приемлемого расписания. Решающая программа может вернуть это значение, если какое-либо подмножество ограничений с уровнем приоритета PRIORITY_MANDATORY не может быть удовлетворено.
NOT_SOLVED Расписание не найдено.
NOT_SOLVED_DEADLINE_EXCEEDED В указанный срок расписание не найдено.

РешитьПараметры

Параметры, управляющие единственным решением задачи планирования смен.

Поля
time_limit

Duration

Максимальное время, которое решатель должен потратить на решение задачи. Если не установлено, по умолчанию — 1 минута.

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

SolverConfig

Задает дополнительные параметры для решения проблемы создания смен.

Поля
time_limit

Duration

Максимальное время, которое решатель должен потратить на решение задачи. Если не установлено, по умолчанию 1 минута. Выбор срока должен зависеть от масштаба проблемы. Например, при решении 7-дневного экземпляра с двумя ShiftTemplates , каждый из которых имеет ~20 возможных значений времени начала, и проведением 2 мероприятий с ~30 возможными значениями времени начала и двумя выходными в неделю, рекомендуемые значения: <10 с для быстрых решений. (и, вероятно, неоптимально), (10, 300) для решений хорошего качества и >300 для исчерпывающего поиска. Для более крупных экземпляров могут потребоваться более длительные сроки.

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

multi_day_schedule

bool

Если принимает значение true, решатель генерирует EmployeeSchedule , включающие несколько смен (например, для создания недельного расписания). В противном случае каждое EmployeeSchedule включает ровно одну смену. Многодневные графики предполагают, что время начала смены одинаково для всех дней, а количество выходных дней в таком графике определяется шаблонами смен. По умолчанию — ложь.

shift_events_can_change

bool

Если задано значение true, многодневные EmployeeSchedule » могут включать смены, для которых время начала и окончания событий различается в течение всех дней. В противном случае все смены определенного EmployeeSchedule должны иметь одно и то же время начала и окончания события. В любом случае все смены многодневного графика имеют одинаковое время начала и окончания. Таким образом, этот параметр игнорируется, если multi_day_schedule имеет значение false. Установка для этого параметра значения true может привести к увеличению времени решения. По умолчанию — ложь.

Рабочий статус

Независимо от того, работает сотрудник или нет.

Перечисления
WORK_STATUS_UNSPECIFIED Неизвестный статус работы.
STATUS_WORK Статус, представляющий работающего сотрудника.
STATUS_NOT_WORK Статус, представляющий неработающего сотрудника.