Eu tenho um problema que pode ser reduzido a um problema de atribuição. (Em uma pergunta anterior, descobri como fazer isso.)
O que significa que temos um conjunto de agentes e um conjunto de tarefas, bem como uma função de custo c (i, j) . Precisamos encontrar uma tarefa para que o custo total seja mínimo.
O algoritmo húngaro pode encontrar uma solução ótima em pelo menos . Isso me parece bom.
Meu novo problema é: Há um determinado número de dias. Eu tenho que resolver o problema de atribuição de cada dia para que cada tarefa seja executada todos os dias e nenhum agente faça a mesma tarefa duas vezes .
O que tentei: poderíamos executar o algoritmo húngaro separadamente para cada dia e limitar o número de combinações possíveis com base no resultado do dia anterior. Mas isso nos causaria problemas em alguns dias posteriores, onde provavelmente será impossível encontrar uma solução viável.
Outra idéia é de alguma forma integrar a pesquisa local para alterar as decisões tomadas no dia anterior. Mas acho que não podemos confiar nisso.
As instâncias de problemas que tenho que enfrentar estarão em algum lugar ao redor . A matriz de custos terá muitos valores iguais (por exemplo, principalmente 1 ou infinito, apenas 2 ou 3). Portanto, durante o algoritmo húngaro, há muito espaço para criar diferentes soluções ideais para um único dia.
Ficaria feliz em ouvir algumas idéias ou aconselha como encontrar uma boa solução para o problema. Desde já, obrigado.