problema de fluxo de custo mínimo - ufjf.br · j 1 ij sujeito a: 2. problema de designação igual...

29
Fernando Nogueira Fluxo de Custo Mínimo 1 Problema de Fluxo de Custo Mínimo The Minimum Cost Flow Problem

Upload: leque

Post on 08-Oct-2018

215 views

Category:

Documents


0 download

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 16

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.

Fernando Nogueira Fluxo de Custo Mínimo 29

Solução Final