INVESTIGAÇÃO OPERACIONAL

31
INVESTIGAÇÃO OPERACIONAL AFECTAÇÃO DE RECURSOS ( Texto actualizado em 2017 ) António Carlos Morais da Silva Professor de I.O.

Transcript of INVESTIGAÇÃO OPERACIONAL

Page 1: INVESTIGAÇÃO OPERACIONAL

INVESTIGAÇÃO OPERACIONAL

AFECTAÇÃO DE RECURSOS

( Texto actualizado em 2017 )

António Carlos Morais da Silva Professor de I.O.

Page 2: INVESTIGAÇÃO OPERACIONAL

ii

Índice

I. Afectação de Recursos I-1

1 Afectar recorrendo à Enumeração Completa I-1

2 Afectar recorrendo ao Modelo de Transporte I-2

3 Afectar recorrendo ao Modelo de Programação Linear I-3

4 Teorema de König I-4

5 Algoritmo de König I-6

6 EXEMPLO I-7

7 Auto Teste I-12

8 Solução do Auto Teste I-13

9 Análise do 3º Passo do método de König I-16

10 Classificação da Solução Óptima I-17

11 Maximização da Função Objectivo I-19

12 Cálculo da Matriz de “Desgosto” I-19

13 Modelo Desequilibrado I-20

14 Auto Teste I-21

15 Solução do Auto Teste I-22

II. Caso Particular da afectação Min { Max } (“Bottleneck”) II-1

1 Método nº 1 – Subtrair menor encargo aos encargos positivos até obter a solução óptima II-2

2 Método nº 2 - Repetição Sucessiva do Método de König II-3

3 Auto Teste II-4

4 Solução do Auto Teste II-5

Page 3: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-1

I. Afectação de Recursos

Uma empresa testou 3 operários operando uma de 3 máquinas-ferramenta (M1 , M2 , M3 ). O número de

peças defeituosas produzidas por cada um deles, durante um turno, foi o seguinte:

Número de peças defeituosas por turno de trabalho

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3)

António 6 3 2

José 9 5 4

Joaquim 5 4 3

Se o objectivo for minimizar o total de peças defeituosas, em cada turno, quais são os pares óptimos

operário-máquina ?

O problema proposto é um problema linear em que é necessário "afectar" cada um dos operários a cada uma

das máquinas e vice-versa ou, de forma genérica, fazer corresponder a cada unidade de recurso (neste caso

o operário) uma e só uma actividade (neste caso uma máquina-ferramenta) e vice-versa.

Situações deste tipo são frequentes em ambiente de decisão sendo exemplos típicos atribuir máquinas ou

trabalhadores a tarefas, ordenar a execução de programas num computador, afectar tripulações a rotas de

transporte etc.

1. Afectar recorrendo à “Enumeração Completa”

No problema proposto, se o operário António (tal como os restantes) só pode ser afectado a uma de três

máquinas e se a máquina nº 1 (tal como as restantes) só pode ser afectada a um dos três operários é

evidente que há 3! = 6 soluções (afectações) possíveis. O quadro seguinte apresenta as afectações

possíveis e o número de peças defeituosas associadas a cada uma delas:

Hipótese Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3) Nº peças defeituosas/turno 1 António José Joaquim 14 2 António Joaquim José 14 3 José António Joaquim 15 4 José Joaquim António 15 5 Joaquim António José 12 6 Joaquim José António 12

Da enumeração completa dos pares “operário-máquina”, conclui-se que a solução óptima é afectar os

operários do seguinte modo:

• Joaquim: máquina nº 1

• António: máquina nº 2 (ou 3)

• José: máquina nº 3 (ou 2)

Com esta afectação o total de peças defeituosas em cada turno é de 12 peças.

A facilidade com que foi detectada a solução óptima parece sugerir que a análise combinatória é eficaz para

a resolução de problemas deste tipo. Atente-se contudo que tal facilidade é apenas aparente pois se na

situação proposta considerarmos 10 operários e 10 máquinas o número de soluções é 10! = 3.628.800 o que

torna evidente a ineficácia do processo.

Page 4: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-2

2. Afectar recorrendo ao “Modelo de Transporte”

Na situação proposta, é necessário decidir qual dos 3 operários é afectado a cada uma de 3 máquinas e

vice-versa. As variáveis de decisão deverão ser binárias e em número de 3 + 3 + 3 = 9.

Considerando estas variáveis xij = 0 se o operário "i" (i= 1 para António, 2 para José, 3 para Joaquim) não é

afectado à máquina "j " (j= 1, 2, 3) ou xij = 1 no caso contrário e atendendo a que o objectivo é minimizar o

total de peças defeituosas por turno, tem-se:

Min f(X) = 6x11 + 3 x12 + 2x13 + 9x21 + 5x22 + 4x23 + 5x31 + 4x32 + 3x33

s.a.

x11 + x12 + x13 = 1

x21 + x22 + x23 = 1

x31 + x32 + x33 = 1

+x11 + x21 + x31 = 1

+x12 + x22 + x332 = 1

+x13 + x23 + x33 = 1

xij = 0 ou 1 ( i = 1, 2, 3 ; j = 1, 2, 3)

Olhando a estrutura do modelo conclui-se estarmos na presença de um problema de transporte em que as

Origens (operários) têm Oferta unitária, os Destinos (máquinas) têm Procura unitária e os coeficientes das

variáveis de decisão, na função objectivo, são o número de peças defeituosas para cada par “Oi – Dj”.

Para calcular a primeira solução do problema de transporte, organiza-se a matriz inicial:

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3) Oferta

António 6 3 2 1

José 9 5 4 1

Joaquim 5 4 3 1

Procura 1 1 1 3 = 3

O modelo é equilibrado tendo “n + n –1 = 3 + 3 - 1 = 5 variáveis básicas.

Uma primeira solução pode obter-se pelo método do canto NW:

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3)

António 1

José 1

Joaquim 1

A solução obtida é fortemente degenerada (2 VB nulas) razão porque não se considera eficaz adoptar a

algoritmia de transporte para resolver problemas de afectação.

Page 5: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-3

3. Afectar recorrendo ao “Modelo de Programação Linear”

No problema de afectação em que há "n" Origens para afectar a "n" Destinos e são conhecidos os encargos

associados a cada par “Origem-Destino” o modelo de PL para calcular a solução óptima é o seguinte:

1 1

1

1

( )

. .

1 ( 1,2,..., )

1 ( 1,2,..., )

0 1

n n

ij ij

i j

n

ij

i

n

ij

j

ij

Min f X c x

s a

x j n

x i n

x ou

= =

=

=

=

= =

= =

=

∑∑

Trata-se de um problema de programação linear inteira binária (PLIB) onde o aumento do número de

variáveis se traduz num aumento significativo do tempo de cálculo.

Retomando o exemplo proposto:

Número de peças defeituosas por turno de trabalho

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3)

António 6 3 2

José 9 5 4

Joaquim 5 4 3

o modelo de PL para calcular a afectação óptima é o seguinte:

11 12 13 21 22 23 31 32 33

11 12 13

21 22 23

31 32 33

11 21 31

12 22 32

13 23 33

( ) 6 3 2 9 5 4 5 4 3

. .

1

1

1

1

1

1

0 1ij

Min f X x x x x x x x x x

s a

x x x

x x x

x x x

x x x

x x x

x x x

x

= + + + + + + + +

+ + =

+ + =

+ + =

+ + =

+ + =

+ + =

= ∨

Aplicando o Método Simplex, a base de solução tem "2n" variáveis básicas das quais "n" têm valor 1 e "n"

são nulas pelo que é necessário trabalhar com soluções fortemente degeneradas.

Conclui-se que também não é eficaz aplicar o método do Simplex neste tipo de problema.

Page 6: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-4

4. Teorema de König 1

Deve-se ao matemático húngaro König, um método de cálculo para resolver problemas de Afectação de

Recursos que é espantoso dada a rapidez e simplicidade com que se atinge a solução óptima.

Esta simplicidade, como a seguir se expõe, decorre da estrutura matemática do problema. De facto, sendo as

variáveis de decisão binárias, o valor da função-objectivo é a soma dos coeficientes das variáveis que

tiverem valor unitário.

Comecemos por constatar a seguinte afirmação de König:

" A solução óptima do problema de afectação não se altera se a qualquer fila da matriz de encargos for

adicionado ou subtraído um valor constante".

À matriz de peças defeituosa do problema inicialmente proposto:

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3)

António 6 3 2

José 9 5 4

Joaquim 5 4 3

está associado o objectivo Min f(X) = 6x11 + 3x12 + 2x13 + 9x21 + 5x22 + 4x23 + 5x31 + 4x32 + 3x33 .

Se na linha de cada uma das Origens subtrairmos uma constante pi (i = 1, 2, 3) e na coluna de cada um dos

Destinos subtrairmos uma constante qj (j = 1, 2, 3) a matriz modificada é:

Máquina nº 1 (M1) Máquina nº 2 (M2) Máquina nº 3 (M3)

António 6 - p1 - q1 3 - p1 - q2 2 - p1 - q3

José 9 - p2 - q1 5 - p2 - q2 4 - p2 - q3

Joaquim 5 - p3 - q1 4 - p3 - q2 3- p3 - q3

Nesta matriz podemos organizar a seguinte função:

w(X) = (6 - p1 - q1 )x11 + (3 - p1 - q2 )x12 + (2 - p1 - q3 )x13 +

+ (9 - p2 - q1 )x21 + (5 - p2 - q2 )x22 + (4 - p2 - q3 )x23 +

+ (5 - p3 - q1 )x31 + (4 - p3 - q2 )x32 + (3 - p3 - q3 )x33

que pode tomar a forma:

w(X) = 6x11 + 3 x12 + 2x13 + 9x21 + 5x22 + 4x23 + 5x31 + 4x32 + 3x33 -

- p1 ( x11 + x12 + x13 ) - p2 (x21 + x22 + x23 ) - p3 ( x31 + x32 + x33 ) -

- q1 ( x11 + x21 + x31 ) - q2 ( x12 + x22 + x32 ) - q3 ( x13 + x23 + x33 )

1 O matemático húngaro Dénes König apresentou em 1916 o teorema que serviu de base para o desenvolvimento do algoritmo denominado “Algoritmo do Húngaro” ou “Algoritmo Húngaro”.

Page 7: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-5

Atendendo a que:

• f(X) = 6x11 + 3 x12 + 2x13 + 9x21 + 5x22 + 4x23 + 5x31 + 4x32 + 3x33

• x11 + x12 + x13 = x21 + x22 + x23 = x31 + x32 + x33 = 1

• x11 + x21 + x31 = x12 + x22 + x32 = x13 + x23 + x33 = 1

temos:

w(X) = f(X) - (p1 + p2 + p3 + q1 + q2 + q3)

w(X) = f(X) - k

Constata-se que w(X) não é mais do que a função objectivo f(X) a que se subtrai um valor constante “ k “ pelo

que as duas funções têm o mesmo gradiente!

Pode pois concluir-se que:

Min w(X) = Min f(X) - k

e que o mínimo das duas funções é obtido no mesmo ponto óptimo.

O exposto prova que:

" A solução óptima do problema de afectação não se altera se a qualquer fila da matriz de

encargos for adicionado ou subtraído um valor constante".

E porque f(X) e w(X) têm valor mínimo no mesmo ponto óptimo, König afirmou que:

"Se na matriz de encargos só existirem elementos não negativos e nela for possível definir

uma solução admissível com valor total nulo, a solução é óptima ".

Page 8: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-6

5. Algoritmo de König

Inicialização

Equilibrar o modelo acrescentando, se necessário, tantas filas fictícias quantas as necessárias para

obter uma matriz quadrada ("oferta total = procura total") para início do cálculo.

Considerar nulos os coeficientes cij associados a estas filas fictícias.

1º Passo : Redução da Matriz (obter pelo menos um zero em cada fila da matriz de encargos)

Subtrair a cada linha o menor dos seus valores anulando pelo menos um deles. De seguida, na matriz

corrente, subtrair a cada coluna o menor dos seus valores anulando pelo menos um deles.

2º Passo : Afectar Origens a Destinos

Na linha com menor número de zeros escolher um destes para materializar a afectação do par “origem-

destino” associado e cortar os restantes zeros pertencentes à linha e coluna do zero escolhido (impede-

se assim poder escolher novamente a mesma linha e ou coluna).

Repetir este procedimento até que todos os zeros estejam escolhidos ou cortados.

Se o número de zeros escolhidos (afectações) for igual à ordem da matriz a afectação é óptima (é

admissível e tem valor total nulo); de contrário é necessário executar o 3º Passo na matriz corrente.

3º Passo : Nova Redução da Matriz (obter mais zeros)

Se no 2º Passo não foi obtida a solução óptima é porque o número de zeros é insuficiente.

Para dispor de, pelo menos, mais um zero é necessário “proteger” os existentes traçando o menor

número de rectas que cortem todos os zeros da matriz corrente.

O número de rectas a traçar é sempre igual ao número corrente de afectações mas pode não ser fácil

escolher as linhas e/ou colunas a cortar.

Um método simples para indicar o traçado das rectas é o seguinte:

1. marcar todas as linhas onde não haja zero escolhido (afectação)

2. nas linhas marcadas, marcar as colunas onde há zeros cortados

3. nas colunas marcadas, marcar as linhas onde há afectação

4. repetir a sequência “2 - 3” até não ser possível marcar mais linhas e colunas

Terminada a operação de marcação, traçam-se rectas nas linhas não marcadas e nas

colunas marcadas.

Traçadas as rectas cortando todos os zeros existentes na matriz, identifica-se o menor elemento não

cortado por rectas que deve ser:

• subtraído aos elementos não cortados por rectas

• somado aos elementos cortados por 2 rectas (intersecção de duas rectas)

Efectuada esta operação repete-se o 2º Passo na matriz corrente.

Page 9: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-7

6. EXEMPLO

Considere-se a Minimização da função de custo, com os seguintes custos de afectação (u.m.) para cada par

Origem-Destino:

Inicialização

O modelo é equilibrado pois a matriz é quadrada (3 Origens para afectar a 3 Destinos)

1º Passo : Redução da Matriz (obter pelo menos um zero em cada fila da matriz de encargos)

Menor valor da linha Origem 1 6 Origem 2 6 Origem 3 3 Origem 4 5

Subtrair a cada linha o menor dos seus valores anulando pelo menos um deles:

Destino 1 Destino 2 Destino 3 Destino 4

Origem 1 6 3 2 0

Origem 2 1 2 1 0

Origem 3 1 3 3 0

Origem 4 0 5 4 0

Destino 1 Destino 2 Destino 3 Destino 4

Menor valor da coluna 0 2 1 0

Subtrair a cada coluna o menor dos seus valores correntes anulando pelo menos um deles:

Matriz Reduzida

Destino 1 Destino 2 Destino 3 Destino 4

Origem 1 6 1 1 0

Origem 2 1 0 0 0

Origem 3 1 1 2 0

Origem 4 0 3 3 0

Page 10: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-8

Na matriz corrente há pelo menos um zero em cada uma das filas o que permite iniciar o 2º Passo do

método.

Sempre que uma matriz estiver nestas condições será denominada Matriz Reduzida.

2º Passo : Afectar Origens a Destinos

Matriz Reduzida

Destino 1 Destino 2 Destino 3 Destino 4

Origem 1 6 1 1 0

Origem 2 1 0 0 0

Origem 3 1 1 2 0

Origem 4 0 3 3 0

• Linha, sem afectação, com menor número de zeros: 1ª linha (1 zero)

Afectar a Origem 1 ao Destino 4 e eliminar os restantes zeros da Linha 1 e Coluna 4 ficando:

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 6 1 1 0 Origem 2 1 0 0 0 Origem 3 1 1 2 0 Origem 4 0 3 3 0

• Linha, sem afectação, com menor número de zeros: 4ª linha (1 zero)

Afectar a Origem 4 ao Destino 1 e eliminar os restantes zeros da Linha 4 e Coluna 1 ficando:

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 6 1 1 0 Origem 2 1 0 0 0 Origem 3 1 1 2 0 Origem 4 0 3 3 0

• Linha, sem afectação, com menor número de zeros: 2ª linha (2 zeros)

Como há dois zeros a escolha é arbitrária.

Afectar a Origem 2 ao Destino 2 e eliminar os restantes zeros da Linha 2 e Coluna 2 ficando:

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 6 1 1 0 Origem 2 1 0 0 0 Origem 3 1 1 2 0 Origem 4 0 3 3 0

Terminou o 2º Passo pois todos os zeros estão seleccionados ou cortados.

Não foi obtida solução admissível pois só há 3 afectações. Passar ao 3º Passo.

Page 11: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-9

3º Passo : Nova Redução da Matriz (obter mais zeros)

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 6 1 1 0 Origem 2 1 0 0 0 Origem 3 1 1 2 0 Origem 4 0 3 3 0

Porque há 3 afectações o número mínimo de rectas que corta todos os zeros é igual a três.

Traçado das 3 rectas

1. Marcar todas as linhas onde não haja afectação (linha 3)

Destino 1 Destino 2 Destino 3 Destino 4 Marcação Origem 1 6 1 1 0 Origem 2 1 0 0 0

Origem 3 1 1 2 0 ⊗ Origem 4 0 3 3 0 Marcação

2. Nas linhas marcadas, marcar as colunas onde há zeros cortados (coluna 4)

Destino 1 Destino 2 Destino 3 Destino 4 Marcação Origem 1 6 1 1 0 Origem 2 1 0 0 0

Origem 3 1 1 2 0 ⊗ Origem 4 0 3 3 0

Marcação ⊗

3. Nas colunas marcadas, marcar as linhas onde há afectação (linha 1).

Destino 1 Destino 2 Destino 3 Destino 4 Marcação

Origem 1 6 1 1 0 ⊗ Origem 2 1 0 0 0

Origem 3 1 1 2 0 ⊗ Origem 4 0 3 3 0

Marcação ⊗

2. Nas linhas marcadas, marcar as colunas onde há zeros cortados

Não há na linha 1 (última marcação) qualquer zero cortado.

A operação de marcação está terminada passando-se ao traçado das rectas:

“Traçar rectas nas linhas não marcadas e nas colunas marcadas”

Page 12: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-10

Na matriz corrente as rectas a traçar são as seguintes:

Destino 1 Destino 2 Destino 3 Destino 4 Marcação

Origem 1 6 1 1 0 ⊗ Origem 2 1 0 0 0

Origem 3 1 1 2 0 ⊗ Origem 4 0 3 3 0

Marcação ⊗

Notara que traçadas as rectas “os zeros da matriz corrente estão protegidos” sendo agora necessário

aprofundar a redução da matriz.

Redução da Matriz (obter mais zeros)

Para obter, pelo menos, mais um zero opera-se com o menor valor não cortado que deve ser:

• Subtraído aos valores não cortados

• Somado aos valores cortados por 2 rectas (intersecções de rectas)

Na matriz corrente o menor valor não cortado é igual a “1”. Executando a redução como se indicou

obtém-se a matriz para executar novamente o 2º Passo.

2º Passo : Afectar Origens a Destinos

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 0 Origem 2 1 0 0 1 Origem 3 0 0 1 0 Origem 4 0 3 3 1

Linha, sem afectação, com menor número de zeros: 4ª linha (1 zero)

Afectar a Origem 1 ao Destino 1 e eliminar os restantes zeros da Linha 1 e Coluna 1.

Matriz corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 0 Origem 2 1 0 0 1 Origem 3 0 0 1 0 Origem 4 0 3 3 1

Linha, sem afectação, com menor número de zeros: 2ª e 3ª linhas (2 zeros)

Como há dois zeros a escolha é arbitrária.

Afectar a Origem 2 ao Destino 2 e eliminar os restantes zeros da Linha 2 e Coluna 2 ficando:

Page 13: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-11

Matriz corrente

Linha, sem afectação, com menor número de zeros: 3ª linha (1 zero)

Afectar a Origem 3 ao Destino 3 e eliminar os restantes zeros da Linha 3 e Coluna 3 ficando:

Matriz corrente

Linha, sem afectação, com menor número de zeros: 1ª linha (1 zero)

Afectar a Origem 1 ao Destino 3 e eliminar os restantes zeros da Linha 1 e Coluna 3:

Matriz corrente

Terminou o 2º Passo pois todos os zeros estão seleccionados ou cortados.

Foi obtida uma solução admissível pois há 4 afectações, todos os valores da matriz são não negativos e

o valor da solução é zero.

De acordo com o Teorema de König esta solução é óptima:

� x13 = 1 ; x22 = 1 ; x34 = 1 ; x41 = 1 ;

� Min f(X) = 8 + 8 + 3 + 5 = 24 u.m.

Sendo Min f(X) = Min w(X) + k então k = 24.

Vejamos que k = 24 u.m. está associado a “23 + 4 – 3” :

• Redução de 6 + 6 + 3 + 5 + 2 + 1 = 23 no 1º Passo

• Redução de 1 + 1 + 1 +1 = 4 (1 a cada linha) no 3º Passo

• Aumento de 3 (1 em cada recta) no 3º Passo

Page 14: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-12

7. Auto Teste

Considere os custos unitários de afectação associados a cada um dos pares Oi - Dj:

Calcule a 1ª matriz reduzida (1º passo do algoritmo de König)

Calcule a afectação de menor custo total partindo da matriz anterior.

Page 15: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-13

8. Solução do Auto Teste

Dado que o modelo é equilibrado, pode iniciar-se já o 1º Passo do método de König.

1º Passo (obter uma matriz reduzida)

Linhas:

Na matriz inicial subtrair 1, 4, 6 e 5 às 1ª, 2ª, 3ª e 4ª linhas, respectivamente:

Matriz corrente

D1 D2 D3 D4 O1 27 13 0 4 O2 31 6 0 6 O3 28 6 0 5 O4 24 10 5 0

Colunas:

Na matriz corrente subtrair 24, 6, 0 e 0 às 1ª, 2ª, 3ª e 4ª colunas, respectivamente:

Matriz Reduzida

D1 D2 D3 D4 O1 3 7 0 4 O2 7 0 0 6 O3 4 0 0 5 O4 0 4 5 0

2º Passo (afectar)

Decidir a afectação na fila que, no momento, tenha o menor número de zeros (porquê?).

Para efeitos de apresentação, a afectação será sempre feita examinando a matriz por linhas mas nada

impede que seja feita por colunas ou linhas e colunas.

Linha 1 com zero único. Afectar O1 a D3 e eliminar zeros das mesmas linha e coluna.

Matriz Corrente

D1 D2 D3 D4 O1 3 7 0 4 O2 7 0 0 6 O3 4 0 0 5 O4 0 4 5 0

Page 16: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-14

Linhas 2 e 3 com zero único. Escolher arbitrariamente uma delas. Afectar O2 a D2 e eliminar zeros das

mesmas linha e coluna.

Matriz Corrente

D1 D2 D3 D4 O1 3 7 0 4 O2 7 0 0 6 O3 4 0 0 5 O4 0 4 5 0

Na matriz corrente não há zero seleccionável na 3ª linha concluindo-se já que não será obtida solução

admissível (a 3ª equação do modelo de PL não é satisfeita).

Afectar O4 a D1 escolhendo arbitrariamente um dos 2 zeros da 4ª linha.

Matriz Corrente

D1 D2 D3 D4 O1 3 7 0 4 O2 7 0 0 6 O3 4 0 0 5 O4 0 4 5 0

No 2º Passo não se obteve solução óptima. Passar ao 3º Passo.

3º Passo (“produzir mais zeros”)

Dispondo de 3 afectações na matriz corrente há que traçar 3 rectas cortando todos os zeros:

D1 D2 D3 D4

O1 3 7 0 4 ⊗ O2 7 0 0 6 ⊗ O3 4 0 0 5 ⊗ O4 0 4 5 0

⊗ ⊗

Para obter, pelo menos, mais um zero opera-se com o menor valor não cortado (3) que é:

• subtraído aos valores não cortados

• somado aos valores cortados por 2 rectas (intersecção de rectas)

Executando a redução como se indicou obtém-se a matriz seguinte onde se executa novamente o 2º Passo.

Page 17: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-15

2º Passo (afectar)

Matriz Corrente

D1 D2 D3 D4 O1 0 7 0 1 O2 4 0 0 3 O3 1 0 0 2 O4 0 7 8 0

Porque nenhuma linha tem zero único pode concluir-se que, se houver solução óptima, será indeterminada.

Afectar O1 a D1 escolhendo arbitrariamente um dos 2 zeros da 1ª linha.

Matriz Corrente

D1 D2 D3 D4 O1 0 7 0 1 O2 4 0 0 3 O3 1 0 0 2 O4 0 7 8 0

A 4ª linha tem zero único. Afectar O4 a D4.

Matriz Corrente

D1 D2 D3 D4 O1 0 7 0 1 O2 4 0 0 3 O3 1 0 0 2 O4 0 7 8 0

As linhas 2 e 4 têm igual número de zeros (escolha arbitrária).

Escolhendo a 2 ª linha, escolhe-se arbitrariamente um dos zeros.

Afectar O2 a D2 (o que obriga a afectar O3 a D3 no zero único que fica na 3ª linha).

Matriz Corrente

D1 D2 D3 D4 O1 0 7 0 1 O2 4 0 0 3 O3 1 0 0 2 O4 0 7 8 0

Terminou o 2º Passo pois todos os zeros estão seleccionados ou cortados.

Foi obtida uma solução admissível pois há 4 afectações.

Page 18: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-16

De acordo com o Teorema de König esta solução é óptima:

� x11 = 1 ; x22 = 1 ; x33 = 1 ; x44 = 1 ;

� Min f(X) = 49 u.m.

Esta solução é indeterminada.

Veja-se a outra solução resultante da afectação de O2 a D3 e O3 a D2:

D1 D2 D3 D4 O1 0 7 0 1 O2 4 0 0 3 O3 1 0 0 2 O4 0 7 8 0

9. Análise do 3º Passo do método de König

No 3º Passo as rectas traçadas "protegem" os zeros já existentes na matriz ficando apenas valores positivos

como "candidatos" a futura redução.

Para efectuar nova redução é óbvio que o valor mínimo do conjunto de elementos não cortados por rectas

deve ser subtraído a toda a matriz para manter o peso relativo de cada cij. Mas, quando tal é feito, os valores

nulos, da matriz corrente, ficam negativos o que não é aceite pelo Teorema de König.

Assim, para "refazer" estes zeros é necessário somar aquele valor mínimo nas linhas e colunas cortadas

pelas rectas como pode ver-se nos quadros seguintes.

No exemplo precedente, terminado o 2º Passo sem solução admissível, iniciou-se o 3º Passo traçando o

menor número de rectas cortando todos os zeros, ficando na seguinte situação:

Destino 1 Destino 2 Destino 3 Destino 4 Marcação

Origem 1 6 1 1 0 ⊗ Origem 2 1 0 0 0

Origem 3 1 1 2 0 ⊗ Origem 4 0 3 3 0

Marcação ⊗

Para aumentar o número de zeros é necessário reduzir toda a matriz corrente de 1 unidade (menor elemento

não nulo e não cortado) obtendo a matriz:

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 -1 Origem 2 0 -1 -1 -1 Origem 3 0 0 1 -1 Origem 4 -1 2 2 -1

Nesta matriz não pode efectuar-se afectação porque existem valores negativos não

aceites pelo teorema de König.

Page 19: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-17

Para eliminar os valores negativos, soma-se 1 unidade na coluna 4 e nas linhas 2 e 4 obtendo-se a matriz:

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 -1 + 1 Origem 2 0 + 1 -1 + 1 -1 + 1 -1+ 1 + 1 Origem 3 0 0 1 -1 + 1 Origem 4 -1 + 1 2 + 1 2 + 1 -1 + 1 + 1

Ora esta matriz é a que foi obtida no 3º Passo do cálculo!

De facto, na matriz onde se subtraiu 1 unidade:

• Eliminaram-se os valores negativos somando 1 unidade (é o menor elemento não cortado…)

• Nas casas (2,4) e (4,4) somou-se 1 unidade duas vezes. A primeira unidade repôs o zero antes

existente e a segunda unidade aumenta o coeficiente para 1 (eis porque o menor elemento não

cortado é somado nas casas cortadas por 2 rectas…)

• Os valores cortados por uma única recta foram repostos (casas cortadas por recta única não se

alteram dado o efeito “protector” desta…)

• Os valores não cortados por rectas diminuíram 1 unidade (eis porque o menor elemento não

cortado é subtraído nas casas não cortadas pelas rectas…)

Conclua-se pois que o 3º Passo mais não é do que uma forma rápida de executar nova redução.

10. Classificação da Solução Óptima

Para concluir se uma solução óptima com “n” afectações é Única ou Indeterminada, repete-se o 2º Passo na

matriz do óptimo mas efectuando afectação em fila com zero único.

Se actuando deste modo for possível obter as “n” afectações, a solução óptima é Única. Se tal não for

possível então os zeros restantes permitem construir várias alternativas igualmente óptimas.

Vejamos a execução do 2º Passo, modificado, na matriz reduzida onde se obteve a solução óptima no

número anterior:

Matriz onde se obteve a solução óptima

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 0 Origem 2 1 0 0 1 Origem 3 0 0 1 0 Origem 4 0 3 3 1

A linha 4 tem zero único. Afectar a Origem 4 ao Destino 1.

Matriz Corrente

Destino 1 Destino 2 Destino 3 Destino 4 Origem 1 5 0 0 0 Origem 2 1 0 0 1 Origem 3 0 0 1 0 Origem 4 0 3 3 1

Page 20: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-18

Não há qualquer fila com zero único e só foi feita 1 das 4 afectações pelo que se conclui que a solução

óptima é Indeterminada.

Soluções óptimas alternativas

Linha, sem afectação, com menor número de zeros: 2ª e 3ª linhas (2 zeros)

Escolha arbitrária.

Seleccionando a 2ª linha podemos afectar O2 a D2 ou a D3 dando origem a 2 ramos:

Ramo 1 Ramo 2 D1 D2 D3 D4 D1 D2 D3 D4

O1 5 0 0 0 5 0 0 0 O2 1 0 0 1 1 0 0 1 O3 0 0 1 0 0 0 1 0 O4 0 3 3 1 0 3 3 1

No Ramo 1 escolhe-se o zero único da 3ª linha e, de seguida, o zero único da 1ª linha obtendo-se a

solução óptima seguinte:

Ramo 1 D1 D2 D3 D4

O1 5 0 0 0 O2 1 0 0 1 O3 0 0 1 0 O4 0 3 3 1

No Ramo 2, onde as 1ª e 3ª linhas têm 2 zeros obtêm-se as seguintes soluções óptimas:

Ramo 2 (óptimo) Ramo 2 (óptimo) D1 D2 D3 D4 D1 D2 D3 D4

O1 5 0 0 0 5 0 0 0 O2 1 0 0 1 1 0 0 1 O3 0 0 1 0 0 0 1 0 O4 0 3 3 1 0 3 3 1

Há portanto as seguintes soluções óptimas com custo total mínimo de 24 u.m.:

D1 D2 D3 D4 D1 D2 D3 D4 D1 D2 D3 D4 O1 8 9 6 O2 8 7 7 O3 3 3 6 O4 5 5 5

Page 21: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-19

11. Maximização da Função Objectivo

O algoritmo de König minimiza o encargo total da afectação de recursos.

Quando se pretende efectuar a afectação maximizando a função objectivo procede-se do seguinte modo

para estabelecer uma nova matriz inicial:

• Identifica-se o maior encargo ( cij ) da matriz

• Calcula-se a diferença não negativa entre cada um dos restantes encargos (cij) e o máximo antes

determinado obtendo nova matriz denominada matriz de “Desgosto”.

• Aplica-se o método de König na matriz de “Desgosto”2 obtendo a solução óptima de afectação

(valor máximo da função objectivo deve ser calculado à luz dos encargos (cij) originais.

12. Cálculo da Matriz de “Desgosto”

Consideremos por exemplo a necessidade de distribuir 5 temas (secções) de trabalhos a 5 alunos tendo

estes manifestado a sua preferência numa escala de 1 a 10 (10 é preferência máxima) como mostra a matriz

seguinte:

Nesta situação, o objectivo é maximizar as preferências dos alunos na maior extensão possível pelo que é

necessário calcular a matriz de “Desgosto” para usar o método de König.

Como o encargo máximo é “10” cada um dos elementos da matriz será igual a “10 - cij”:

Matriz de “Desgosto”

Veja-se, por exemplo, que o aluno A dá a sua maior preferência à Secção 3 (10 pontos).

Na matriz de “Desgosto” o mesmo aluno dá a menor preferência à mesma Secção (0 pontos).

Empiricamente conclui-se que a afectação desejada pelo aluno A coincide nos dois ambientes, pois ao

máximo em maximização corresponde o mínimo para a minimização.

2 A demonstração matemática associada ao uso da matriz de “Desgosto” pode ser consultada no manual “Modelo de Transporte” do autor.

Page 22: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-20

13. Modelo Desequilibrado

Quando no modelo de Afectação o número de Origens é diferente do número de Destinos diz-se que o

modelo é Desequilibrado.

O método de König só pode ser aplicado em modelos equilibrados (a matriz inicial para redução deve ser

quadrada).

Para transformar a matriz não quadrada numa matriz quadrada basta acrescentar tantas filas "fictícias"

quantas as necessárias. Nestas filas os encargos são nulos (pois a afectação não será praticada).

Considere-se, por exemplo, que uma empresa de distribuição de mercadorias tem um depósito central com

seis locais de carga/descarga e que, amanhã, tem prevista a carga/descarga de uma viatura tipo I, uma

viatura tipo II, uma viatura tipo III e uma viatura tipo IV com os seguintes custos de carga/descarga:

O algoritmo Húngaro de afectação só pode ser aplicado em matrizes quadradas pelo que é necessário

acrescentar 2 linhas ( tipos de viatura fictícios) com custos nulos.

A matriz quadrada para efectuar o 1º Passo do método de König é a seguinte:

Page 23: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-21

14. Auto Teste

a. Admita que, necessitando contratar a execução de 5 tarefas (A, B, C, D e E), recebeu os seguintes

orçamentos das empresas E1, E2, E3, E4, E5 e E6 (milhares de €):

A B C D E E1 16 17 16 12 19 E2 15 18 11 11 E3 15 20 16 20 E4 12 17 22 14 20 E5 16 19 15 17 E6 14 21 17 13 15

Se pretender reduzir ao mínimo a despesa total como atribui as tarefas às empresas concorrentes ?

Page 24: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

I-22

15. Solução do Auto Teste

É necessário equilibrar o modelo acrescentando uma coluna fictícia com encargos nulos.

Trata-se de um problema de minimização de custos pelo que os encargos desconhecidos são considerados

muito elevados (big “M”). A matriz inicial para executar o 1º Passo é a seguinte:

Aplicando o método de König obtém-se sucessivamente:

Afectação óptima Única com custo total = 69000€

Empresa E1: tarefa B; Empresa E2: tarefa F; Empresa E3: tarefa C; Empresa E4: tarefa A;

Empresa 5: Nenhuma ; Empresa E6: tarefa D

Page 25: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-1

II. Caso Particular da afectação Min { Max }

O problema que se apresenta nesta secção é denominado na gíria por “problema do gargalo” (“bottleneck”).

Não raras vezes é preciso proceder à Afectação de Recursos de forma a que o maior dos encargos de

afectação tenha o menor valor possível (min{Max}).

A título de exemplo considere-se o seguinte extracto do planeamento de um projecto (rede CPM 3):

1

Tarefa C

Tarefa B

10

Tarefa A 5

15 Tarefa D 20

A tarefa “D” só pode ter início após concluídas as tarefas “A”, “B” e “C”.

Se estas tarefas tiverem início simultâneo, o momento mais cedo de início da tarefa “D” é comandado pela

maior duração das tarefas precedentes. Se, por exemplo, começar às 9 horas a execução das tarefas “A”, “B”

e “C” com durações de 2, 3 e 4 horas, respectivamente, o momento mais cedo do início da tarefa “D” será às

13 horas pois só neste momento é que a tarefa precedente de maior duração ( “C” ) estará terminada.

Admita-se então que é preciso afectar um operário para cada uma das tarefas A, B e C conhecendo a matriz

de tempos de execução (horas) de cada um deles (rendimento):

Tarefa A Tarefa B Tarefa C

António 3 2 2

João 3 4 3

Manuel 2 2 1

Se, por exemplo, se iniciar às 09h00 a execução das tarefas com o António na tarefa “A”, o João na tarefa “B”

e o Manuel na tarefa “C”, a tarefa “D” só pode ter início às 13h00 pois do conjunto de tempos {3, 4, 1} a

duração máxima é 4 horas na tarefa “B” (João).

Face ao exposto, conclui-se que o problema se resume a, na matriz quadrada de ordem "k = 3", escolher

entre “k! = 3! = 6” planos possíveis aquele que garanta iniciar a tarefa “D” o mais cedo possível.

Dado que o objectivo da afectação de recursos é minimizar ou maximizar uma soma de encargos de

afectação, é necessário "adaptar o algoritmo de König" para resolver este tipo de problema, o que pode ser

feito pelos dois métodos a seguir expostos.

:

3 Método do caminho crítico

Page 26: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-2

1. Método nº 1 – Subtrair menor encargo aos encargos positivos até obter a solução óptima

Como o título sugere actua-se do seguinte modo:

• 1º Passo: Subtrair na matriz o menor dos valores positivos aos elementos positivos.

• 2º Passo: Afectar Origens a Destinos. No caso de não haver solução admissível (número

insuficiente de zeros ) repetir o 1º Passo na matriz corrente.

No exemplo proposto ter-se-á:

1º Passo: Subtrair na matriz o menor dos valores (1 hora), ficando a matriz:

Tarefa A Tarefa B Tarefa C

António 2 1 1

João 2 3 2

Manuel 1 1 0

2º Passo: Não é possível obter uma solução para a afectação. Repetir o 1º Passo.

1º Passo: Na matriz corrente, subtrair o menor dos valores positivos (1 hora) aos elementos positivos (não

zeros). A matriz para o 2º Passo, é a seguinte:

Tarefa A Tarefa B Tarefa C

António 1 0 0

João 1 2 1

Manuel 0 0 0

2º Passo: Não é possível obter uma solução para a afectação. Repetir o 1º Passo.

1º Passo: Na matriz corrente, subtrair o menor dos valores positivos (1 hora) aos elementos positivos (não

zeros). A matriz para o 2º Passo, é a seguinte:

Tarefa A Tarefa B Tarefa C

António 0 0 0

João 0 1 0

Manuel 0 0 0

2º Passo: Afectar Origens a Destinos (já é possível):

Tarefa A Tarefa B Tarefa C

António 0 0 0

João 0 1 0 Manuel 0 0 0

Trata-se de um plano óptimo com Max {3, 3 , 2 } = 3 horas que condiciona o início da tarefa “D”.

Apesar de haver outras afectações possíveis, a duração de 3 horas figurará em todas elas como máximo do

conjunto de tempos de afectação a condicionar o início mais cedo da tarefa “D”.

Page 27: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-3

2. Método nº 2 - Repetição Sucessiva do Método de König

Como o título sugere, efectua-se a afectação pelo método de König mas eliminam-se da matriz todos os

encargos iguais ou superiores ao valor máximo das afectações óptimas.

Nas matrizes assim modificadas, repete-se a operação anterior até se registar a subida do valor de f(X)

momento em que a afectação imediatamente anterior é óptima.

Retomando o exemplo anterior, tem-se:

Tarefa A Tarefa B Tarefa C

António 3 2 2

João 3 4 3

Manuel 2 2 1

A afectação óptima é a seguinte:

Valor do Plano 1 = Max {2, 3, 1} = 3 horas (João na Tarefa “A”)

O maior dos encargos de afectação é 3 horas pelo que para impedir afectações posteriores com valor igual

ou superior a “3 horas”, substituem-se estes valores por “big M” ficando a matriz:

Tarefa A Tarefa B Tarefa C

António M 2 2

João M M M

Manuel 2 2 1

Procede-se a nova afectação nesta matriz mas como na 2ª linha não há encargos finitos não será possível

obter nova afectação com valor finito.

A afectação anterior é portanto óptima com o valor de “3 horas” para o João executar a tarefa “A”.

Page 28: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-4

3. Auto teste

Em dado troço da rede CPM de um projecto há 4 tarefas cuja conclusão é urgente.

Tais tarefas designadas A , B , C e D terão início simultâneo.

Podem adoptar-se quatro modalidade de execução (M1, M2, M3, M4) para cada uma das tarefas com os

seguintes tempos de execução (horas):

Tarefa A Tarefa B Tarefa C Tarefa D

M1 80 120 125 140

M2 20 115 145 60

M3 40 100 85 45

M4 65 35 25 75

Calcular a afectação que garanta a prontidão das tarefas o mais cedo possível.

Page 29: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-5

4. Solução do Auto Teste

a. Método nº 1 – Subtrair menor encargo aos encargos positivos até obter a solução óptima

O/D Tarefa A Tarefa B Tarefa C Tarefa D Possível afectar Mínimo para subtrair

1

M1 80 120 125 140 Não 20

M2 20 115 145 60

M3 40 100 85 45

M4 65 35 25 75

2

M1 60 100 105 120 Não 5

M2 0 95 125 40

M3 20 80 65 25

M4 45 15 5 55

3

M1 55 95 100 115 Não 10

M2 0 90 120 35

M3 15 75 60 20

M4 40 10 0 50

4

M1 45 85 90 105 Não 5

M2 0 80 110 25

M3 5 65 50 10

M4 30 0 0 40

5

M1 40 80 85 100 Não 5

M2 0 75 105 20

M3 0 60 45 5

M4 25 0 0 35

6

M1 35 75 80 95 Não 15

M2 0 70 100 15

M3 0 55 40 0

M4 20 0 0 30

7

M1 20 60 65 80 Não 5

M2 0 55 85 0

M3 0 40 25 0

M4 5 0 0 15

8

M1 15 55 60 75 Não 10

M2 0 50 80 0

M3 0 35 20 0

M4 0 0 0 10

8

M1 5 45 50 65 Não 5

M2 0 40 70 0

M3 0 25 10 0

M4 0 0 0 0

10

M1 0 40 45 60 Não 5

M2 0 35 65 0

M3 0 20 5 0

M4 0 0 0 0

11

M1 0 35 40 55 Sim

M2 0 30 60 0

M3 0 15 0 0

M4 0 0 0 0

Plano óptimo: tarefas concluídas 85 horas após iniciadas

Page 30: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-6

b. Método nº 2 - Repetição Sucessiva do Método de König

1ª afectação

Max { 120 , 20 , 25 , 45 } = 120 horas (admissível)

Plano 1: tarefas concluídas 120 horas após iniciadas.

Impedir afectações associadas a 120 ou mais horas e afectar novamente.

2ª afectação

Max { 80 , 35 , 85 , 60 } = 85 horas (admissível)

Plano 2: tarefas concluídas 85 horas após iniciadas.

Impedir afectações associadas a 85 ou mais horas e afectar novamente.

Page 31: INVESTIGAÇÃO OPERACIONAL

Afectação de Recursos

INVESTIGAÇÃO OPERACIONAL (MS – edição de 2007)

II-7

3ª afectação

Max { M , 20 , 25 , 45 } = M horas (não admissível)

Terminado o processo de repetição de afectações com Min { Max } = Min { 120 , 85 , M } = 85 horas.

O plano óptimo é o Plano 2 em que todas as tarefas estarão concluídas 85 horas após iniciadas.

O software do autor “Afectar Recursos - Bottleneck” efectua este cálculo apresentando o seguinte “output”: