Qual algoritmo devo usar para criar um recurso de agendamento automático da equipe?

15
Imagine um pequeno negócio local (no meu caso uma creche para cães) com algumas dúzias de empregados de meio período. O objetivo é criar automaticamente agendamentos semanais da equipe. Minha pergunta é sobre quais abordagens algorítmicas explorar para esse problema.

Existem muitos constrangimentos a ter em conta, principalmente (1) a disponibilidade do pessoal e (2) as necessidades de cada turno, não apenas quantos funcionários para cada turno, mas as competências necessárias para cada turno (por exemplo certa mudança, você pode precisar de alguém que sabe dirigir para fazer pick-ups / drop-off de cães, para outro, alguém que sabe dar banhos de cães, etc).

Outras restrições incluem coisas como evitar ou exigir determinadas combinações de pessoal - talvez devido a conflitos de personalidade, por um lado, ou a necessidade de treinamento por osmose de um funcionário sênior para um subordinado do outro.

Além disso, há preferências a serem levadas em consideração. Alguns funcionários preferem as manhãs, uns dois dias seguidos, em vez de dizer segunda e quinta-feira, etc. Sabemos que nem sempre podemos acomodar as preferências de todos. Na verdade, temos uma hierarquia na qual os funcionários recebem primeiro as suas escolhas.

Tenho um palpite de que há uma maneira de reduzir ou expressar esse problema em um algoritmo já existente e já resolvido. Mas não sei quais algoritmos explorar. Quais algoritmos específicos existentes seriam mais promissores?

    
por Ghopper21 22.04.2014 / 21:20
fonte

1 resposta

13

Algoritmos como Pesquisa local ( Pesquisa tabu , Simulated Annealing , Late Acceptance ) funciona muito bem em tais problemas.

Como Bob sugere, se você estiver trabalhando em Java, dê uma olhada em OptaPlanner (aberto fonte). Veja este vídeo na lista de funcionários .

    
por 25.04.2014 / 18:50
fonte

Tags