Software baseado em restrições para ajudar no agendamento

3

Visão geral

Tenho um conjunto de tarefas para as quais devo agendar funcionários. Os deveres recorrem semanalmente durante um período de dois meses. Existem várias restrições que definem um bom cronograma. (Veja abaixo exemplos.) No passado, fiz o cronograma manualmente, mas fazê-lo manualmente é demorado e praticamente garante um cronograma de bugs.

Estou procurando um software que faça a programação para mim. Eu tentei o TaskJuggler, mas não tenho certeza se ele é capaz de fazer o que eu quero (a documentação é inútil e as pessoas na lista de discussão simplesmente me dizem para ler a documentação - o que eu fiz sem resultados conclusivos ).

Alguém pode recomendar alguma coisa?

Detalhes

Horário de exemplo

Aqui está um cronograma de exemplo. Note que desde que este foi feito à mão, contém um erro ou dois.

Exemplo de restrições

Aqui estão algumas das minhas restrições:

  • Todos os deveres agendados devem poder ser especificados manualmente.
  • Cada professor deve ter exatamente dois finais de semana de folga. Alguns fins de semana são definidos como fins de semana de trabalho obrigatórios; nenhum professor pode ter esses fins de semana de folga. Outros fins de semana podem ser obrigatórios nos finais de semana; tais fins de semana não têm deveres programados e contam para os dois fins de semana de folga de cada professor. Finalmente, pode haver outros fins de semana que não têm deveres atribuídos, mas, no entanto, não contam para os dois fins de semana de folga dos professores.
  • As tarefas devem ser atribuídas da maneira mais uniforme possível. Isso significa que, na medida do possível, cada professor deve ter um determinado dever o mesmo número de vezes, ter cada dever diferente um número igual de vezes e ter um peso igual de deveres em um determinado fim de semana (veja abaixo os deveres de ponderação). Onde isso não for possível, os deveres excedentes devem ser equilibrados entre os professores. Idealmente, os deveres excedentes devem ser programados levando em conta os deveres preferenciais de cada professor; Assim, um professor que prefere a história das crianças pode ter um tempo extra em vez de um que realmente não gosta.
  • Nenhum professor deve ter o mesmo dever em semanas consecutivas.
  • Nenhum professor pode ser agendado no final de semana.
  • Nenhum professor pode ter deveres simultâneos.
  • As principais tarefas são o TGIF e o sermão.
  • Nenhum professor deve ter outro dever no mesmo dia em que estão agendados para um dever maior.
  • Nenhum professor deve ter mais de um dever importante por semana.
  • Se possível, nenhum professor deve ter um dever maior em semanas consecutivas. Isso, no entanto, não é uma restrição de alta prioridade.
por Scott Severance 18.04.2011 / 04:54

2 respostas

1

Eu consegui contornar esse problema, finalmente. Aparentemente, software como o que estou procurando não existe, e eu não tenho tempo ou know-how para escrever isso sozinho.

Veja o que acabei fazendo:

  • Primeiro, reorganizei as colunas da minha agenda para facilitar a visualização das minhas restrições, ao custo de uma ordem um pouco menos lógica.
  • Mais recentemente, mudei minha agenda do LibreOffice Calc para uma planilha do Google Docs. Perdi muita capacidade de formatação, mas ganhei alguma capacidade de script. (Eu nunca consegui descobrir como escrever uma macro para LO ou OOo; a documentação deles é absolutamente horrível.)
  • Então, escrevi um script no Google Apps que me fornece alguns botões que, quando eu clico nele, destacam todas as células com o mesmo conteúdo. Isso torna viável para mim verificar manualmente se minha programação está correta. Aqui está um exemplo da minha agenda.

Essa abordagem não é exatamente o que eu queria, mas funciona bem o suficiente.

    
por Scott Severance 28.01.2012 / 06:20
0

Eu usaria um aplicativo de calendário, como o Lightning no Thunderbird, e teria as rotações configuradas como eventos repetidos no calendário. Dessa forma, se você começar às 9:00 e tiver que alternar a cada meia hora, defina os alarmes para 9:30, 10:00 etc, com a descrição dos turnos de cada evento.

Encontrar um aplicativo que execute essa tarefa exclusivamente seria bastante difícil, já que teria que ser escrito especificamente para esse tipo de trabalho. Pode haver algo lá fora que faria esse trabalho, mas eu não ouvi falar disso. Eu acredito que o calendário deve ser útil até você conseguir encontrar algo mais específico.

    
por zookalicious 02.05.2011 / 07:39