Você está na página 1de 33

Problema de Fluxo

de Custo Mínimo

The Minimum Cost Flow


Problem

Fernando Nogueira Fluxo de Custo Mínimo 1


O Problema de Fluxo de Custo Mínimo (The Minimum Cost Flow
Problem)
Este problema possui papel principal entre os modelos de otimização
em redes, uma vez que este engloba uma enorme quantidade de
aplicações e pode ser resolvido de maneira extremamente eficiente.
O Problema de Transporte, de Designação, de Caminho Mais Curto e
de Fluxo Máximo (vistos anteriormente) são casos especiais do
Problema de Fluxo de Custo Mínimo. A única exceção é o Problema
de Árvore Geradora Mínima.
A exemplo dos problemas acima (com exceção do Problema de
Árvore Geradora Mínima), o Problema de Fluxo de Custo Mínimo é
um Problema de Programação Linear, logo o Simplex pode ser
utilizado para sua resolução. Uma versão específica do Simplex,
denominada Método Simplex de Redes pode ser utilizada de maneira
ainda mais eficiente de que o próprio Simplex.
Fernando Nogueira Fluxo de Custo Mínimo 2
Algumas Considerações
1. A rede é representada por um Dígrafo (orientada) e conectada.
2. No mínimo um dos nós é um “nó de fornecimento” (origem).
3. No mínimo um dos nós é um “nó de demanda” (destino).
4. Todos os nós restantes são “nós Transshipment” (entreposto,
intermediário).
5. A rede possui arcos, tanto quanto forem necessários, com
capacidade suficiente para habilitar todos os fluxos gerados nos
nós de fornecimento para alcançar os nós de demanda.
6. O custo do fluxo através de cada arco é proporcional a
quantidade daquele fluxo, onde o custo por unidade de fluxo é
conhecido.
7. O objetivo é minimizar o custo total de enviar o fornecimento
disponível através da rede para satisfazer a demanda dada (um
objetivo alternativo é maximizar o lucro total para fazer isto).
Fernando Nogueira Fluxo de Custo Mínimo 3
Exemplos de Aplicações:
A mais importante aplicação está em planejar a operação de uma rede
de distribuição de uma companhia. Este tipo de aplicação envolve
determinar um plano para transportar bens a partir das fontes
(fábricas, etc) para locais de armazenagem intermediárias (quando
necessário) e então para os clientes (demanda).

Fernando Nogueira Fluxo de Custo Mínimo 4


Formulação do Modelo
Considere um Dígrafo conectado, onde nos n nós incluem-se no mínimo um nó de
fornecimento e no mínimo um nó de demanda. As variáveis de decisão (de controle)
são xij = fluxo no arco (i,j). As informações necessárias são:
cij = custo por unidade de fluxo no arco (i,j)
uij = capacidade de fluxo no arco (i,j) bi > 0 se o nó i é um nó de fornecimento
bi = fluxo na rede gerado no nó i  bi < 0 se o nó i é um nó de demanda
bi = 0 se o nó i é um nó transshipment
A função-objetivo é:
n n
Minimizar Z    c ij x
ij
i 1
j1
 n
n n  x  sai nó i
fluxo
 x ij  x ji  b i
Sujeito a  para cada nó i ij
 j1
n
j1 j1
x  chega nó i
fluxo
Fernando Nogueira e 0 Fluxo de Custo Mínimo 5
j
x ij i
 para j

1
u ij cada
arco
(i,j)

Fernando Nogueira Fluxo de Custo Mínimo 6


Em algumas aplicações, faz-se necessário ter um limite inferior Lij>0 para o fluxo
no arco (i,j). Para evitar alterações na formulação do modelo, utiliza-se:
x ij  x ij  L ij com x ij  L ij substituindo xij
Propriedade de Soluções Inteiras
Para Problemas de Fluxo de Custo Mínimo, onde todo bi e uij são valores inteiros,
todas as variáveis básicas em toda solução básica viável também são valores
inteiros.

Propriedade de Soluções Viáveis


Uma condição necessária
n
para um Problema de Fluxo de Custo Mínimo ter alguma
solução viável é que  b i  0 , isto é, o fluxo total gerado nos nós de fornecimento
i1
deve ser igual ao fluxo total absorvido nos nós de demanda. Quando este fato é
violado significa que os fornecimentos ou as demandas representam limites
superiores ao invés de quantidades exatas. No caso do Problema de Transporte, por
exemplo, um destino (origem) auxiliar é criado a fim de absorver a oferta
(demanda) em excesso. De maneira análoga, no Problema de Fluxo de Custo
Mínimo cria-se um nó de demanda (fornecimento) auxiliar para absorver o
fornecimento (demanda) em excesso.
Fernando Nogueira Fluxo de Custo Mínimo 7
Exemplo
O dígrafo abaixo ilustra uma rede de distribuição de uma companhia, onde os nós
A e B são duas fábricas desta companhia, os nós D e E são dois estoques e o nó C é
um centro de distribuição (transshipment).

Fernando Nogueira Fluxo de Custo Mínimo 8


O modelo de Programação Linear para este exemplo fica:
Minimizar Z  2x AB  4x AC  9x AD  3x BC  x CE  3x DE  2x ED
Sujeito a
 x AB  x AC  x AD  50
 x  x BC  40
 AB
  x AC  x BC  x CE  0

  x AD  x DE  x ED   30
   60
  x CE  x DE  x ED
 x AB  10

 x CE  80
e
x ij  0

Fernando Nogueira Fluxo de Custo Mínimo 9


Casos Especiais (demais Problemas de Redes como Problema de Fluxo de Custo
Mínimo)
m n
1. Problema de Transporte min Z    cij x
ij i1 j1
•Um nó de fornecimento para cada fonte sujeito a: n

n n  x  si disponibilidade
•Um nó de demanda para cada destino  x   x ji  b i ij
ij j
n
j1 j1   d demanda
•Nenhum nó Transshipment i 1 ij j

x
• uij =  0  x ij  u ij  x ij i  1,..., m; j  1,...n 
0

m n
2. Problema de Designação min Z    cij x
ij i1 j1
Igual ao Problema de Transporte, com: sujeito a: n x  1
 ij disponibilidade
n n j1
•número de nós de fornecimento é igual  x ij   x  b i 
n
ji
ao número de nós de demanda j1 j1 i 1 x 
 ij demanda
1
•bi =Fernando
1 para Nogueira
cada nó de fornecimento
Fluxo de Custo Mínimo 10
1 se i designado para j
0  x ij  u ij  x ij  
•bi = -1 para cada nó de demanda 0 caso contrário

Fernando Nogueira Fluxo de Custo Mínimo 11


3. Problema de Caminho Mais Curto m n
min Z    cij x
•Apenas um nó de fornecimento ij i1 j1
(origem) com fornecimento = 1
sujeito a:
•Apenas um nó de demanda (destino) 1 i  origem
com demanda = 1 n n 
 x ij   x ji  0 i  origem ou destino
j1 j1  1 i  destino
•Todos demais nós são nós 
Transshipment
•Todo arco permite fluxo em ambos 0  x ij  para cada arco (i,j)
sentidos (i  j e j  i), com 
exceção dos arcos que saem da
origem e dos arcos que chegam no
destino
•Distâncias são os custos cij e cji
•uij = 

Fernando Nogueira Fluxo de Custo Mínimo 12


4. Problema de Fluxo Máximo m n
max Z   cij x  Z  x destino,origem
•Apenas um nó de fornecimento min
ij
i 1 j1
(origem)
sujeito a:
•Apenas um nó de demanda (destino)
n n

•Todos demais nós são nós  x ij   x ji  0


Transshipment tamb j1 j1

ém
•cij = 0 para todo (i,j) nós 0   u ij

•Adicionar um arco conectando o nó de Tran x ij


demanda ao nó de fornecimento (neste sshi
pme
sentido) com: udemanda,fornecimento=  e
nt.
cdemanda,fornecimento > 0 (normalmente
utiliza-se cdemanda,fornecimento = 1 para
simplificar cálculos).
Obs: a adição deste arco auxiliar torna
os nós de fornecimento e de demanda
Fernando Nogueira Fluxo de Custo Mínimo 13
para cada arco (i,j)

Fernando Nogueira Fluxo de Custo Mínimo 14


Modelo de Fluxo Máximo a partir do modelo de Fluxo de Custo Mínimo para o
exemplo do Parque Seervada (código Lindo).
MIN –TO !MAX TO !PODE USAR MAX TO OU MIN -TO
SUBJECT TO
R1) OA + OB + OC - TO = 0
VARIABLE VALUE
R2) AB + AD - OA = 0
R3) BD + BE + BC - AB - OB = 0 TO 14.000000
R4) CE - BC - OC = 0 OA 3.000000
R5) DT - AD - BD - ED = 0
OB 7.000000
R6) ED + ET - BE - CE = 0
OC 4.000000
R7) TO - DT - ET = 0
END AB 0.000000
!LIMITES SUPERIORES AD 3.000000
SUB OA 5
BD 4.000000
SUB OB 7
BE 3.000000
SUB OC 4
SUB AB 1 BC 0.000000
SUB AD 3 CE 4.000000
SUB BC 2
DT 8.000000
SUB BD 4
SUB BE 5 ED 1.000000
SUB CE 4 ET 6.000000
SUB DT 9
SUB ED 1
SUB ET 6

Fernando Nogueira Fluxo de Custo Mínimo 15


Método Simplex de Rede

O Método Simplex de Rede é uma versão do Simplex para


resolver problemas de Fluxo de Custo Mínimo.

Técnica de Limite Superior


Esta técnica é necessária para tratar as restrições do tipo x ij  u ij .
Uma variável não-básica em seu limite superior xij = uij é
recolocada por xij = uij – yij, com yij = 0 tornando-se uma
variável não-básica. Quando yij torna-se uma variável básica com
valores estritamente positivos u ij , este valor pode ser entendido
como um fluxo a partir do nó j para o nó i (pórém em sentido
“errado” no arco i  j) cancelando a quantidade de
fluxo previamente designada (xij = uij) do nó i para o nó j.
Fernando Nogueira Fluxo de Custo Mínimo 16
Com isso, quando xij = uij é recolocado por xij = uij – yij, o arco real
i  j é substituído pelo arco reverso j  i, onde este novo
arco possui capacidade uji = uij (máxima quantidade de fluxo que
pode ser cancelada) e custo cji = –cij. Para refletir o fluxo de xij
= uij
através do arco deletado, altera-se a quantidade de fluxo da rede
gerada do nó i para o nó j por decrementar bi por uij e incrementar
bj por uij.
Se yij torna-se uma variável que deixa a base por alcançar seu
limite superior, então yij = uij é recolocado por yij = uij – xij com xij
= 0 como a nova variável básica invertendo o processo descrito
acima (recolocar o arco j  i por i  j, etc).
Para ilustrar o processo acima, considere o exemplo dado
anteriormente.

Fernando Nogueira Fluxo de Custo Mínimo 17


Suponha que xAB tenha tornado-se uma variável que deixa a base em alguma iteração
por alcançar seu limite superior (xAB = 10).
xAB é recolocado por xAB = 10 – yAB, com yAB = 0 tornando-se a nova variável não-
básica. Então o arco A  B é substituído pelo arco B  A (com yAB como
sua quantidade de fluxo) com capacidade uBA = 10 e custo cBA = -2. bA é decrementado
de – uAB (bA = bA – uAB), bA = 50 –10 = 40 e bB é incrementado de + uAB (bB = bB +
uAB), bB
Fernando Nogueira Fluxo de Custo Mínimo 18
= 40 + 10 = 50. A rede fica:

Fernando Nogueira Fluxo de Custo Mínimo 19


Fernando Nogueira Fluxo de Custo Mínimo 16
Correspondência entre soluções Básicas Viáveis e Árvores
Geradoras Viáveis
Uma solução básica viável possui (n-1) variáveis básicas para
uma rede com n nós, onde cada variável básica xij representa o
fluxo através do arco i  j. Estes arcos são referidos
como
arcos básicos (similarmente, os arcos correspondendo para as
variáveis não-básicas xij = 0 ou yij = 0 são denominados arcos
não-básicos).
Uma propriedade fundamental é que arcos básicos nunca
formam ciclos. Portanto, qualquer conjunto de n-1 arcos que
não contém ciclos formam uma Árvore Geradora.
Soluções básicas viáveis podem ser obtidas resolvendo
Árvores Geradoras como:
Fernando Nogueira Fluxo de Custo Mínimo 17
1)Para arcos que não pertencem a Árvore Geradora (arcos não-básicos),
colocar as variáveis correspondentes (xij ou yij) igual a zero.
2)Para arcos que pertencem a Árvore Geradora (arcos básicos), resolver
para as variáveis correspondentes (xij ou yij) o sistema de equações
lineares fornecido pelas restrições dos nós.
Para ilustrar este procedimento, considere a rede anterior que resulta em
recolocar xAB = 10 por xAB = 10 – yAB. Uma Árvore Geradora para esta
rede é:

Fernando Nogueira Fluxo de Custo Mínimo 18


Substituindo xAB = 10 – yAB nas restrições dos nós, fica:
 y AB  x AC  x AD  40
 y  x BC  50
 AB
  x AC  x BC  x CE  0

  x AD  x DE  x ED   30
  x CE  x DE  x ED   60



 V.B. V.N.B.
xAD = 40 yAB = 0
xBC = 50 xAC = 0
xCE = 50 xED = 0
xDE = 10
Fernando Nogueira Fluxo de Custo Mínimo 19
Uma vez que a solução satisfaz a restrição de não-negatividade
x ij  0 e também a restrição de capacidade máxima dos arcos
x CE  80 a Árvore Geradora é uma Árvore Geradora Viável e
portanto tem-se uma solução viável. A rede com os fluxos fica:

Fernando Nogueira Fluxo de Custo Mínimo 20


Selecionando a variável que entra na base
O método Simplex (tradicional) seleciona a variável que entra na base
escolhendo dentre as variáveis não-básicas, a que melhore a função-
objetivo com melhor taxa (de crescimento no caso de maximização e de
decrescimento no caso de minimização).
No exemplo, as variáveis não-básicas são yAB, xAC, e xED.
Escolhendo xAC inicialmente implica em adicionar o arco A 
C. Adicionar um arco não-básico para uma Árvore Geradora sempre
cria um ciclo, onde o ciclo neste caso é AC-CE-DE-AD.
Se xAC entra com um fluxo , ocasionará um fluxo adicional de  nos
arcos de mesmo sentido de AC e um decréscimo de  nos arcos de
sentido oposto ao de AC. Arcos que não pertencem ao ciclo gerado não
são alterados. Os custos são multiplicados por  de maneira análoga ao
fluxo. A rede fica:

Fernando Nogueira Fluxo de Custo Mínimo 21


O incremento total no custo Z fica:
Z = cAC  + cCE  + cDE(-) + cAD(-)
Z = 4 +  - 3 - 9 = -7
Fernando Nogueira Fluxo de Custo Mínimo 22
Fazendo  = 1, resulta na taxa que Z varia quando xAC é acrescido.
Z = -7
Uma vez que o objetivo é minimizar Z, está parece ser uma boa taxa de
decrescimento em Z.
Faz-se necessário computar as mesmas taxas para as demais variáveis
não-básicas.
Para yAB a rede fica:

Z = -2 + 9 + 3 +1(-) +
3(-) = 6 = 6 para  = 1.

Fernando Nogueira Fluxo de Custo Mínimo 23


Para xED a rede fica:

Z = 2 + 3 = 5 = 5 para  = 1.
Resumindo:
 7 se x AC  1
Z  6 se y AB  1
5 se x ED  1

Fernando Nogueira Fluxo de Custo Mínimo 24
Assim, o valor negativo para xAC impõe que esta variável entre na base.

Encontrando a Variável Básica que deixa a base


Uma vez que xAC é a variável que entra na base, o fluxo  no arco AC
deve ser aumentado o máximo possível até que uma das variáveis básicas
alcancem seu limite inferior (0) ou seu limite superior (uij). Retomando a
rede adicionada do arco AC.

Fernando Nogueira Fluxo de Custo Mínimo 25


Os 5 arcos em questão são:
xAD = 40 -  e uAD = 
xDE = 10 -  e uDE = 
xCE = 50 +  e uCE = 80
xAC =  e uAC = 
xBC = 50 (constante) e uBC = 
Aumentando  =10 resulta em xDE = 0, portanto, a variável que
deixa a base é xDE.
A Árvore Geradora resultante é:

Fernando Nogueira Fluxo de Custo Mínimo 26


O resultado é ótimo se não existe nenhuma variável não-básica
com coeficiente negativo. Faz-se necessário testar.

Fernando Nogueira Fluxo de Custo Mínimo 27


A tabela abaixo mostra as variáveis não-básicas (arcos não-
básicos), os ciclos criados e seus coeficientes.

A variável xED possui o menor coeficiente negativo,


indicando, portanto, que a solução ainda pode ser melhorada.
Outra iteração é necessária. O leitor deverá realizar as
iterações restantes. A próxima figura mostra o resultado final.

Fernando Nogueira Fluxo de Custo Mínimo 28


Solução Final

Fernando Nogueira Fluxo de Custo Mínimo 29

Você também pode gostar