Consideramos um cronograma de turnos na mente



Muitas pessoas cujo horário de trabalho é variável. O problema desse cronograma é a dificuldade de calcular rapidamente para qualquer data em que dia é: trabalho ou dia de folga. Existem muitos serviços online para calcular uma programação de turnos, mas é ainda mais fácil fazer isso em sua mente. Este artigo considerará o algoritmo de cálculo em mente para qualquer agendamento de turno.

Como no artigo “Calculando o dia da semana na mente”, o algoritmo será baseado no viés dos meses.

O artigo considerará o cronograma de trabalho 3/3. I.e. "Semana" no nosso caso durará 6 dias:

  1   2   3   1   2   3 

O mais importante é não cometer erros ao calcular o deslocamento para o primeiro mês do ano. Todos os meses subsequentes dependerão disso.

Por exemplo, que o primeiro dia útil do ano seja 2 de janeiro, ou seja, 2, 3 e 4 de janeiro - trabalhadores, respectivamente, 5, 6, 7 - dias de folga.

No meu caso, foi assim
31 de dezembro - dia útil 1
3 de janeiro - dia útil 2
4 de janeiro - jornada 3
Portanto, para simplificar os cálculos, suponha que os dias 2, 3 e 4 de janeiro sejam dias úteis.
Isso é importante para calcular o viés de janeiro.

Pelo exposto, obtemos o calendário para janeiro:



onde as células verdes são dias da semana, as células vermelhas são fins de semana.

O número de dias seguidos é igual ao número de dias da nossa "semana", no nosso exemplo é 6.

1º de janeiro - dia 3 de folga;
2 de janeiro - Dia útil 1 (início da "semana").

Antes do primeiro dia do mês, existem 5 células amarelas vazias, o que significa que a compensação para janeiro no nosso caso será 5.

Continuando, temos o calendário para fevereiro (ano não bissexto):



como você pode ver, o deslocamento para fevereiro é 0, porque o mês começa no primeiro dia útil.

Em março próximo:



A diferença para março é 4 e para abril - 5, porque o primeiro de abril cai no 6º dia da "semana" e haverá 5 quadrados vazios à sua frente.

Então, contamos o mês que precisamos.

No meu caso, as compensações para os primeiros 6 meses serão:
5, 0, 4, 5, 5, 5 - janeiro, fevereiro, março, abril, maio e junho. Lembre-se de 6 dígitos não é difícil.

Para calcular se é um dia útil ou um dia de folga, você precisa adicionar o deslocamento do mês à data e encontrar o restante da divisão pela duração da "semana":

$$ display $$ Restante = (data + deslocamento \; mês) \% (duração \; "semanas") $$ display $$

Dependendo da balança, determine o dia:

1, 2 e 3 - dias úteis
4, 5 e 0 - fins de semana

Por exemplo, para 23: 23 de fevereiro (data) + 0 (deslocamento de fevereiro) = 23. O restante 23% 6 = 5, este é o segundo dia de folga.

Para 8: 8 de março (data) + 4 (turno para março) = 12. 12% 6 = 0. Isso significa que 8 de março é o último dia de folga, 9 de março para trabalhar.

Outro exemplo a ser fixado:

22 de abril + 5 (deslocamento para abril) = 27, o restante da divisão por 6 é 3 - o último dia útil.

A desvantagem do algoritmo é uma violação do agendamento após as férias: a tabela de deslocamento deve ser recalculada ou tirar férias de forma que o agendamento não seja violado. Por exemplo, se você tirar férias após três dias úteis por "o número de dias úteis consecutivos" * "número ímpar" de dias (3, 9, 15, 21 dias de férias), a programação discutida no artigo não será violada.

Usando esse algoritmo, você pode calcular qualquer dia em sua mente em alguns segundos, sem calendários ou serviços online.

Source: https://habr.com/ru/post/pt440270/


All Articles