You are on page 1of 21

Otimização em Redes

Problema de Fluxo de Custo Mínimo; Problema


do Fluxo Máximo.

Ormeu Coelho da Silva Júnior, D.Sc.


Departamento de Engenharia de Produção Revisão: Breno dos Santos de Assis, abr/2019.
PROBLEMA DE FLUXO COM CUSTO MÍNIMO

Os problemas de fluxo constituem um grupo particular de problemas de Otimização em


Redes, nos quais se modela o transporte ou o fluxo de um “produto” através de uma
rede. Em aplicações ligadas à Logística esta rede pode representar, por exemplo, uma
malha rodoviária, enquanto no transporte de óleo e gás o que se tem é uma rede de
dutos, e na transmissão de dados uma rede de comunicação. Em todas estas aplicações
é comum que se levem em conta dados como níveis mínimos e máximos para o fluxo
em cada arco, custos unitários de transporte, fornecimento ou consumo de fluxo nos nós
da rede, além de regras para a circulação do fluxo através da regra.

Nesta aula dois relevantes problemas de fluxo serão discutidos: o problema do fluxo de
custo mínimo e o problema do fluxo máximo.
PROBLEMA DE FLUXO COM CUSTO MÍNIMO

O problema de fluxo de custo com mínimo é definido sobre uma rede 𝐺 = 𝑉, 𝐴 na qual
todos os vértices em 𝑉 podem realizar o transbordo do fluxo, sendo que os vértices dos
subconjunto 𝑈 e 𝑊 operam também como nós de demanda e fornecimento,
respectivamente (𝑈 ⊂ 𝑉, W ⊂ 𝑉 e 𝑈 ∩ 𝑊 = ∅). Ou seja, três grupos de vértices são
definidos no problema: aqueles que fornecem e transbordam; aqueles que consomem e
transbordam; e os que apenas são capazes de transbordar.

O objetivo é determinar os fluxos nos arcos da rede que minimizam os custos variáveis
de transporte, garantindo o atendimento das demandas dos vértices em 𝑈, respeitando
as capacidades de fornecimento dos vértices em 𝑊 e os limites mínimos e máximos
para a quantidade de fluxo transportada em cada arco de 𝐴, além de restrições de
conservação do fluxo que passa pelos vértices de 𝑉.
PROBLEMA DE FLUXO COM CUSTO MÍNIMO

As restrições de conservação do fluxo nos vértices são análogas à lei de Kirchhoff para
as correntes em um circuito de corrente contínua. Ela estabelece que a soma dos fluxos
que saem de um vértice é igual a soma dos fluxos que nele entram. Posto desta forma,
os fluxos que saem de um dado vértice 𝑖′ são transportados nos aqueles nos arcos
(𝑖, 𝑗) ∈ 𝐴, 𝑖 = 𝑖 ′ , ou são consumidos no vértice. Ao passo que os fluxos de entrada são
transportados nos arcos (𝑗, 𝑖) ∈ 𝐴, 𝑖 = 𝑖 ′ , ou são fornecidos à rede a partir deste vértice.

Exemplo-7: Um fabricante de bebidas está projetando as rotas para movimentar a


produção de duas fábricas até quatro distribuidores locais, passando eventualmente
através de seus dois centros de distribuição. As possíveis rotas entre as unidades desta
rede logística são indicadas na Figura 16. Para cada arco (𝑖, 𝑗) ∈ 𝐴, 𝐶𝑖𝑗 e 𝑈𝑖𝑗 denotam,
respectivamente, o custo unitário de transporte e o limite superior para o fluxo.
PROBLEMA DE FLUXO COM CUSTO MÍNIMO

Para cada vértice 𝑖 ∈ 𝑉, 𝑂𝑖 representa o consumo (𝑂𝑖 < 0), ou o fornecimento de fluxo no
vértice 𝑖 (𝑂𝑖 > 0), ou caracteriza um vértice que somente pode fazer transbordo (𝑂𝑖 = 0).
Escreva uma formulação para otimizar o custo distribuição desta empresa.

(6,15)
(Oi)
(Oi)
(8,10) 0

(7,10) 5 (12,8)

25 -10
(Cij, Uij) (10,10) (9,6)
1 3 8 -15
(9,11)
(8,6) 15 (10,12)
(5,13) 6
(8,10)
(9,9)
(12,5) (11,8)
2 4
(6,15) 0 (12,10) (10,5)
-5
7
-10

Figura 16 – Rede do exemplo 7


PROBLEMA DE FLUXO COM CUSTO MÍNIMO

Resolução: Seja 𝐺 = (𝑉, 𝐴) o grafo orientado e valorado do enunciado, tal que


𝑉 = *1,2, . . . , 8+ é o conjunto de seus vértices e 𝐴 = * 1,2 , 1,3 , 1,3 , 1,4 , 1,5 ,
1,7 , 1,8 , 2,3 , 2,4 , 3,5 , 3,6 , 3,8 , 4,6 , 4,7 , 5,8 , 6,8 , 7,6 , 7,8 +, o conjunto de
seus arcos.

Variáveis de decisão

𝑥𝑖𝑗 = quantidade de produto transportada no arco (𝑖, 𝑗).

Formulação matemática

min 𝑧 = 5𝑥1,2 + 10𝑥1,3 + 9𝑥1,4 + 8𝑥1,5 + 6𝑥1,7 + 6𝑥1,8 + 9𝑥2,3 + 12𝑥2,4


+7𝑥3,5 + 8𝑥3,6 + 9𝑥3,8 + 8𝑥4,6 + 10𝑥4,7 + 12𝑥5,8 + 10𝑥6,8 + 12𝑥7,6 + 11𝑥7,8
PROBLEMA DE FLUXO COM CUSTO MÍNIMO

sujeito a:

𝑥1,2 + 𝑥1,3 + 𝑥1,4 + 𝑥1,5 + 𝑥1,7 + 𝑥1,8 = 25


𝑥2,3 + 𝑥2,4 − 𝑥1,2 = 0
𝑥3,5 + 𝑥3,6 + 𝑥3,8 − 𝑥1,3 − 𝑥2,3 = 0
𝑥4,6 + 𝑥4,7 + 𝑥1,4 − 𝑥2,4 = −5
𝑥5,8 − 𝑥1,5 − 𝑥3,5 = 0
𝑥6,8 − 𝑥3,6 − 𝑥4,6 = 15
𝑥7,6 + 𝑥7,8 − 𝑥1,7 − 𝑥4,7 = −10
𝑥1,8 + 𝑥3,8 + 𝑥5,8 + 𝑥6,8 + 𝑥7,8 = −15
𝑥𝑖,𝑗 ≥ 0, (𝑖, 𝑗) ∈ 𝐴
PROBLEMA DO FLUXO DE CUSTO MÍNIMO

Veja agora a formulação algébrica geral deste problema.

Conjuntos

V : conjunto de vértices da rede.

A: conjunto de arcos.

Parâmetros

Cij : custo unitário de transporte através do arco (i,j).

Uij : limite superior para o fluxo no arco (i,j).

Oi : capacidade de suprimento/demanda do vértice i.

Variáveis de decisão

xij = fluxo no arco (i,j).


PROBLEMA DO FLUXO DE CUSTO MÍNIMO

Formulação matemática

min z   Cij xij


( i , j )A

s.a.:
Oi , se i  r (nó de oferta)

 ij  ji Oi ,
x  x  se i  s (nó de demanda), i V
j:( i , j )A j:( j ,i )A 0, se i  t (nó de transbordo)

0  xij  U ij , (i, j )  A
PROBLEMA DO FLUXO DE CUSTO MÍNIMO

Em algumas aplicações os fluxos modelados devem ser necessariamente inteiros. Em


termos da formulação apresentada, esta exigência implica na redefinição das variáveis
de decisão como inteiras não-negativas. Nestes casos, é razoável considerar que as
demandas e as capacidades também sejam inteiras. Sob esta premissa, é possível obter
uma solução inteira através da resolução da relaxação de Programação Linear do
programa inteiro. Tal resultado se deve ao fato da matriz de restrições tecnológicas, 𝐴,
da formulação do Problema de Fluxo de Custo Mínimo ser totalmente unimodular (na
forma matricial as restrições do problema são expressas como 𝐴𝑥 = 𝑏).

Mais precisamente, no Problema de Fluxo de Custo Mínimo, se todas as demandas e


capacidades forem inteiras, então as restrições do problema descrevem sua casca
convexa. Logo, cada ponto extremo da região viável é inteiro.
PROBLEMA DO FLUXO DE CUSTO MÍNIMO

O apêndice no final desta aula discute de forma mais cuidadosa a propriedade da


unimodularidade total e as implicações que sua presença traz para a resolução de
problemas de Programação Inteira. O importante por hora é notar que se um programa
originalmente inteiro pode ser resolvido como um PPL, ele então pertence à classe P.
Com isso, todos os problemas que podem ser representados com casos especiais do
Problema de Fluxo de Custo Mínimo também pertencem à esta classe. É o que ocorre
com o Problema do Caminho Mínimo, o Problema do Transporte (com ou sem
transbordo) e o Problema do Fluxo Máximo. Todos eles são casos especiais do
Problema de Fluxo de Custo Mínimo e, portanto, podem ser resolvidos de forma
eficiente.
PROBLEMA DO FLUXO DE CUSTO MÍNIMO

Para notar que o Problema de Caminho Mínimo é um caso particular, basta considerar
apenas uma demanda de -1 unidade no vértice de destino e uma oferta, também de 1
unidade, no vértice de origem (vide slide 20, aula 4). Os demais vértices têm demanda 0,
sendo usados apenas para eventual transbordo. Os custos Cij representam a escolha de
uso do arco para fazer parte do caminho, enquanto as variáveis de decisão pertencem
ao intervalo [0,1], o que equivale a um fluxo unitário.

O Problema do Transporte é um caso particular definido sobre uma rede bipartida, na


qual os arcos têm as caldas em 𝑊 e as cabeças em 𝑈. Esta estrutura de rede faz com
que cada vértice atue como vértice de suprimento ou demanda. Analogamente, no
Problema de Transporte com Transbordo a rede é tripartida, com arcos entre os vértices
de suprimento e transbordo e entre estes e os vértices de demanda.
PROBLEMA DO FLUXO MÁXIMO

O problema consiste no envio da maior quantidade possível de fluxo, através de uma


rede capacitada, a partir de um vértice origem s até um vértice destino t. Considere, por
exemplo, uma empresa detentora de uma rede de dutos e que deseja enviar a maior
quantidade possível de um fluido, entre sua base e um determinado ponto de sua rede
logística (um porto, ou terminal de embarque, por exemplo).

Pode-se modelar este problema com um caso particular do Problema de Fluxo de Custo
Mínimo em que todos os vértices têm demanda/oferta nula, ou seja, há apenas vértices
de transbordo na rede. Como artifício de modelagem, adiciona-se uma arco artificial de
retorno (𝑡, 𝑠) com custo unitário, 𝐶𝑡𝑠 = −1, sendo 𝐶𝑖𝑗 = 0 para todo (𝑖, 𝑗)  𝐴 *(𝑡, 𝑠)+. Com
este conjunto de custos, a função objetivo do problema fica max 𝑥𝑡𝑠 = −min −𝑥𝑡𝑠 .

13
PROBLEMA DO FLUXO MÁXIMO

Conjuntos

V : conjunto de vértices da rede.

A: conjunto de arcos.

Parâmetros

Lij : limite inferior para o fluxo no arco (i,j).

Uij : limite superior para o fluxo no arco (i,j).

Variáveis de decisão

xij = fluxo no arco (i,j).


PROBLEMA DO FLUXO MÁXIMO

Formulação matemática

max z  xts
s.a.:
 xij   x ji 0, i  V
j:( i , j )A j:( j ,i )A

0  xij  U ij
xij  0, (i, j )  A
PROBLEMA DO FLUXO MÁXIMO

O problema consiste no envio da maior quantidade possível de fluxo, através de uma


rede capacitada, a partir de um vértice origem s até um vértice destino t. Considere, por
exemplo, uma empresa detentora de uma rede de dutos e que deseja enviar a maior
quantidade possível de um fluido, entre sua base e um determinado ponto de sua rede
logística (um porto, ou terminal de embarque, por exemplo).

Pode-se modelar este problema com um caso particular do Problema de Fluxo de Custo
Mínimo em que todos os vértices têm demanda/oferta nula, ou seja, há apenas vértices
de transbordo na rede. Como artifício de modelagem, adiciona-se uma arco artificial de
retorno (𝑡, 𝑠) com custo unitário, 𝐶𝑡𝑠 = −1, e capacidade infinita, 𝑈𝑡𝑠 = ∞. Todos os
demais arcos são modelados com custo zero, isto é, 𝐶𝑖𝑗 = 0 para todo (𝑖, 𝑗)  𝐴\*(𝑡, 𝑠)+.
Com este conjunto de custos, a função objetivo do problema fica max 𝑥𝑡𝑠 = −min −𝑥𝑡𝑠 .

16
PROBLEMA DO FLUXO MÁXIMO

Exemplo-8: Deseja-se enviar gás para um consumidor industrial através de uma rede
de dutos que liga uma estação de distribuição (vértice 1), estações intermediárias de
bombeamento (vértices 2 a 5) e as instalações do cliente (vértice 6). A rede de dutos
pode ser representada pelo grafo abaixo, no qual os valores (𝐿𝑖𝑗, 𝑈𝑖𝑗) em cada arco
(𝑖, 𝑗) indicam as vazões mínimas e máximas em cada duto.
(1,4)
2 4 (3,7)
(2,5) (0,2)

(0,1) (0,1) 6
1
(0,2)
(2,5)
(1,4) 3 5
(1,5)

Figura 17 – Rede do exemplo 8

Formule um programa para maximizar a vazão de gás entregue ao cliente?


17
PROBLEMA DO FLUXO MÁXIMO

Resolução: Em primeiro lugar é preciso inserir um arco artificial de retorno entre os


vértices 6 e 1, com capacidade infinita e “custo” unitário igual a -1.

(1,4)
2 4 (3,7)
(2,5) (0,2)

(0,1) (0,1) 6
1
(0,2)
(2,5)
(1,4) 3 5
(1,5)

(0,∞)

Figura 18 – Rede auxiliar do problema de fluxo máximo do exemplo 8

18
PROBLEMA DO FLUXO MÁXIMO

Variáveis de decisão

𝑥𝑖𝑗 = vazão de gás no arco (𝑖, 𝑗).

Formulação matemática

max 𝑧 = 𝑥6,1
s. a. :
𝑥1,2 + 𝑥1,3 − 𝑥6,1 = 0
𝑥2,4 + 𝑥2,5 − 𝑥1,2 − 𝑥3,2 = 0
𝑥3,2 + 𝑥3,4 + 𝑥3,5 − 𝑥1,3 = 0
𝑥4,5 + 𝑥4,6 − 𝑥2,4 − 𝑥3,4 = 0
𝑥5,6 − 𝑥2,5 − 𝑥3,5 − 𝑥4,5 = 0
𝑥6,1 − 𝑥4,6 − 𝑥5,6 = 0 19
PROBLEMA DO FLUXO MÁXIMO

2 ≤ 𝑥1,2 ≤ 5
1 ≤ 𝑥1,3 ≤ 4
1 ≤ 𝑥2,4 ≤ 4
0 ≤ 𝑥2,5 ≤ 2
0 ≤ 𝑥3,2 ≤ 1
0 ≤ 𝑥3,4 ≤ 2
1 ≤ 𝑥3,5 ≤ 5
0 ≤ 𝑥4,5 ≤ 1
3 ≤ 𝑥4,6 ≤ 7
2 ≤ 𝑥5,6 ≤ 5
𝑥6,1 ≥ 0

20
BIBLIOGRAFIA

 ARENALES, M. et al., Pesquisa Operacional para Cursos de Engenharia. Rio de


Janeiro: Elsevier, 2007.

 GOLDBARG, M.C. e LUNA, H.P., Otimização Combinatória e Programação Linear.


Rio de Janeiro: Elsevier, 2005.

 TAHA, H.A., Pesquisa Operacional, 8. ed.. São Paulo: Pearson Prentice Hall, 2008.

 WOLSEY, L.A., Integer Programming. New York: John Wiley & Sons, 1998.

21

You might also like