problema de fluxo de custo mínimo - ufjf.br · j 1 ij sujeito a: 2. problema de designação igual...
TRANSCRIPT
Fernando Nogueira Fluxo de Custo Mínimo 1
Problema de Fluxo de Custo Mínimo
The Minimum Cost Flow Problem
Fernando Nogueira Fluxo de Custo Mínimo 2
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 ede 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 3
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 nosnó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 4
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 envolvedeterminar 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 5
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 é:
Minimizar
Sujeito a para cada nó i
e para cada arco (i,j)
∑ ∑== =
n
1i
n
1jijijxcZ
in
1jji
n
1jij bxx =∑−∑
==
ijij ux0 ≤≤
⇒∑
⇒∑
=
=
inóchegafluxox
inósaifluxox
n
1jji
n
1jij
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:
com substituindo xijijijij Lxx −=′ ijij Lx +′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 para um Problema de Fluxo de Custo Mínimo ter alguma solução viável é que , isto é, o fluxo total gerado nos nós de fornecimento 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.
∑ ==
n
1ii 0b
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:
0xe
80x10x60xxx30xxx0xxx40xx50xxx
aSujeitox2x3xx3x9x4x2ZMinimizar
ij
CE
AB
EDDECE
EDDEAD
CEBCAC
BCAB
ADACAB
EDDECEBCADACAB
≥
≤≤
−=+−−−=−+−
=+−−=+−=++
++++++=
Fernando Nogueira Fluxo de Custo Mínimo 9
Casos Especiais (demais Problemas de Redes como Problema de Fluxo de Custo Mínimo)
contráriocasojparadesignadoise
01
xux0 ijijij
=⇒≤≤
sujeito a:
1. Problema de Transporte
•Um nó de fornecimento para cada fonte
•Um nó de demanda para cada destino
•Nenhum nó Transshipment
• uij = ∞
∑ ∑== =
m
1i
n
1jijijxcZmin
=∑
∑ =∑ ⇒=∑ −
=
=
== demandadx
idadedisponibilsxbxx
jn
1iij
n
1jiijn
1jiji
n
1jij
( )n,...1j;m,...,1i0xux0 ijijij ==≥⇒≤≤
∑ ∑== =
m
1i
n
1jijijxcZmin
=∑
∑ =∑ ⇒=∑ −
=
=
== demanda1x
idadedisponibil1xbxx
n
1iij
n
1jijn
1jiji
n
1jij
sujeito a:
2. Problema de Designação
Igual ao Problema de Transporte, com:
•número de nós de fornecimento é igual ao número de nós de demanda
•bi = 1 para cada nó de fornecimento
•bi = -1 para cada nó de demanda
Fernando Nogueira Fluxo de Custo Mínimo 10
sujeito a:
para cada arco (i,j)
3. Problema de Caminho Mais Curto
•Apenas um nó de fornecimento (origem) com fornecimento = 1
•Apenas um nó de demanda (destino) com demanda = 1
•Todos demais nós são nósTransshipment
•Todo arco permite fluxo em ambos 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 = ∞
∑ ∑== =
m
1i
n
1jijijxcZmin
=−≠∀
==∑−∑
== destinoi1destinoouorigemi0
origemi1xx
n
1jji
n
1jij
∞≤≤ ijx0
Fernando Nogueira Fluxo de Custo Mínimo 11
0xxn
1jji
n
1jij =∑−∑
==
ijij ux0 ≤≤
origem,destino
m
1i
n
1jijij xZminxcZmax −=⇒= ∑∑
= =
sujeito a:
para cada arco (i,j)
4. Problema de Fluxo Máximo
•Apenas um nó de fornecimento (origem)
•Apenas um nó de demanda (destino)
•Todos demais nós são nósTransshipment
•cij = 0 para todo (i,j)
•Adicionar um arco conectando o nó de demanda ao nó de fornecimento (neste sentido) com: udemanda,fornecimento= ∞ e
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 também nós Transshipment.
Fernando Nogueira Fluxo de Custo Mínimo 12
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
R2) AB + AD - OA = 0
R3) BD + BE + BC - AB - OB = 0
R4) CE - BC - OC = 0
R5) DT - AD - BD - ED = 0
R6) ED + ET - BE - CE = 0
R7) TO - DT - ET = 0
END
!LIMITES SUPERIORES
SUB OA 5
SUB OB 7
SUB OC 4
SUB AB 1
SUB AD 3
SUB BC 2
SUB BD 4
SUB BE 5
SUB CE 4
SUB DT 9
SUB ED 1
SUB ET 6
VARIABLE VALUE
TO 14.000000
OA 3.000000
OB 7.000000
OC 4.000000
AB 0.000000
AD 3.000000
BD 4.000000
BE 3.000000
BC 0.000000
CE 4.000000
DT 8.000000
ED 1.000000
ET 6.000000
Fernando Nogueira Fluxo de Custo Mínimo 13
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 .
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 , 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.
ijij ux ≤
( )iju≤
Fernando Nogueira Fluxo de Custo Mínimo 14
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 = uijatravé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 15
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= 40 + 10 = 50. A rede fica:
Fernando Nogueira Fluxo de Custo Mínimo 17
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 18
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 19
−=+−−−=−+−
=+−−=+=++−
60xxx30xxx0xxx
50xy40xxy
EDDECE
EDDEAD
CEBCAC
BCAB
ADACAB
Substituindo xAB = 10 – yAB nas restrições dos nós, fica:
V.B.
xAD = 40
xBC = 50
xCE = 50
xDE = 10
V.N.B.
yAB = 0
xAC = 0
xED = 0
Fernando Nogueira Fluxo de Custo Mínimo 20
Uma vez que a solução satisfaz a restrição de não-negatividade
e também a restrição de capacidade máxima dos arcos
a Árvore Geradora é uma Árvore Geradora Viável e portanto tem-se uma solução viável. A rede com os fluxos fica:
0xij ≥
80xCE ≤
Fernando Nogueira Fluxo de Custo Mínimo 21
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 22
O incremento total no custo Z fica:
∆Z = cAC θ + cCE θ + cDE(-θ) + cAD(-θ)
∆Z = 4θ + θ - 3θ - 9θ = -7θ
Fernando Nogueira Fluxo de Custo Mínimo 23
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 24
Para xED a rede fica:
∆Z = 2θ + 3θ = 5θ = 5 para θ = 1.
Resumindo:
=∆=∆
=∆−=∆
1xse51yse6
1xse7Z
ED
AB
AC
Fernando Nogueira Fluxo de Custo Mínimo 25
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 26
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 27
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 28
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.