Você está na página 1de 5

UNIVERSIDADE DE CUIABA TANGAR DA SERRA PESQUISA OPERACIONAL Prof. Me.

Hlio Clementino dos Santos

O PROBLEMA DE ATRIBUIO/DESIGNAO O problema de atribuio ou problema de designao pode ser considerado um caso especial do problema de transportes. Ele se caracteriza pela otimizao de um problema de atribuio de tarefas a serem executadas. Como exemplo, podemos modelar situaes em que h a necessidade de otimizar um quadro de tarefas (n) a serem executadas por algumas mquinas (m), ou, um cenrio em que existam equipes (m) para executarem determinadas tarefas (n). Sendo assim, se m=n o problema de transporte se transforma num problema de atribuio. Em geral, no problema de atribuio temos m agentes e n tarefas. Pretende-se designar uma tarefa para cada agente, minimizando o custo cij associado com o agente i para realizar a tarefa j. Assim, pretendemos encontrar o acoplamento timo, um a um, entre as tarefas e os agentes. Devem-se observar dois fatores importantes: A) Como o problema de atribuio um caso especial de problema de transportes, ento podemos usar o algoritmo do problema de transportes para resolver o problema de designao. Entretanto, mais adequado desenvolver um algoritmo simplex especializado para resolver o problema de designao, utilizaremos o algoritmo hngaro. B) Todo problema de transportes pode ser transformado em um problema de designao equivalente. Assim, podemos resolver um problema de transportes transformando esse problema em um problema de designao e usando um algoritmo especializado para o problema de designao. Entretanto, essa estratgia no geralmente usada, porque o custo computacional de transformao elevado. O problema de atribuio assume a seguinte forma:

E na forma matricial, o problema de atribuio assume a seguinte forma:

UNIVERSIDADE DE CUIABA TANGAR DA SERRA PESQUISA OPERACIONAL Prof. Me. Hlio Clementino dos Santos

A Matriz Reduzida. A soluo tima pode ser encontrada manipulando a chamada matriz reduzida. A matriz de coeficientes de custo reduzida obtida da matriz original de coeficientes de custo cij apenas substituindo os custos por cij = cij ui + vj em que ui o valor mnimo de cada linha e vj o valor mnimo de cada coluna j. Assim a matriz de custo reduzida obtida em um processo de dois passos: 1) Subtrair de cada elemento da linha, o menor valor encontrado desta linha. 2) Cumprido o passo 1, subtrair de cada elemento da coluna, o menor valor encontrado desta coluna. A matriz reduzida tem pelo menos um elemento igual zero em cada linha e coluna e todos os outros elementos so no negativos porque foram escolhidos os valores mnimos nas operaes de subtrao. Deve-se observar que esses valores mnimos escolhidos podem ser considerados como sendo os valores ui e vj que fornecem uma situao factvel do problema. Deve-se observar tambm que esses valores so iguais aos valores das variveis de folga: cij = cij ui + vj = sij >= 0 Portanto os elementos da matriz de custo reduzida so elementos dos sij >= 0. Agora vamos supor que podemos encontrar valores de xij factveis para o problema e que a parcela dos xij com valor igual a 1 esto associados a elementos da matriz reduzida com valores iguais a zero. Nesse contexto, os valores identificados representam uma soluo tima do problema de designao. Revisando a estrutura do problema de designao verificamos que devemos ter exatamente um xij com valor 1 em cada linha e em cada coluna, e o nmero total de variveis com valor xij = 1 deve ser exatamente igual a m. Portanto, uma estratgia para encontrar uma soluo tima consiste em modificar a matriz reduzida de forma a encontrar m clulas da matriz com valores iguais a zero e localizadas de tal forma que exista pelo menos uma clula desse tipo em cada linha e coluna da matriz. Essas operaes podem ser efetuadas usando a observao realizada anteriormente que permite encontra ui e vj de uma soluo factvel. O Algoritmo Hngaro Passo Inicial: Para cada linha da matriz de custo, subtrair de cada elemento da linha, o menor valor encontrado desta linha. Feito isso, para cada coluna da matriz de custo, subtrair de cada elemento da coluna, o menor valor encontrado desta coluna. Se a soluo tima no for encontrada, seguir para o passo principal. Passo Principal: 1) Identificar o nmero mnimo de linhas (atravs das linhas e colunas da matriz reduzida) necessrias para cobrir todos os elementos da matriz reduzida com valor igual zero. Se o nmero mnimo de linhas encontradas igual a m ento possvel identificar a soluo tima da matriz reduzida. Em caso contrrio, ir para o passo 2. 2) Selecionar o elemento de menor valor e no coberto da matriz. Substituir esse valor de cada elemento no coberto e tambm adicionar esse valor a cada elemento no coberto e tambm adicionar esse valor a cada elemento que est coberto por duas linhas (os

UNIVERSIDADE DE CUIABA TANGAR DA SERRA PESQUISA OPERACIONAL Prof. Me. Hlio Clementino dos Santos

elementos que esto cobertos apenas por uma linha permanecem inalterados). Voltar ao passo 1. Exemplo: Dada a matriz de custos abaixo, encontrar uma soluo tima, utilizando o mtodo hngaro. Passo Inicial: Encontrar a matriz reduzida subtraindo de cada linha o menor valor desta linha, produzindo pelo menos um valor igual zero nesta linha. Em seguida, subtrair de cada coluna o menor valor desta coluna, produzindo pelo menos um valor igual a zero em cada coluna.
1 1 2 3 4 2 3 4

3 0 4 2

2 1 1 5

5 2 -1 3

4 3 3 4

Menor valor da linha 2 0 -1 2

1 1 2 3 4

1 0 5 0 0

0 1 2 3 0

3 2 0 1 0

2 3 4 2 2 Menor valor da coluna

Encontramos a matriz reduzida.


1 1 2 3 4 2 3 4

1 0 5 0

0 1 2 3

3 2 0 1

0 1 2 0

Vamos verificar se possvel, a partir dessa matriz reduzida, encontrar m = 4 clulas com valor zero, de forma que exista uma clula desse tipo em cada linha e coluna da matriz. Lembrando que precisamos atribuir uma tarefa para cada agente, no podendo uma tarefa ser executada por mais de um agente ou o contrrio, um agente executar mais de uma tarefa. A leitura que fazemos da matriz reduzida encontrada que, no caso da tarefa 1 (coluna 1) ela seria executada pelos agentes 2 e 4 (linha 2 e linha 4), e assim por diante. Vamos verificar ento, se possvel atribuirmos uma tarefa para cada agente? Devemos voltar nosso olhar primeiramente para as colunas que possuem apenas um zero, neste caso, coluna 2 e 3. A tarefa 2 (coluna 2) ser executada pelo agente 1 (linha 1), e a tarefa 3 ser pelo

UNIVERSIDADE DE CUIABA TANGAR DA SERRA PESQUISA OPERACIONAL Prof. Me. Hlio Clementino dos Santos

agente 3. Agora devemos verificar as linhas, agente 2 executar a tarefa 1 e agente 4 executar a tarefa 4. Conseguimos encontrar uma soluo, de maneira que cada tarefa seja executada apenas por um agente. Nosso quadro timo o seguinte, vamos colocar 1 em cada xij da soluo encontrada e zero para as demais.
1 1 2 3 4 2 3 4

0 1 0 0

1 0 0 0

0 0 1 0

0 0 0 1

Assim, uma soluo tima do problema de atribuio/designao assume a seguinte forma: x12 = x21 = x33 = x44 = 1 Z(x) =2(1) + 0(1) + -1(1) + 4(1)= 5

Geralmente o nmero de clulas com valor igual a zero maior que m clulas com valores iguais zero com um elemento em cada linha e coluna. Assim, deve-se desenvolver uma estratgia adicional para contornar esse problema. O exemplo a seguir mostra este problema. Considere a seguinte matriz de custos:
1 1 2 3 2 3

2 4 2

5 2 6

7 1 5

E a respectiva matriz reduzida:


1 1 2 3 2 3

0 3 0

2 0 3

5 0 3

Na matriz reduzida no possvel encontrar 3 clulas com valor corrente igual a zero, de forma que se encontre um elemento por coluna ou por linha. Deve-se observar que podemos escolher apenas duas variveis xij com valores iguais a 1. Assim temos as seguintes possibilidades: a) x11 = 1 x22 = 1 b) x11 = 1 x23 = 1 c) x31 = 1 x22 = 1 d) x31 = 1 x23 = 1

Portanto, o nmero mximo de clulas independentes igual a 2, Deve-se observar tambm que o nmero mnimo de linha (horizontal e vertical) necessrios para cobrir todas a clulas com valores iguais a zero, tambm igual a 2. Temos que cobrir (traar uma linha) os zeros, de modo que, todos os zeros da matriz estejam cobertos.

UNIVERSIDADE DE CUIABA TANGAR DA SERRA PESQUISA OPERACIONAL Prof. Me. Hlio Clementino dos Santos

Voltando a matriz reduzida encontrada, como no foi possvel encontrar uma soluo tima, devemos seguir para o passo principal do algoritmo hngaro.
1 1 2 3 2 3

0 3 0

2 0 3

5 0 3

A estratgia subtrair co para cada elemento no coberto e adicionar co para cada elemento coberto duas vezes (por dois traos). co = min {2,5,3,3} = 2 k = 2 (nmero de traos) = nmero de clulas independentes. k = 2 < m = 3, se k = m, a soluo tima foi encontrada. Iremos subtrair co das clulas no cobertas (x12, x13, x32 e x33) e adicionar co a clula coberta duas vezes (x21). Uma nova matriz reduzida encontrada.
1 1 2 3 2 3

0 5 0

0 0 1

3 0 1

A soluo tima foi encontrada k = m = 3,

x12= x23= x31=1,

Z(x) = 8.

Você também pode gostar