Imagine uma pequena empresa local (no meu caso, uma creche para cães) com algumas dezenas de funcionários em meio período. O objetivo é criar automaticamente agendas semanais da equipe. Minha pergunta é sobre quais abordagens algorítmicas a serem exploradas para esse problema.
Há muitas restrições a serem lembradas, principalmente (1) a disponibilidade da equipe e (2) as necessidades de cada turno, não apenas quantos funcionários para cada turno, mas as habilidades necessárias para cada turno (por exemplo, para um turno, você pode precisar de alguém que saiba dirigir para pegar / devolver cães; para outro, alguém que saiba dar banho nos cães, etc.).
Outras restrições incluem coisas como evitar ou exigir certas combinações de equipe - talvez devido a conflitos de personalidade, por um lado, ou a necessidade de treinamento por osmose de uma equipe sênior para uma equipe júnior, por outro.
Além disso, há preferências a serem levadas em consideração. Alguns funcionários preferem manhãs, dois dias seguidos, em vez de dizer segunda e quinta-feira etc. Sabemos que nem sempre podemos acomodar as preferências de todos. De fato, temos uma hierarquia na qual os funcionários recebem as primeiras escolhas sobre suas escolhas.
Tenho um palpite de que existe uma maneira de reduzir ou expressar esse problema em um algoritmo já resolvido. Mas não sei quais algoritmos explorar. Quais algoritmos específicos existentes seriam mais promissores?
fonte
Respostas:
Algoritmos como Pesquisa Local (Pesquisa Tabu , Recozimento Simulado , Aceitação Tardia ) funcionam muito bem nesses problemas.
Como Bob sugere, se você estiver trabalhando em Java, dê uma olhada no OptaPlanner (código aberto). Veja este vídeo na lista de funcionários .
fonte