Problema de Transportesvolmir/PO_I_12_designacao.pdfCaso particular de Transporte 2 Destinos A B C...
Transcript of Problema de Transportesvolmir/PO_I_12_designacao.pdfCaso particular de Transporte 2 Destinos A B C...
PESQUISA OPERACIONAL Problema de Designação
Professor Volmir Wilhelm Professora Mariana Kleina
Caso particular de Transporte
2
Destinos
A B C Oferta
O
rige
ns
1 32 50 200 1
2 40 68 80 1
3 120 104 60 1
Demanda 1 1 1
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
1
2
3
A
B
C
3
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
1
2
3
A
B
C
x1A
1,0,,,,,,, 333222111 CBACBACBA xxxxxxxxx
4
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
Suponhamos que temos m origens e n destinos e a matriz de custos C = cij
njmix
njx
mixas
xcZ
ij
m
iij
n
jij
m
i
n
jijij
,...,2,1,...,2,11,0
,...,2,11
,...,2,11.
min
1
1
1 1
5
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
njmix
njx
mixas
xcZ
ij
m
iij
n
jij
m
i
n
jijij
,...,2,1,...,2,11,0
,...,2,11
,...,2,11.
min
1
1
1 1
mxm
i
n
jij
1 1
nxm
i
n
jij
1 1
nm
6
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
7
RESOLUÇÃO VIA ALGORITMO HÚNGARO
i. Balancear ii. Zeros na matriz iii. Designações possíveis iv. Uso do algoritmo iterativo para obter a solução
viável ótima
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
Algoritmo Húngaro
1º. DEVE-SE IGUALAR NÚMERO DE ORIGENS E DE DESTINOS
BALANCEAR
•Se o número de destinos é menor que o de origens (m > n), basta incluir destinos
fictícios com custos de designação nulos.
•Se o número de origens é menor que o de destinos (m < n), basta incluir origens
fictícias com custos de designação nulos.
8
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
9
2º. DE MODO ORGANIZADO, GERAR ZEROS NA MATRIZ
•Encontre o custo mínimo de cada uma das n linha e construa uma nova tabela
subtraindo os custos de cada linha da tabela original pelo seu custo mínimo.
•De posse da nova tabela, encontre o custo mínimo de cada uma das n coluna e
construa uma nova tabela subtraindo os custos de cada coluna pelo seu custo mínimo.
Problema de Designação
Algoritmo Húngaro
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
Gerar zeros na matriz de custos
10
1,0,,,,,,,
1
1
1
1
1
1.
601041208068402005032min
333222111
221
321
321
333
222
111
333222111
CBACBACBA
CBC
BBB
AAA
CBA
CBA
CBA
CBACBACBA
xxxxxxxxx
xxx
xxx
xxx
xxx
xxx
xxxas
xxxxxxxxxZ
CBACBACBA xxxxxxxxxZ 333222111 601041208068402005032
CBACBACBA xxxxxxxxxZ 333222111 601041208068402005032'
ZxxxZZ CBA 111' Z e Z’ possuem os mesmos pontos críticos
a) Procedendo a seguinte alteração
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
11
1,0,,,,,,,
1
1
1
1
1
1.
601041208068402005032min
333222111
321
321
321
333
222
111
333222111
CBACBACBA
CCC
BBB
AAA
CBA
CBA
CBA
CBACBACBA
xxxxxxxxx
xxx
xxx
xxx
xxx
xxx
xxxas
xxxxxxxxxZ
CBACBACBA xxxxxxxxxZ 333222111 601041208068402005032''
ZxxxZZ AAA 321'' Z e Z’’ possuem os mesmos pontos críticos
b) Procedendo a outra alteração
CBACBACBA xxxxxxxxxZ 333222111 601041208068402005032
Gerar zeros na matriz de custos
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
12
A B C mínimo
1 32 50 200 32
2 40 68 80 40
3 120 104 60 60
A B C
1 0 18 168
2 0 28 40
3 60 44 0
mínimo 0 18 0
12
A B C
1 0 0 168
2 0 10 40
3 60 26 0
Gerar zeros na matriz de custos – Exemplo
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
13
3º. DETERMINAR A SOLUÇÃO VIÁVEL ÓTIMA
Passo 1: Usando a matriz com maior número de zeros possíveis, faça as designações
possíveis. Se as n designações forem efetuadas, pare.
Passo 2: Determine o menor número de retas (horizontais e/ou verticais) necessárias para cobrir todos os zeros da tabela corrente de custos. Se forem determinadas n retas, e n for o menor número de retas, então uma atribuição de custo mínimo poderá ser obtida com base nos zeros cobertos pelas retas; neste caso o algoritmo termina. Se menos de n retas forem determinadas, siga para o Passo 3;
Passo 3: Encontre o menor elemento não nulo M, da tabela atual de custos não coberto pelas retas determinadas no Passo 2. Subtraia M de cada elemento não coberto pelas retas, adicione M a cada elemento coberto por duas retas e volte ao Passo 1.
Algoritmo Húngaro
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
14 14
0 168
10 40
60 26
0
0
0
160604060
1
1
1
Solução
3
2
1
Z
x
x
x
C
A
B
1º
2º
3º
4º
Exemplo 1
A B C
1 32 50 200
2 40 68 80
3 120 104 60
A B C
1 0 0 168
2 0 10 40
3 60 26 0
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
Exemplo 2
15
14 5 8
2 12 6
7 8 3
2 4 6
14 5 8 0
2 12 6 0
7 8 3 0
2 4 6 0
14 5 8 0
2 12 6 0
7 8 3 0
2 4 6 0
2 4 3 0
12 1 5 0
0 8 3 0
5 4 0 0
0 0 3 0
12 1 5
8 3 0
5 4 0
0 3 0
0
0
0
0
1º (balancear)
2º
3º
4º
5º (anular)
6º
7º 8º
9º
(mínimo)
Problema de Designação
Exemplo 3
16
14 5 8
2 12 6
7 8 6
2 4 3
14 5 8 0
2 12 6 0
7 8 6 0
2 4 3 0
12 1 5 0
0 8 3 0
5 4 3 0
0 0 0 0
12 1 5
8 3 0
5 4 3 0
0 0 0
0
0
0
continua...
14 5 8 0
2 12 6 0
7 8 6 0
2 4 3 0
2 4 3 0
1º
2º
3º
4º
5º (anular)
6º
8º 9º 7º
Problema de Designação
Exemplo 3
17
12 1 5
8 3 0
5 4 3 0
0 0 0
0
0
0
11 4 0
8 3 1
4 3 2
0 0 1
0 0
0
0 1
1
1
1
4
3
2
1
D
F
A
B
x
x
x
x
1º 4º
6º
2º
5º
3º
1º
2º
3º
4º 5º
6º 7º
Encontre o menor elemento não nulo M, da
tabela atual de custos não coberto pelas
retas determinadas no Passo anterior.
Subtraia M de cada elemento não coberto
pelas retas, adicione M a cada elemento
coberto por duas retas
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
18
Problema de Designação
Prof. Volmir Eugênio Wilhelm – Professora Mariana Kleina
Algoritmo Seja um problema de designar n tarefas a n agentes. Passo 1: Gerar zeros
a) Redução por linha: Subtrair a entrada mínima de cada linha de todas as entradas da respectiva linha na matriz de custo. b) Redução por Coluna: Após a conclusão da redução de linha, subtraia a entrada mínima de cada coluna de todas as entradas da respectiva coluna.
Passo 2: Designar zeros
a) Começando com a primeira linha da matriz gerada no Passo 1, examine as linhas uma por uma até encontrar uma linha contendo exatamente um único zero. Em seguida, uma designação, indicada por "", é marcada para esse zero. Então elimine/cruze ("") todos os zeros na coluna em que a designação foi feita. Este procedimento deve ser adotado para cada designação por linha.
b) Quando o conjunto de linhas foi completamente examinado, um procedimento idêntico é aplicado sucessivamente às colunas. Começando com a coluna 1, examine todas as colunas até que uma coluna contendo exatamente um único zero seja encontrada. Em seguida, faça uma designação nessa posição (marque com "") e elimine (cruze com ) os outros zeros na linha em que a designação foi feita.
Continue essas operações sucessivas em linhas e colunas até que todos os zeros tenham sido designados (com ) ou eliminados (com ). Agora existem duas possibilidades:
a) Todos os zeros foram designados ou eliminados/cruzados, ou, b) Pelo menos dois zeros permanecem para designação ou para eliminação em cada linha ou coluna. Nesta situação, tente excluir alguns dos zeros
pelo método de tentativa e erro. Por exemplo, designe o primeiro zero encontrado e continue o procedimento descrito no início do Passo 2. Isso conclui o Passo 2. Após este passo, podemos obter duas situações.
a) Total de zeros designados é igual a n: a designação é ótima. b) Total de zeros designados é menor que n: nesta situação use o Passo 3 e em diante.
Passo 3: Gerar o menor número de linhas para “cobrir/riscar” todos os zeros
Para cobrir/riscar todos os zeros, pelo menos, uma vez você pode adotar o procedimento a seguir. i. Marque (com ) todas as linhas nas quais nenhuma designação foi feita. ii. Procure as posições de zeros nas linhas marcadas e então marque (com ) as colunas correspondentes. iii. Procure as colunas marcadas e encontre as posições dos zeros designados e, em seguida, marque (com ) as linhas correspondentes que não
estão marcadas até agora. iv. Repita o procedimento ii. e iii. até a conclusão da marcação. v. Cubra/risque retas nas linhas desmarcadas e nas colunas marcadas.
Passo 4: Selecionar o mínimo dos elementos não cobertos (não riscados) e fazer: a) Subtraia este menor elemento de todos os elementos não riscados/cobertos. b) Adicione este menor elemento a todos os elementos que estão nas intersecções de duas retas.
Passo 5: Assim, aumenta-se o número de zeros. Agora, modifique a matriz e retorne do Passo 2 para encontrar a designação necessária.