Você está na página 1de 112

GSI027 – Otimização

Prof. Renato Pimentel

2020/2

Sumário
1 Pesquisa Operacional e Tomada de Decisões 3
1.1 Definição e Origens da Pesquisa Operacional . . . . . . . . . . . 3
1.2 Fases de Resolução de Problemas . . . . . . . . . . . . . . . . . . 4
1.3 Principais Áreas da Pesquisa Operacional . . . . . . . . . . . . . 7

I Programação Linear 10
2 Introdução à programação linear 10
2.1 Definições e exemplos . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Problemas clássicos . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3 Solução gráfica 20
3.1 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4 O método simplex 33
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Forma padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 Algoritmo simplex . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4 Situações especiais . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

II Dualidade 53
5 Dual e sua relação com o primal 53
5.1 Regras para construção do dual . . . . . . . . . . . . . . . . . . . 55
5.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

III Problemas de transporte 61


6 Introdução a problemas de transporte 61

1
7 Problema de transporte 61
7.1 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.3 Resolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.4 Problemas desbalanceados . . . . . . . . . . . . . . . . . . . . . . 77
7.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8 Problema de transbordo 79
8.1 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

9 Problema de designação 82
9.1 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.2 Resolução algébrica . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

IV Otimização em redes 87
10 Introdução a problemas em redes 87

11 Problema do menor caminho 89


11.1 Formulação matemática . . . . . . . . . . . . . . . . . . . . . . . 91
11.2 Algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . 92
11.3 Exercício . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.4 Algoritmo de Floyd . . . . . . . . . . . . . . . . . . . . . . . . . . 96
11.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

12 Problema do fluxo máximo 101


12.1 Formulação matemática . . . . . . . . . . . . . . . . . . . . . . . 103
12.2 Algoritmo de fluxo máximo . . . . . . . . . . . . . . . . . . . . . 106
12.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

2
1 Pesquisa Operacional e Tomada de Decisões
Tomada de Decisões

• Tarefa básica da gestão

• Alternativas viáveis

Tomada de Decisões

1. Identificar o problema
2. Formular objetivos

3. Analisar limitações
4. Avaliar alternativas

1.1 Definição e Origens da Pesquisa Operacional


O que é a Pesquisa Operacional
Segundo Marins (2011)
“É o uso do método científico com o objetivo de prover departamentos executivos
de elementos quantitativos para a tomada de decisões com relação a operações
sob seu controle”

Origens

• Termo Pesquisa Operacional: tradução direta de Operational research.

• Inglaterra (1934): invenção do radar.


• 1936: Estação de Pesquisa Manor Bawdsey (Suffolk) – como interceptar
aviões inimigos?
• A. P. Rowe (1938), superintendente da estação: criação do termo.

– Eficiência de técnicas de operações a partir de experimentos com


interceptação.
– Análise científica do uso operacional de recursos militares: II Guerra
Mundial.

• Pós-Guerra: rápida ascensão Inglaterra e EUA


• EUA (1947): SCOOP (Scientific Computation of Optimal Programs) –
Pentágono

– Marshall Wood (economista) e George Dantzig (matemático – mé-


todo simplex).

3
– Programação linear
• 1952: ORSA (Sociedade Americana de Pesquisa Operacional)
• 1953: ORS (Sociedade de Pesquisa Operacional) – Inglaterra

Focos distintos
• Pesquisa inglesa: estudos de caso, problemas específicos
• Pesquisa americana: modelos e métodos matemáticos

Alguns temas pesquisados pelos americanos:


• Teoria de estoques
• Teoria de filas
• Reposição de equipamentos
• Agendamento de tarefas em máquinas
• Teoria de jogos
• Fluxos de redes
• Otimização linear

No Brasil
• 1o. Simpósio: ITA – S. José dos Campos (1968)
• Criação do curso de Engenharia de Produção (ITA)
• SOBRAPO: Sociedade Brasileira de Pesquisa Operacional1

1.2 Fases de Resolução de Problemas


Fases da PO

Formulação do problema
• Problemas reais: forma vaga e imprecisa
• Algumas questões:
– Quem tomará decisões?
– Quais os objetivos?
– Que aspectos estão sujeitos ao controle dos decisores (variáveis de
decisão) e sob quais limitações (restrições)?
– Quais aspectos fogem do controle dos decisores?
1 www.sobrapo.org.br

4
Construção do modelo

• Modelos: representações simplificadas da realidade

• Modelagem: 2 características importantes:


– Permite analisar o problema, indicando relações entre variáveis, quais
dados relevantes e variáveis de maior importância
– Permite estudo de alternativas de ação sem interromper sistema em
estudo.
• Podem ser físicos (ex.: maquetes), analógicos (ex.: organograma) e mate-
máticos.

Mundo real

Mundo real
Modelo
considerado

Obtenção da solução

• Típico de PO: modelo matemático.

5
• Varia conforme a área (programação linear, programação em redes, teoria
de filas, etc.)
• Técnicas novas surgem constantemente
• Softwares:

– Solver do Excel
– LINDO – Linear Discrete Optimizer (www.lindo.com)
– ILOG (www.ibm.com/products/ilog-cplex-optimization-studio)
– Simulações: PROMODEL (www.belge.com.br/promodel.php) e ARENA
(www.paragon.com.br)
– etc.

Teste do modelo e da solução obtida

• O modelo precisa ser testado.

– Teste permite identificar problemas na criação do modelo (ex.: as-


pecto importante omitido, refinamento de aspecto incluído etc.)
– Em alguns casos, teste pode ser comparado com dados anteriores.

Implementação

• Implantação da solução final ao sistema.


• Intervenções podem ser necessárias no caso de alguma falha não prevista.

Exemplo de problema: cerca (Taha)


Exemplo 1.1. Um fazendeiro comprou L metros de uma tela e pretende cercar
uma pequena área da fazenda para criação de gado. O fazendeiro somente sabe
fazer ângulos retos. O fazendeiro quer que a área cercada seja a maior possível.

• Área deve ser retangular (ângulos retos)


• Se l e c são respectivamente a largura e o comprimento do retângulo,
queremos maximizar

z = l × c,

sujeita às restrições:

– 2(l + c) = L,
– l ≥ 0, c ≥ 0.

6
Infinitas soluções
• viáveis: atendem a todas restrições
• ótima: melhor solução viável

Formato geral
Maximizar ou minimizar uma
função objetivo sujeita a
restrições

Problema linear
Exemplo 1.2. maximizar z = 2x1 + 3x2 + 4x3

3x1 + 2x2 + 1x3 ≤ 10


2x1 + 3x2 + 3x3 ≤ 15
1x1 + 1x2 − 1x3 ≥ 4
x1 , x2 , x3 ≥ 0

Obtenção da Solução
z = 15.55
1 5 38
x1 = , x 2 = , x 3 =
3 9 9

Problema de transporte
Exemplo 1.3. O modelo de transporte visa minimizar o custo total do trans-
porte necessário para abastecer n centros consumidores (destinos) a partir de m
centros fornecedores (origens)

1.3 Principais Áreas da Pesquisa Operacional


Grandes Áreas
Programação Linear
• Mix de produção
• Mistura de matérias-primas
• Modelos de equilíbrio econômico
• Carteiras de investimentos
• Roteamento de veículos
• Jogos entre empresas

7
Modelos em Redes
• Rotas econômicas de transporte
• Distribuição e transporte de bens
• Alocação de pessoal
• Monitoramento de projetos

Teoria das Filas


• Congestionamento de tráfego
• Operações de hospitais
• Dimensionamento de equipes de serviço

Alguns Links Interessantes


O que é a PO?
• Vídeo da OR Society:
https://youtu.be/tX6Rw7KJGjE

Empresas de PO
• Reportagem da Revista Época de 19/01/2017:
https://goo.gl/dYch4k

8
Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. MARINS, F. A. S. Introdução à pesquisa operacional. São Paulo: Cultura
Acadêmica, 2011.
3. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H.


R. Gabriel e Ivan Sendin (FACOM/UFU)
Adaptações: Renato Pimentel, FACOM/UFU

9
Parte I
Programação Linear
2 Introdução à programação linear

Nesta seção, será considerada uma subclasse particular de problemas de PO,


a dos problemas de programação linear.
A característica que define tal subclasse está no modelo matemático.

Equação linear

• Equação da forma

c1 x1 + c2 x2 + · · · + cn xn = c0

• Elementos:

– c0 , c1 , . . . , cn : coeficientes (conhecidos)
– x1 , x2 , . . . , xn : variáveis (desconhecidos)
• Um conjunto de equações lineares relacionadas a um mesmo grupo de
variáveis recebe o nome de sistema linear.

2.1 Definições e exemplos


O modelo matemático
Modelo de PL – como qualquer modelo de PO – possui 3 componentes
básicos:

1. Variáveis de decisão, que se deseja determinar;


2. Uma ou um conjunto de restrições que a solução deve satisfazer;

3. Um objetivo (meta) a ser otimizado (maximizado ou minimizado).

Variáveis de Decisão
As variáveis de decisão são as incógnitas a serem determinadas pela solução do
modelo e os parâmetros (coeficientes) são valores fixos no problema

Restrições
De modo a levarmos em conta as limitações físicas do sistema, o modelo deve
incluir restrições que limitam as variáveis de decisão a seus valores possíveis (ou
viáveis)

10
Função Objetivo
É uma função matemática que define a qualidade da solução em função das va-
riáveis de decisão; é um critério de escolha das variáveis de decisão representado
por uma função

Estrutura de Modelos Matemáticos


Pode-se dizer que:
O problema do modelo matemático de Pesquisa Operacional é escolher os valores
das variáveis de decisão de forma a obter o melhor resultado da função objetivo
sujeita às restrições especificadas.

Recomendações

• O decisor tem autoridade para escolher a quantidade (valor numérico) do


item? Se sim, esta é uma variável de decisão;
• Ser preciso com relação às unidades de cada variável de decisão (ex.: se
alguma moeda, alguma medida de comprimento, volume, massa ou tempo,
etc.);
• Não confundir variáveis de decisão com os parâmetros do problema, como
ex.: número de máquinas na fábrica, quantidade de cada recurso usado na
fabricação de um produto, custos de produção, custos de transporte, etc.

Exemplo 2.1. Um investidor possui $90.000, 00 para investir em ações. Ele


está interessado em duas empresas:
• Tele Mundo, cujas ações custam $50, 00 cada e o retorno esperado é de
$6, 00 ao ano;
• Cosmo Fonte, cujas ações custam $30, 00 cada e o retorno esperado é de
$4, 00 ao ano.
Além disso, ele não quer investir mais que $60.000, 00 em uma única empresa.
Como ele deve planejar seu investimento, de modo a maximizar seu lucro anual?

• Variáveis de decisão: Correspondem às quantidades de ações em cada


empresa (por exemplo: T M e CF , ou x1 e x2 );
• Parâmetros: São os preços e retorno de cada ação;
• Restrições: São as limitações impostas pelo investidor e pela quantidade
de dinheiro disponível para investir; além disso, por uma questão de lógica,
ele não pode investir um valor negativo em cada ação;

• Função Objetivo: é a Função matemática que determina o retorno em


função das variáveis de decisão e que (neste caso) deve ser maximizada.

11
Função objetivo
max L = 6T M + 4CF

Restrições
50T M + 30CF ≤ 90.000
50T M ≤ 60.000
30CF ≤ 60.000

Condições de não-negatividade
TM ≥ 0
CF ≥ 0

Algumas observações

• Um tema comum na PO é a busca de uma solução ótima;

• É necessário que fique claro que essas soluções são ótimas apenas em re-
lação ao modelo que está sendo usado;
• Como o modelo é apenas uma representação da realidade, não há garan-
tia de que a solução ótima para o modelo se comprovará como a melhor
possível que poderia ter sido implementada para o problema real;
• Entretanto, se o modelo for bem formulado e experimentado, as soluções
tendem a ser uma boa representação para a solução a ser adotada no caso
real.

Outro Exemplo
Exemplo 2.2. Uma empresa precisa decidir quais modelos de geladeira produ-
zir em sua nova planta. Existem dois modelos disponíveis: luxo e básico. No
máximo, 1500 unidades do modelo luxo e 6000 unidades do modelo básico po-
dem ser vendidas por mês. Empresa contratou 25000 homens-hora de trabalho
por mês. Os modelos luxos precisam de 10 homens-hora de trabalho para serem
produzidos e os modelos básicos, 8 homens-hora. A capacidade da linha de mon-
tagem é de 4500 geladeiras por mês, pois as geladeiras dividem a mesma linha.
O lucro unitário do modelo luxo é $100, 00 por mês, enquanto o modelo básico
lucra $50, 00 durante o mesmo período.
Determine quanto produzir de cada geladeira, de modo a satisfazer todas as
restrições e maximizar o lucro da empresa.

12
Variáveis de Decisão
Sejam x1 e x2 as quantidades (unidades) produzidas dos modelos luxo e básico,
respectivamente.

Função Objetivo
Admitindo que a função lucro é uma função linear de x1 e x2 , esse lucro deve
ser maximizado por uma escolha de x1 e x2 , tal que:

max L = 100x1 + 50x2

Como existem recursos limitados, há restrições:


Restrições
1. 10x1 + 8x2 ≤ 25000 (homens-hora)
2. x1 + x2 ≤ 4500 (linha de montagem)

3. x1 ≤ 1500 (máximo a ser vendido do luxo)


4. x2 ≤ 6000 (máximo a ser vendido do básico)
5. x1 ≥ 0; x2 ≥ 0 (não-negatividade)

Problemas de Programação Linear


Definição Formal
Um problema de Programação Linear (PL) é um problema de programação
matemática em que as Funções Objetivos e de Restrição são lineares.

Forma Geral:
n
X
max(min) Z = cj xj
j=1

sujeito a:
n
X
aij xj , para i = 1, 2, . . . , m
j=1

xi ≥ 0, ∀i

13
Algumas Definições
Solução
Qualquer especificação de valores para as variáveis de decisão, independente de
se tratar de uma escolha desejável ou permissível.

Solução Viável
Uma solução em que todas as restrições são satisfeitas. O conjunto de todos os
pontos que satisfazem todas as restrições é chamado de Conjunto Viável (S).

Solução Ótima
Uma solução viável que tem o valor mais favorável da função objetivo, isto é,
maximiza ou minimiza a função objetivo em toda a região viável. Pode ser única
ou não.

Hipóteses da Programação Linear


Proporcionalidade
A contribuição de cada variável ao valor da função objetivo é diretamente pro-
porcional ao valor da variável, conforme representado pelo termo cj xj na função
objetivo.
De modo semelhante, a contribuição de cada variável às restrições é propor-
cional ao valor da variável xj , como representado pelo termo aij xj na restrição.

Aditividade
Toda função em um modelo de programação linear é a soma das contribuições
individuais das respectivas variáveis.

Divisibilidade
As variáveis de decisão em um modelo de programação linear podem assumir
quaisquer valores, inclusive valores não-inteiros, que satisfaçam as restrições
funcionais e de não-negatividade.
Quando as variáveis do modelo de programação linear só puderem assumir
valores inteiros, deve-se impor esta condição ao próprio modelo. Passa-se, então,
a lidar com um modelo de programação linear inteira.

Certeza
O valor atribuído a cada parâmetro de um modelo de programação linear é
assumido como uma constante conhecida.

2.2 Problemas clássicos


Problemas de mistura
Problemas de mistura consistem em combinar materiais obtidos da natureza
(ou sobras de outros já previamente combinados) para gerar novos materiais ou
produtos com características convenientes.

14
Exemplos de problema de mistura

1. Rações: Fábricas de rações produzem variados tipos de rações para de-


terminados animais (bovinos, equinos, caprinos, caninos de pequenos e
grande portes etc.)
• Mistura de alimentos ou farinhas de restos de alimentos (milho, farelo
de arroz, etc.)
• Preços de mercados destes produtos são conhecidos
• Composição nutricional é conhecida. Nutrição veterinária especifica
necessidades mínimas e máximas dos nutrientes por kg para cada
espécie de animal.
• Problema de minimizar custo: quais devem ser as quantidades ideais
de cada ingrediente por kg de modo que necessidades nutricionais se-
jam atendidas e o custo total dos ingredientes seja o menor possível?
2. Ligas metálicas: Fundições produzem diversos tipos de aço a partir de
diversos insumos: lingotes de ferro, grafite, sucatas industriais, etc.
• Forno de alta temperatura para permitir a mistura
• A composição, em termos de elementos como carbono, silício, man-
ganês etc. é determinada por normas técnicas da metalurgia, bem
como composição dos produtos a serem misturados.
• Preços dos insumos podem variar substancialmente. Entretanto, são
conhecidos.
• deve-se determinar as quantidades de cada insumo a serem fundidas,
de modo que a composição atenda as normas e preço final seja menor
possível
3. Areias para filtro (ETA)
• Permeabilidade: areias usadas em estações de tratamento de água
para interceptar impurezas da água afluente
• Unidades de filtração: areias de portos passíveis de exploração com
composições distintas
• Custos de dragagem, transporte, seleção e preparo variam p/ cada
porto
• Areias dispostas em camadas, devendo obedecer composições estabe-
lecidas em norma
• Como combinar os volumes de areia de cada porto, de modo a atender
às especificações, com menor custo possível?

15
Formulação matemática do problema da mistura

• Obtenção de produto (mistura), combinando-se materiais disponíveis

• Materiais (ingredientes) possuem os componentes desejados na mistura


• Produtos devem satisfazer determinadas especificações
• Objetivo: determinar as quantidades dos ingredientes para criar mistura
com composição especificada com menor custo possível (minimização).

Minimizar
f (x1 , . . . , xn ) = c1 x1 + c2 x2 + · · · + cn xn
Sujeito às restrições:

a11 x1 + a12 x2 +· · · + a1n xn = b1


a21 x1 + a22 x2 +· · · + a2n xn = b2
...
am1 x1 +am2 x2 +· · · +amn xn = bm
x1 + x2 + . . . +xn = 1

x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

• xj : quantidade do ingrediente j por unidade da mistura;


• aij : fração do componente i no ingrediente j;

• bi : fração do componente i na mistura;


• cj : custo unitário do ingrediente j.

Exemplo: ração
Exemplo 2.3. Queremos saber quais as quantidades ideais de cada ingrediente
para fazer uma quantidade de ração para aves, com as necessidades nutricionais
atendidas e o custo total dos ingredientes seja o menor possível. Temos dispo-
níveis dois ingredientes (milho e farinha de osso), cujos custos (em $ por Kg) e
ingredientes (em unidades por Kg) estão listados na tabela a seguir:

Vitamina A Vitamina B Proteínas Custo


Milho 2 3 1 65
Farinha de osso 3 2 30

Deseja-se que a ração contenha, no mínimo, 7 unidades de vitamina A, 9 de


vitamina B e 1 de proteína.

16
Modelo Matemático

min C = 65x1 + 30x2


sujeito a:
2x1 + 3x2 ≥ 7
3x1 + 2x2 ≥ 9
1x1 + 0x2 ≥ 1
x1 ≥ 0; x2 ≥ 0

Mix de produção
Problemas de mix de produção envolvem decidir quais produtos, e quanto fabri-
car de cada produto em um certo período.

Formulação matemática do mix de produção

• Tendo em vista a capacidade limitada de produção – máquinas, RH, ca-


pital, armazenagem, etc. – e os diversos produtos que a empresa pode
fabricar e vender, deseja-se determinar quais produtos fabricar e quanto
fabricar de cada produto, de modo a maximizar o lucro, num determinado
período.

Maximizar
f (x1 , . . . , xn ) = `1 x1 + `2 x2 + · · · + `n xn
Sujeito às restrições:

a11 x1 + a12 x2 +· · · + a1n xn ≤ C1


a21 x1 + a22 x2 +· · · + a2n xn ≤ C2
...
am1 x1 +am2 x2 +· · · +amn xn ≤ Cm
d j ≤ x j ≤ vj , j = 1, 2, . . . , n

• xj : quantidade do produto j a ser produzida por período;


• Ci : capacidade do recurso i, i = 1, 2, . . . , m no período.
• aij : unidades do recurso i usadas para produzir uma unidade de j;
• dj (vj ): produção mínima (máxima) do produto j no período;
• `j : lucro obtido pela empresa por cada unidade de j.

O Exemplo 2.2 visto anteriormente (problema das geladeiras) é um exemplo


de problema de mix de produção.

17
Outro exemplo (MARINS, 2011)
Exemplo 2.4. Uma empresa deseja programar a produção de um utensílio de
cozinha e requer o uso de 2 recursos: mão-de-obra e material. Ela está consi-
derando a fabricação de 3 modelos de acordo com os dados da tabela que segue,
sendo que a disponibilidade diária de mão-de-obra é 150 horas, e o suprimento
de material é 200 kg/dia.

Modelo
A B C
Mão-de-obra (horas/unidade) 7 3 6
Material (kg/unidade) 4 4 5
Lucro ($/unidade) 4 2 3

Modelagem

• xa , xb , xc : produções diárias de A, B e C.

• Restrições:
– 7xa + 3xb + 6xc ≤ 150 (limitação de mão-de-obra)
– 4xa + 4xb + 5xc ≤ 200 (limitação de material)
– xa ≥ 0, xb ≥ 0, xc ≥ 0 (não-negatividade)

• Função objetivo: maximização do lucro total


L = 4xa + 2xb + 3xc

2.3 Exercícios

1. Um sapateiro faz 6 sapatos por hora, se fizer somente sapatos, e 5 cintos


por hora, se fizer somente cintos. Ele gasta 2 unidades de couro para fabri-
car 1 unidade de sapato e 1 unidade de couro para fabricar uma unidade
de cinto. Sabendo-se que o total disponível de couro é de 6 unidades e que
o lucro unitário por sapato é de $5,00 e o do cinto é de $2,00, pede-se: o
modelo do sistema de produção do sapateiro, se o objetivo é maximizar
seu lucro por hora.

2. Um vendedor de frutas pode transportar 800 caixas de frutas para sua


região de vendas. Ele necessita transportar 200 caixas de laranjas a $20,00
de lucro por caixa, pelo menos 100 caixas de pêssegos a $10,00 de lucro
por caixa, e no máximo 200 caixas de tangerinas a $30,00 de lucro por
caixa. De que forma deverá ele carregar o caminhão para obter o lucro
máximo? Construa o modelo do problema.

18
3. Uma fundição tem de produzir 10 toneladas de um tipo de liga metálica e,
para isso, tem disponível: lingotes de ferro, grafite e sucata. 2 componentes
são relevantes para a liga: carbono e silício. A tabela fornece a fração
destes elementos nos ingredientes disponíveis, seus custos unitários, suas
disponibilidades em estoque, bem como a composição da liga de acordo
com as especificações. Quais quantidades dos ingredientes devem compor a
liga, de modo que as especificações sejam satisfeitas e o custo seja mínimo?

Ingredientes Especificações liga


Composição (%) Lingotes Grafite Sucata Mínimo Máximo
Carbono 0,0050 0,90 0,090 0,00 0,095
Silício 0,14 - 0,27 0,19 0,20
Custos (R$/ton) 90 180 25
Estoque (ton) 5 5 12

Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. MARINS, F. A. S. Introdução à pesquisa operacional. São Paulo: Cultura
Acadêmica, 2011.

3. NOGUEIRA, F. Pesquisa Operacional, UFJF.


4. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H.


R. Gabriel (FACOM/UFU)
Adaptações: Renato Pimentel, FACOM/UFU

19
3 Solução gráfica

• A visualização de soluções de um problema pode ser útil para melhorar a


intuição sobre o mesmo.

• Mesmo quando somente limitada a um desenho esquematizado sobre o


plano.
• No caso de PL, permite delinear um método de solução – i.é., encontrar a
solução ótima.

• Consideram-se aqui problemas com apenas duas variáveis


• (Representação das soluções factíveis e da solução ótima num plano car-
tesiano)

Nota
Vamos considerar, por questões de conveniência, todas as restrições sob a forma
de inequações.

Exemplo 3.1. Maximizar f (x1 , x2 ) = x1 + 2x2 sujeito a:

x1 + x2 ≤ 4
x1 ≤ 2
x2 ≤ 3
x1 ≥ 0, x2 ≥ 0

• Condições de não-negatividade:

6
5
4
x2

3
2
1
0
0 1 2 3 4 5 6 7
x1

20
• Adicionando a restrição x1 + x2 ≤ 4 às de não-negatividade:

6
5
4

x2
3
2
1
0
0 1 2 3 4 5 6 7
x1

• Adicionando a restrição x1 ≤ 2 às anteriores:

6
5
4
x2

3
2
1
0
0 1 2 3 4 5 6 7
x1

21
• Por fim, adicionando a restrição x2 ≤ 3 às anteriores: obtém-se a região
factível ou região viável do problema:
qualquer ponto da região é uma solução viável do mesmo.

6
5
4
x2

3
2
1
0
0 1 2 3 4 5 6 7
x1

Determinação da solução ótima


Considerando o exemplo, a função objetivo

f (x1 , x2 ) = x1 + 2x2 ,
pode assumir infinitos valores – qualquer par (x1 , x2 ).
Os pontos (x1 , x2 ) do R2 que resultam em f = 0 estão na reta x1 + 2x2 = 0.
Esta reta define a curva de nível 0 da função.
Curva de nível
A curva de nível f0 de uma função f é dada pelo conjunto de pontos no R2 os
quais, aplicados à função f , resultam em f = f0 .

• Representando a curva de nível 0 no gráfico, junto com o sentido de cres-


cimento.

x2
6
5
4
3
2
1
x1
1 2 3 4 5 6 7

22
Vetor gradiente
O vetor gradiente de uma função f (x1 , x2 ), dado por
 
∂f ∂f
∇f (x1 , x2 ) = ,
∂x1 ∂x2
indica o sentido de maior crescimento da função. Se a função for linear, o
gradiente será constante (a direção e o sentido não variam)

• Consequentemente, indica a direção onde as curvas de f assumem valores


maiores.
• No caso de retas, é constante e perpendicular às mesmas.

Observação
Na prática, também podemos testar tomando pontos de um lado e de outro de
uma curva de nível, e verificando o valor de f .
Temos, para a função objetivo do problema,
 
∂ ∂
∇f (x1 , x2 ) = (x1 + 2x2 ), (x1 + 2x2 ) = (1, 2),
∂x1 ∂x2
indicado pelo vetor representado no gráfico anterior.
Como se deseja maximizar a função objetivo, busca-se o maior valor possível
de f dentro da região viável. Portanto, “caminha-se” no sentido para o qual o
vetor gradiente aponta.

• Acrescentando-se agora ao gráfico a curva de nível 2:

x2
6
5
4
3
2
1
x1
1 2 3 4 5 6 7

• Ainda não se chegou à solução ótima.

23
• Acrescentando-se a curva de nível 7:

x2
6
5
4
Solução ótima
3
2
1
x1
1 2 3 4 5 6 7

• Solução ótima obtida (f (x1 , x2 ) = 7).


• Portanto, a solução do problema existe e é única: (x1 , x2 ) = (1, 3) –
maximiza f , respeitando as restrições.

Considerações

1. O conjunto de todas as soluções viáveis de um modelo de PL é um conjunto


convexo.
2. Toda solução básica viável do sistema de equações lineares de um modelo
de PL é um ponto extremo do conjunto de soluções viáveis.
3. Se uma função objetivo possui um único ponto de ótimo finito, então este
é um ponto extremo do conjunto convexo de soluções viáveis.
4. Se a função objetivo assume o valor ótimo em mais de um ponto do con-
junto de soluções viáveis (soluções múltiplas), então ela assume este valor
para pelo menos dois pontos extremos do conjunto convexo e para qual-
quer combinação convexa desses pontos extremos, isto é, todos os pontos
do segmento de reta que une estes dois pontos (em outras palavras, a
aresta do polígono que contém estes dois pontos).

Solução do problema das geladeiras


Voltando ao modelo da produção de geladeiras (mix de produção):

max L = 100x1 + 50x2

sujeito a

10x1 + 8x2 ≤ 25000


x1 + x2 ≤ 4500
x1 ≤ 1500

24
x2 ≤ 6000
x1 ≥ 0; x2 ≥ 0

• Restrições de não-negatividade e demanda máxima:

8 000 x
2

6 000

4 000
0 ≤ x1 ≤ 1 500
0 ≤ x2 ≤ 6 000
2 000

x1
2 000 4 000 6 000 8 000

• x1 + x2 ≤ 4 500 (capacidade da linha de montagem)

8 000 x
2

6 000

4 000

2 000

x1
2 000 4 000 6 000 8 000

25
• 10x1 + 8x2 ≤ 25 000 (limitação da mão-de-obra)

8 000 x
2

6 000

4 000

2 000

x1
2 000 4 000 6 000 8 000

• max f (x1 , x2 ) = 100x1 + 50x2


– Sentido de crescimento: ∇f = (100, 50)

8 000 x
2

6 000

4 000

2 000

x1
2 000 4 000 6 000 8 000

• Candidatos a solução ótima: pontos (1500, 0), (1500, 1250) e (0, 3125)
(pontos extremos na direção do crescimento).

26
• max f (x1 , x2 ) = 100x1 + 50x2
– Na solução básica viável (1500, 0), temos f = 150 000.

8 000 x
2

6 000

4 000

2 000

x1
2 000 4 000 6 000 8 000

• max f (x1 , x2 ) = 100x1 + 50x2


– Na solução básica viável (1500, 1250), temos f = 212 500.

8 000 x
2

6 000

4 000

2 000 Solução ótima


x1
2 000 4 000 6 000 8 000

• Esta é a solução ótima, pois a solução básica viável não testada – (0, 3125)
– está no sentido oposto ao de crescimento da função objetivo, em relação
à curva de nível.

• Logo, a empresa deve produzir 1500 geladeiras do modelo luxo, e 1250 do


modelo básico por mês, maximizando o lucro, que será de $ 212 500.

27
Solução do problema da ração
Voltando ao modelo da ração (problema de mistura):

min C = 65x1 + 30x2

sujeito a:
2x1 + 3x2 ≥ 7
3x1 + 2x2 ≥ 9
1x1 + 0x2 ≥ 1
x1 ≥ 0; x2 ≥ 0

• Não-negatividade

x2
4

1
x1
1 2 3 4

• 1x1 + 0x2 ≥ 1.

x2
4

1
x1
1 2 3 4

28
• 2x1 + 3x2 ≥ 7.

x2
4

1
x1
1 2 3 4

• 3x1 + 2x2 ≥ 9.

x2
4

1
x1
1 2 3 4

• min C = 65x1 + 30x2


– Na solução básica viável (7/2, 0), temos C = $227, 5.

x2
4

1
(7/2,0)
x1
1 2 3 4

• Problema de minimização: caminha-se no sentido oposto ao de crescimento


de C.

29
• min C = 65x1 + 30x2
– Na solução básica viável (13/5, 3/5), temos C = $187.

x2
4

1 (13/5,3/5)
x1
1 2 3 4

• min C = 65x1 + 30x2

– Na solução básica viável (1, 3), temos C = $155.


x2
4
Solução ótima
3

1
x1
1 2 3 4

• (1, 3) é a solução ótima do problema da ração. Neste ponto, o custo total


é o menor possível, $ 155.

Outras situações
Exemplo 3.2. Maximizar f (x1 , x2 ) = x1 + 2x2 sujeito a:

−3x1 + x2 ≤ 2
x2 ≤ 3
x1 + 2x2 ≤ 9
3x1 + x2 ≤ 18
x1 ≥ 0, x2 ≥ 0

30
• max f (x1 , x2 ) = x1 + 2x2

4 x2 Múltiplas
soluções
3 ótimas
2
1
x1
1 2 3 4 5 6 7 8

Região viável ilimitada

• Infinitas soluções ótimas (minimização)

x2

x1

• Não existe solução ótima (minimização)

x2

x1

31
Região vazia

• Região viável vazia: não existe solução ótima (restrições conflitantes)

x2

x1

3.1 Exercícios

1. Faça a solução gráfica do exercício do sapateiro e do exercício das frutas


vistos anteriormente. Dica: no problema das frutas, a quantidade de
laranjas é conhecida (dada).

Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. MARINS, F. A. S. Introdução à pesquisa operacional. São Paulo: Cultura
Acadêmica, 2011.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H.


R. Gabriel (FACOM/UFU)
Adaptações: Renato Pimentel, FACOM/UFU

32
4 O método simplex
4.1 Introdução

• O método simplex visa a resolução algébrica de um problema de PL.


• Problemas agora não se limitam mais a 2 variáveis de decisão (como na
solução gráfica)
• 1º passo: Criação de Variáveis de folga ou excesso: transformam o modelo
num sistema linear de equações a ser resolvido.

Eliminação das desigualdades

• Inicialmente, é preciso eliminar as desigualdades presentes nas restrições


do modelo.
– Criam-se assim novas equações lineares no problema, a partir das
inequações anteriores.
• Exemplo:
2x1 + x2 ≤ 5

• Como o lado esquerdo é menor ou igual a 5 (a diferença é desconhecida),


a adição de uma variável não-negativa, chamada, por exemplo, x3 , que
represente tal diferença, permite que a inequação seja escrita como uma
equação:

2x1 + x2 + x3 = 5

• x3 ≥ 0 é denominada variável de folga.

• De modo similar, no caso da inequação

x1 + 3x2 ≥ 7,

onde tem-se o lado esquerdo maior ou igual ao lado direito, é possível re-
presentar a diferença pela subtração de uma variável de folga não-negativa:

x1 + 3x2 − x4 = 7 .

• Algumas referências chamam neste caso a nova variável de variável de


excesso.

Observação
Apenas as restrições técnicas são reescritas como equações.
As restrições de não-negatividade são mantidas.

33
4.2 Forma padrão

Um problema de PL está na forma padrão quando:


1. É um problema de maximização;

2. As restrições são do tipo ≤;


3. O lado direito das restrições (termo independente) é sempre não-negativo;
4. As variáveis de decisão são não-negativas.

Observação
Alguns autores – ex.: Marins (2011) – trabalham com definições alternativas
para a forma padrão. A adotada no curso foi considerada por questões didáticas.

Exemplo 4.1.
max Z(x1 , x2 ) = 5x1 + 2x2
sujeito a

x1 ≤ 3
x2 ≤ 4
x1 + 2x2 ≤ 9
x1 ≥ 0, x2 ≥ 0

max Z(x1 , x2 , x3 , x4 , x5 ) − 5x1 − 2x2 = 0


sujeito a

x1 + x3 = 3
x2 + x4 = 4
x1 + 2x2 + x5 = 9
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0

• Como a função objetivo é dada como uma equação, não é necessária a


introdução de variáveis de folga na mesma.
• Note que a função objetivo foi reescrita, de modo a deixar o lado direito
nulo.

34
4.3 Algoritmo simplex
Quadro inicial

• A tabela ou quadro abaixo auxilia na resolução:

x1 x2 x3 x4 x5 b
(0)
L0 Z −5 −2 0 0 0 0
(0)
L1 x3 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9

• Na linha L0 encontram-se os coeficientes da função objetivo.


• Nas linhas Li , i = 1, . . . , 3, encontram-se os coeficientes das restrições.

• O super-índice entre parênteses (k) das linhas indica que as mesmas são
as linhas obtidas após a k-ésima iteração do simplex.
– (0) indica que estas são as linhas do quadro inicial.
• O vetor b contém as constantes (termos independentes) das restrições,
bem como da função objetivo reescrita.

Solução básica viável inicial

x3 = 3 x1 = 0
x4 = 4 x2 = 0
x5 = 9 Z=0

Algoritmo

1. A solução já é a ótima? Se sim, o problema encontra-se resolvido, e o


algoritmo se encerra nesta etapa.
• Este é um problema de maximização. A solução será ótima se não
houver coeficientes negativos na linha L0 da função objetivo.
• Caso haja – este é o caso do exemplo – é preciso passar à etapa
seguinte, iterativa.
2. As variáveis de folga formam uma base do Rm (m é o número de res-
trições), pois a matriz m × m formada pelas linhas Li , i = 1, . . . , m e
respectivas colunas de tais variáveis é uma matriz identidade, portanto
com determinante diferente de 0.

35
• No quadro inicial, portanto, as variáveis de folga são chamadas de
básicas (representadas na coluna à esquerda no mesmo), e as variáveis
de decisão originais do problema, não básicas.
• Esta etapa do algoritmo consiste em colocar na base uma variável
de decisão, retirando da mesma uma das variáveis básicas (deve ser
repetida até que a condição da etapa 1 seja satisfeita)

Etapas do passo 2

1. Identificar quem entrará na base (condição de otimalidade):


Regra de Dantzig: Procura-se, na linha L0 , qual o coeficiente negativo de
maior valor absoluto (i.é., de menor valor). A variável associada a ele é a
que entrará na base.

• No exemplo, entrará na base x1 , pois | − 5| > | − 2|. A coluna em


destaque é a coluna pivô da iteração.

↓ x1 x2 x3 x4 x5 b
(0)
L0 Z −5 −2 0 0 0 0
(0)
L1 x3 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9

2. A variável básica que sairá da base é aquela cuja divisão da constante


bi , i = 1, . . . , m (a linha L0 da função objetivo nunca é considerada) pelo
coeficiente correspondente cij da coluna pivô seja o menor de todos –
apenas divisões não-negativas e finitas são consideradas. Esta é a Condição
de viabilidade.

• No caso, temos m = 3, j = 1 (selecionou-se x1 para deixar a base) e


as divisões

b1 3 b2 4 b3 9
= =3 = = ∞ (ignora-se) = =9
c11 1 c21 0 c31 1

• Portanto, x3 (associada a linha L1 ) deixará a base e a linha L1 passa


a ser a linha pivô desta iteração – razão mínima não-negativa nesta
linha.
↓ x1 x2 x3 x4 x5 b
(0)
L0 Z −5 −2 0 0 0 0
(0)
L1 ← x3 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9

36
• O elemento c11 = 1, dado pelo cruzamento das linhas e colunas pivô,
é o número pivô da iteração.

3. Redefine-se a linha pivô, dividindo-se a mesma pelo número pivô.

• No caso,

(0) (0)
(1) L1 L
L1 = = 1
c11 1
• Note que agora x1 faz parte da base, e x3 passou a ser não-básica.
x1 x2 x3 x4 x5 b
(0)
L0 Z −5 −2 0 0 0 0
(1)
L1 x1 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9
• Detalhamento:
(0)
1 0 1 0 0 3 L1
(1)
÷1: 1 0 1 0 0 3 L1

4. As demais linhas (incluindo a da função objetivo) são também redefinidas:

(1) (0) (1)


Lk = Lk − ckj Li , k = 0, . . . , m, k 6= i,
onde i e j são os índices da (nova) linha pivô e coluna pivô, respectiva-
mente.
(1) (0) (1)
• Linha 0 (função objetivo): L0 = L0 − (−5) L1

x1 x2 x3 x4 x5 b
(1)
L0 Z 0 −2 5 0 0 15
(1)
L1 x1 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9
• Detalhamento:
(1)
1 0 1 0 0 3 L1
×5: 5 0 5 0 0 15
(0)
−5 −2 0 0 0 0 L0
(1)
0 −2 5 0 0 15 L0

37
(1) (0) (1) (0)
• Linha 2: L2 = L2 − 0 L1 = L2 (inalterada)
x1 x2 x3 x4 x5 b
(1)
L0 Z 0 −2 5 0 0 15
(1)
L1 x1 1 0 1 0 0 3
(1)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 1 2 0 0 1 9

(1) (0) (1)


• Linha 3: L3 = L3 − 1 L1
x1 x2 x3 x4 x5 b
(1)
L0 Z 0 −2 5 0 0 15
(1)
L1 x1 1 0 1 0 0 3
(1)
L2 x4 0 1 0 1 0 4
(1)
L3 x5 0 2 −1 0 1 6
• Detalhamento:
(1)
1 0 1 0 0 3 L1
×(−1): −1 0 −1 0 0 −3
(0)
1 2 0 0 1 9 L3
(1)
0 2 −1 0 1 6 L0
• A primeira iteração está concluída.
Solução básica viável após iteração 1

x1 = 3 x2 = 0
x4 = 4 x3 = 0
x5 = 6 Z = 15

Nova iteração do passo 2

• Como se pode observar na tabela anterior, ainda há um coeficiente nega-


tivo na linha L0 .
• Portanto, repete-se o passo 2.
– Agora x2 entrará na base, e x5 sairá. Portanto, o número pivô é
C23 = 2.
x1 x2 x3 x4 x5 b
(2)
L0 Z 0 0 4 0 1 21
(2)
L1 x1 1 0 1 0 0 3
(2)
L2 x4 0 0 1/2 1 −1/2 1
(2)
L3 x2 0 1 −1/2 0 1/2 3

38
Solução básica viável após iteração 2 (solução ótima)

x1 = 3 x3 = 0
x4 = 1 x5 = 0
x2 = 3 Z = 21

4.4 Situações especiais

1. Empate na entrada da base


Na condição de otimalidade, quando se busca a variável que entrará na base; se
houver empate escolhe-se arbitrariamente qual deverá de fato entrar.
Única implicação: pode-se escolher um caminho mais longo ou mais curto –
dependendo da escolha – para se chegar à solução ótima
Exemplo: problema envolvendo maximização da função objetivo

Z = 4x1 + 4x2 + 3x3


Note que o maior coeficiente é 4, e está associado a duas variáveis (x1 e x2 ).
Na 1a. iteração, deve-se escolher qual das duas entrará (aparecerão como −4
no quadro inicial).
2. Empate na saída da base
Na condição de viabilidade, quando se busca a variável que sairá na base, se
houver empate em geral também se escolhe arbitrariamente qual deverá de fato
sair.
Exemplo:
max Z = 5x1 + 2x2 , sujeito a

x1 ≤ 3
x2 ≤ 4
4x1 + 3x2 ≤ 12
x1 ≥ 0, x2 ≥ 0

x1 x2 x3 x4 x5 b
(0)
L0 Z −5 −2 0 0 0 0
(0)
L1 x3 1 0 1 0 0 3
(0)
L2 x4 0 1 0 1 0 4
(0)
L3 x5 4 3 0 0 1 12

39
x1 entrará na base. As candidatas a sair da base (menor razão não-negativa):

b1 3 b3 12
x3 : = =3 x5 : = =3
c11 1 c31 4
Escolhe-se, por exemplo, x3 para deixar a base:

x1 ↓ x2 x3 x4 x5 b
(1)
L0 Z 0 −2 5 0 0 15
(1)
L1 x1 1 0 1 0 0 3
(1)
L2 x4 0 1 0 1 0 4
(1)
L3 ← x5 0 3 −4 0 1 0

Note que x5 é nula, mesmo sendo variável básica. Isto ocorre devido à
condição de empate e a solução viável encontrada é dita degenerada.

x1 x2 x3 x4 x5 b
(2)
L0 Z 0 0 7/3 0 2/3 15
(2)
L1 x1 1 0 1 0 0 3
(2)
L2 x4 0 0 4/3 1 −1/3 4
(2)
L3 x2 0 1 −4/3 0 1/3 0

Pode ocorrer a ciclagem (ou retorno cíclico) – o valor da função objetivo não
melhora, sendo possível que o método entre em uma sequência de iterações sem
nunca melhorar tal valor e satisfazer a condição de otimalidade. Neste exemplo,
esta última foi satisfeita (encontrou-se solução ótima).
Exemplo de caso em que ocorre ciclagem (Taha, 2008):
3 1
max Z = x1 − 20x2 + x3 − 6x4
4 2
sujeito a

1
x1 − 8x2 − x3 + 9x4 ≤ 0
4
1 1
x1 − 12x2 − x3 + 3x4 ≤ 0
2 2
x3 ≤ 1
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0

• O sistema encontra-se na forma padrão.

• Na forma de equações:
3 1
max Z(x1 , x2 , x3 , x4 , x5 , x6 , x7 ) − x1 + 20x2 − x3 + 6x4 = 0
4 2

40
sujeito a
1
x1 − 8x2 − x3 + 9x4 + x5 = 0
4
1 1
x1 − 12x2 − x3 + 3x4 + x6 = 0
2 2
x3 + x7 = 1
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0, x7 ≥ 0

↓ x1 x2 x3 x4 x5 x6 x7 b
(0)
L0 Z −3/4 20 −1/2 6 0 0 0 0
(0)
L1 ← x5 1/4 −8 −1 9 1 0 0 0
(0)
L2 x6 1/2 −12 −1/2 3 0 1 0 0
(0)
L3 x7 0 0 1 0 0 0 1 1

x1 ↓ x2 x3 x4 x5 x6 x7 b
(1)
L0 Z 0 −4 −7/2 33 3 0 0 0
(1)
L1 x1 1 −32 −4 36 4 0 0 0
(1)
L2 ← x6 0 4 3/2 −15 −2 1 0 0
(1)
L3 x7 0 0 1 0 0 0 1 1

x1 x2 ↓ x3 x4 x5 x6 x7 b
(2)
L0 Z 0 0 −2 18 1 1 0 0
(2)
L1 ← x1 1 0 8 −84 −12 8 0 0
(2)
L2 x2 0 1 3/8 −15/4 −1/2 1/4 0 0
(2)
L3 x7 0 0 1 0 0 0 1 1

x1 x2 x3 ↓ x4 x5 x6 x7 b
(3)
L0 Z 1/4 0 0 −3 −2 3 0 0
(3)
L1 x3 1/8 0 1 −21/2 −3/2 1 0 0
(3)
L2 ← x2 −3/64 1 0 3/16 1/16 −1/8 0 0
(3)
L3 x7 −1/8 0 0 21/2 3/2 −1 1 1

x1 x2 x3 x4 ↓ x5 x6 x7 b
(4)
L0 Z −1/2 16 0 0 −1 1 0 0
(4)
L1 ← x3 −5/2 56 1 0 2 −6 0 0
(4)
L2 x4 −1/4 16/3 0 1 1/3 −2/3 0 0
(4)
L3 x7 5/2 −56 0 0 −2 6 1 1

41
x1 x2 x3 x4 x5 ↓ x6 x7 b
(5)
L0 Z −7/4 44 1/2 0 0 −2 0 0
(5)
L1 x5 −5/4 28 1/2 0 1 −3 0 0
(5)
L2 ← x4 1/6 −4 −1/6 1 0 1/3 0 0
(5)
L3 x7 0 0 1 0 0 0 1 1

↓ x1 x2 x3 x4 x5 x6 x7 b
(6)
L0 Z −3/4 20 −1/2 6 0 0 0 0
(6)
L1 ← x5 1/4 −8 −1 9 1 0 0 0
(6)
L2 x6 1/2 −12 −1/2 3 0 1 0 0
(6)
L3 x7 0 0 1 0 0 0 1 1

Tal quadro é exatamente igual ao inicial: ao se prosseguir com o algoritmo,


a mesma sequência de quadros se repetirá sem melhoria do valor da função
objetivo (laço infinito).
3. Soluções múltiplas
Modelo de PL apresenta mais de uma solução ótima.
Exemplo:
max Z = 2x1 + 4x2 , sujeito a

x1 + 2x2 ≤ 5
x1 + x2 ≤ 4
x1 ≥ 0, x2 ≥ 0

x1 ↓ x2 x3 x4 b
(0)
L0 Z −2 −4 0 0 0
(0)
L1 ← x3 1 2 1 0 5
(0)
L2 x4 1 1 0 1 4

↓ x1 x2 x3 x4 b
(1)
L0 Z 0 0 2 0 10
(1)
L1 x2 1/2 1 1/2 0 5/2
(1)
L2 ← x4 1/2 0 −1/2 1 3/2

A solução é ótima, e tem-se x1 = 0, x2 = 5/2 e Z = 10. O coeficiente de


x1 (não-básica) em L0 é zero, indicando que a mesma pode entrar na base, de
modo que o valor da função objetivo fique inalterado – apenas os valores das
variáveis se alteram.

42
x1 x2 x3 x4 b
(2)
L0 Z 0 0 2 0 10
(2)
L1 x2 0 1 1 −1 1
(2)
L2 x1 1 0 −1 2 3

Forçando-se a saída de x4 da base, inserindo-se x1 em seu lugar, tem-se nova


solução em x1 = 3, x2 = 1 e Z = 10.
Qualquer combinação convexa desta solução e da anterior também será uma
solução ótima. Graficamente: segmento de reta entre os pontos (0, 5/2) e (3, 1)
4. Função objetivo ilimitada

• Outro resultado possível é aquele no qual nenhuma variável se qualifica


para ser a variável básica a deixar a base.
• Este resultado ocorre quando a variável que entra na base pode ser aumen-
tada indefinidamente sem dar valores negativos a qualquer das variáveis
básicas atuais. Na forma tabular, isso significa que todos os coeficientes
da coluna pivô (excluindo-se a linha L0 ) são negativos ou zero.
• Neste caso, as restrições não impedem que o valor da função objetivo
cresça indefinidamente.

• Isto ocorre, provavelmente, porque o modelo foi mal formulado, seja por
omitir restrições relevantes, seja por declará-las de modo incorreto.

Exemplo:
max Z = 2x1 + x2 sujeito a

x1 − x2 ≤ 10
2x1 ≤ 40
x1 ≥ 0, x2 ≥ 0

↓ x1 x2 x3 x4 b
(0)
L0 Z −2 −1 0 0 0
(0)
L1 ← x3 1 −1 1 0 10
(0)
L2 x4 2 0 0 1 40

Todos os coeficientes das restrições sob x2 são todos negativos ou zero. Note
que x2 pode ser aumentada indefinidamente sem desobedecer nenhuma das res-
trições. Embora x1 entre na base pelo critério de otimalidade, note que caso
x2 entrasse na base, nem x3 nem x4 poderia sair da mesma pelo critério de
viabilidade.

43
x1 ↓ x2 x3 x4 b
(1)
L0 Z 0 −3 2 0 20
(1)
L1 x1 1 −1 1 0 10
(1)
L2 ← x4 0 2 −2 1 20

x1 x2 ↓ x3 x4 b
(2)
L0 Z 0 0 −1 3/2 50
(2)
L1 ← x1 0 0 0 1/2 30
(2)
L2 x2 0 1 −1 1/2 10
Como consequência do observado para x2 no quadro inicial, agora x3 possui
as mesmas características, sendo a única variável candidata a entrar na base:
nem x1 nem x2 podem sair.
Obs.: É suficiente a análise do quadro inicial para concluir que a solução é
ilimitada.
5. Problema de minimização
Quando a função objetivo tiver de ser minimizada pode-se fazer duas coisas,
a saber:
• Inverter o teste de otimização e o critério de entrada na base. Assim, se
todos os coeficientes da linha L0 forem negativos, ou nulos, a solução é
ótima. Caso contrário, escolha a variável xj para entrar que apresente o
maior valor.
• Transformar o problema de minimização em um problema de maximiza-
ção. Sabe-se que achar o mínimo de uma função é equivalente a encontrar
o máximo do simétrico desta função.

– Exemplo: min W = 2x1 + 3x2 ⇔ max Z = −2x1 − 3x2 . Depois, na


solução final, fazer W = −Z.

• Um aspecto de problemas de minimização é que em geral as restrições


contém desigualdades do tipo ≥ (maior-ou-igual).
• Os exemplos abordados com o simplex são todos problemas de maximiza-
ção, onde as restrições são do tipo

ci1 x1 + ci2 x2 + · · · + cin xn ≤ bi ,

onde a constante do lado direito bi é tal que bi ≥ 0 (forma padrão).

– Sob esta forma, as variáveis acrescentadas são de folga e o problema


pode ser resolvido como visto.
– Problemas com restrições envolvendo a desigualdade ≥ ou mesmo
igualdade (=) exigem etapas adicionais.

44
Lado direito negativo

• Para que a resolução vista possa ser empregada, é preciso que o lado direito
das restrições seja não-negativo.
• Por exemplo, a restrição

−x1 + x2 ≤ −3

leva ao surgimento da equação

−x1 + x2 + x3 = −3, x3 ≥ 0 .

• O problema é resolvido fazendo-se a multiplicação de ambos os lados por


−1:

x1 − x2 − x3 = 3 .

• Neste caso, o coeficiente de x3 é −1. Logo, esta não pode entrar na base
(na equação reescrita é variável de excesso). Isto equivale a partirmos da
inequação

x1 − x2 ≥ 3 .

(nada mais do que a inequação original multiplicada por −1 – a desigual-


dade é invertida).

Solução inicial artificial

• Para se iniciar a resolução de problemas de PL “mal comportados” (com


restrições do tipo ≥ e =) deve se adotar variáveis artificiais
• Estas desempenham o papel de folgas na primeira iteração.

• São descartadas em iterações posteriores.


• Dois métodos:
– Método do M -grande;
– Método das duas fases.

Considere o seguinte problema:

max Z = 5x1 + 2x2 sujeito a:


x1 ≤ 3
x2 ≤ 4
x1 + 2x2 ≥ 9
45 x1 ≥ 0, x2 ≥ 0
max Z tal que Z − 5x1 − 2x2 = 0 sujeito a:

x1 + x3 = 3
x2 + x4 = 4
x1 + 2x2 − x5 = 9
x1 , . . . , x5 ≥ 0

• Variáveis não-básicas: x1 = x2 = 0.
• Variáveis básicas: x3 = 3, x4 = 4, x5 = −9.
• Não é solução viável, pois x5 deveria ser não-negativa.
Pode-se acrescentar uma variável artificial na equação problemática. Esta
variável ocupará o lugar de x5 na base inicial. Logo:

max Z tal que Z − 5x1 − 2x2 = 0 • Variáveis não-básicas: x1 = x2 =


sujeito a: x5 = 0.
x1 + x3 = 3 • Variáveis básicas: x3 = 3, x4 =
x2 + x4 = 4 4, t1 = 9.
x1 + 2x2 − x5 + t1 = 9
x1 , . . . , x5 , t1 ≥ 0

• Os sistemas somente se equivalem se a variável artificial t1 for nula.


• As variáveis artificiais não têm significado no problema real, mas permitem
a inicialização do processo de maneira automática.

Método do M -grande
• Como as variáveis artificiais não fazem parte do modelo, estas sofrerão
punições na função objetivo:
– As punições visam zerar tais variáveis na solução ótima.
– Isto sempre ocorrerá se houver solução viável.

Regra de penalização das variáveis artificiais


Dado M > 0, valor suficientemente alto (M → ∞), o coeficiente na função
objetivo representa uma punição adequada quando igual a:

– −M , em problemas de maximização;
– M , em problemas de minimização.

• O valor de M deve ser suficientemente grande em relação aos demais


coeficientes da função objetivo, de modo a forçar as variáveis a ter valor
nulo no ótimo.

46
Retornando ao exemplo anterior:

max Z = 5x1 + 2x2 − M t1 max Z tal que Z − 5x1 − 2x2 +


sujeito a: 100t1 = 0
sujeito a:

x1 + x3 = 3 x1 + x3 = 3
x2 + x4 = 4 x2 + x4 = 4
x1 + 2x2 − x5 + t1 = 9 x1 + 2x2 − x5 + t1 = 9
x1 , . . . , x5 , t1 ≥ 0 x1 , . . . , x5 , t1 ≥ 0

• Como os coeficientes na função objetivo são 5 e 2, parece razoável definir


M = 100.
• Quadro inicial:

x1 x2 x3 x4 x5 t1 b
(0)
L0 Z −5 −2 0 0 0 100 0
(0)
L1 x3 1 0 1 0 0 0 3
(0)
L2 x4 0 1 0 1 0 0 4
(0)
L3 t1 1 2 0 0 −1 1 9

• A linha L0 é inconsistente com o resto da tabela, uma vez que t1 = 9 (t1


está na base) e portanto Z = −900.
• Para empregar a resolução do simplex, é preciso que os coeficientes das
variáveis básicas na linha L0 sejam todos nulos. Este ajuste inicial pode
ser feito redefinindo-se esta linha como sendo a soma dela mesma com a
linha associada a t1 multiplicada por −M :

(0) (0) (0) (0) (0)


L0 = L0 − M L3 = L0 − 100L3
• O quadro inicial então se torna

x1 ↓ x2 x3 x4 x5 t1 b
(0)
L0 Z −105 −202 0 0 100 0 −900
(0)
L1 x3 1 0 1 0 0 0 3
(0)
L2 ← x4 0 1 0 1 0 0 4
(0)
L3 t1 1 2 0 0 −1 1 9

• Detalhamento:
(0)
1 2 0 0 −1 1 9 L3
×(−100): −100 −200 0 0 100 −100 −900
(0)
−5 −2 0 0 0 100 0 L0 original
(0)
−105 −202 0 0 100 0 −900 L0 ajustada

47
Solução básica viável inicial

x3 = 3 x1 = 0
x4 = 4 x2 = 0
t1 = 9 x5 = 0
Z = −900

↓ x1 x2 x3 x4 x5 t1 b
(1)
L0 Z −105 0 0 202 100 0 −92
(1)
L1 x3 1 0 1 0 0 0 3
(1)
L2 x2 0 1 0 1 0 0 4
(1)
L3 ← t1 1 0 0 −2 −1 1 1

x1 x2 x3 ↓ x4 x5 t1 b
(2)
L0 Z 0 0 0 −8 −5 105 13
(2)
L1 ← x3 0 0 1 2 1 −1 2
(2)
L2 x2 0 1 0 1 0 0 4
(2)
L3 x1 1 0 0 −2 −1 1 1

x1 x2 x3 x4 ↓ x5 t1 b
(3)
L0 Z 0 0 4 0 −1 101 21
(3)
L1 ← x4 0 0 1/2 1 1/2 −1/2 1
(3)
L2 x2 0 1 −1/2 0 −1/2 1/2 3
(3)
L3 x1 1 0 1 0 0 0 3

x1 x2 x3 x4 x5 t1 b
(4)
L0 Z 0 0 5 2 0 100 23
(4)
L1 x5 0 0 1 2 1 −1 2
(4)
L2 x2 0 1 0 1 0 0 4
(4)
L3 x1 1 0 1 0 0 0 3

O método do M -grande pode resultar em erros de arredondamento durante a


fase de punição do valor M – definido sempre de forma relativamente arbitrária.

• Na prática, usa-se o método das duas fases, desenvolvido posteriormente.


• O método das duas fases está implementado em praticamente todos os
pacotes comerciais para resolução de problemas de PL.

Método das duas fases

• Alternativa ao método do M -grande, contornando a dificuldade do mesmo


por eliminar o uso da constante M .

48
• Inicialmente, variáveis artificiais são introduzidas ao modelo, como no mé-
todo anterior.
• Como o nome sugere, há duas fases ou etapas:
– Fase I: consiste em resolver um problema de minimização cuja função
objetivo é dada pelo somatório das variáveis artificiais. Espera-se
que o mínimo seja zero (requisito para Fase II).
Observação
Caso o valor mínimo da soma seja diferente de zero, o problema
não tem nenhuma solução viável, o que encerra o processo – variável
artificial positiva indica que restrição original não foi satisfeita.
– Fase II: Usa-se a solução da Fase I como solução básica viável inicial
para o problema original.

Seja o problema:

Variáveis de folga:
max Z = 4x1 + x2
max Z = 4x1 + x2
sujeito a sujeito a

3x1 + x2 = 3 3x1 + x2 = 3
4x1 + 3x2 ≥ 6 4x1 + 3x2 − x3 = 6
x1 + 2x2 ≤ 4 x1 + 2x2 + x4 = 4
x1 ≥ 0, x2 ≥ 0 x1 ≥ 0, . . . , x4 ≥ 0

Como não há uma solução básica viável são inseridas as variáveis artificiais
t1 e t2 às restrições envolvendo ≥ e =:

max Z = 4x1 + x2
sujeito a

3x1 + x2 + t1 = 3
4x1 + 3x2 − x3 + t2 = 6
x1 + 2x2 + x4 = 4
x1 ≥ 0, . . . , x4 ≥ 0, t1 ≥ 0, t2 ≥ 0 .

A função objetivo inicial será portanto

W = t1 + t2

49
Fase I

min W = t1 + t2
sujeito a
3x1 + x2 + t1 = 3
4x1 + 3x2 − x3 + t2 = 6
x1 + 2x2 + x4 = 4
x1 ≥ 0, . . . , x4 ≥ 0, t1 ≥ 0, t2 ≥ 0 .

x1 x2 x3 x4 t1 t2 b
(0)
L0 −W 0 0 0 0 1 1 0
(0)
L1 t1 3 1 0 0 1 0 3
(0)
L2 t2 4 3 −1 0 0 1 6
(0)
L3 x4 1 2 0 1 0 0 4
Como a linha L0 é incompatível com o sistema – possui coeficientes para
(0) (0) (0) (0)
variáveis t1 e t2 da base – faz-se L0 = L0 − L1 − L2 :
↓ x1 x2 x3 x4 t1 t2 b
(0)
L0 −W −7 −4 1 0 0 0 −9
(0)
L1 ← t1 3 1 0 0 1 0 3
(0)
L2 t2 4 3 −1 0 0 1 6
(0)
L3 x4 1 2 0 1 0 0 4
Detalhamento:
(0)
3 1 0 0 1 0 3 L1
(0)
4 3 −1 0 0 1 6 L2
(0)
L1 × (−1): −3 −1 0 0 −1 0 −3
(0)
L2 × (−1): −4 −3 1 0 0 −1 −6
(0)
0 0 0 0 1 1 0 L0 original
(0)
−7 −4 1 0 0 0 −9 L0 redefinido

x1 ↓ x2 x3 x4 t1 t2 b
(1)
L0 −W 0 −5/3 1 0 7/3 0 −2
(1)
L1 x1 1 1/3 0 0 1/3 0 1
(1)
L2 ← t2 0 5/3 −1 0 −4/3 1 2
(1)
L3 x4 0 5/3 0 1 −1/3 0 3

x1 x2 x3 x4 t1 t2 b
(2)
L0 −W 0 0 0 0 1 1 0
(2)
L1 x1 1 0 1/5 0 3/5 −1/5 3/5
(2)
L2 x2 0 1 −3/5 0 −4/5 3/5 6/5
(2)
L3 x4 0 0 1 1 1 1 1

50
• No quadro (2), −W = 0 (logo, W = 0), e não há coeficientes negativos
para as variáveis fora da base. Portanto, a fase I está concluída.
• A solução básica viável é dada por:

x1 = 3/5 x2 = 6/5 x4 = 1

(apenas variáveis básicas). As demais, bem como a função objetivo W são


nulas.
• Neste momento, pode-se eliminar totalmente as colunas das variáveis ar-
tificiais t1 e t2 e passar à fase II.

– Eliminam-se também as linhas, quando for o caso (variáveis artificiais


fora da base).

Fase II
Após eliminar as colunas das variáveis artificiais, reescreve-se o problema
original como:

max Z = 4x1 + x2
sujeito a

x1 + 1/5x3 = 3/5
x2 − 3/5x3 = 6/5
x3 + x4 = 1
x1 ≥ 0, . . . , x4 ≥ 0 .

Quadro inicial desta fase – note que é preciso adequar a linha L0 antes de
prosseguir para o algoritmo do simplex:

x1 x2 x3 x4 b
(0)
L0 Z −4 −1 0 0 0
(0)
L1 x1 1 0 1/5 0 3/5
(0)
L2 x2 0 1 −3/5 0 6/5
(0)
L3 x4 0 0 1 1 1

4.5 Exercícios

1. Determine a solução ótima a partir do quadro anterior (Fase II).

51
2. Usando simplex, determine a solução do problema

min f (x1 , x2 ) = 65x1 + 30x2

sujeito a

2x1 + 3x2 ≥ 7
3x1 + 2x2 ≥ 9
x1 ≥ 1
x1 ≥ 0, x2 ≥ 0 .

Referências

1. MARINS, F. A. S. Introdução à pesquisa operacional. São Paulo: Cultura


Acadêmica, 2011.

2. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H.


R. Gabriel (FACOM/UFU)
Adaptações: Renato Pimentel, FACOM/UFU

52
Parte II
Dualidade
5 Dual e sua relação com o primal

• Modelo dual: definido diretamente a partir do modelo original (ou primal)


do problema de PL.
• Forte relação com o problema de origem:
– Solução ótima de um problema fornece automaticamente a solução
ótima do outro.

Vantagens
• Uma vantagem do uso do modelo dual está na possibilidade de se gerar
um problema menor, cuja solução seja mais rápida/menos cara que no
modelo original.
• Outra vantagem: transformar um problema de minimização num de ma-
ximização – o que permite aplicação direta do algoritmo simplex.

Forma de equações do modelo primal


A construção do modelo dual será baseada na chamada forma de equações
(TAHA, 2008) do modelo original, usada para a resolução pelo algoritmo do
simplex. Na forma de equações:

1. Todas as restrições técnicas – isto é, excluindo-se as de não-negatividade


– são dadas como equações, com o lado direito não negativo.
2. Todas as variáveis são maiores ou iguais a zero.

Construção do modelo dual com base no primal

1. O dual de um problema de maximização (minimização) é um problema de


minimização (maximização);
2. Uma variável yi do dual é definida para cada restrição2 do primal;
3. Uma restrição dual é definida para cada variável xj primal;
4. Os coeficientes associados à variável xj das restrições do modelo primal
definirão os coeficientes da j-ésima restrição primal;
2 Não se consideram as de não-negatividade

53
5. Os coeficientes da função objetivo do dual são dados pelas constantes (lado
direito) das restrições do primal;

No caso de um problema de maximização – somente com restrições do tipo


≤, temos:

• Primal: • Dual:

n
X m
X
max Z = cj xj min D = bi yi
j=1 i=1

sujeito a sujeito a

n
X m
X
aij xj ≤ bi , (i = 1, . . . , m) aji yi ≥ cj , (j = 1, . . . , n)
j=1 i=1
xj ≥ 0 yi ≥ 0

Exemplo

• Primal: • Dual:

max Z = 25x1 + 20x2


min D = 50y1 + 80y2 + 220y3
sujeito a
sujeito a

x1 + x2 ≤ 50
2x1 + x2 ≤ 80 y1 + 2y2 + 2y3 ≥ 25
2x1 + 5x2 ≤ 220 y1 + y2 + 5y3 ≥ 20
x1 ≥ 0, x2 ≥ 0 . y1 ≥ 0, y2 ≥ 0, y3 ≥ 0 .

• Note pelo caso geral e exemplo vistos que o sinal de desigualdade das
restrições duais está associado ao tipo de otimização: se o dual for de
minimização, todas as restrições serão (≥).
• Outro fato é que as variáveis duais yi são não negativas, mas nem sempre
isto ocorre.

• Casos mais gerais, onde no modelo primal há restrições (≥) e (=), ou há


variáveis irrestritas (podem assumir valores negativos), levam a outras
situações no dual.

54
5.1 Regras para construção do dual

1. Restrições de sinal das variáveis duais: de acordo com os coeficientes das


variáveis de folga/excesso do primal.
• Exemplo:

min Z = 15x1 + 12x2


sujeito a

x1 + 2x2 ≥ 3
2x1 − 4x2 ≤ 5
x1 ≥ 0, x2 ≥ 0 .

• Na forma de equações: • Dual:

max D = 3y1 + 5y2


min Z = 15x1 + 12x2 + 0x3 + 0x4
sujeito a
sujeito a

y1 + 2y2 ≤ 15
x1 + 2x2 − x3 + 0x4 = 3 (y1 ) 2y1 − 4y2 ≤ 12
2x1 − 4x2 + 0x3 + x4 = 5 (y2 ) −1y1 + 0y2 ≤ 0
xi ≥ 0, i = 1, . . . , 4. 0y1 + 1y2 ≤ 0 .

As 2 últimas restrições duais estão associadas às variáveis de folga x3 e x4 .


Note que todas são do tipo (≤) pois o dual é de maximização.
Reescrevendo as duas últimas restrições, temos:

max D = 3y1 + 5y2


sujeito a

y1 + 2y2 ≤ 15
2y1 − 4y2 ≤ 12
y1 ≥ 0
y2 ≤ 0 .

55
Exercício
Verifique, para o exemplo de maximização visto anteriormente, que as res-
trições de não negatividade para y1 , y2 e y3 são coerentes com os coeficientes
das variáveis de folga do problema.

2. Restrição do tipo igualdade (=) no primal: variável irrestrita no dual.


• Variáveis irrestritas: podem assumir qualquer valor real, mesmo va-
lores negativos.

max Z = 5x1 + 12x2 + 4x3

sujeito a

x1 + 2x2 + x3 ≤ 10
2x1 − x2 + 3x3 = 8
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 .

• Na forma de equações: • Dual:

min D = 10y1 + 8y2


max Z = 5x1 + 12x2 + 4x3 + 0x4
sujeito a
sujeito a

y1 + 2y2 ≥ 5
x1 + 2x2 + x3 + x4 = 10 (y1 ) 2y1 − y2 ≥ 12
2x1 − x2 + 3x3 + 0x4 = 8 (y2 ) y1 + 3y2 ≥ 4
xi ≥ 0, i = 1, . . . , 4. y1 + 0y2 ≥ 0 .

Da última restrição, obtém-se y1 ≥ 0. Não há restrições sobre y2 , portanto


esta é irrestrita.

3. Variável irrestrita no primal: restrição associada no dual é de igualdade


(=).

max Z = 5x1 + 6x2


sujeito a

x1 + 2x2 = 5
−x1 + 5x2 ≥ 3
4x1 + 7x2 ≤ 8
x1 irrestrita, x2 ≥ 0 .

56
• Uma situação não apresentada no modelo primal é a de variável irrestrita.
• Nesta situação, se xi é irrestrita, então definem-se duas variáveis não-
negativas, x−
i e xi , cuja diferença entre ambas resulta na irrestrita:
+

xi = x− +
i − xi

• Sendo assim:
– Se xi ≥ 0, então x− +
i ≥ xi ≥ 0;

– Se xi < 0, então x+
i > xi ≥ 0.

• Logo, na forma de equações: • Dual:

max Z = 5x− +
1 − 5x1 + 6x2 min D = 5y1 + 3y2 + 8y3

sujeito a sujeito a

x− +
1 − x1 + 2x2 = 5 (y1 ) y1 − y2 + 4y3 ≥ 5
− x− +
1 + x1 + 5x2 − x3 = 3 (y2 ) −y1 + y2 − 4y3 ≥ −5
4x− +
1 − 4x1 + 7x2 + x4 = 8 (y3 ) 2y1 + 5y2 + 7y3 ≥ 6
x− +
1 ≥ 0, x1 ≥ 0, −y2 + 0y3 ≥ 0
x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 . 0y2 + y3 ≥ 0

Das 2 primeiras restrições, obtém-se y1 − y2 + 4y3 = 5 (basta multiplicar a


segunda por −1).
Reescrevendo:

min D = 5y1 + 3y2 + 8y3


sujeito a

y1 − y2 + 4y3 = 5
2y1 + 5y2 + 7y3 ≥ 6
y1 irrestrita, y2 ≤ 0, y3 ≥ 0 .

Teoremas
Teorema I (Dualidade fraca)
Se ambos o primal e o dual possuem soluções viáveis, então Z ≤ D para
qualquer solução viável do primal de maximização e qualquer solução viável do
dual de minimização.

57
• Se o primal é de minimização, então o dual é de maximização e temos
Z ≥ D.

Teorema II (Dualidade forte)


Se ambos o primal e dual possuírem soluções viáveis tais que Z = D, então
as mesmas constituem soluções ótimas

• Exemplo: primal • Dual:

max Z = 5x1 + 2x2


min D = 3y1 + 4y2 + 9y3
sujeito a
sujeito a

x1 ≤ 3
x2 ≤ 4 y1 + y3 ≥ 5
x1 + 2x2 ≤ 9 y2 + 2y3 ≥ 2
x1 ≥ 0, x2 ≥ 0 . y1 ≥ 0, y2 ≥ 0, y3 ≥ 0 .

Dadas duas soluções viáveis, (x1 , x2 ) = (2, 3) para o primal e (y1 , y2 , y3 ) =


(3, 3, 2) para o dual, temos
Z = 5(2) + 2(3) = 16
D = 3(3) + 4(3) + 9(2) = 39

• Temos, portanto Z ≤ D.
• Considere agora o par de soluções viáveis (x1 , x2 ) = (3, 3) para o primal e
(y1 , y2 , y3 ) = (4, 0, 1) para o dual:

Z = 5(3) + 2(3) = 21
D = 3(4) + 4(0) + 9(1) = 21 .

• Como Z = D = 21, pode-se afirmar que as duas soluções são ótimas para
o primal e dual.

58
Teorema da folga complementar
Seja o problema primal representado pelo quadro inicial:
x1 x2 ... xn xn+1 xn+2 . . . xn+m b
(0)
L0 Z −c1 −c2 . . . −cn 0 0 ... 0 0
(0)
L1 xn+1 a11 a12 . . . a1n 1 0 ... 0 b1
(0)
L2 xn+2 a21 a22 . . . a2n 0 1 ... 0 b2
.. .. .. .. .. .. .. .. .. ..
. . . . . . . . . 0 .
(0)
Lm xn+m am1 am2 ... amn 0 0 ... 1 bm

xj , j = 1, . . . , n: variáveis de decisão primais;


xn+i , i = 1, . . . , m: variáveis de folga do primal.
No caso do dual:
yi , i = 1, . . . , m: variáveis de decisão duais.
ym+j , j = 1, . . . , n: variáveis de folga do dual.
No quadro ótimo:
x1 x2 . . . xn xn+1 xn+2 . . . xn+m b
(p)
L0 Z c̄j = pj − cj c̄n+i = pn+i

• O valor ótimo da variável dual yi corresponde ao coeficiente na linha L0


ótima associado à variável de folga xn+i do primal:

yi∗ = pn+i , i = 1, . . . , m.

• O valor ótimo da variável de folga dual ym+j corresponde ao coeficiente


na linha L0 ótima da variável xj do primal:


ym+j = pj − cj , j = 1, . . . , n.

Uma vez que o dual do dual é o próprio problema primal, pode-se determinar
a solução do primal a partir da solução do dual.

5.2 Exercícios

1. Usando dualidade, determine a solução do problema

min f (x1 , x2 ) = 65x1 + 30x2

59
sujeito a

2x1 + 3x2 ≥ 7
3x1 + 2x2 ≥ 9
x1 ≥ 1
x1 ≥ 0, x2 ≥ 0 .

Referências

1. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H.


R. Gabriel (FACOM/UFU)
Adaptações: Renato Pimentel, FACOM/UFU

60
Parte III
Problemas de transporte
6 Introdução a problemas de transporte
Problemas de transporte, transbordo e designação
• Dentro da PL, existem diversos modelos obtidos a partir de problemas
reais
• Com relação a problemas de logística, podemos destacar:

– Problemas de transporte;
– Problemas de transbordo;
– Problemas de designação.

• Referem-se, por exemplo, ao transporte ou distribuição de mercadorias,


dos centros de produção aos mercados consumidores;
• Problemas de minimização do custo – impacto direto no lucro de cada
produto;
• Limitações de oferta e demanda devem ser respeitadas – admite-se serem
conhecidas.

7 Problema de transporte
7.1 Modelagem
Formulação matemática do problema de transporte
• m centros de produção (origens);
• n centros consumidores (destinos);

c11
a1 1 1 b1

a2 2 2 b2

.. .. .. ..
. . . .
cmn
am m n bn

61
Componentes do modelo
ai : as quantidades disponíveis, ou ofertadas, em cada origem i
bj : as quantidades requeridas (demandadas) , em cada destino j
cij : o custo unitário de transporte da origem i ao destino j
xij : a quantidade a ser transportada da origem i ao destino j

• O que é transportado a partir de cada origem i para todos os destinos não


pode ultrapassar a quantidade disponível do produto na mesma:

n
X
xij ≤ ai
j=1

• Da mesma forma, espera-se que as demandas de cada destino sejam satis-


feitas:

m
X
xij = bj
i=1

• O problema consiste em

m X
X n
min C(x11 , x12 , . . . , xmn ) = cij xij (custo total)
i=1 j=1

sujeito às restrições

n
X
xij ≤ ai i = 1, . . . , m
j=1
Xm
xij = bj j = 1, . . . , n
i=1
xij ≤ 0 i = 1, . . . , m; j = 1, . . . , n

Exemplo: construção de rodovia3

• Na construção de uma rodovia, empregam-se jazidas de rochas para ob-


tenção de pedra britada.
• É conveniente transportar este material de jazidas em pedreiras localizadas
nas proximidades para alguns pontos preestabelecidos ao longo do caminho
em que passará a estrada.
3 Adaptado de ARENALES (2006)

62
P2
P1
Esquema para
D2 D3 m = 4 pedreiras e
n = 3 depósitos

D1 P3

P4

• A tabela a seguir contém os dados do problema. Os custos e demandas


são dados por tonelada de pedra britada.

Depósitos
Pedreiras 1 2 3 Oferta
1 30 13 21 433
2 12 40 26 215
3 27 15 35 782
4 37 25 19 300
demanda 697 421 612

Se xij é a quantidade (em toneladas) da pedreira i para o depósito j, pode-se


formular o problema como:

min C = 30x11 + 13x12 + 21x13 + 12x21 + 40x22 + 26x23


+ 27x31 + 15x32 + 35x33 + 37x41 + 25x42 + 19x43

sujeito a

x11 + x12 + x13 ≤ 433


x21 + x22 + x23 ≤ 215
x31 + x32 + x33 ≤ 782
x41 + x42 + x43 ≤ 300
x11 + x21 + x31 + x41 = 697
x12 + x22 + x32 + x42 = 421
x13 + x23 + x33 + x43 = 612
x11 ≥ 0, x12 ≥ 0, . . . , x43 ≥ 0

63
Distribuição para centros de consumo
• Uma empresa fabrica um determinado produto em três cidades P1 , P2 e
P3 ; o produto destina-se a quatro centros de consumo C1 , C2 , C3 e C4 .
O custo estimado de transportar o produto das fábricas para os centros
consumidores, assim como a demanda de cada centro e a oferta de cada
fábrica é dado na tabela a seguir:

Destino
Origem C1 C2 C3 C4 Oferta
P1 10 7 6 5 9
P2 2 8 9 1 10
P3 11 12 8 4 8
Demanda 7 6 10 4

• Formule o modelo de transporte para se determinar o programa que torna


mínimo o custo total de transporte entre as quatro cidades e os três centros
consumidores.
Se xij ≥ 0 é a quantidade de produtos transportados da unidade i, i =
1, . . . , 3 para o centro j, j = 1, . . . , 4, obtém-se:

min C = 10x11 + 7x12 + 6x13 + 5x14 + 2x21 + 8x22


+ 9x23 + x24 + 11x31 + 12x32 + 8x33 + 4x34
sujeito a

x11 + x12 + x13 + x14 ≤ 9


x21 + x22 + x23 + x24 ≤ 10
x31 + x32 + x33 + x34 ≤ 8
x11 + x21 + x31 = 7
x12 + x22 + x32 = 6
x13 + x23 + x33 = 10
x14 + x24 + x34 = 4
x11 ≥ 0, x12 ≥ 0, . . . , x34 ≥ 0

7.2 Exercícios

1. Uma rede de depósitos de material de construção tem 4 lojas que devem


ser abastecidas com 50 m3 (L1), 80 m3 (L2), 40 m3 (L3), 100 m3 (L4) de
areia grossa. Essa areia pode ser encarregada em 3 portos P1, P2 e P3,
cujas distâncias às lojas estão no quadro (em km):

64
L1 L2 L3 L4
P1 30 20 24 18
P2 12 36 30 24
P3 8 15 25 20

O caminhão pode transportar 10 m3 por viagem. Os portos tem areia


para suprir qualquer demanda.
Estabelecer um plano de transporte que minimize a distância total percor-
rida entre os portos e as lojas e supra as necessidades das lojas. Construa
o modelo linear do problema.

2. Um dado produto é produzido em diferentes fábricas do país com capa-


cidades de produção limitadas e deve ser levado a centros de distribuição
(depósitos) em regiões onde há demandas a serem satisfeitas. O custo de
transporte de cada fábrica a cada depósito é proporcional à quantidade
transportada. A tabela a seguir fornece os custos unitários de transporte
de cada fábrica para cada depósito, bem como as demandas em cada de-
pósito e as produções de cada fábrica.

Depósitos/ Rio de
Florianópolis Salvador Manaus Produções
Fábricas Janeiro
Curitiba 1 0,8 3 4,5 470
São Paulo 1,5 0,6 2,5 3 400
Aracaju 6 5 1,2 2,8 400
Demanda 350 300 300 120

Faça a modelagem do problema.


3. A MG Auto tem três fábricas: uma em Los Angeles, uma em Detroit e
outra em Nova Orleans, e duas grandes centrais de distribuição: uma em
Denver e outra em Miami. As capacidades das três fábricas para o próximo
trimestre são 1000, 1500 e 1200 carros. As demandas trimestrais nas duas
centrais de distribuição são 2300 e 1400 carros. O mapa de distâncias
entre as fábricas e as centrais de distribuição é dado na tabela a seguir.

Distância Denver Miami


Los Angeles 1000 mi 2690 mi
Detroit 1250 mi 1350 mi
Nova Orleans 1275 mi 850 mi

A empresa encarregada do transporte cobra 8 centavos por milha por


carro. Formule o problema de transporte.

65
7.3 Resolução
Resolução de problemas de transporte

• Os problemas de transporte vistos são casos particulares de problemas de


programação linear
• Como todo problema de PL, é possível a resolução algébrica via algoritmo
simplex.

• Entretanto, é possível aproveitar as particularidades do problema de trans-


porte para resolvê-lo de forma mais eficiente que o caso geral do simplex.

Equilíbrio entre oferta e demanda

• Vamos considerar a priori que existe igualdade entre a oferta e a demanda,


ou seja:

m
X n
X
ai = bj
i=1 j=1

• Quando isso ocorre, dizemos que o problema está em equilíbrio;


• Outros casos serão discutidos adiante.

Exemplo

• Vamos retomar um exemplo visto anteriormente – o de distribuição para


centros de consumo:

• Uma empresa fabrica um determinado produto em três cidades P1 , P2 e


P3 ; o produto destina-se a quatro centros de consumo C1 , C2 , C3 e C4 .
O custo estimado de transportar o produto das fábricas para os centros
consumidores, assim como a demanda de cada centro e a oferta de cada
fábrica é dado na tabela a seguir:

Destino
Origem C1 C2 C3 C4 Oferta
P1 10 7 6 5 9
P2 2 8 9 1 10
P3 11 12 8 4 8
Demanda 7 6 10 4

• Note que a quantidade ofertada e a demandada são as mesmas (27), por-


tanto o problema está em equilíbrio.

66
• O modelo é dado por:

min C = 10x11 + 7x12 + 6x13 + 5x14 + 2x21 + 8x22


+ 9x23 + x24 + 11x31 + 12x32 + 8x33 + 4x34

sujeito a
x11 + x12 + x13 + x14 = 9
x21 + x22 + x23 + x24 = 10
x31 + x32 + x33 + x34 = 8
x11 + x21 + x31 = 7
x12 + x22 + x32 = 6
x13 + x23 + x33 = 10
x14 + x24 + x34 = 4
x11 ≥ 0, x12 ≥ 0, . . . , x34 ≥ 0

• Nas restrições de oferta, substituíram-se as desigualdades por igualdades


– simplificação que reforça o conceito do equilíbrio.

Quadro de soluções

• O quadro de soluções de um problema de transporte é um esquema de


representação do problema em forma de tabela, para a metodologia de
resolução a ser usada.
• Para um problema geral, é dado como

Destino
1 2 ... n Oferta
Origem
c11 c12 ... c1n
1 a1
c21 c22 ... c2n
2 a2
.. .. ..
. ... ... . ... .
cm1 cm2 ... cmn
m am
Demanda b1 b2 ... bn

Voltando ao exemplo anterior, o quadro de soluções é dado por

67
Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9
2 8 9 1
2 10
11 12 8 4
3 8
Demanda 7 6 10 4

Método stepping stone

• Um método bastante usado na resolução de problemas de transporte é o


chamado stepping stone
• Esse método segue os mesmos passos do método simplex:

1. Encontre uma solução básica (factível) inicial;


2. Verifique se a solução é ótima;
3. Se não for ótima, encontre uma nova solução, a partir da atual, e
volte ao passo anterior;
4. Se for ótima, interrompa.

Solução Inicial

• Sabe-se que uma solução inicial deverá ser uma solução básica viável do
sistema formado pelas restrições do modelo
• Além disso:

Teorema
Qualquer equação do sistema formado pelas restrições do modelo pode ser
obtida por uma combinação linear das demais, indicando que só existem
(m + n − 1) equações independentes naquele sistema.

• A consequência (corolário) desse teorema é que a base será formada por


(m + n − 1) variáveis básicas;
• Existem diferentes critérios para encontrarmos a solução básica inicial.

Serão vistas duas maneiras de encontrar a solução inicial:


1. Regra do canto Noroeste
2. Processo de custo mínimo

68
Regra do canto Noroeste
A regra será aplicada ao quadro de soluções segundo os seguintes passos:
1. Comece pela célula superior esquerda (ou seja, o “canto Noroeste” do
quadro), associado ao custo c11 ;
2. Coloque nessa célula a maior quantidade permitida pela oferta (linha) e
demanda (coluna) correspondentes;
3. Atualize os valores da oferta e da demanda que foram modicados pelo
passo (2);
4. Siga para a célula à direita se houver alguma oferta restante e volte ao
passo (2); Caso contrário, siga para a célula inferior e volte ao passo (2).

Regra do Canto Noroeste

• Considere o quadro do exemplo anterior:


Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9
2 8 9 1
2 10
11 12 8 4
3 8
Demanda 7 6 10 4

• Na célula (1, 1) (canto noroeste) atribuímos 7 unidades, que é a quantidade


máxima de demanda do destino 1;
• Assim, toda demanda do destino 1 foi atendida e ainda restaram 2 unida-
des na origem 1.
• Devemos, então, seguir para a célula (1, 2) e atribuir-lhe 2 unidades, que
é o máximo valor que a origem 1 tem disponível.

Regra do Canto Noroeste

• O processo se repete até alcançarmos a célula inferior direita do quadro


de soluções
• Assim, encontraremos uma solução inicial factível
Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 7→ 2↓ 9 2
2 8 9 1
2 4→ 6↓ 10 6

11 12 8 4
3 4→ 4 8 4
Demanda 7 6 4 10 4
 4

69
• No caso, temos

x11 = 7, x12 = 2, x22 = 4, x23 = 6, x33 = 4, x34 = 4 e C = 218

Observação
É importante observar que na regra do canto Noroeste a solução inicial é ob-
tida sem levar em consideração os custos dos transportes cij , isto é, depende
exclusivamente das ofertas das origens e das demandas dos destinos.

Processo de Custo Mínimo

• Este processo para fornecer uma solução inicial leva em consideração, além
das ofertas e das demandas, os valores dos custos
• Os seguintes passos devem ser seguidos:
1. Localize no quadro o menor cij que não tenha oferta ou demanda
nula
2. Coloque na célula a maior quantidade permitida pela oferta e de-
manda correspondente
3. Atualize os valores da oferta e da demanda que foram modicadas pelo
passo (2) e volte ao passo (1).
• O processo se repete até que sejam esgotadas as ofertas e suprimidas as
demandas de todos os destinos

Processo de Custo Mínimo

• No exemplo, o menor cij que aparece é 1, na célula (2, 4).

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9
2 8 9 1
2 10
11 12 8 4
3 8
Demanda 7 6 10 4

• Logo, nesta célula, atribui-se a quantidade máxima de unidades permitida,


levando em conta a restrição de oferta e demanda;

• Insere-se, assim, 4 unidades nesta célula, que é a demanda do destino 4,


e atualiza-se a oferta da origem 2 para 6 unidades uma vez que 4 foram
consumidas.

70
Processo de Custo Mínimo

• Eliminando o destino 4 do quadro, o menor custo é igual a 2 e corresponde


à célula (2, 1);
• A esta célula, serão atribuídas 6 unidades, esgotando-se a oferta da origem
2 e diminuindo a demanda do destino 1 para 1 unidade.
• Este processo se repete até que todas as ofertas sejam consumidas e todas
as demandas atendidas, quando então encontramos uma solução inicial
factível.

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9 9
2 8 9 1
2 6 4 10 6

11 12 8 4
3 1 6 1 8 7 1
Demanda 7 1 6 10 1
 4

• No exemplo, a solução inicial obtida foi:

x13 = 9 x21 = 6 x24 = 4 x31 = 1 x32 = 6 x33 = 1

• Nesse caso, o custo da solução inicial será C = 161

Teste de otimalidade

• Conhecida uma solução básica viável inicial, devemos obter a função obje-
tivo somente em função das variáveis não básicas, para saber se a presente
solução já é ótima.
• Da mesma forma como é feito no método simplex, caso a solução ainda
não seja ótima devemos determinar a variável que entra e a que sai da
base.

Método u − v

• É necessário eliminar as variáveis básicas da função objetivo e, para isso,


devemos somar a ela múltiplos das restrições do modelo.

• Sejam u1 , u2 , . . . , um os valores que irão multiplicar as equações de oferta,


antes de somá-las à função objetivo;

71
• Sejam v1 , v2 , . . . , vn os múltiplos análogos para cada restrição de demanda:

m X
X n
min C − cij xij = 0
i=1 j=1
n
X
x1j = a1 (u1 )
j=1
..
.
n
X
xmj = am (um )
j=1
Xm
xi1 = b1 (v1 )
i=1
..
.
m
X
xin = bn (vn )
i=1
xij ≥ 0, i = 1, . . . , m, j = 1, . . . , n

• Conhecida uma solução básica viável, devemos ter:

cij − ui − vj = 0

para cada uma das (m + n − 1) variáveis básicas, de modo a eliminá-las


da função objetivo.
• Uma vez que o número de variáveis básicas é igual a (m + n − 1) vamos
ter (m + n − 1) equações desse tipo;
• Uma vez que o número de incógnitas ui e vj é (m + n), temos (m + n − 1)
equações, podemos atribuir um valor arbitrário a uma dessas variáveis
sem violar as equações.

• Como exemplo, considere o quadro de soluções do método do custo mí-


nimo.
• Temos as seguintes equações, para as variáveis básicas:

x13 : 6 − u1 − v3 = 0
x21 : 2 − u2 − v1 = 0
x24 : 1 − u2 − v4 = 0
x31 : 11 − u3 − v1 = 0
x32 : 12 − u3 − v2 = 0
x33 : 8 − u3 − v3 = 0

72
• Atribuindo um valor arbitrário a u1 , descobrimos os demais valores de ui
e vj .
• Por exemplo, para u1 = 0, temos:

v1 = 9 v2 = 10 v3 = 6 v4 = 8

u1 = 0 u2 = −7 u3 = 2

• A partir dos valores de ui e vj , calcularemos os coeficientes das variáveis


não-básicas da função objetivo.
• Ou seja:
xij : cij − ui − vj .

• Para este exemplo, temos:

x11 : 10 − 0 − 9 = 1
x12 : 7 − 0 − 10 = −3
x14 : 5 − 0 − 8 = −3
x22 : 8 + 7 − 10 = 5
x23 : 9 + 7 − 6 = 10
x34 : 4 − 2 − 8 = −6

• Uma solução básica viável é ótima se, e somente se, cij − ui − vj ≥ 0 para
todo i, j tal que xij seja uma variável não básica.
• Sendo assim, como as variáveis x12 , x14 e x34 apresentaram coeficientes
negativos a solução ainda não é ótima.

Construindo uma Nova Solução Factível

• Uma vez aplicado o Método u − v, podemos dizer se uma solução básica


é ótima ou não;
• Caso não seja ótima, iniciamos a busca por uma nova solução.
• Como acontece com o método simplex tradicional devemos:

1. Determinar a variável que entra na base


2. Determinar variável que sai da base
3. Identificar a nova solução factível

73
Passo 1: Encontrar a variável que entra na base
• Considerando apenas as variáveis não básicas, devemos escolher aquelas
tais que
cij − ui − vj < 0
.
• No exemplo, escolhemos x12 , x14 e x34 ;
• Garantimos, assim, que o custo total seja reduzido.
• Seguindo esse raciocínio, dentre as candidatas, escolhemos a de menor
valor, ou seja, x34 , cujo coeficiente é −6.

Passo 2: Encontrar a variável que sai da base


• O aumento do valor da variável que entra na base dispara uma reação em
cadeia para compensar mudanças nas demais variáveis básicas, de modo
a continuar satisfazendo as restrições de oferta e demanda.
• A primeira variável básica que chegar a zero se torna a variável que deixa
a base.
• Suponha que a variável x34 entrará na base com um valor θ ≥ 0, que deve
ser o maior possível.

Passo 2 (continuação)
• Estabelecemos, então, um valor θ para variável x34 , o que significa diminuir
x24 na mesma quantidade para restabelecer a demanda igual a 4 (coluna
4)
• Essa mudança requer, então, aumentar x21 na mesma quantidade para
continuar obedecendo a oferta (linha 2)
• Mais uma vez, tal mudança requer diminuir a variável x31 na mesma
quantidade para restabelecer a demanda 7 (coluna 1)
• Esse decrescimento também restabelece a oferta da origem 3 igual 8 (linha
3)

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9 9
2 8 9 1
2 6+θ 4−θ 10
11 12 8 4
3 1−θ 6 1 θ 8
Demanda 7 6 10 4

74
Passo 2 (continuação)
• Devemos, agora, determinar o maior valor permitido a θ, isto é, o valor
de θ que gera a variável básica que se anula mais rapidamente.
• Do quadro anterior, temos:

x21 = 6 + θ
x24 = 4 − θ ≥ 0 ∴ θ ≤ 4
x31 = 1 − θ ≥ 0 ∴ θ ≤ 1

• Então θ = 1 e x31 é a variável que sai da base, por ser a primeira a se


anular.

Passo 3: Encontrar a nova solução básica


• A nova solução básica viável é identificada adicionando-se o valor de θ no
último quadro.
• O valor da variável que sai é x31 = 1, e o quadro ficará:

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 9 9
2 8 9 1
2 7 3 10
11 12 8 4
3 0 6 1 1 8
Demanda 7 6 10 4

• E o custo dessa solução será: C = 155

• Precisamos, agora, saber se a nova solução é ótima.


• Para isso, calculamos novamente os valores de ui e vj :

x13 : 6 − u1 − v3 = 0
x21 : 2 − u2 − v1 = 0
x24 : 1 − u2 − v4 = 0
x32 : 12 − u3 − v2 = 0
x33 : 8 − u3 − v3 = 0
x34 : 4 − u3 − v4 = 0

• Fazendo u3 = 0, temos:

u1 = −2 u2 = −3

v4 = 4 v1 = 5 v3 = 8 v2 = 12

75
• Em seguida, encontramos o valor de cada coeficiente das variáveis não
básicas (cij − ui − vj ):

x11 : 10 + 2 − 5 = 7
x12 : 7 + 2 − 12 = −3
x14 : 5 + 2 − 4 = 3
x22 : 8 + 3 − 12 = −1
x23 : 9 + 3 − 8 = 4
x31 : 11 − 0 − 5 = 6

• Como há coeficientes negativos, a solução não é ótima e a variável que deve


entrar na base é x12 por apresentar o menor coeficiente negativo (−3)

• Finalmente, calculamos o valor de θ:

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 θ 9−θ 9
2 8 9 1
2 7 3 10
11 12 8 4
3 6−θ 1+θ 1 8
Demanda 7 6 10 4

x13 = 9 − θ ≥ 0 ∴ θ ≤ 9
x32 = 6 − θ ≥ 0 ∴ θ ≤ 6
x33 = 1 + θ ≥ 0

• Sendo assim, o valor máximo que θ pode assumir é 6 e a variável que deve
deixar a base é x32

• O valor da variável que sai é x31 = 1 o quadro ficará:

Destino
1 2 3 4 Oferta
Origem
10 7 6 5
1 6 3 9
2 8 9 1
2 7 3 10
11 12 8 4
3 0 7 1 8
Demanda 7 6 10 4

76
• Ao final desse passo, calculamos novamente os valores de ui e vj :

x12 : 7 − u1 − v2 = 0
x13 : 6 − u1 − v3 = 0
x21 : 2 − u2 − v1 = 0
x24 : 1 − u2 − v4 = 0
x33 : 8 − u3 − v3 = 0
x34 : 4 − u3 − v4 = 0

• Para u1 = 0, temos:
v2 = 7 u3 = 2 u2 = −1
v1 = 1 v3 = 6 v4 = 2

• E os valores dos coeficientes:

x11 : 10 − 0 − 1 = 9
x14 : 5 − 0 − 2 = 3
x22 : 8 + 1 − 7 = 2
x23 : 9 + 1 − 6 = 4
x31 : 11 − 2 − 1 = 8
x32 : 12 − 2 − 7 = 3

• Como não há coeficiente negativo a solução é ótima:

x12 = 6 x13 = 3 x21 = 7 x24 = 3 x33 = 7 x34 = 1

C = 137

7.4 Problemas desbalanceados

Para a resolução de problemas desbalanceados usando o stepping-stone:

• Oferta maior que a demanda ( i ai > j bj ):


P P

Introduzir um destino fantasma (também chamado sentinela ou dummy)


cujos custos unitários de transporte sejam todos zero, independente da
origem; e com demanda igual à diferença entre o total ofertado e o total
demandado.

• Demanda maior que oferta ( i ai < j bj ):


P P

Introduzir uma fonte de oferta fantasma (fonte dummy), com custos uni-
tários zero para todos os destinos, e com oferta igual à diferença entre o
total demandado e o total ofertado.

77
7.5 Exercícios

1. Busque a solução do problema 3 de transporte visto anteriormente (MG


Auto).
2. Considere que um produto é fabricado em 3 unidades F1 , F2 , F3 , sendo
posteriormente estocado em 4 depósitos D1 , D2 , D3 e D4 . As capacidades
fabris são a1 = 40, a2 = 80 e a3 = 110, respectivamente para F1 , F2 e F3 .
Nos depósitos devem se atender as demandas: b1 = 20, b2 = 30, b3 = 100
e b4 = 80, respectivamente, para D1 , D2 , D3 e D4 .
Os custos unitários de transportes são dados na tabela:

D1 D2 D3 D4
F1 10 5 12 4
F2 2 0 1 9
F3 13 11 14 6

Faça a modelagem do problema, e em seguida, usando o método stepping-


stone, encontre sua solução ótima.
3. Determine a solução do exemplo da construção da rodovia visto anteri-
ormente, substituindo as desigualdades por igualdades nas restrições de
oferta.
4. Resolva o exercício 2 de modelagem visto anteriormente, recorrendo aos
pontos dummy apropriados.

Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. LACHTERMACHER, G. Pesquisa operacional na tomada de decisões, 2ª.
ed. Rio de Janeiro: Elsevier, 2004.
3. MARINS, F. A. S. Introdução à pesquisa operacional. São Paulo: Cultura
Acadêmica, 2011.
4. NOGUEIRA, F. Pesquisa Operacional, UFJF.
5. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.
Os materiais de parte desta seção foram gentilmente cedidos por Paulo H. R.
Gabriel (FACOM/UFU). Material desenvolvido com base no trabalho da Profa.
Alane A. Silva (UFPE).
Adaptações: Renato Pimentel, FACOM/UFU

78
8 Problema de transbordo
Introdução
• Em determinadas situações, podem-se usar localidades intermediárias en-
tre a origem e o destino dos produtos a serem transportados
– Tais localidades são denominadas de transbordo;
– Podem representar, por exemplo, depósitos ou centros de distribuição
regionais;
– Problemas de transporte contendo estes pontos intermediários são
chamados de problemas de transbordo.

8.1 Modelagem

Em problemas de transbordo, consideram-se alguns aspectos:


• O que é transportado das unidades intermediárias (de transbordo) aos
mercados consumidores não deve ultrapassar a quantidade de produto
que chega a tais pontos;
• Transportar além do necessário pode ser mais caro do que transportar
somente o necessário.
– A quantidade transportada de cada unidade de transbordo aos mer-
cados consumidores deve ser igual a que chega à mesma dos centros
de produção. Logo, deve-se adicionar o modelo de transporte uma
restrição
X X
xij = xjk
i k

para cada unidade de transbordo j.

j 4

x1j + x2j = xj3 + xj4 + xj5 .

79
Exemplo
• (ARENALES, 2006) Considere uma empresa de bebidas com 2 centros de
produção (Araraquara e S. José dos Campos, com um suprimento de 800
e 1 000 unidades, respectivamente) e 3 mercados consumidores principais
– S. Paulo, Belo Horizonte e R. de Janeiro, com demandas respectivas de
500, 400 e 900 unidades.
• A empresa dispõe de 2 depósitos para abastecer tais mercados, localizados
em Campinas e Barra Mansa. Suponha que os mercados sejam abastecidos
somente a partir de tais depósitos.
Os custos unitários de transporte de cada centro de produção para cada
depósito, e de cada depósito para cada mercado consumidor é dado pelas
tabelas que seguem.
• Custos unitários de transporte de centros de produção aos depósitos

Depósitos
Centros de suprimento
Campinas (3) Barra Mansa (4)
Araraquara (1) 1 3
S. José dos Campos (2) 1 2

• Custos unitários dos depósitos aos mercados consumidores

Mercados consumidores
Depósitos
São Paulo (5) B. Horizonte (6) R. Janeiro (7)
Campinas (3) 1 3 3
Barra Mansa (4) 3 4 1

Sendo xij a quantidade transportada do ponto i ao ponto j:

min f (x13 , . . . , x47 ) = x13 + 3x14 + x23 + 2x24


+ x35 + 3x36 + 3x37 + 3x45 + 4x46 + x47
sujeito a

x13 + x14 ≤ 800


x23 + x24 ≤ 1000
x35 + x45 = 500
x36 + x46 = 400
x37 + x47 = 900
x13 + x23 = x35 + x36 + x37
x14 + x24 = x45 + x46 + x47
x13 ≥ 0, x14 ≥ 0, . . . , x47 ≥ 0 .

80
Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.

Os materiais de parte desta seção foram gentilmente cedidos por Paulo H. R.


Gabriel (FACOM/UFU). Material desenvolvido com base no trabalho da Profa.
Alane A. Silva (UFPE).
Adaptações: Renato Pimentel, FACOM/UFU

81
9 Problema de designação
Introdução

• Um caso especial do modelo de transportes é aquele em que cada origem


tem uma unidade disponível e cada destino requer, também, uma unidade.

• Por exemplo:
– Escalar vendedores para pontos de venda;
– Distribuir atividades entre membros de uma equipe;
– Alocar máquinas para resolver diferentes tarefas.

9.1 Modelagem

Exemplo
Deseja-se designar quatro operários para quatro tarefas, de maneira que o nú-
mero total de homens-hora seja mínimo. Cada homem desempenha cada tarefa
em um determinado número de horas, conforme indicam os dados da matriz de
custos a seguir:
Operário 1 Operário 2 Operário 3 Operário 4
Tarefa 1 10 12 15 16
Tarefa 2 14 12 13 18
Tarefa 3 10 16 19 15
Tarefa 4 14 12 13 15

• Diferente dos problemas de transporte tradicionais, temos apenas 1 na


origem e 1 no destino.
• Assim, pelas arestas (“caminhos”) devemos apenas transferir uma ou ne-
nhuma “carga”.
• Logo, nossa variável de decisão pode assumir apenas dois valores: 0 ou 1.
• Definimos, então:
(
1, se a tarefa i for atribuída ao operário j;
xij =
0, caso contrário.

• Assim, o modelo de designação pode ser escrito da seguinte maneira:

Função Objetivo
m X
X n
min C = cij xij
i=1 j=i

82
Restrições
n
X
xij = 1, i = 1, 2, . . . , m
j=1
m
X
xij = 1, j = 1, 2, . . . , n
i=1

xij ∈ {0, 1}

Retornando ao exemplo (m = 4 tarefas para n = 4 operários):

min C = 10x11 + 12x12 + 15x13 + 16x14 + 14x21 + 12x22 + 13x23 + 18x24 +

10x31 + 16x32 + 19x33 + 15x34 + 14x41 + 12x42 + 13x43 + 15x44


sujeito a:

x11 + x21 + x31 + x41 = 1


x11 + x12 + x13 + x14 = 1 x12 + x22 + x32 + x42 = 1

x21 + x22 + x23 + x24 = 1 x13 + x23 + x33 + x43 = 1


x31 + x32 + x33 + x34 = 1 x14 + x24 + x34 + x44 = 1
x41 + x42 + x43 + x44 = 1 xij ∈ {0, 1}

9.2 Resolução algébrica


Algoritmo de Designação

• Devido às suas particularidades, a resolução do problema de designação


torna-se complexa por meio do método simplex.
• De fato, não temos mais variáveis de decisão contínuas, mas discretas
– Somente valores inteiros válidos, mais especificamente, somente 0 ou
1.

• No entanto, existe um método bastante eficiente (baseado no método step-


ping stone) para resolução do problema.
• Esse método é chamado método húngaro.
• Antes de aplicá-lo, porém, devemos verificar se o modelo está equilibrado.

– No modelo de designação, o número de origens deve ser igual ao


número de destinos – Matriz quadrada;
– Caso isso não ocorra, devemos construir origens ou destinos auxilia-
res, com custo de transferência zero.

83
Passos do Método Húngaro
1. Subtrair de cada linha seu menor valor; em seguida fazer o mesmo com
as colunas; cada linha e cada coluna deverá, então, apresentar pelo menos
um elemento nulo (zero).
2. Designar origens para destinos nas células em que aparece o elemento
nulo; dar preferência às linhas ou colunas que tenham apenas um zero
disponível; cada designação efetuada invalida os outros zeros na linha e
na coluna da célula designada; se a designação se completa, o problema
está resolvido.
3. Se não estiver resolvido, devemos:
(a) Cobrir os zeros da tabela com o menor número de traços – horizontais
e verticais – possível;
(b) Subtrair o menor valor dentre os números não cobertos, de todos os
elementos da tabela;
(c) Retornar ao item (2).

Exemplo
• Para a matriz de custos do exemplo anterior:
 
10 12 15 16
14 12 13 18
 
10 16 19 15
14 12 13 15

• Subtraindo o menor elemento das linhas (respectivamente: 10, 12, 10, 12):
 
0 2 5 6
2 0 1 6
 
0 6 9 5
2 0 1 3

• Subtraindo o menor elemento das colunas (respectivamente: 0, 0, 1, 3):


 
0 2 4 3
 2 0 0 3
 
 0 6 8 2
2 0 0 0

• Designando nos zeros de linhas ou colunas (de preferência, linhas ou colu-


nas com apenas um zero) e anulando os outros zeros:
 
0 2 4 3
 2 0 X 3
 
X 6 8 2 
2 X X 0

84
• Não encontramos uma solução ótima, pois a terceira linha não apresenta
uma designação válida.

• Cobrimos, então, os zeros, usando o menor número possível de traços.


 
| 2 4 3
| − − −
 
| 6 8 2
| − − −

• A matriz resultante dessa eliminação é:


 
2 4 3
6 8 2

cujo menor valor é 2

• Subtraímos 2 de toda matriz resultante:


 
0 2 1
4 6 0

• E “recolocamos” essa matriz na original:


 
0 0 2 1
 2 0 0 3
 
 0 4 6 0
2 0 0 0

(note que os valores que havíamos eliminado não são modificados)

• Finalmente, designando novamente nos zeros de linhas ou colunas (de


preferência, linhas ou colunas com apenas um zero) e anulando os outros
zeros:  
0 X 2 1
2 0 X 3
 
X 4 6 0 
2 X 0 X

• Como resultado, temos: x11 = 1, x22 = 1, x34 = 1, x43 = 1, ou seja:


– Tarefa 1 é atribuída ao Operário 1
– Tarefa 2 é atribuída ao Operário 2
– Tarefa 3 é atribuída ao Operário 4
– Tarefa 4 é atribuída ao Operário 3
• Os demais valores de xij são nulos

85
9.3 Exercícios

1. (TAHA, 2008) Os três filhos de Joe Klyne – John, Karen e Terri – querem
ganhar algum dinheiro para gastar durante uma excursão da escola. O Sr.
Klyne escolheu três tarefas para seus filhos: 1) cortar grama; 2) pintar a
porta da garagem; e 3) lavar os carros da família. Para evitar concorrência
entre os filhos, ele pediu que cada um apresentasse propostas fechadas do
que fosse considerado um pagamento justo para realizar cada uma das
tarefas. Ficou combinado que os três concordariam com a decisão do pai
sobre quem executaria qual tarefa. A tabela a seguir resume as propostas
recebidas, em $:

Cortar Pintar Lavar


John 15 10 9
Karen 9 15 10
Terri 10 12 8

Como o Sr. Klyne deve designar as tarefas?

2. Um treinador precisa formar um time de nadadoras para competir em


uma prova olímpica de 400 metros medley. As nadadoras apresentam as
seguintes médias de tempo (em segundos) em provas individuais de 100
metros, em cada estilo:

Livre Peito Borboleta Costas


Flor 54 54 51 53
Gabriela 51 57 52 52
Teresa 50 53 54 56
Tieta 56 54 55 53

Modele esse problema e resolva-o pelo método húngaro.

Referências

1. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

Os materiais desta seção foram gentilmente cedidos por Paulo H. R. Gabriel


(FACOM/UFU). Material desenvolvido com base no trabalho da Profa. Alane
A. Silva (UFPE).
Adaptações: Renato Pimentel, FACOM/UFU

86
Parte IV
Otimização em redes
10 Introdução a problemas em redes
Aplicações tradicionais
Problemas de otimização em redes incluem algumas aplicações comuns, como
(TAHA, 2008):

• Encontrar o modo mais eficiente de interconectar localidades direta ou


indiretamente;

• Determinar a rota ou caminho mais curto entre duas localizações;


• Determinar o fluxo máximo permitido em uma rede, de modo a satisfazer
requisitos de oferta e demanda em diferentes locais;
• Programar atividades de um projeto.

Algumas definições

1. Um grafo ou rede é um conjunto de nós ou vértices conectados ou não


por arestas (também chamadas arcos ou ramos), que representam alguma
forma de relacionamento entre os mesmos.

• As arestas podem conter um peso (valor numérico) associado, repre-


sentando uma grandeza associada ao relacionamento dos 2 nós que
interliga (ex.: a distância entre os nós).

Notação: (N, A), onde N é o conjunto de nós e A é o conjunto de arestas.

87
Exemplo: N = {1, 2, 3, 4, 5},
A = {(1, 2), (1, 3), (2, 3), (2, 5), (3, 4), (3, 5), (4, 2), (4, 5)}

1 3 5

2 4

2. Todo grafo possui um fluxo associado às suas arestas. A aresta é dirigida


ou orientada se permitir o deslocamento somente numa direção. Ex.: no
grafo visto existe fluxo do nó 1 para o nó 2, mas não vice-versa. A rede é
dirigida (dígrafo) se todas as suas arestas forem dirigidas.

3. Caminho: sequência de arestas distintas que ligam 2 nós quaisquer da rede.


Um caminho forma um ciclo se conectar um nó a si mesmo, passando por
outros nós. Ex.: (2, 3), (3, 4) e (4, 2) formam um ciclo.
4. Rede conectada: rede onde todos os pares de nós são conectados por um
caminho (como no exemplo visto).

Exemplo clássico
Pontes de Königsberg, Prússia
Visitar todas as quatro partes A, B, C e D da cidade (atual Kaliningrado, na
Rússia), voltando ao ponto de partida e passando apenas uma vez por cada uma
das sete pontes (a a g) sobre o Rio Prególia.

• Leonhard Euler (séc. XVIII): não há solução possível.

88
Representação do problema como uma rede:

A D

• Nós são as partes de terra e arestas representam as pontes.


• Para qualquer nó, não é possível encontrar um ciclo que passe por todos
os outros nós sem passar mais de uma vez por uma mesma aresta.

11 Problema do menor caminho

• Um dos problemas mais comuns em grafos: determinar o menor caminho


(ou o de menor custo) entre 2 nós.
• Problema bastante comum em aplicações práticas.

Exemplos
• Entrega de uma mercadoria do depósito de uma fábrica até o endereço de
um cliente: Qual o menor caminho a percorrer?
• Pode ser modelado como problema de otimização em redes.
– Nós correspondem às esquinas das ruas – esquinas interligadas por
arestas.
– 2 nós para o depósito (A) e o endereço do cliente (B).
– Qualquer caminho interligando A e B é um caminho real pela cidade.
– Se o peso de cada aresta corresponder à distância entre esquinas, o
comprimento do caminho é a soma dos pesos das arestas entre A e
B.
• (ARENALES, 2006) Vendedor se desloca de São Paulo a Fortaleza para
levar produtos a um cliente importante.
• Ao longo do caminho, visitará outros clientes.
• Se a rede for tal que os nós correspondam às junções das principais ro-
dovias – e as arestas, portanto, aos trechos de rodovia entre dois nós – é
possível definir o peso de cada aresta como sendo o custo líquido esperado
no trecho.

89
• Custo líquido: custo das despesas rodoviárias (combustível, pedágios, ma-
nutenção) menos a comissão esperada no respectivo trecho.
• Algumas arestas podem ter valor negativo, indicando lucro ao invés de
custo.
• O vendedor deve escolher a rota correspondente ao “menor caminho” (me-
nor custo líquido possível) entre os nós correspondentes às duas cidades.
Outras situações podem ser representadas pelo problema do menor cami-
nho.
• (TAHA, 2008): A RentCar está desenvolvendo uma política de reposição
para sua frota de carros, considerando uma projeção de planejamento de
4 anos.
Ao início de cada ano, é tomada uma decisão sobre a conservação em
operação ou a reposição de um carro.
• Um carro deve permanecer em serviço por no mínimo um ano e no máximo
três anos.
• A tabela a seguir dá o custo de reposição em função do ano que o carro
foi adquirido e do número de anos em operação.

Custo de reposição por anos em operação


Adquirido no ano
1 2 3
1 4 000 5 400 9 800
2 4 300 6 200 8 700
3 4 800 7 100 −
4 4 900 − −

• O problema pode ser formulado como um grafo onde os nós 1 a 5 repre-


sentam os anos 1 a 5. As arestas a partir do nó 1 podem chegar somente
aos nós 2, 3 e 4 porque o carro pode operar entre 1 e 3 anos, e assim por
diante. O peso de cada aresta corresponde ao custo de reposição.
• Solução: caminho mais curto entre os nós 1 e 5.

9 800
5 400 7 100

4 000 4 300 4 800 4 900


1 2 3 4 5
6 200

8 700

• Menor caminho: 1 → 3 → 5.

90
11.1 Formulação matemática

• Problema de encontrar o caminho mais curto entre o nó 1 e o nó n4 de


um grafo G = (N, A), onde N = {1, 2, . . . , n}: caso de problema de
transbordo, com única origem no nó 1, e único destino o nó n. Demais:
todos de transbordo.

• Se a cada aresta entre i e j temos um custo (peso) associado cij , deseja-se

n
X X
min C = cij xij
i=1 j∈S(i)

sujeito a

X
x1j = 1,
j∈S(1)
X
xin = 1,
j∈P (n)
X X
xij = xjk j = 2, . . . , n − 1
i∈P (j) k∈S(j)

xij ∈ {0, 1}, i = 1, . . . , n, j = 1, . . . , n

– S(j), P (j) são, respectivamente, o conjunto dos sucessores e prede-


cessores de um nó j.

• xij = 1 indica que a aresta de i a j faz parte do menor caminho entre 1 e


n;
• xij = 0 indica que a mesma não faz parte.

• A 1a. restrição está relacionada ao nó de origem 1, indicando que o menor


caminho passará por um único sucessor.
• A 2a. restrição está relacionada ao nó de destino n, indicando que no
menor caminho encontrado passará por apenas um de seus antecessores.
• As demais (n−2) restrições – dos nós intermediários – indica que no menor
caminho apenas uma aresta chegará e uma aresta sairá de cada um dos
mesmos (os dois somatórios se igualam a 1).
4 Sem perda de generalidade, formulação pode ser estendida para o problema de menor

caminho entre dois nós quaisquer.

91
• Retornando ao exemplo anterior (da reposição de carros):

min C = 4 000 x12 + 5 400 x13 + · · · + 4 900 x45

sujeito a

x12 + x13 + x14 = 1


x25 + x35 + x45 = 1
x12 = x23 + x24 + x25
x13 + x23 = x34 + x35
x14 + x24 + x34 = x45
xij ∈ {0, 1}, i = 1, . . . , n, j = 1, . . . , n

• Na solução ótima (menor caminho):

x13 = x35 = 1,
x12 = x23 = x24 = · · · = x45 = 0,
C = 5 400 + 7 100 = 12 500

• Num problema pequeno (grafo com poucos nós/poucas arestas), o menor


caminho pode ser obtido rapidamente.
• Entretanto, muitos problemas envolvem um grande número de possibili-
dades
• A solução é a implementação de algoritmos para resolução do problema,
tais como:
1. Algoritmo de Dijkstra;
2. Algoritmo de Floyd.

11.2 Algoritmo de Dijkstra

• Caminho mais curto entre um nó de origem específico e qualquer outro


nó.
• Um rótulo é associado a cada nó j, contendo duas informações:
1. O menor custo já encontrado, a partir do nó de origem;
2. Qual o predecessor de j, neste caminho.

92
• Assim, se ui é a menor distância (ou custo) entre o nó de origem e o nó
i, e cij ≥ 0 é o peso/distância/custo da aresta (i, j), então é definido um
rótulo de um nó imediatamente posterior, j:

[uj , i] = [ui + cij , i], cij ≥ 0 .

– O rótulo do nó inicial é [0, −], já que este não possui nenhum prede-
cessor.
– Os rótulos podem ser temporários – podem ser modificados, se pos-
sível achar rota melhor – ou permanentes.

Passo a passo (TAHA, 2008)

1. Iteração 0: Rotule o nó de origem (nó 1) com o rótulo permanente [0, −].


Determine i = 1.
2. Iteração i:

(a) Calcule os rótulos temporários [ui + cij , i] para cada nó j sucessor i,


contanto que j não tenha rótulo permanente:
Atualização
Caso j já esteja rotulado com [uj , k] – i.é., passando por outro nó
k – atualiza-se o rótulo, substituindo [uj , k] por [ui + cij , i] quando
ui + cij < uj .
(b) Se todos os rótulos forem permanentes, pare.
Caso contrário, selecione rótulo [ur , s] cuja distância ur é a menor
dentre todos os temporários (empates resolvidos arbitrariamente).
Sinalize o mesmo como permanente, defina i = r e repita a iteração
i.

Exemplo

• Determine os caminhos mais curtos entre a cidade 1 e as demais:

1 3 5
30 60

100 20 10 50
15
2 4

• Iteração 0: Rótulo permanente [0, −] para o nó 1.

93
• Iteração 1: Nós 2 e 3 podem ser alcançados pelo nó 1 (último rotulado
permanentemente):

Nó Rótulo Condição
1 [0, −] Permanente
2 [0 + 100, 1] = [100, 1] Temporário
3 [0 + 30, 1] = [30, 1] Temporário

• Da tabela anterior, o nó 3 resulta na menor distância (u3 = 30). Logo,


seu rótulo se torna permanente.
• Iteração 2: 4 e 5 podem ser alcançados com base no nó 3:

Nó Rótulo Condição
1 [0, −] Permanente
2 [0 + 100, 1] = [100, 1] Temporário
3 [30, 1] Permanente
4 [30 + 10, 3] = [40, 3] Temporário
5 [30 + 60, 3] = [90, 3] Temporário

• A condição do do rótulo [40, 3] do nó 4 é alterada para permanente.


• Iteração 3: 2 e 5 podem ser alcançados com base no nó 4:

Nó Rótulo Condição
1 [0, −] Permanente
2 [40 + 15, 4] = [55, 4] Temporário
3 [30, 1] Permanente
4 [40, 3] Permanente
5 [90, 3] ou [40 + 50, 4] = [90, 4] Temporário

• O rótulo temporário do nó 2 foi alterado, pois se encontrou um caminho


mais curto do nó 1 para o mesmo.
• O nó 5 possui dois rótulos alternativos, indicando a mesma distância,
u5 = 90.
• A condição do rótulo [55, 4] do nó 2 é alterada para permanente.
• Iteração 4: há somente uma aresta a partir do nó 2, que aponta para o nó
3. Contudo, este último já possui rótulo permanente.
• A lista permanece inalterada em relação à da iteração 3, com exceção de
que agora o rótulo do nó 2 é permanente.
• Único nó com rótulo temporário: 5.
– Como não há arestas partindo do nó 5, seu rótulo se torna perma-
nente, e o algoritmo se encerra.

94
• O caminho mais curto entre o nó 1 e qualquer outro nó da rede é encon-
trado partindo-se do nó de destino desejado e percorrendo-se a rota no
sentido inverso, usando a informação dos rótulos permanentes.

[30, 1](1)

[0, −](0) 1 3 5 [90, 3](2)


30 60
[90, 4](3)
100 20 10 50
15
2 4
[100,
  1]
(1) [40, 3](2)
[55, 4](3)
( ) = iteração

• Por exemplo, o menor caminho do nó 1 ao nó 2:


2 → [55, 4] →
4 → [40, 3] →
3 → [30, 1] →
1

• Ou seja, 1 → 3 → 4 → 2, com distância 55.

11.3 Exercício

(TAHA, 2008) Use o algoritmo de Dijkstra para determinar o caminho mais


curto entre:

1. 1 e 8;
2. 1 e 6;
3. 2 e 6.

3 4 6
2 1 3 2
2 5 6
1 1 5 8
3 7
1 2 6
2 4 7
5 8

95
11.4 Algoritmo de Floyd

• Também chamado de Floyd-Warshall


• Mais geral que Dijkstra:
– Determina o caminho mínimo entre quaisquer dois nós do grafo.

• Representação do grafo de n nós: matriz de distâncias n × n.


– Inicialmente, entrada (i, j) dá o peso cij da aresta entre i e j, caso
exista; ou ∞, caso contrário.

Operação tripla de Floyd

• Base do algoritmo de Floyd


• Dados 3 vértices distintos i, j e k como na figura abaixo, sempre que

dik + dkj < dij ,

otimiza-se a distância entre i e j pela troca da rota direta i → j pela rota


i → k → j.

k
dik dkj

i j
dij

• dij é o menor custo ou menor distância encontrada entre i e j, e não


necessariamente será dado pelo custo cij da aresta que liga i a j, caso
exista.

Algoritmo

• Etapa 0: Define-se a matriz de distâncias inicial, D0 , onde:



cij ,
 se j é sucessor de i;
(0)
dij = ∞, se j não é sucessor de i;

não definido, i = j

96
Define-se também a matriz de sequência de nós S0 :

− 2

... j ... n
1 − ... j ... n
S0 =  . .
 
.. .. .. .. 
 .. .. . . . .
1 2 ... j ... −
(
(0) j, i 6= j;
– Ou seja, sij = .
não definido, i = j

• Etapa geral k (k = 1, . . . , n): Atualização da matriz de distâncias, de


Dk−1 para Dk .

1. Definem-se a linha k e a coluna k como a linha pivô e a coluna pivô


da etapa.
2. Aplica-se a operação tripla para todo i e j, testando-se a condição
(k−1) (k−1) (k−1)
dik + dkj < dij , i 6= j, i 6= k, j 6= k.

Caso a condição seja satisfeita:


(k) (k−1) (k−1)
– Em Dk : dij = dik + dkj .
(k)
– Em Sk : sij = k.

Resultado

• Após n etapas, pode-se determinar o menor caminho entre os nós i e j


com base nas matrizes Dn e Sn :

1. Em Dn , dij representa a menor distância entre i e j.


2. A partir de Sn , determine o nó intermediário k = sij , que dá como
resultado a rota i → k → j:
– Se sik = k e skj = j, pare (todos os nós intermediários foram
encontrados);
– Senão, repita o procedimento entre os nós i e k e entre os nós k
e j.

97
Exemplo

• Encontrar os caminhos mais curtos entre quaisquer dois nós do grafo:

2 4
3 5
4
1 6 5
10 15

• Todas as arestas, com exceção de uma, permitem fluxo em ambos os sen-


tidos. Somente não há ligação direta do nó 5 para o nó 3.

• Iteração 0: matrizes D0 e S0 .

− 3 10 ∞ ∞ − 2
   
3 4 5

 3 − ∞ 5 ∞ 
1 −
 3 4 5
D0 = 
 10 ∞ − 6 15 
 S0 = 
1 2 − 4 5
 ∞ 5 6 − 4  1 2 3 − 5
∞ ∞ ∞ 4 − 1 2 3 4 −

• Iteração 1: k = 1 ⇒ Linha pivô 1 e coluna pivô 1 (sombreadas em D0 ).


Nas operações triplas, os únicos elementos atualizados são d23 e d32 (des-
tacados em D0 e S0 ):
(1) (0) (0) (1)
1. Substitui-se d23 = d21 + d13 = 3 + 10 = 13. Logo, s23 = 1.
(1) (0) (0) (1)
2. Substitui-se d32 = d31 + d12 = 10 + 3 = 13. Logo, s32 = 1.
• Logo:

− 3 10 ∞ ∞ − 2
   
3 4 5

 3 − 13 5 ∞ 

1 −
 1 4 5
D1 = 
 10 13 − 6 15 
 S1 = 
1 1 − 4 5
 ∞ 5 6 − 4  1 2 3 − 5
∞ ∞ ∞ 4 − 1 2 3 4 −

98
• Iteração 2: k = 2 ⇒ Linha pivô 2 e coluna pivô 2 (sombreadas em D1 ).
Nas operações triplas, os únicos elementos atualizados são d14 e d41 (desta-
cados em D1 e S1 ). Logo, de forma análoga à iteração anterior, obtém-se:

− 3 10 8 ∞ − 2
   
3 2 5

 3 − 13 5 ∞ 

1 −
 1 4 5
D2 = 
 10 13 − 6 15 
 S2 = 
1 1 − 4 5
 8 5 6 − 4  2 2 3 − 5
∞ ∞ ∞ 4 − 1 2 3 4 −

• Iteração 3: k = 3. Atualizando-se os itens em destaque nas matrizes D2 e


S2 , obtém-se D3 e S3 :

− 3 10 − 2
   
8 25 3 2 3

 3 − 13 5 28 

1 −
 1 4 3
D3 = 
 10 13 − 6 15 
 S3 = 
1 1 − 4 5
 8 5 6 − 4  2 2 3 − 5
∞ ∞ ∞ 4 − 1 2 3 4 −

• Iteração 4: k = 4. Atualizando-se os itens em destaque nas matrizes D3 e


S3 , obtém-se D4 e S4 :

− − 2
   
3 10 8 12 3 2 4

 3 − 11 5 9 

1 −
 4 4 4
D4 = 
 10 11 − 6 10 
 S4 = 
1 4 − 4 4
 8 5 6 − 4  2 2 3 − 5
12 9 10 4 − 4 4 4 4 −

• Iteração 5: k = 5 (linhas e coluna em destaque em D4 ). Porém, nenhuma


melhoria é possível.

• Mesmo que modificações fossem necessárias para k = 5, esta seria a última


iteração, pois o grafo possui 5 nós.
• As matrizes D4 e S4 contêm tudo que precisamos para determinar o ca-
minho ótimo entre 2 nós quaisquer do grafo.
• Exemplo: nó 1 ao nó 5:
(4)
– De D4 : custo ótimo 12 – menor distância, dada por d15 .
(4)
– De S4 : Qual a rota? (a rota mais curta só é direta se sij = j)

99
(4)
1. Como s15 = 4 6= 5, a rota inicialmente é dada como 1 → 4 → 5.
(4)
2. Como s14 = 2 6= 4, o segmento (1, 4) não é uma conexão direta
entre 1 e 4, e a rota agora se torna 1 → 2 → 4 → 5.
(4) (4) (4)
3. Como s12 = 2, s24 = 4 e s45 = 5, nenhum desmembramento é
desnecessário e portanto 1 → 2 → 4 → 5 é o caminho ótimo.

11.5 Exercícios

1. (TAHA, 2008) Use o algoritmo de Floyd para determinar, a partir do


exemplo anterior, as distâncias mais curtas:

(a) Do nó 5 ao nó 1;
(b) Do nó 3 ao nó 5;
(c) Do nó 5 ao nó 3;
(d) Do nó 5 ao nó 2;

2. (TAHA, 2008) A empresa de telefonia Tell-All atende seis áreas. As dis-


tâncias via satélite estão no grafo abaixo. Quais as rotas mais eficientes
que devem ser estabelecidas entre quaisquer duas áreas?

2 400
700 200 6
100
1 300 4
200 700 300 500
600 5
3

Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

100
12 Problema do fluxo máximo

• Outro problema bastante comum que pode ser modelado por grafos;

• Deseja-se determinar o maior fluxo possível que pode ser enviado de um


nó a outro do grafo.
• Única origem e único destino.

Exemplos

• Qual a capacidade máxima de produção de um determinado bem por uma


empresa?
– Roteiros distintos durante o processo;
– Diferentes centros de fabricação, cada qual com uma certa capacidade
instalada.

• Redes de tubulações. Exemplo, de petróleo: Qual a capacidade máxima


da rede entre poços e refinarias?

– Produto bruto (petróleo cru) transportado de poços para refinarias;


– Estações intermediárias de impulsores e de bombeamento instaladas;
– Cada segmento tem uma taxa de descarga máxima de fluxo;
– Segmento pode ser uni ou bidirecional, dependendo do projeto.

• (TAHA, 2008) Uma rede típica para o problema do escoamento do petróleo


é dada pelo grafo abaixo:

1 4 7

3 6 8
Origem Destino
2 5 9

Poços Impulsores Refinarias

• Representação: a solução do problema exige o acréscimo de uma origem


única e um destino único, usando as arestas unidirecionais de capacidade
infinita tracejadas no grafo.

101
Representação do fluxo

• Dada uma aresta (i, j), com i < j, pode-se usar a notação

(C̄ij , C̄ji )

para representar as respectivas capacidades de fluxo nas direções i → j e


j → i.
• Para eliminar ambiguidades, pode-se representar tais capacidades num
grafo, colocando-se
C̄ij próximo ao nó i e
C̄ij próximo ao nó j, como na figura abaixo.

C̄ij C̄ji
i j

Cortes
Corte
Conjunto de arestas que, se eliminado do grafo, causa um rompimento total do
fluxo entre o nó de origem e o nó de destino.

• A capacidade do corte corresponde à soma das capacidades de suas arestas;


• O corte com menor capacidade determina o fluxo máximo da rede.
– Devem ser considerados todos os cortes possíveis.

Exemplo

• Considere o grafo que segue, onde considera-se como origem nó 1 e destino


nó 5:
corte 2
corte 1
0 4 corte 3
20
10 5
1 30 0
20 0 5
0
30 10
0 0 20
2 40
0 3

102
• Capacidades dos cortes representados:

Corte Arestas associadas Capacidade


1 (1, 2), (1, 3), (1, 4) 20 + 30 + 10 = 60
2 (1, 3), (1, 4), (2, 3), (2, 5) 30 + 10 + 40 + 30 = 110
3 (2, 5), (3, 5), (4, 5) 30 + 20 + 20 = 70

• Pelos cortes ilustrados, conclui-se que o fluxo máximo da rede não pode
exceder 60 unidades.
• Para determinar o fluxo máximo, entretanto, todos os cortes precisam ser
encontrados.

Exercício
Encontre no grafo anterior 2 cortes adicionais, e determine sua capacidade.

12.1 Formulação matemática

• Seja o problema de se determinar o fluxo máximo entre o nó 1 e o nó n


de um grafo G(N, A) com n nós.
– Sem perda de generalidade, pois a interpretação se estende para
quaisquer dois nós em questão.

• (ARENALES, 2006) Seja y a quantidade a ser enviada de 1 para n.


Se xij é a quantidade de fluxo da aresta (i, j), então deseja-se

max y

sujeito a

X X
x1j − xk1 = y, nó de origem 1
j∈S(1) k∈P (1)
X X
xij = xki , i = 2, . . . , n − 1
j∈S(i) k∈P (i)
X X
xnj − xkn = −y, nó de destino n
j∈S(n) k∈P (n)

0 ≤ xij ≤ C̄ij , ∀(i, j) ∈ A .

– S(i) e P (i) são o conjunto dos sucessores e predecessores do nó i.

• Isto é, deseja-se determinar xij para toda (i, j) ∈ A que maximize o fluxo
entre origem e destino.

103
• Reescrevendo-se as restrições técnicas, com as variáveis do lado esquerdo:

X X
x1j − xk1 − y = 0,
j∈S(1) k∈P (1)
X X
xij − xki = 0, i = 2, . . . , n − 1
j∈S(i) k∈P (i)
X X
xnj − xkn + y = 0,
j∈S(n) k∈P (n)

Aresta de retorno

• Das restrições anteriores, podemos associar a coluna correspondente à


variável y a uma nova aresta (n, 1), chamada aresta de retorno.
• A aresta de retorno (n, 1) tem fluxo C̄n1 = y (com C̄1n = 0) e o nó 1,
portanto, passa a ser sucessor de n, ∴ S(n) = S(n) + {1}. Da mesma
forma, P (1) = P (1) + {n}, e podemos reescrever o problema como

max xn1

sujeito a

X X
xij − xki = 0, i = 1, . . . , n
j∈S(i) k∈P (i)

0 ≤ xij ≤ C̄ij , ∀(i, j) ∈ A .

Exemplo

• Representando a aresta de retorno no grafo visto anteriormente, temos:

0 4
20
10 5
1 30 0
0 20 0 5
0
10 C̄51
0 30 0 20
2 40
0 3

104
Modelagem do problema de fluxo máximo:

0 ≤ x12 ≤ 20
max x51
0 ≤ x13 ≤ 30
0 ≤ x14 ≤ 10
sujeito a 0 ≤ x23 ≤ 40
0 ≤ x25 ≤ 30
x12 + x13 + x14 − x51 = 0 0 ≤ x34 ≤ 10
x23 + x25 − x12 = 0 0 ≤ x35 ≤ 20
x34 + x35 − x13 − x23 − x43 = 0 0 ≤ x43 ≤ 5
x43 + x45 − x14 − x34 = 0 0 ≤ x45 ≤ 20
x51 − x25 − x35 − x45 = 0 0 ≤ x51 ≤ C̄51

Formulação alternativa

• TAHA (2008) propõe uma formulação mais simples, dispensando a ideia


da aresta de retorno.
• Basta considerar o problema de maximização de uma das duas funções
objetivo:
P
1. z1 = j∈S(1) x1j (maximização da saída do nó de origem), ou
P
2. z2 = k∈P (n) xkn (maximização de entrada no nó de destino).
• Em ambos os casos, somente as restrições dos nós intermediários são con-
sideradas.

• As duas funções objetivo acima são equivalentes.


• As duas formulações (com e sem aresta de retorno) são equivalentes:
– No exemplo visto, basta isolar x51 na restrição do nó de origem (ou
nó de destino), e na função objetivo.

Por exemplo, considerando-se o problema de maximizar a saída do nó 1:

max x12 + x13 + x14 0 ≤ x12 ≤ 20


0 ≤ x13 ≤ 30
sujeito a 0 ≤ x14 ≤ 10
0 ≤ x23 ≤ 40
x23 + x25 − x12 = 0
0 ≤ x25 ≤ 30
x34 + x35 − x13 − x23 − x43 = 0
0 ≤ x34 ≤ 10
x43 + x45 − x14 − x34 = 0
0 ≤ x35 ≤ 20
0 ≤ x43 ≤ 5
105
0 ≤ x45 ≤ 20
12.2 Algoritmo de fluxo máximo

• (TAHA, 2008) Encontrar rotas de passagem com fluxo líquido positivo


entre nós de origem e destino
• Cada caminho compromete parte ou toda a capacidade das suas arestas
ao fluxo do grafo.

• Por exemplo, numa aresta (i, j) com capacidade inicial (C̄ij , C̄ji ) (a má-
xima), quando parte desta capacidade é usada numa rota de escoamento,
temos uma capacidade residual (cij , cji ).

– À medida que as arestas são reutilizadas, os valores cij , cji são atua-
lizados.
• Rótulos: quando um nó j recebe um fluxo aj de algum nó i ∈ P (j),
definimos um rótulo ao mesmo,

[aj , i],

de modo similar ao visto no algoritmo de Dijkstra.

Etapas (do nó 1 ao nó n)

Etapa 1 : Para cada aresta (i, j), iguale à capacidade residual à inicial:

(cij , cji ) = (C̄ij , C̄ji )

Rotule o nó de origem com o rótulo [∞, −]. Determine i = 1 e passe para


a etapa seguinte.

Etapa 2 : seja S̄(i) o conjunto dos sucessores do nó i ainda não rotulados,


ligados a ele por arestas com capacidades residuais não nulas (ainda podem
ser usadas).

• Se há pelo menos um nó em S(i) nesta situação (S̄(i) 6= ∅), passe à


etapa 3.
• Caso contrário, passe à etapa 4.

Etapa 3 : Determine k ∈ S̄(i) tal que:

cik = max {cij } .


j∈S̄(i)

Ou seja, qual dos sucessores permite a passagem com maior fluxo possível.
Determine ak = cik e rotule o nó k com [ak , i].

106
• Se k = n, o nó destino foi rotulado, portanto uma rota de passagem foi
obtida. Siga para a etapa 5.
• Caso contrário, faça i = k e retorne à etapa 2.

Etapa 4 : (Percorrer a rota inversa).


• Se i = 1, nenhuma rota de passagem é possível: prossiga para etapa
6.
• Caso contrário, seja r ∈ P (i) o nó rotulado imediatamente antes do
nó i. Elimine i temporariamente dos nós adjacentes a r, determine
i = r e volte à etapa 2.

Etapa 5 : (Capacidades residuais).


Defina os nós da p-ésima rota de passagem do nó origem 1 ao nó destino
n como Np = (1, k1 , k2 , . . . , n).
O fluxo máximo ao longo da rota é dado por

fp = min{a1 , ak1 , ak2 , . . . , an }

A capacidade residual de cada aresta ao longo da rota é reduzida de fp da


direção do fluxo e aumentada de fp na direção contrária:

• (cij − fp , cji + fp ) se o fluxo for de i para j;


• (cij + fp , cji − fp ) caso contrário.

Restaure quaisquer nós eliminados na etapa 4. Determine i = 1 e volte à


etapa 2 para tentar uma nova rota de passagem.

Etapa 6 : (Solução).

1. Se m rotas de passagem são encontradas, o fluxo máximo da rede é


dado por
F = f1 + f2 + · · · + fm
2. Para toda aresta (i, j) ∈ E, dadas as capacidades iniciais (C̄ij , C̄ji ) e
finais (cij , cji ), o fluxo ótimo é dado por:
(
C̄ij − cij , se C̄ij > cij ;
xij =
C̄ji − cji , se C̄ji > cji .

(os dois casos não ocorrem simultaneamente).

107
Ajuste da etapa 5

• Explicado pelo exemplo que segue:

[5, 1] [5, 3]
2 2 2 0
0 55 5 05 5 5
5 0 [5, 3] 0 0 [5, 2] 0 5
[∞, −] 1 5 4 [∞, −] 1 5 4 1 0 4
00 0 05 5 50 5
3 5 3 0 3 0
[5, 2] [5, 1]
Rota: 1 → 2 → 3 → 4 Rota: 1 → 3 → 2 → 4 Nenhuma rota
f1 = 5 f2 = 5 de passagem
(a) (b) (c)

– Na rede (a), fluxo máximo é 5, e as arestas que definem a rota têm


seu fluxo alterado de (5, 0) para (0, 5).
– O mesmo vale para a rota em (b), e, após as alterações, não há mais
rota possível.

• O que houve de (b) para (c) foi o cancelamento de um fluxo anteriormente


comprometido na direção 2 → 3.
• O algoritmo “lembra” que este fluxo foi previamente usado pois aumenta-
mos a capacidade na direção inversa de 0 para 5 (pela etapa 5).

Exemplo

• Considere a rede de 5 nós vista previamente, no exemplo dos cortes:

0 4
20
10 5
1 30 0
20 0 5

10 0
0 30 0 20
2 3
40 0

• Determinar o fluxo máximo da rede.

108
Iteração 1
Inicialmente, iguale as capacidades residuais iniciais às capacidades iniciais
(C̄ij , C̄ji ) de cada aresta.
Este passo somente é feito antes da iteração 1 (primeira rota).

Etapa 1 : Determine a1 = ∞, e rotule nó 1 com [∞, −]. Determine i = 1.


Etapa 2 : S̄(1) = {2, 3, 4} =
6 ∅. Passar para etapa 3.

Etapa 3 : k = 3, pois c13 = max{c12 , c13 , c14 } = 30.


Determine a3 = c13 = 30 e rotule o nó 3 com [30, 1].
Determine i = 3 e volte à etapa 2.
Etapa 2 : S̄(3) = {4, 5} =
6 ∅. Passar para etapa 3.

Etapa 3 : k = 5 e a5 = c35 = max{10, 20} = 20.


Rotule o nó 5 com [20, 3].
Uma rota de passagem foi obtida. Passe para a etapa 5.

Etapa 5 : Rota determinada pelo caminho inverso a partir do nó de destino 5:


5 → [20, 3] →
3 → [30, 1] →
1

• Logo, N1 = {1, 3, 5} e f1 = min{a1 , a3 , a5 } = 20.


• As capacidades residuais das arestas utilizadas na rota N1 são

(c13 , c31 ) = (30 − 20, 0 + 20) = (10, 20)


(c35 , c53 ) = (20 − 20, 0 + 20) = (0, 20)

Rota encontrada na iteração 1 (capacidades residuais ainda não ilustradas).

0 4
20
10 5
[∞, −] 1 30 0
20 f1 = 20
0 5 [20, 3]

10 0
0 30 0 20
2 3 [30, 1]
40 0

109
Iteração 2

Etapa 1 : Determine a1 = ∞, e rotule nó 1 com [∞, −]. Determine i = 1.

Etapa 2 : S̄(1) = {2, 3, 4}.


Etapa 3 : k = 2 e a2 = max{20, 10, 10} = 20.
Rotule o nó 2 com [20, 1] e repita a etapa 2, com i = 2.
Etapa 2 : S̄(2) = {3, 5}.

Etapa 3 : k = 3 e a3 = c23 = 40.


Rotule o nó 3 com [40, 2] e repita a etapa 2, com i = 3.
Etapa 2 : S̄(3) = {4} (pois c35 = 0).

Etapa 3 : k = 4 e a4 = c34 = 10.


Rotule o nó 4 com [10, 3] e repita a etapa 2, com i = 4.
Etapa 2 : S̄(4) = {5} (pois nós 1 e 3 já foram rotulados).
Etapa 3 : Temos k = 5 e rótulo [20, 4]. Nova rota: passe à etapa 5.

Etapa 5 : Rota N2 = {1, 2, 3, 4, 5} e


f2 = min{∞, 20, 40, 10, 20} = 10.
As capacidades residuais das arestas utilizadas na rota N2 são

(c12 , c21 ) = (20 − 10, 0 + 10) = (10, 10)


(c23 , c32 ) = (40 − 10, 0 + 10) = (30, 10)
(c34 , c43 ) = (10 − 10, 5 + 10) = (0, 15)
(c45 , c54 ) = (20 − 10, 0 + 10) = (10, 10)

Rota encontrada na iteração 2 (capacidades residuais ainda não ilustradas).

[10, 3]
0 4
20
10 5
[∞, −] 1 10 0
20 f2 = 10
0 5 [20, 4]

10 20
0 30 20 0
[20, 1] 2 3 [40, 2]
40 0

110
Iteração 3

Etapa 1 : nó 1: a1 = ∞, [∞, −]. Determine i = 1.

Etapa 2 : S̄(1) = {2, 3, 4}.


Etapa 3 : k = 2 e a2 = c12 = max{10, 10, 10} = 10.
Rotule o nó 2 com [10, 1] e repita a etapa 2, com i = 2.
Etapa 2 : S̄(2) = {3, 5}.

Etapa 3 : k = 3 e a3 = c23 = 30.


Rotule o nó 3 com [30, 2] e repita a etapa 2, com i = 3.
Etapa 2 : S̄(3) = ∅ (pois c34 = c35 = 0). Vá para a etapa 4.

Etapa 4 : Rota inversa – [30, 2] indica o antecessor r = 2.


Elimine o nó 3 desta iteração, determine i = r = 2 e volte à etapa 2.
Etapa 2 : S̄(2) = {5} (pois nó 3 foi temporariamente eliminado).
Etapa 3 : Temos k = 5 e rótulo [30, 2]. Nova rota: passe à etapa 5.

Etapa 5 : Rota N3 = {1, 2, 5} e


f3 = min{∞, 10, 30} = 10.
As capacidades residuais das arestas utilizadas na rota N3 são

(c12 , c21 ) = (10 − 10, 10 + 10) = (0, 20)


(c25 , c52 ) = (30 − 10, 0 + 10) = (20, 10)

Rota encontrada na iteração 3 (capacidades residuais ainda não ilustradas).

0 4
10
10 15
[∞, −] 1 10 10
10 f3 = 10
0 5 [30, 2]

0 20
10 30 20 0
[10, 1] 2 3 X[30,
X
 2]
30 10  X

111
Iterações 4 a 6
Exercício
Encontre as rotas N4 e N5 (ambas com fluxo 10)5 .
Iteração 6: Todas as arestas partindo do nó 1 têm residual 0.
Portanto, todas as rotas possíveis foram encontradas. Passa-se à Etapa 6

Etapa 6: Solução do problema

• Fluxo máximo da rede:

F = f1 + f2 + · · · + f5 = 20 + 10 + 10 + 10 + 10 = 60

• Fluxos xij nas arestas: consideram-se as capacidades residuais iniciais e


as finais (cij , cji ) encontradas na etapa 5 das iterações:

Aresta (C̄ij , C̄ji ) − (cij , cji ) Fluxo Direção


(1, 2) (20, 10) − (0, 20) = (20, −20) 20 1→2
(1, 3) (30, 0) − (0, 30) = (30, −30) 30 1→3
(1, 4) (10, 0) − (0, 10) = (10, −10) 10 1→4
(2, 3) (40, 0) − (40, 0) = (0, 0) 0 −
(2, 5) (30, 0) − (10, 20) = (20, −20) 20 2→5
(3, 4) (10, 5) − (0, 15) = (10, −10) 10 3→4
(3, 5) (20, 0) − (0, 20) = (20, −20) 20 3→5
(4, 5) (20, 0) − (0, 20) = (20, −20) 20 4→5

12.3 Exercícios

1. Determine a capacidade excedente de todas as arestas do exemplo, após


a solução do problema.
2. Determine qual o fluxo máximo, para a rede exemplificada, considerando-
se agora como origem o nó 2 e destino o nó 4.

Referências

1. ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H.


Pesquisa operacional: para cursos de engenharia. Rio de Janeiro: Elsevier
Brasil, 2006.
2. TAHA, H. Pesquisa operacional. 8ª. ed. São Paulo: Prentice Hall, 2008.

5 Nó 3 está novamente à disposição para as rotas N4 e N5

112

Você também pode gostar