Atribuição

Um dos problemas de otimização combinatória mais conhecidos é o problema de atribuição. Veja um exemplo: suponha que um grupo de workers precise executar um conjunto de tarefas e, para cada worker e tarefa, há um custo para atribuir o worker à tarefa. O problema é atribuir cada worker a no máximo uma tarefa, sem dois workers executando a mesma tarefa, minimizando o custo total.

É possível visualizar esse problema no gráfico abaixo, no qual há quatro workers e quatro tarefas. As bordas representam todas as maneiras possíveis de atribuir workers a tarefas. Os identificadores nas bordas são os custos de atribuir workers a tarefas.

gráfico de fluxo de atribuição

Uma atribuição corresponde a um subconjunto das arestas, em que cada worker tem no máximo uma borda que sai da frente, e não há dois workers com bordas que levam à mesma tarefa. Uma possível atribuição é mostrada abaixo.

gráfico de fluxo de solução de atribuição

O custo total da atividade é de 70 + 55 + 95 + 45 = 265.

A próxima seção mostra como resolver um problema de atribuição usando o solucionador MIP e CP-SAT.

Outras ferramentas para resolver problemas na atribuição

O OR-Tools também fornece algumas outras ferramentas para resolver problemas de atribuição, que podem ser mais rápidas do que os solucionadores MIP ou CP:

No entanto, essas ferramentas só podem resolver tipos simples de problemas de atribuição. Portanto, para solucionadores gerais que podem lidar com uma grande variedade de problemas (e são rápidos o suficiente para a maioria dos aplicativos), recomendamos os solucionadores MIP e CP-SAT.