Package google.research.optimization.v1.workforce

Índice

Intervalo

Período em que um funcionário interrompe o trabalho durante um turno.

Campos
start_date_time

DateTime

O horário de início de uma pausa.

duration_minutes

int32

Duração do intervalo em minutos.

BreakRule

uma regra que determina quando um intervalo pode começar dentro de um turno e a duração dele. A lista de todas as possíveis quebras consideradas é determinada em incrementos de rule_increment_minutes. Por exemplo, se uma regra de intervalo estiver modelando um intervalo de 30 minutos que pode começar entre 10h00 e 11h00, e o incremento da regra for de 20 minutos, a lista de intervalos considerados será: [10:00, 10:30], [10:20, 10:50], [10:40, 11,3]

Campos
earliest_start_time

DateTime

O primeiro horário de início do intervalo (inclusive). Apenas hours e minutes podem ser definidos.

latest_start_time

DateTime

O último horário de início do intervalo (inclusive). Apenas hours e minutes podem ser definidos.

duration_minutes

int32

Duração do intervalo em minutos.

rule_increment_minutes

int32

[Opcional] É o acréscimo de minutos em minutos para todos os intervalos que podem ser considerados nesta regra de intervalo. Se não for definido, o padrão será duration_minutes.

BudgetRequirement

Requisitos de orçamento para um determinado intervalo.

Campos
total_budget

double

Orçamento total para o intervalo especificado. Será necessário fornecer um orçamento total se a prioridade for PRIORITY_MANDATORY.

Se total_budget não for definido, o custo total da programação será minimizado de acordo com o priority especificado. Por exemplo, se o priority do orçamento for PRIORITY_MEDIUM, o solucionador minimizará o custo antes de reduzir qualquer violação de restrição com a prioridade PRIORITY_LOW.

start_date_time

DateTime

Horário de início de aplicação desse orçamento. Se o horário de início não for especificado, ele será o primeiro horário de início de todos os turnos especificados.

end_date_time

DateTime

Horário de término de aplicação do orçamento. Se um horário de término não for especificado, ele será definido como o horário de término mais recente de todos os turnos especificados.

priority

Priority

Nível de prioridade para atender ao requisito de orçamento durante o período especificado. A prioridade padrão é PRIORITY_LOW. Se a prioridade for definida como PRIORITY_MANDATORY, será necessário definir total_budget.

Se essa prioridade for maior do que outras prioridades de restrição e se total_budget for apertada, o cronograma resultante poderá violar significativamente as restrições de funcionários ou os requisitos de cobertura.

CoverageRequirement

Um requisito de cobertura especifica o número de funcionários necessários para um conjunto de funções e/ou habilidades durante um determinado período e em um determinado local. Os intervalos DateTime em um local específico não podem se sobrepor. Como alternativa, é possível fornecer uma lista de códigos de turno em vez de uma janela de tempo e um local. Somente os funcionários que podem ser atribuídos à função específica (ou que possuem a habilidade específica) podem atender a esse requisito.

Para uma determinada função e/ou habilidade, o requisito de cobertura será atendido quando pelo menos target_employee_count de funcionários estiverem trabalhando a cada momento da janela de tempo (ou a cada turno em shift_ids). Por outro lado, o requisito de cobertura será violado se em algum momento do período (ou para qualquer um dos turnos de shift_ids) houver menos de target_employee_count funcionários trabalhando nesse período. Mais funcionários que trabalham do que target_employee_count ainda cumpre o requisito, mas o solucionador minimiza o excesso de funcionários.

Campos
start_date_time

DateTime

O horário de início do requisito de cobertura (inclusivo). Se definido, shift_ids precisa estar vazio.

end_date_time

DateTime

O horário de término do requisito de cobertura (não incluso). Se definido, shift_ids precisa estar vazio.

location_id

string

Local onde os funcionários são necessários. shift_ids não está vazio, este campo precisa estar vazio.

shift_ids[]

string

Se definidos, os requisitos de função e habilidade serão aplicados individualmente a cada ID de turno na lista. Se shift_ids não estiverem vazios, start_date_time, end_date_time e location_id precisarão estar vazios.

role_requirements[]

RoleRequirement

Número obrigatório de funcionários atribuídos aos papéis especificados durante o período. No máximo, um role_requirement precisa ser fornecido para cada ID de papel. O nível de prioridade padrão para cada um dos requisitos é PRIORITY_MANDATORY. Essas restrições serão violadas se menos de target_employee_count funcionários forem atribuídos às funções especificadas em qualquer momento do período.

skill_requirements[]

SkillRequirement

Número obrigatório de funcionários com as habilidades específicas atribuídas aos turnos durante a janela de tempo. É necessário fornecer no máximo um skill_requirement para cada ID de habilidade. O nível de prioridade padrão para cada um dos requisitos é PRIORITY_LOW. Essas restrições serão violadas se menos de target_employee_count funcionários tiverem as habilidades fornecidas em qualquer momento do período.

RoleRequirement

Número obrigatório de funcionários atribuídos à função especificada durante o período.

Campos
role_id

string

ID do papel para o requisito.

target_employee_count

int32

Número desejado de funcionários atribuídos à função durante o período.

priority

Priority

Nível de prioridade para essa restrição de requisito. A prioridade padrão para todas as restrições de recursos é PRIORITY_MANDATORY.

SkillRequirement

Número obrigatório de funcionários que estão trabalhando durante o período e possuem a habilidade especificada.

Campos
skill_id

string

ID da habilidade para o requisito.

target_employee_count

int32

Número desejado de funcionários com a habilidade determinada que estão trabalhando durante o período.

priority

Priority

Nível de prioridade para essa restrição de requisito. A prioridade padrão para todas as restrições de recursos é PRIORITY_LOW.

DemandCoverageViolation

Especifica a violação de cobertura da demanda para o intervalo especificado. A demanda de funcionários é a mesma durante todo o intervalo especificado.

Campos
start_date_time

DateTime

Data e hora de início do intervalo de demanda (inclusivo). Esse valor é especificado até o minuto.

end_date_time

DateTime

Data e hora de término do intervalo de demanda (não incluso). Esse valor é especificado até o minuto.

coverage_violation

int32

Violação de cobertura durante o intervalo especificado. Um valor positivo indica que a demanda foi supercoberta e um valor negativo indica que ela está supercoberta.

Funcionário

Um funcionário da força de trabalho a ser agendado.

Campos
id

string

ID exclusivo atribuído a este funcionário.

role_ids[]

string

IDs de funções que este funcionário pode realizar. É preciso especificar pelo menos um papel. Quando um funcionário é atribuído a um turno, ele também recebe uma única função dessa lista. O funcionário pode receber diferentes funções durante a janela de agendamento.

skill_ids[]

string

IDs de habilidade desse funcionário. Esta lista pode estar vazia. Quando um funcionário é designado para um turno, ele usa qualquer subconjunto das habilidades listadas aqui para cobrir os requisitos de habilidade durante todo o turno atribuído.

shift_preferences[]

ShiftPreference

Mudar as preferências desse funcionário. Os turnos especificados aqui representam aqueles a que o funcionário gostaria de ser designado durante a janela de agendamento. Os IDs de turno especificados em shift_preferences precisam ser exclusivos. O solucionador vai tentar maximizar a soma dos valores de ShiftPreference.preference em todas as shift_preferences que forem atendidas.

scheduling_constraints[]

SchedulingConstraint

Lista de restrições de agendamento para esse funcionário. O nível de prioridade padrão para cada uma dessas restrições é PRIORITY_MEDIUM. Confira o tipo enumerado Priority para saber mais.

resource_constraints[]

ResourceConstraint

Outras restrições de programação não especificadas em scheduling_constraints podem ser adicionadas aqui a resource_constraints. Um ResourceConstraint é uma representação mais abstrata para limitar os recursos de um funcionário. O nível de prioridade padrão para cada uma dessas restrições é PRIORITY_MEDIUM. Confira o tipo enumerado Priority para saber mais.

shift_requests[]

ShiftRequest

Lista de solicitações de turno do funcionário. A solicitação pode ser para que um funcionário seja atribuído ou não a turnos específicos. Qualquer atribuição de agendamento fixo para o funcionário pode ser representada por uma ShiftRequest com prioridade PRIORITY_MANDATORY. Um ID de turno pode aparecer em, no máximo, uma solicitação de agendamento para esse funcionário. O nível de prioridade padrão para cada uma dessas solicitações é PRIORITY_LOW. Confira o tipo enumerado Priority para saber mais.

hourly_contract

HourlyContract

Contrato que especifica taxas horárias regulares e extras para o funcionário.

EmployeeDemand

Especifica o número de funcionários necessários para cobrir a demanda em um determinado intervalo DateTime.

Campos
start_date_time

DateTime

Início do intervalo de tempo da demanda especificada (inclusive). Esses valores são lidos até os minutos; os segundos e todas as unidades menores são ignorados.

end_date_time

DateTime

Fim do intervalo de tempo da demanda em questão (exclusivo). Esses valores são lidos até os minutos; os segundos e todas as unidades menores são ignorados.

employee_count

int32

Número de funcionários necessários para cobrir a demanda desse intervalo.

EmployeeSchedule

Uma lista ordenada de turnos correspondente a uma única ShiftTemplate que será atribuída a vários funcionários.

Campos
shift_template_id

string

ID do modelo usado para gerar esse conjunto de turnos.

shifts[]

ShiftWithEvents

Lista de turnos a que employee_count de funcionários está atribuído. Os turnos e eventos selecionados para a programação foram gerados com base em um único modelo. As mudanças são ordenadas cronologicamente e não se sobrepõem. Se SolverConfig.multi_day_schedule for verdadeiro, um dia de folga será representado implicitamente pela ausência de um turno a partir desse dia.

employee_count

int32

Número de funcionários que devem ser atribuídos a esse conjunto de turnos para cobrir a demanda.

ShiftWithEvents

Especifica as datas de início e término com uma lista de eventos fixos de uma mudança gerada pelo solucionador.

Campos
start_date_time

DateTime

Data e hora de início do turno. Esse valor é especificado até o minuto. Segundos e unidades menores não são fornecidos.

end_date_time

DateTime

Data e hora de término do turno. Esse valor é especificado até o minuto. Segundos e unidades menores não são fornecidos.

events[]

Event

Lista de eventos incluídos nesse turno, mapeados exatamente para e na mesma ordem que os ShiftTemplate.Events. Se SolverConfig.shift_events_can_change for verdadeiro, os horários de início e término dos eventos poderão variar em todos os ShiftWithEvents desta programação.

Evento

Especifica o DateTime de início e término de um evento específico em uma mudança gerada pelo solucionador.

Campos
event_template_id

string

ID do modelo usado para gerar esse evento.

start_date_time

DateTime

Data e hora de início do evento. Esse valor é especificado até o minuto. Segundos e unidades menores não são fornecidos.

end_date_time

DateTime

Data e hora de término do evento. Esse valor é especificado até o minuto. Segundos e unidades menores não são fornecidos.

EventTemplate

Modelo que especifica regras para gerar um único evento que ocorre durante um turno. Um evento pode representar uma reunião, intervalo, almoço etc.

Campos
id

string

ID exclusivo desse modelo.

minimum_minutes_after_shift_start

int32

Número mínimo de minutos após o início de um turno para que este evento possa começar.

maximum_minutes_after_shift_start

int32

Número máximo de minutos após o início de um turno que este evento pode iniciar.

duration_minutes

int32

Duração corrigida em minutos deste evento.

start_time_increment_minutes

int32

O incremento de tempo (em minutos) usado para gerar o conjunto de possíveis horários de início do evento entre minimum_minutes_after_shift_start e maximum_minutes_after_shift_start. Por exemplo, se o mínimo de minutos após o início do turno for 30, o máximo de minutos após o início do turno for 45 e o incremento do horário de início for de 5 minutos, o evento poderá ocorrer 30, 35, 40 ou 45 minutos após o início do turno.

HourlyContract

Especifica uma taxa por hora básica, diferenciais de taxas e multiplicadores de horas extras para determinar a remuneração de um funcionário. Observe que os regulamentos em locais diferentes podem exigir um cálculo diferente de compensação por horas extras. O solucionador faz uma aproximação da compensação de horas extras para minimizar uma representação do custo total ou alcançar um orçamento (consulte BudgetRequirement). Ele não é uma ferramenta para calcular a folha de pagamento.

Campos
base_hourly_rate

double

A compensação pelo trabalho em uma hora que não seja horas extras. Se várias taxas forem aplicadas ao funcionário, os diferenciais de taxas serão aplicados em relação a essa taxa por hora básica. Além disso, se houver várias taxas, a taxa básica por hora precisará ser a mínima dessas taxas.

hourly_rate_shift_differentials

map<string, double>

É o diferencial de taxa por hora, pago sobre base_hourly_rate. Por exemplo, se a taxa por hora básica for US $30/hora, "shift_1" será pago a uma taxa de US $40/hora e "shift_2" será pago a uma taxa de US $45/hora, a representação proto será: 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

Uma lista de todos os períodos em que as horas extras precisam ser computadas. Esses períodos não podem se sobrepor.

OvertimePeriod

Um período fixo e regularmente recorrente (normalmente 168 horas ou sete períodos consecutivos de 24 horas) que é usado para determinar o valor da compensação de horas extras. Cada período tem um multiplicador de horas extras (por exemplo, 1.5) em relação ao base_hourly_rate e um limite para o número de horas que são consideradas trabalho regular (sem horas extras). Qualquer mudança que se sobreponha à janela de tempo de start_date_time (inclusiva) e end_date_time (exclusiva) é contabilizada no total de horas trabalhadas no período. Se a sobreposição for parcial, somente as horas sobrepostas serão contabilizadas.

Campos
overtime_multiplier

double

Multiplicador para calcular a taxa por hora de horas extras (precisa ser maior ou igual a 1,0). A taxa por hora de horas extras normalmente é calculada como base_hourly_rate * overtime_multiplier. Se várias taxas forem fornecidas pelo hourly_rate_shift_differentials, o solucionador se aproximará da taxa por hora da hora extra com uma média simples das taxas aplicáveis durante o período da prorrogação. Observação: regulamentos em locais diferentes podem exigir um cálculo diferente de compensação por horas extras. O solucionador aproxima a compensação de horas extras para minimizar uma representação do custo total ou atender a um orçamento, mas não pretende ser uma ferramenta para calcular a folha de pagamento.

start_date_time

DateTime

Horário de início do período da prorrogação. Se um turno se sobrepuser a esse período, as horas dessa mudança serão contadas a partir de start_date_time.

end_date_time

DateTime

Hora de término da prorrogação. Se um turno se sobrepuser a esse período, as horas dessa mudança serão contadas até end_date_time.

maximum_regular_hours

double

Número máximo de horas de trabalho pagas a uma taxa normal (sem horas extras). Essa quantidade precisa ser positiva.

Prioridade

O nível de prioridade para qualquer restrição no cronograma de um funcionário ou os requisitos de cobertura. Isso inclui SchedulingConstraint, ResourceConstraint, ShiftRequest e CoverageRequirement. Como pode haver restrições conflitantes, nem sempre é possível satisfazer todas as restrições. Assim, cada tipo de restrição tem uma prioridade (dada pelo usuário ou por um padrão) que informa ao solucionador a importância relativa de todas as restrições dadas a uma programação completa.

Tipos enumerados
PRIORITY_UNSPECIFIED Nível de prioridade desconhecido.
PRIORITY_LOW O nível de prioridade mais baixo. As restrições com essa prioridade são menos importantes que as outras. Elas são as primeiras a serem consideradas por violação se não for possível encontrar uma solução viável.
PRIORITY_MEDIUM Nível de prioridade médio. As restrições com essa prioridade são mais importantes do que aquelas com prioridade PRIORITY_LOW, mas menos importantes que as com prioridade PRIORITY_HIGH. Se não for possível encontrar uma solução viável depois de relaxar todas as restrições com prioridade PRIORITY_LOW, as restrições com prioridade PRIORITY_MEDIUM serão consideradas em seguida para violação.
PRIORITY_HIGH O nível de prioridade mais alto. As restrições com esse nível de prioridade são as mais importantes. Elas são as últimas a serem consideradas para violação se não for possível encontrar uma solução viável após a flexibilização das restrições dos níveis de prioridade mais baixos.
PRIORITY_MANDATORY O nível de prioridade que representa algo que não pode ser violado pelo solucionador. Se o solucionador estiver retornando SolutionStatus.INFEASIBLE, isso pode ser devido a muitas restrições de PRIORITY_MANDATORY.

ResourceConstraint

Uma restrição geral que limita a quantidade de determinado "recurso" usado por um funcionário. Essa é uma versão abstrata da SchedulingConstraint mais específica e mais flexível para o usuário. Muitas restrições de programação que não podem ser especificadas no SchedulingConstraint.type podem ser definidas com essa mensagem.

Campos
priority

Priority

Nível de prioridade dessa restrição de recurso. A prioridade padrão para todas as restrições de recursos é PRIORITY_MEDIUM.

resource_usages

map<string, double>

Quantidade de recursos usados por turnos. Por exemplo, se essa restrição se aplicar às horas mínima e máxima trabalhadas por um funcionário em uma semana específica, o mapa conterá as mudanças que ocorrerem nessa semana e a duração de cada turno em horas.

minimum_resource_usage

double

Uso mínimo de recursos para atender a uma restrição de recursos.

maximum_resource_usage

double

Uso máximo de recursos para atender a uma restrição de recursos.

SchedulingConstraint

Restrição de programação específica para determinado funcionário. A restrição especificada é aplicada apenas durante o intervalo [start_date_time, end_date_time) determinado.

Campos
priority

Priority

Nível de prioridade para esta restrição de programação. A prioridade padrão para todas as restrições de programação é PRIORITY_MEDIUM.

start_date_time

DateTime

O horário de início em que essa restrição de programação se aplica (inclusivo).

end_date_time

DateTime

O horário de término em que esta restrição de programação se aplica (exclusivo).

Campo de união type. O tipo de restrição especificada. Cada restrição é aplicada somente dentro do período especificado acima. type só pode ser de um dos seguintes tipos:
minimum_minutes

int32

Número mínimo de minutos que o funcionário pode trabalhar. Se o funcionário for atribuído a um turno que se sobrepõe (total ou parcialmente) à janela de tempo, o número de minutos que o turno se sobrepõe à janela de tempo será incluído nessa contagem.

maximum_minutes

int32

Número máximo de minutos que o funcionário pode trabalhar na janela de tempo. Se o funcionário for atribuído a um turno que se sobrepõe (total ou parcialmente) à janela de tempo, o número de minutos que o turno se sobrepõe à janela de tempo será incluído nessa contagem.

minimum_consecutive_work_days

int32

Número mínimo de dias consecutivos em que o funcionário pode trabalhar. Um funcionário trabalha em um dia específico se receber um turno que começa nesse mesmo dia. Todos os turnos atribuídos ao funcionário que começam na janela de tempo são incluídos nessa contagem.

maximum_consecutive_work_days

int32

Número máximo de dias consecutivos em que o funcionário pode trabalhar. Um funcionário trabalha em um dia específico se receber um turno que começa nesse mesmo dia. Todos os turnos atribuídos ao funcionário que começam na janela de tempo são incluídos nessa contagem.

minimum_shift_count

int32

Número mínimo de turnos em que o funcionário pode trabalhar. Qualquer turno atribuído ao funcionário e que se sobreponha totalmente à janela de tempo é incluído nessa contagem.

maximum_shift_count

int32

Número máximo de turnos em que o funcionário pode trabalhar. Qualquer turno atribuído ao funcionário e que se sobreponha totalmente à janela de tempo é incluído nessa contagem.

minimum_rest_minutes

int32

Número mínimo de minutos que o funcionário precisa descansar após o final de um turno antes de ser atribuído a outro. Essa restrição se aplica a todos os pares de turnos totalmente incluídos em [start_date_time, end_date_time].

Turno

Um turno especifica uma janela de tempo fixa em que os funcionários podem trabalhar.

Campos
id

string

ID exclusivo atribuído a este turno.

location_id

string

ID do local em que essa mudança é trabalhada. Pode ficar vazio.

start_date_time

DateTime

O horário de início do turno (inclusivo).

end_date_time

DateTime

O horário de término do turno (não incluso). No momento, o solucionador só permite mudanças com menos de 24 horas de duração.

break_rules[]

BreakRule

Uma lista de regras de violação que ocorrem durante o turno. Os funcionários que trabalham nesse turno recebem um intervalo por break_rule, em que não cobrem a demanda pela função que estão cumprindo. Cada janela de tempo BreakRule precisa ser totalmente incluída na janela dessa mudança.

ShiftAssignment

Um funcionário para atribuir um turno de funções.

Campos
employee_id

string

O ID do funcionário que está sendo atribuído.

shift_id

string

ID de turno atribuído ao funcionário.

role_id

string

ID da função atribuída ao funcionário no turno.

breaks[]

Break

Lista de intervalos para esta atribuição de turno.

ShiftGenerationSolutionStatus

Status da solução fornecido na resposta de um solucionador.

Tipos enumerados
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED Status não especificado para a resposta.
SHIFT_GENERATION_SOLVED O solucionador encontrou uma solução no limite de tempo fornecido.
SHIFT_GENERATION_NOT_SOLVED Um problema impediu que o solucionador gerasse mudanças.
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED Não foi possível gerar os turnos para cobrir a demanda dentro do limite de tempo.

ShiftPreference

Uma preferência numérica por um ID de turno específico.

Campos
shift_id

string

ID do turno para o qual a preferência é especificada.

preference

int32

Valores maiores de preferência indicam uma mudança mais desejável.

ShiftRequest

A solicitação de um funcionário para ser atribuído ou não a turnos específicos.

Campos
priority

Priority

Nível de prioridade dessa solicitação de programação. A prioridade padrão para todas as solicitações de programação é PRIORITY_LOW.

shift_ids[]

string

Os IDs de turno da solicitação de programação.

type

WorkStatus

Tipo de solicitação, por exemplo, se a solicitação é atribuída ou não ao conjunto de turnos.

ShiftTemplate

Modelo que especifica regras para gerar turnos. Um turno é uma unidade de trabalho que especifica um horário de início e de término e pode conter eventos (como almoço, intervalos etc). Um turno será atribuído a uma data específica na resposta.

Campos
id

string

ID exclusivo desse modelo.

earliest_start_time

TimeOfDay

Primeiro horário do dia em que um turno pode começar. Esse valor é especificado com horas e minutos. Segundos e nanos são ignorados.

latest_start_time

TimeOfDay

É o último horário no dia em que uma mudança pode começar. Esse valor é especificado com horas e minutos. Segundos e nanos são ignorados. Se esse valor for menor que earliest_start_time, uma mudança gerada por esse modelo poderá começar antes ou depois da meia-noite.

duration_minutes

int32

Duração fixa de um turno gerado por este modelo.

start_time_increment_minutes

int32

O incremento de tempo (em minutos) usado para gerar o conjunto de possíveis horários de início entre earliest_start_time e latest_start_time. Por exemplo, se o horário de início mais cedo for 8h, o mais recente for 8h30 e o incremento do horário de início for 10 minutos, todos os horários de início possíveis para esse modelo de mudança serão: 8h, 8h10, 8h20 e 8h30.

days_off_count_per_week

int32

Número fixo de dias de folga por semana. Um funcionário tem um determinado dia de folga se não for designado para um turno que comece nesse dia. Uma semana dura sete dias e começa no domingo.

event_templates[]

EventTemplate

Regras para gerar eventos para cada turno. Exatamente um evento será incluído em cada turno para cada evento especificado.

minimum_interevent_gap_minutes

int32

Mínimo de minutos entre o fim de um evento e o início de outro.

maximum_employee_count

int32

Número máximo de funcionários que podem ser atribuídos a todos os turnos gerados por este modelo.

SolutionStatus

Status da solução (ou seja, uma programação) fornecido na resposta de um solucionador.

Tipos enumerados
SOLUTION_STATUS_UNSPECIFIED Status não especificado para a resposta.
FEASIBLE A programação de retorno é viável, mas pode não ser a ideal.
OPTIMAL A programação de devolução é a ideal.
INFEASIBLE Não há uma programação viável para as restrições fornecidas. O solucionador pode retornar esse valor se algum subconjunto das restrições com nível de prioridade PRIORITY_MANDATORY não puder ser atendido.
NOT_SOLVED Nenhuma programação foi encontrada.
NOT_SOLVED_DEADLINE_EXCEEDED Nenhuma programação foi encontrada dentro do limite de tempo.

SolveParameters

Parâmetros que controlam uma única solução do problema da programação de turnos.

Campos
time_limit

Duration

O tempo máximo que o solucionador deve gastar no problema. Se não for definido, o padrão será um minuto.

Esse valor não é um limite fixo e não considera a sobrecarga de comunicação. A latência esperada para resolver o problema pode exceder um pouco esse valor.

SolverConfig

Especifica parâmetros adicionais para resolver o problema de geração de Shift.

Campos
time_limit

Duration

O tempo máximo que o solucionador deve gastar no problema. Se não for definido, o padrão será um minuto. A escolha de um limite de tempo depende do tamanho do problema. Como exemplo, ao resolver uma instância de 7 dias com 2 ShiftTemplates, cada uma com cerca de 20 horários de início possíveis e mantendo 2 eventos com aproximadamente 30 horários de início possíveis e 2 dias de folga por semana, os valores recomendados são: menos de 10 s para soluções rápidas (e provavelmente inferior ao ideal), (10 s e 300 s) para soluções de boa qualidade e > 300 s para uma pesquisa exaustiva. Instâncias maiores podem exigir limites de tempo mais longos.

Esse valor não é um limite fixo e não considera a sobrecarga de comunicação. A latência esperada para resolver o problema pode exceder um pouco esse valor.

multi_day_schedule

bool

Se verdadeiro, o solucionador gera EmployeeSchedules que incluem várias mudanças (por exemplo, para gerar uma programação de uma semana). Caso contrário, cada EmployeeSchedule inclui exatamente uma mudança. As programações de vários dias pressupõem que o horário de início do turno é o mesmo em todos os dias, e o número de dias de folga é determinado pelos modelos de turno. O padrão é false

shift_events_can_change

bool

Se verdadeiro, os EmployeeSchedules de vários dias podem incluir turnos em que os horários de início e término dos eventos variam todos os dias. Caso contrário, todos os turnos de uma EmployeeSchedule específica precisam ter os mesmos horários de início e término do evento. Em ambos os casos, todos os turnos de uma programação de vários dias têm o mesmo horário de início e término. Dessa forma, esse parâmetro vai ser ignorado se multi_day_schedule for falso. Definir esse parâmetro como "true" pode resultar em tempos de resolução mais longos. O padrão é false

WorkStatus

Se um funcionário está trabalhando ou não.

Tipos enumerados
WORK_STATUS_UNSPECIFIED Status do trabalho desconhecido.
STATUS_WORK Status que representa um funcionário que trabalha.
STATUS_NOT_WORK Status que representa um funcionário desempregado.