Document

Propaganda
UDESC – Universidade do Estado de Santa Catarina
DCC – Departamento de Ciência da Computação
Curso: TADS
Disciplina: Pesquisa Operacional - PES – SI
Notas de Aula
Avaliação: 3 (três) provas ( P1*0,4 + P2*0,3 + P3*0,3 )
Referências bibliográficas:
1.) Taha, H.A. Pesquisa Operacional, 8 edição,
Pearson, 2008;
2.) EHRLICH, Pierre Jacques. Pesquisa operacional:
Curso introdutório. 7. ed. São Paulo: Atlas,
c1991;
3.) SHAMBLIN, James E; STEVENS, G. T. Pesquisa
operacional: uma abordagem básica . São Paulo:
Atlas, 1979
4.) Apostila “Programação Linear” – professor
Maurício Pereira dos Santos. Instituto de
Matemática e Estatística. Universidade do Estado
do Rio de Janeiro. 2000
I.)
INTRODUÇÃO
I.1) O QUE É PESQUISA OPERACIONAL ?
“ METODOLOGIA DE ESTRUTURAR PROCESSOS
APARENTEMENTE NÃO ESTRUTURADOS POR MEIO DA
CONSTRUÇÃO DE MODELOS. UTILIZA UM CONJUNTO DE
TÉCNICAS QUANTITATIVAS COM O INTUITO DE
RESOLVER OS ASPECTOS MATEMÁTICOS”
Pierre Ehrlich-Pesquisa Operacional– Curso Introdutório,
Editora Atlas, 1991
A PO É aplicada à problemas que estão relacionados à
gestão de operações de uma empresa ou organização.
Para isto utiliza um procedimento sistêmico para
solução dos problemas, buscando uma solução que seja
ótima para o problema;
Objetivo do curso: Capacitar o aluno na
formulação e resolução de problemas clássicos de
pesquisa operacional.
I.2) Aplicações da PO:
Programação Matemática
 Linear (mais utilizada)
 Não Linear
 Inteira
Modelos de rede
 Transportes
 Designação
 Grafos
 Teoria das Filas
 Modelos de Simulação
 Modelos de Estoques
 Programação Dinâmica
I.3) Fases de implementação da PO:
a.) Definição do problema. Identificar os três elementos
de um problema de decisão:
. descrição das alternativas de decisão;
. determinação do objetivo do estudo;
. especificação das limitações sob as quais o sistema
modelado funciona.
b.) Construção do modelo. Tentativa de traduzir a
definição do problema em relações matemáticas. Um
modelo é sempre uma aproximação do mundo real.
c.) Validação do modelo. Verifica se o modelo proposto
faz ou não o que diz fazer.
d.) Implementação da solução.
O MODELO GERAL DE PO PODE SER ORGANIZADO NO
SEGUINTE FORMATO:
MAXIMIZAR ou MINIMIZAR FUNÇÃO OBJETIVO
SUJEITO Á RESTRIÇÕES
Exemplo_01: Um fabricante produz dois tipos de ligas ( A
e B) e deseja MAXIMIZAR a receita bruta de sua
empresa. A tabela abaixo ilustra as composições das
ligas, seus preços, limitações na disponibilidade de
matéria-prima.
atividades
itens
Cobre
Zinco
Chumbo
Preço unitário
Venda
Liga_tipo_A
Liga_tipo_B
2
1
1
1
2
3
$30
$50
Matéria-prima
disponivel
16
11
15
a.) IDENTIFICAR QUAIS SÃO AS VARIÁVEIS DE DECISÃO
Seja Xa a quantidade de liga A a ser produzida;
Seja Xb a quantidade de liga B a ser produzida.
b.) IDENTIFICAR A FUNÇÃO OBJETIVO:
MAX Z = 30*Xa + 50*Xb
c.) IDENTIFICAR AS RESTRIÇÕES:
2*Xa + Xb <= 16 (cobre)
Xa + 2*Xb <= 11 ( zinco)
RESTRIÇÕES DE DISPONIBILIDADE DE
RECURSOS
Xa + 3*Xb <= 15 ( chumbo)
Xa >= 0 ; Xb >= 0 ( não pode fabricar quantidades negativas)
Resolução do problema de programação linear:
Analise o gráfico a ser apresentado abaixo:
X2
Chumbo
X1 = 7 ; X2 = 3 ; Z = 310
Ponto Ótimo
Zinco
Regiao
Permissivel
Cobre
X1
As inequações de restrição constituem semi-planos no
espaço, e a intersecção entre elas define o espaço de
solução;
A função objetivo Z que desejamos MAXIMIZAR
constitui uma família de retas paralelas;
Devemos encontrar, no espaço de solução, aquela que
proporciona o valor ótimo da função objetivo
De todas estas retas escolhemos a que maximiza Z e tem
pelo menos um ponto pertencente à região permissível.
Traçando a paralela mais alta possível, que toque pelo
menos um ponto no espaço solução. Este ponto
corresponde à solução ótima desejada.
O ponto ótimo é sempre um dos vértices do espaço
solução.
Substituindo os valores, Xa=7 e Xb=2 obtidos, nas
restrições observamos que todo o cobre e todo o zinco
disponíveis são utilizados !
Entretanto, sobram duas unidades de chumbo não
utilizadas !
Exemplo_02: Resolver graficamente
problema de programação linear
MAX Z = X1 + 2*X2
-X1 + 3*X2 <= 9
X1 – 2*X2 <= 0
2*X1 + X2 <= 10
2*X1 + X2 >= 5
X1 >= 0 ; X2 >= 0.
o
seguinte
Exemplo_03: Resolver graficamente
problema de programação linear
MAX Z = 2*X1 + X2
X1 + 4*X2 <= 24
X1 + 2*X2 <= 14
2*X1 – X2 <= 8
X1 – X2 <= 3
X1 >= 0 ; X2 >= 0.
Resposta : Z = 16.
o
seguinte
Exemplo_04: Uma empresa fabrica produtos 1 e 2. Cada
produto requer um tempo de processamento em cada
um dos três departamentos da empresa. Os lucros de
cada produto são respectivamente $1,00 e $1,50.
Maximizar o lucro, respeitando a capacidade de
produção.
Tempo de processamento:
Departamentos
Produto
A
B
C
1
2
1
4
2
2
2
2
Disponibilidade:
Depto.
Horas
disponíveis
A
160
B
120
C
280
Objetivo: maximizar o lucro
Restrições: horas disponíveis nos departamentos
x1 = quantidade do produto 1 a ser fabricado
x2 = quantidade do produto 2 a ser fabricado
max z = x1 + 1,5x2
S. A .
2x1 +
2x2  160
x1 +
2x2  120
4x1 +
2x2  280
x1, x2  0
2. PROGRAMAÇÃO LINEAR
SISTEMAS DE EQUAÇÔES LINEARES
Dado um sistema de equações lineares:
a11x1 + a12x2 + ... + a1nxn = b1
a21x1 + a22x2 + ... + a2nxn = b2
:
:
:
:
:
:
:
:
an1xn + an2x2 + ... +annxn = bn
através de operações entre as equações podemos
chegar a
x1
= b1
x2
= b2
.
.
.
xn
.
= bn
que equivale ao sistema original,
diretamente a solução. Gauss-Jordan
mas
fornece
O sistema só tem solução única se
No. de equações = No. de incógnitas
Quando temos mais incógnitas, o sistema é subdeterminado. Dado um sistema com m equações e n
incógnitas (n > m), podemos arbitrar n-m variáveis = 0 e
resolver para as restantes.
A forma padrão é:
x1
x2
.
+ a1 m+1xm+1
+...+ a1 nxn
=1
+ a2 m+1xm+1
+...+ a2 nxn
=2
.
.
.
xm + am m+1xm+1
+...+ am nxn = m
|__________________|
|_________________|
Dependentes
independentes
COMO MODELAR MATEMATICAMENTE UM PROBLEMA
DE PROGRAMAÇÃO LINEAR ?
MAX (ou Min) Z = C1X1 + C2X2 + . . . + CnXn
objetivo)
(função
Sujeito à (restrições):
A11*X1 + A12*X2 + ... + A1n*Xn >= ou <= b1
A21*X1 + A22*X2 + ... + A2n*Xn >= ou <= b2
...
Am1*X1 + Am2*X2 + ... + Amn*Xn >= ou <= bn
Onde:
Bi >= 0 para i = 1,...,m
X1 >= 0,..., Xn >= 0
n = atividades que competem, sendo x1,...,xn seus níveis
de atividade
Cj = é o aumento em Z por unidade de atividade j.
m = são os recursos cujos níveis são b1,...,Bm
Aij = é o quanto de recurso i é consumido pela atividade
j.
i = recurso;
j = atividade.
O problema resume-se na Maximização ou Minimização
de uma função linear, a função objetivo, sujeito à
restrições também lineares.
Formulação Equivalente:
max z
=
min –z
n
c x
j1
j
n
j
 (-c )x
j1
j
j
Exemplo_05: Considere a produção de ração animal a
partir de três ingredientes básicos: osso, soja e farinha
de peixe. Os principais nutrientes da ração são: proteína
e cálcio. As necessidades mínimas desses nutrientes por
kilo de ração são 30 % de proteína e 50% de cálcio. Os
custos e quantidades de nutriente (em porcentagem)
por ingrediente são dados na tabela.
Devemos determinar as quantidades de cada
ingrediente a compor a ração de tal forma que as
necessidades mínimas sejam satisfeitas com o menor
custo possível.
Exemplo_06: Problema da dieta balanceada. Sabe-se
que os alimentos, leite, carne e ovos fornecem as
quantidades de vitaminas dadas na tabela abaixo:
Vitaminas Leite(litro) Carne (kg)
A
C
D
Custo
unitário
0,25 mg
25
2,5
2 mg
20
200
$2,2
$17,0
Ovos (dúzia)
Qte. Diária
mínima
10 mg
10
10
$4,2
1 mg
50
10
Deseja-se calcular quais as quantidades de leite, carne e
ovos, a fim de satisfazer as quantidades diárias mínimas
de nutrientes (vitaminas) a um custo mínimo.
Exemplo_07:
Uma fábrica utiliza dois tipos de insumos:
. A a um custo unitário Ca e com uma quantidade
máxima disponível Na;
. B a um custo unitário Cb e com uma quantidade
máxima disponível Nb.
Estes insumos podem ser processados pelos Processos I,
II ou III, a um custo operacional nulo. Serão produzidos
os produtos alpha, beta e gama, que alcançarão preços
de venda P_alpha, P_beta, P_gama respectivamente
(preços unitários).
- Uma unidade de A processada em I produz,
simultaneamente: 5*alpha e 2*gama;
- Uma unidade de A junto com duas unidades de B
conjuntamente
processadas
em
II
produz,
simultaneamente: 3*alpha, 9*beta e 8*gama;
- Uma unidade de B processada em III produz
simultaneamente: 1*alpha, 4*beta, 1*gama.
Formule o problema com programação linear de modo a
minimizar o lucro.
Exemplo_08: Deseja-se formular o problema de modo a
calcular qual a proporção de presuntos, lombinhos e
pernis a serem defumados e qual a proporção a vender
sem defumar. O objetivo é maximizar o lucro, supondo
que toda a produção possa ser vendida.
Podem ser processados (defumados), no máximo,
106 presuntos defumados por dia, sem pagar hora extra.
Também pode-se processar (defumar), no máximo, 315
lombinhos e pernis por dia sem ter que pagar hora
extra.
Disponibilidade de matéria-prima: 480 presuntos,
400 lombinhos e 230 pernis.
Custo de produção para produto acabado (por
unidade)
itens
Defumado
(horário
Normal)
Defumado
(horário extra)
Sem defumar
presunto
5,18
lombinho
4,76
pernil
5,62
6,58
5,54
6,92
0,5
0,48
0,51
A diferença nos preços de venda entre defumado e não
defumado é:
Presunto = 6;
Lombinho = 5;
Pernil = 6.
Adotar a seguinte nomenclatura:
X1 = qte. de presuntos defumados em hora extra;
X2 = qte. de presuntos defumados em hora normal;
X3 = qte. de presuntos vendidos sem defumar;
X4 = qte. de lombinhos defumados em hora extra;
X5 = qte. de lombinhos defumados em hora normal;
X6 = qte. de lombinhos vendidos sem defumar;
X7 = qte. de pernis defumados em hora extra;
X8 = qte. de pernis defumados em hora normal;
X9 = qte. de pernis vendidos sem defumar.
Exemplo_09: Um fazendeiro deseja otimizar as
plantações de arroz e milho na sua fazenda. O seu lucro
por unidade de área plantada de arroz é 5 u.m., e por
unidade de área plantada de milho é 2 u.m. . As áreas
plantadas de arroz e milho não devem ser maiores que 3
e 4 respectivamente. Cada unidade de área plantada de
arroz consome 1 homem-hora, e cada unidade de área
plantada de milho consome 2 homens-hora. A
disponibilidade total de homens-hora é 9.
Objetivo: maximizar o lucro
Restrições: área máxima, mão de obra
x1 = área plantada de arroz
x2 = área plantada de milho
max z = 5x1 + 2x2
x1
S. A .
 3 (área de arroz)
x2  4 (área de milho)
x1 + 2x2  9 (mão de obra)
x1, x2  0
Exemplo_10: Um aluno da disciplina PES, que não quer
ser identificado, quer aproveitar os conhecimentos
adquiridos em programação linear para resolver um
problema particular muito grave. Atualmente ele possui
duas namoradas: Maria e Luisa, das quais gosta com a
mesma intensidade. Ele fez alguns calculos e constatou
que:
– Uma saída de 3 horas com Maria, elegante e
sofisticada, custa $120,00; já com Luisa, mais
simples, o gasto é de $60,00.
– Cada saída com Maria consome 3000 calorias;
com Luisa, mais extrovertida e alegre, o gasto
de energia é o dobro.
– Seus afazeres (trabalho, estudos) consomem
muito do seu tempo e energia, de modo que,
mensalmente lhe sobram 30 horas e 40000
calorias para as atividades sociais. Depois de
pagar as contas da república onde mora,
sobram $360,00 para diversão.
– O objetivo desse aluno é planejar sua vida
social, de modo a obter o número máximo de
saídas. Formular e resolver o problema
graficamente.
Objetivo: maximizar número de saídas
Restrições: dinheiro, tempo e calorias
x1 = saídas com Maria
x2 = saidas com Luisa
max z = x1 + x2
120x1 +
S.A.
3x1 +
60 x2  360
3x2
 30
3000x1 + 6000x2  40000
x1 , x 2  0
Exemplo_11: Apresentar o gráfico do problema:
max z = 4x1 + 2x2
2x1 + x2  12
S. A .
 8
x1
x2  4
x1, x2
0
Geometria e álgebra em programação linear
Conjuntos convexos: um conjunto é convexo se, unindo
dois pontos do conjunto por um segmento de reta, todos
os pontos deste segmento também pertencerão ao
conjunto.
Inserir figuras ilustrativas
Semi-espaços: uma solução considerando a equação
abaixo
a1*x1 + a2*x2 + ... + na*xn = b
divide o espaço R de dimensão n em 3 subconjuntos:
. = dá um hiperplano, com uma reta em RxR, e um plano
em RxRxR
. > dá um semi-espaço aberto;
. < dá um semi-espaço aberto;
Por exemplo, dado a reta 2x + 4y = 8 , divide o espaço
como mostrado na figura abaixo:
y
>
<
x
=
. Poliedrico convexo: é dado pela intersecção de um
número finito de semi-espaço fechado em R**m.
. Conjunto poligonais convexos podem ser: limitado e
não-limitado
limitado
Não- limitado
O conjunto convexo das soluções aceitáveis é chamado
de conjunto factível ou conjunto viável.
Semi-espaços são conjuntos convexos, e a intersecção de
um número finito de semi-espaços fechados em Rn é um
conjunto poliédrico convexo
Exemplo_12: Maximizar Z = 2x + 5y
Sujeito à:
X+2y <= 4
X – y <= 4
X >= 1
Y >= -1
y
x=1
x
y = -1
Seja f uma função linear definida num conjunto poliédrico
fechado convexo S. A função S assume seu máximo ou
seu mínimo num ponto extremo de S. Portanto, para
resolver um problema de programação linear basta
encontrar os pontos extremos e selecionar aquele que
maximiza (ou minimiza) a função objetiva.
Para resolver um problema de P.L., basta encontrarmos
os pontos extremos e avaliar a função objetivo em cada
um.
Para que um problema de P.L. possa ser resolvido
algebricamente, as inequações devem ser transformadas
em igualdades.
Adicionamos variáveis de folga, também não negativas:
Max
z = c1x1 +c2x2 +c3x3
a11x1 + a12x2 + a13x3 ≤ b1
 a11x1 + a12x2 + a13x3 + x4 = b1
S. A . a21x1 + a22x2 + a23x3 ≥ b2  a21x1 + a22x2 + a23x3 + x5 = b2
a31x1 + a32x2 +a33x3 = b3
 a31x1 + a32x2 + a33x3 = b3
Dado um conjunto de m equações linearmente
independentes e n incógnitas, onde n > m, se define
como solução básica a solução para o conjunto de
equações em que ( n – m) variáveis são feitas iguais a 0 e
as restantes são obtidas da resolução do sistema de
equações.
Exemplo_13: Seja o sistema abaixo:
X1 + X2 + 3*X3 – X4 + X5 = 6
X1 + 2*X2 + 2*X3 – X4 + 2*X5 = 2
Temos m = 2 e n = 5
Cada solução básica terá (5 - 2) = 3 variáveis iguais a 0,
por exemplo X3, X4 e X5 e ( 5 - 3) = 2 obtidas da resolução
do sistema.
Ou seja, X1 = 10 e X2 = -4. É óbvio que variando-se as
variáveis feitas iguais a zero teremos novas soluções
básicas.
O número de soluções básicas que podem ser obtidas é
dado por:
(
)
As variáveis diferentes de zero são chamadas de variáveis
básicas e as iguais a zero são chamadas de variáveis não
básicas.
As variáveis de folga são acrescentadas as inequações
para transformá-las em equações.
Exemplo_14: Dado o seguinte problema de PL
(MAX) Z = 20*X1 + 60X2
S.A.
70*X1 + 70*X2 <= 4900
90*X1 + 50*X2 <= 4500
2*X1 <= 80
3*X2 <= 180
X1,X2 >= 0
Acrescentando as variáveis de folga às quatro restrições
do modelo:
(1)
(2)
(3)
(4)
70*X1 + 70*X2 + F1 = 4900
90*X1 + 50*X2 +F2 = 4500
2*X1 +F3 = 80
3*X2 + F4 = 180
Tem-se então um sistema de equações lineares com 4 (m)
equações e 6 (n) variáveis. Então tem-se:
( )
= 15 soluções básicas
Observação: Embora as variáveis de folga sejam usadas
para transformar inequações em equações, elas possuem
um significado físico relacionado ao problema que está
sendo modelado.
Cada solução básica do exemplo 13 será obtida
escolhendo-se 2 variáveis e fazendo-as iguais à zero, e
resolvendo–se o sistema para as 4 variáveis restantes.
Vide a tabela a seguir:
número
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
não básicas
Báscias
condição
x1=0 , x2=0 F1=4900 , F2=4500 , F3 = 80 , F4 = 180 praticável
x1=0, F1=0 X2=70 , F2 = 1000 , F3 = 80 , F4 = -30 impraticável
x1=0, F2=0 X2=90, F3 = 80 , F4 = -90 , F1 = -1400 impraticável
x1=0, F3=0
O = 80
impossível
x1=0, F4=0
F3=80, x2=60 , f1 = 700 , f2 = 1500
praticável
x2=0, F1=0 F3 =-60, F2 = -1800 , F4 = 180 , X1 =70 impraticável
x2=0, F2=0 F3 = -20 , F1 = 1400 , X1 = 50 , F4 = 180 impraticável
x2=0, F3=0 F1= 2100, F2 = 900 , X1 = 40, F4=180
praticável
x2=0, F4=0
O =180
impossível
F1=0, F2=0
X1 = 25 , X2 = 45 , F3 = 30 , F4 = 45
praticável
F1=0, F3=0 X1 = 40 , X2 = 30 , F2 = -600 , F4 = 90 impraticável
F1=0, F4=0 X1 = 10 , X2 = 60 , F3 = 60 , F2 = 600
praticável
F2=0, F3=0 X1 = 40, X2 = 18, F1 = 840 , F4 = 126
praticável
F2=0, F4=0X1 = 16,7 , X2 = 60 , F3 = 46,7 , F1 = -466,6impraticável
F3=0, F4=0 X1 = 40 , X2 = 60 , F1 = -2100 , F2 =2100 impraticável
Z
0
3600
800
3200
3800
1880
X2
4
R3
3
2
14
5
R4
15
12
10
11
9
13
6
1
8
7
X1
R2
R1
No gráfico podemos observar que a solução ótima só
pode ser um dos vértices (pontos extremos) do espaço
solução, pois, eles são justamente as soluções básicas
praticáveis. Isto vem do fato de que o espaço solução é
sempre um conjunto convexo onde cada solução básica
corresponde a intersecção de tantas restrições quantas
forem as variáveis de decisão do modelo ( duas, x1 e x2,
neste exemplo).
Observação: Se um modelo de PL possui uma única
solução ótima, então ela é uma solução básica do sistema
de equações lineares formado pelas restrições do modelo
acrescidas das suas respectivas variáveis de folga.
Observação: No caso de termos mais de uma solução
ótima, teremos sempre um número infinito de soluções
ótimas, pois, serão ótimos todos os pontos que unem
dois vértices (pontos extremos) adjacentes, ou seja, todos
os pontos de um dos lados do espaço solução.
Observação: O exemplo apresentado indica que esta
maneira de resolver o problema de PL torna-se
impraticável, quando por exemplo, temos um problema
com 50 restrições e 100 variáveis. Neste caso teríamos
10**29 possíveis soluções básicas !!!
Método Simplex
O método simplex de PL usa os conceitos básicos de
álgebra matricial para achar a intersecção de duas ou
mais linhas ou planos. O Simplex é uma maneira
sistemática de pesquisar os vértices de um poliedro
convexo, de modo a em um número finito de iterações
fornecer a solução, ou indicar que esta não existe.
Começa com alguma solução viável que satisfaz todas as
restrições e sucessivamente obtêm soluções nas
intersecções que oferecem valores melhores para a
função objetivo.
O método simplex examina apenas um número pequeno
destas soluções básicas para encontrar a solução básica.
Duas soluções básicas praticáveis são adjacentes se elas
diferem por apenas uma variável não básica. Como o
total de variáveis é a soma das não básicas com as
básicas, elas diferem também por uma variável básica.
Considerando o exemplo anterior, então temos que as
seguintes soluções básicas são adjacentes:
Número 01:
VB
VNB
F1 = 4900
X1 = 0
F2 = 4500
X2 = 0
F3 = 80
F4 = 180
Número 08:
VB
VNB
F1 = 2100
F3 = 0
F2 = 900
X2 = 0
X1 = 40
F4 = 180
O número de soluções básicas praticáveis adjacentes à
cada solução básica é igual ao número de variáveis de
decisão do modelo ( duas, x1 e x2 no caso deste
exemplo). Assim, pode ser visto no gráfico onde são
mostradas as soluções básicas, a solução 1 tem duas
adjacentes: a 5 e a 8.
O método Simplex considera que: se uma solução básica
é melhor que as suas adjacentes, então ela é a solução
ótima.
Aplicação do método Simplex:
• colocar na forma padrão, adicionando as
variáveis de folga
• montar o quadro do SIMPLEX, conforme o
seguinte esquema:
• I: matriz identidade
x (atividades)
x (folga)
A
I
b
-c
0
0
i.)
ii.)
iii.)
Selecionar a coluna com o valor de C mais
negativo;
Encontre para todas as linhas i, a menor
relação Bj/Aij , com Aij > 0. O valor escolhido
será o pivô.
Proceder com a operação-pivô que tal maneira
a tornar o coeficiente Xij igual a 1 e todos os
outros coeficientes da coluna j nulos.
Identificar um novo ponto extremo.
iv.)
Repita as etapas i, ii e iii até que não haja mais
valores negativos na última linha c.
Exemplo_16:
Max z = 30 x1 + 50 x2
2 x1 + x2  16
x1 + 2x2  11
x1 + 3x2  15
x1 , x 2  0
forma padrão :
2 x1 + x2 + x3
x1 + 2x2
+ x4
x1 + 3x2
+ x5
= 16
= 11
= 15
x1
x2
x3
x4
x5
2
1
1
0
0
16
1
2
0
1
0
11
1
3
0
0
1
15
0
0
0
0
-30
-50
A tabela inicial (acima) apresenta como base inicial, por
ser mais simples, as variáveis de folga. Se analisarmos o
gráfico a seguir corresponde a tomar-se a origem como
solução básica inicial.
Porém, para otimizar a solução acima é necessário aplicar
o método simplex ( fases de i a iv), em que serão
identificados os outros pontos extremos do poliedro
convexo, e garantindo assim que estaremos passando de
um ponto extremo a outro.
X1
2
1
1
-30
X2
1
2
3
-50
X3
1
0
0
0
X4
0
1
0
0
X5
0
0
1
0
b
Z
16
11
15
0
0
0
0
1
Esta posição representa o primeiro máximo a ser
atingido.
Divide L3 por 3:
X1
2
1
1/3
-30
X2
1
2
1
-50
X3
1
0
0
0
X4
0
1
0
0
X5
0
0
1/3
0
Multiplica L3 por (-2) e soma com L2:
b
16
11
15
0
Z
0
0
0
1
X1
2
1/3
1/3
-30
X2
1
0
1
-50
X3
1
0
0
0
X4
0
1
0
0
X5
0
- 2/3
1/3
0
b
16
1
5
0
Z
0
0
0
1
Multiplica L3 por (-1) e soma com L1:
X1
1 2/3
1/3
1/3
-30
X2
0
0
1
-50
X3
1
0
0
0
X4
0
1
0
0
X5
- 1/3
- 2/3
1/3
0
b
11
1
5
0
Z
0
0
0
1
Multiplica L3 por 50 e soma com L4:
X1
1 2/3
1/3
1/3
-13 1/3
X2
0
0
1
0
X3
1
0
0
0
X4
0
1
0
0
X5
b
- 1/3 11
- 2/3
1
1/3
5
16 2/3 0
Z
0
0
0
250
Realizadas as operações Pivô na coluna 2, continua-se o
processo selecionando agora a coluna 1, linha 2.
X1
1 2/3
1/3
1/3
-13 1/3
X2
0
0
1
0
X3
1
0
0
0
X4
0
1
0
0
X5
- 1/3
- 2/3
1/3
16 2/3
Multiplicou-se a segunda linha por 3.
b
11
1
5
0
Z
0
0
0
250
Multiplicou-se a segunda linha por -1/3 e somou-se á
terceira linha.
Multiplicou-se a segunda linha por -5/3 e somou-se à
primeira.
Multiplicou-se a segunda por 40/3 e somou-se a quarta
linha.
Realizadas as operações Pivo na coluna 1, continua-se o
processo selecionando agora a coluna 5, linha 1.
X1
0
1
0
0
X2
0
0
1
0
X1
0
1
0
0
1
0
0
0
X2
0
0
1
0
X3
X4
-5
3
-1
40
X3
X4
1/3
-1 2/3
2/3
- 1/3
- 1/3
2/3
3 1/3 23 1/3
X5
3
-2
1
-10
b
6
3
4
0
X5
1
0
0
0
Z
0
0
0
290
b
2
7
2
Solução ótima é dada por:
X1 = 7; X2 = 2 ; X3 = 0 ; X4 = 0 ; X5 = 2 ; Z = 310.
Z
0
0
0
310
As variáveis X3 e X4 são não básicas.
X2
X1 = 7 ; X2 = 3 ; Z = 310
Ponto Ótimo
X1
– Algoritmo do Simplex:
– Escolha do pivô:
• na última linha (linha z), escolha o
coeficiente mais negativo (escolha da
coluna)
• para a coluna selecionada, escolher a
menor relação bj / aij (para aij >0) (escolha
da linha)
– Escolhido o pivô, fazemos as operações de linha
para que este seja 1 e os outros elementos da
coluna sejam 0.
– Os passos são repetidos até que não existam
elementos negativos na última linha (linha z), o
que significa que a função objetivo não pode
ser melhorada.
Exercícios SIMPLEX
1 Max z = 5x1 + 2x2
x1
 3
S. A . x2  4
x1 + 2x2  9
x1, x2  0
2 Max z= 3x1 + 2x2 + 6x3
6x1 + 3x2 - 4x3  60
2x1 - 4x2 + 4x3  40
S.A
3x1 + 3x2 + 3x3  60
x1 , x 2 , x 3  0
3 Max z = 4x1 + 2x2
2x1 + x2
S. A .
x1
 12
 8
x2  4
x1, x2  0
4 Min z = - x1 + 2x2
-x1 + x2
 1
S.A 6x1 + 4x2  24
x2  2
x1,x2  0
5 Max z = 2x1 + x2
x1 + x 2
 5
S.A x1 + 2x2  8
X1  4
x1,x2  0
Resposta: X1 = 4 ; X2 = 1 ; Z = 9)
6 Max z = 7x1 + 3X2 + 2X3
5x1 + 2x2 + 2X3
 19
S.A 2x1 + x2 + 2X3  8
x1,x2, x3,  0
Resposta: Z = 27
Solução 1
x1
x2
x3
x4
x5
b
1
0
1
0
0
3
0
1
0
1
0
4
1
2
0
0
1
9
-5
-2
0
0
0
0
1
0
1
0
0
3
0
1
0
1
0
4
0
2
-1
0
1
6
x2 = 3 (área de milho)
0
-2
5
0
0
15
x3 = 0 (folga área de arroz)
1
0
1
0
0
3
0
0
1/2
1
-1/2
1
0
1
-1/2
0
1/2
3
0
0
4
0
1
21
Resposta:
x1 = 3 (área de arroz)
x4 = 1 (folga área de milho)
x5 = 0 (folga mão de obra)
z = 21 (lucro)
Resposta:
Solução 2
x1 = 0
fab prod 1
x1
x2
x3
x4
x5
x6
b
x2 = 5
fab prod 2
6
3
-4
1
0
0
60
x3 = 15
fab prod 3
2
-4
4
0
1
0
40
3
3
3
0
0
1
60
-3
-2
-6
0
0
0
0
8
-1
0
1
1
0
100
½
-1
1
0
1/4
0
10
3/2
6
0
0
-3/4
1
30
0
-8
0
0
3/2
0
60
x4 = 105 sobra rec 1
x5 = 0
sobra rec 2
x6 = 0
sobra rec 3
z=100
lucro total
33/4
0
0
1
7/8
1/6
105
¾
0
1
0
1/8
1/6
15
¼
1
0
0
-1/8
1/6
5
2
0
0
0
1/2
4/3
100
Solução 3
x1
x2
x3
x4
x5
b
2
1
1
0
0
12
1
0
0
1
0
8
0
1
0
0
1
4
-4
-2
0
0
0
0
I
II
III
1
1/2
1/2
0
0
6
0
-1/2
-1/2
1
0
2
0
1
0
0
1
4
0
0
2
0
0
24
Resposta1:
Múltiplas
soluções
x1 = 6
x2 = 0
Fazendo mais uma iteração :
x3 = 0
x4 = 2
1
1/2
1/2
0
0
6
x5 = 4
0
-1/2
-1/2
1
0
2
z = 24
0
1
0
0
1
4
0
0
2
0
0
24
1
0
1/2
0
-1/2
4
0
0
-1/2
1
1/2
4
0
1
0
0
1
4
0
0
2
0
0
24
X1
X2
X3
X4
X5
b
X1
X2
X3
X4
X5
B
-1
1
1
0
0
1
0
5/3
1
1/6
0
5
6
4
0
1
0
24
1
2/3
0
1/6
0
4
0
1
0
0
1
2
0
1
0
0
1
2
-1
2
0
0
0
0
0
8/3
0
1/6
0
4
X1= 4
X2=0
X3=5
X4=0
X5=2
Z = -4
Outras formas de restrição
As restrições podem ser também na forma:
>= ou =.
A restrição >= tem dois efeitos principais:
. reduz o tamanho do campo viável ou aceitável;
. requer uma modificação do método básico de solução.
A restrição do tipo >= (por exemplo, X2 >= 10) exclui o
ponto (0,0). Assim a solução inicial antes utilizada, isto é,
quando todas as variáveis decisórias eram zero, não é
viável.
Como o algorítmo Simplex procede de uma solução viável
para uma situação melhorada, deve-se obter um novo
ponto de partida.
Existem vários métodos para tratar este problema. Um
deles utiliza-se de uma variável artificial. Convertendo
uma desigualdade em uma igualdade, a variável de folga
deve ser acrescentada do outro lado da desigualdade.
Exemplo_16:
x1
x2
x3
x4
1
1
1
0
10
1
2
0
-1
8
-1
1
0
0
2
-2
-2
0
0
0
Com ser pode ser verificado, não identifica-se a matriz
identidade. Este problema é resolvido acrescentando
uma outra variável denominada de variáveis artificiais (y1
e y2).
Então, a solução do problema inicia-se com a introdução
de variáveis artificiais, de modo a obter-se uma forma
padrão, ou seja, um ponto extremo, mas não um ponto
extremo do problema inicial.
x1 + x2 + x3
x1 +2x2
= 10
- x4 + y1
-x1 + x2
= 8
+ y2 = 2
Dado que a variável artificial foi acrescida o quadro
simplex é construído:
x1
x2
x3
x4
y1
y2
1
1
1
0
0
0
10
1
2
0
-1
1
0
8
-1
1
0
0
0
1
2
-2
-2
0
0
0
0
0
As variáveis artificiais não fazem parte do problema,
portanto não podem fazer parte da solução. Como
“elimina-las” encontrando uma solução inicial válida?
Para estes tipos de restrição, deve-se empregar o
SIMPLEX em duas fases.
Assim:
Fase I: encontrar uma solução factível inicial,
minimizando a soma das variáveis artificiais sobre um
novo conjunto.
Fase II : Otimizar função objetivo z
Fase I:
a. Em cada expressão (restrição) <= ou >= introduzir as
variáveis de folga. Em seguida, em cada expressão que
era = ou >= , adicionar uma variável artificial.
b. Monte a tabela
c. Adicione no final da tabela mais uma linha (W) de
coeficientes Dij debaixo da última linha, onde:
Dij = -( A1j + A2j + . . . + Amj) e inserir zeros nas colunas
correspondentes às variáveis artificiais. Adicione debaixo
de B, na última linha:
Bw = - ( B1 + B2 + . . . + Bm).
No cálculo do valor de Dj e Bw só se consideram os
elementos Aij e Bj das linhas que incluem variáveis
artificiais.
d. Aplicar o algoritmo do Simplex utilizando a última linha
como sendo a de decisão para a inclusão de variáveis de
base.
e.) Quando a última linha tiver chegado ao valor ótimo,
verifique W. Se W = 0, quer dizer que a soma das
variáveis artificiais é 0 (zero) e , portanto, obtivemos um
ponto extremo do problema original.
Desprezar todas as variáveis não básicas Xj, cujos
elementos da última linha sejam > 0, variáveis artificiais,
de modo que elas nunca possam ser diferentes de zero.
Abandone a última linha. Agora, aplique o Simplex
empregando a nova última linha.
Se W é diferente de zero, isto quer dizer que o problema
inicial tem um conjunto de restrições inconsistentes e não
há solução factível para o problema original !
forma padrão:
x1 + x2 + x3
x1 + 2x2
-x1 + x2
= 10
- x4 + y1
= 8
+ y2 = 2
x1
x2 x3 x4 y1 y 2
1
1
1
0
0
0
10
1
2
0
-1 1
0
8
-1
1
0
0
0
1
2
-2
-2
0
0
0
0
0
0
-3
0
1
0
0
z
-10 w
Resolvendo usando a linha w como linha de decisão.
Exemplo_17
Dado a função objetivo:
Max Z = -X1 -6X2 +7X3 – X4 – 5X5
S.A.
5X1 – 4X2 + 13X3 – 2X4 + X5 >= 20
X1 – X2 + X3 – X4 + X5 = 8
2X1 + X2 - X3 + 4X4 <= 15
X1,..., X5 >= 0
Neste exemplo, introduz-se as variáveis artificiais Y1
e Y2 além das de folga X6 e X7.
A função objetivo do problema artificial é dada por:
Min Y1 + Y2 = Max w = - Y1 – Y2, ou seja:
W + y1 + Y2 = 0
Sujeito à:
5X1 ... + X5 – X6
+ Y1
X1 ... +X5
= 20
+ Y2 = 8
2X1 + ...
+ X7
X1,..., X7 >= 0 , Y1 >= 0 , Y2 >= 0
Z
W
5X1 - 4X2 + 13X3
X1 - X2 + X3
2X1 + X2 - X3
1
6
-7
-6 5
-14
- 2X4 + X5 - X6
- X4 + X5
+ 4X4
1
5
0
3
-2
1
Y1
Y2
+X7
0 0
0 0
0
0
20
8
15
0
-28
Exemplo_18
Maximizar a função objetivo sujeito as seguintes
restrições:
Max Z = 2X1 + X2 + X3
S.A.
3X1 + 4X2 + X3
=5
X1 + X2 + 2X3 = 3
X1 >= 0 ; X2 >= 0 ; X3 >= 0
L1
L2
L3
L4
X1
3
1
-2
-4
L1
L2
L3
L4
X1
3/4
1/4
-1 1/4
- 1/4
L1
L2
L3
L4
X1
5/7
1/7
-1 1/7
0
X2
4
1
-1
-5
X3
1
2
-1
-3
Y1
1
0
0
0
X2
1
0
0
0
X3
1/4
1 3/4
- 3/4
-1 3/4
Y1
1/4
- 1/4
1/4
1 1/4
X2
1
0
0
0
X3
0
1
0
0
Y1
2/7
- 1/7
1/7
1
Y2
0
1
0
0
b
5
3
0
-8
Y2
0
1
0
0
Y2
- 1/7
4/7
3/7
1
b
1 1/4
1 3/4
1 1/4
-1 3/4
L4/4
Z
W
L1 / 4
L1 - L2
Z L1 + L3
W 5L1 + L4
b
1
1
2
0
(-1/4)L2 + L1
L2/(7/4)
Z (3/4)L2 + L3
W (7/4)L2 + L4
Com W = 0 chega-se ao final da fase I, e dá-se início a fase
II, abaixo apresentada.
L1
L2
L3
X1
5/7
1/7
-1 1/7
X2
1
0
0
X3
0
1
0
1
1
2
L1
L2
L3
X1
1
0
0
X2
1 2/5
- 1/5
1 3/5
X3
0
1
0
b
1 2/5
4/5
3 3/5
b
Ao obter-se W = - y1 - y2 igual à zero no terceiro tableau,
chegou-se ao ponto X2 = 1 ; X3 = 1 ; X1 = 0, como base
inicial para o problema original. Neste ponto Z já tem um
valor não nulo.
No quarto tableaux abandona-se o problema artificial e
concentra-se em otimizar o problema original.
Soluções múltiplas:
Se uma variável não-básica tem coeficiente de custo
igual à zero numa solução ótima, isto quer dizer que ela
pode ser introduzida na base sem alterar o valor da
função objetiva.
Portanto, também é uma base ótima (ponto
extremo) e qualquer combinação linear destes dois
pontos também é ótima.
Exemplo_19
Encontra-se a solução do problema graficamente e pelo
método Simplex e análise ambas as soluções.
Max Z = 4X1 + 2X2
SA:
2X1 + X2 <= 12
X1 <= 8
X2 <= 4
X1, X2 >= 0
Conclusão:
Geometricamente, isto pode ser visualizado dizendose que o hiperplano definido pela função objetiva ( reta
no plano, no caso de duas variáveis) encosta numa das
arestas do conjunto convexo que define o espaço das
soluções factíveis (viáveis). Portanto, neste caso, qualquer
combinação linear originando um ponto entre dois
extremos obtidos neste exemplo resulta no mesmo valor
de Z máximo.
Sem Soluções:
Se w é diferente de zero significa que o problema possui
uma série de restrições inconsistentes, e não solução
factível para o problema.
Exemplo_20
Encontra-se a solução do problema graficamente e pelo
método Simplex e análise ambas as soluções.
Max Z = 2X1 + X2
SA
X1 –X2 <= 0
X2 <= 2
X1 + 2X2 >= 8
X1, X2 >= 0
Soluções ilimitadas:
Todos os possíveis coeficientes (pivôs) são negativos
na sua coluna equivalente, ou seja, não há limitante. Isto
leva a solução para valor infinito, sem tornar as outras
varáveis básicas negativas.
Exemplo_21
Encontra-se a solução do problema graficamente e pelo
método Simplex e análise ambas as soluções
Max Z = 2X1 + 3X2
SA
-4X1 + 2X2 <= 8
-4X1 + 4X2 >= 4
X1 + X2 >= 5
X1, X2 >= 0
Soluções degeneradas:
Ocorre quando uma variável básica assume valor zero.
Exemplo_22
Encontra-se a solução do problema graficamente e pelo
método Simplex e análise ambas as soluções.
Max Z = 3X1 + 9X2
SA
X1 + 4X2 <= 8
X1 + 2X2 <= 4
X1, X2 >= 0
Programação Linear Inteira (PLI)
PLIs são programações lineares nas quais algumas ou
todas as variáveis estão restritas à valores inteiros
ou discretos. Os algorítimos de PLI são baseados na
exploração da PL e envolve três etapas (Taha, 2008):
a.) Relaxe a região de soluções da PLI, eliminando a
restrição inteira imposta a todas as variáveis
inteiras e substituindo qualquer variável y por
uma faixa contínua. O resultado da relaxação é
um PL normal;
b.) Resolva a PL e identifique a solução ótima
contínua;
c.) Começando do ponto ótimo contínuo, adicione
restrições
especiais
que
modifiquem
iterativamente a região de soluções da PL, de
maneira que, a certa altura, resultará em um
ponto extremo ótimo que satisfaz os requisitos
inteiros.
Branch and Bound: algorítmo de programação
inteira
Exemplo_23
Maximizar Z = 5X1 + 4X2
SA:
X1 + X2 <= 5;
10X1 + 6X2 <= 45;
X1, X2 inteiros, não negativos
Os pontos de grade da figura abaixo definem a
região de soluções da PLI.
De acordo com o gráfico, a solução ótima da
programação linear (PL) é definida com base na
eliminação das restrições inteiras. A solução ótima é
dada por:
X1 = 3,75 ; X2 = 1,25 ; Z = 23,75.
Os pontos de grade da figura acima definem as
regiões de soluções da PLI.
Como a solução ótima da PL não satisfaz os
requisitos inteiros, o algoritmo B&B modifica a
região de soluções, de maneira a identificar a
solução ótima para a programação linear inteira
(PLI).
Em primeiro lugar, seleciona-se uma das variáveis
inteiras cujo valor ótimo na PL seja não inteiro (X1);
Selecionando X1, a região 3 < X1 < 4 da região de
soluções de PL não contêm nenhum valor inteiro de
X1 e , por isso, pode ser eliminada como não
promissora.
Isto equivale a substituir a PL original por duas novas
PLs:
. Região da PL2 ( X1 <= 3)
. Região da PL3 ( X1 >= 4)
Os dois espaços combinados de PL2 e de PL3 contêm
a mesma quantidade de pontos inteiros viáveis da
PLI original, ou seja: PLI= PL2+PL3
Como as novas restrições são mutuamente
exclusivas, então PL2 e PL3 serão tratadas como PLs
separadas. Ou seja, a solução ótima se encontra em
PL3 ou em PL4.
Portanto, estaremos resolvendo o problema de
programação linear inteira (PLI), lidando com uma
sequencia de PLs (ramificação).
Vamos primeiro, começar analisando PL2.
Maximizar Z = 5X1 + 4X2
SA:
X1 + X2 <= 5
10X1 + 6X2 <= 45
X1 <= 3
X1,X2 >= 0
A solução de PL2 é dada por:
X1 = 3 ; X2 = 2 e Z = 23
Esta solução satisfaz os requisitos inteiros para
X1 e X2. Não precisa ser mais investigada !
Vamos analisar PL3. Como o Z ótimo = 23,75 na
PL, e por acaso todos os coeficientes da função
objetivo são inteiros, é impossível que a PL3 (
que é mais restritiva que a PL1) produza uma
solução inteira melhor do que Z > 23. Portanto,
PL3 é descartado !
Assim X1 = 3; X2 = 2 e Z = 23 é a solução ótima.
A figura acima demonstra que poderíamos
também ter iniciado o algoritmo de B&B por
PL3, o que pode acontecer na prática.
Pelo fato de termos iniciado o problema
analisando PL3, gerou-se um número maior de
subproblemas como pode ser constatado na
figura acima.
Resumo do algoritmo B&B (Taha, 2008):
Etapa_1: Selecione uma PLi, o próximo subproblema
a ser analisado. Resolva a PLi e tente interpretá-la
usando uma das três condições:
a. O valor ótimo de Z da PLi n ão pode dar um
valor objetivo melhor do que o limite inferior atual
b. A PLi dá uma solução inteira viável melhor do
que o limite inferior atual;
c. A PLi não tem nenhuma solução viável.
Na etapa_1 podem surgir dois casos:
. Se a PLi for interpretada e uma solução melhor
for encontrada, atualize o limite inferior. Se todos os
subproblemas tiverem sido descartados, pare; a PLI
ótima está associada com o limite finito atual. Se não
existir nenhum limite inferior finito, o problema não
tem solução viável. Senão, determine i = i +1 e repita
a etapa_1
. Se a PLi não for interpretada, vá para a
etapa_2 para ramificar.
Etapa_2: (Ramificação). Selecione uma das variáveis
inteiras Xi, cujo valor ótimo Xi na solução da PLi não
seja inteiro.
As etapas dadas se aplicam a problemas de
maximização. Para minimização, substituímos o
limite inferior por um limite superior.
Exercício
Desenvolva a árvore B&B para cada um dos
seguintes problemas. Por conveniência, sempre
selecione X1 como a variável de ramificação no nó 0.
Max Z = 3X1 + 2X2
SA
2X1 + 5X2 <= 9
4X1 + 2X2 <= 9
X1 , X2 >= 0 e inteiras
Capítulo 5 – Otimização em redes
Os problemas de otimização em redes apresentados
neste capítulo tratam de aplicações tradicionais, tais
como: encontrar o caminho mais curto entre dois
pontos, determinar o fluxo máximo em uma rede de
tal maneira a satisfazer os requisitos de suprimentos
e demanda em diferentes locais.
A solução destes problemas pode ser obtida por
meio de uma variedade de algoritmos de otimização
em redes. Neste capítulo veremos dois algoritmos:
. Resolução do problema de caminho mínimo
(Dijkstra)
. Resolução do problema para fluxo máximo
Definições: Uma rede consiste em um conjunto de
nós conectados por arcos. A notação para descrever
uma rede é dada por (N,A), na qual N representa o
conjunto de nós e A representa o conjunto de arcos.
Como exemplo, a rede da figura abaixo é
representada por:
N = [ 1,2,3,4,5]
A = [(1,2), (1,3), (2,3), (2,5), (3,4), (3,5), (4,2), (4,5) ]
Associado com cada rede está um fluxo. Em geral, o
fluxo em uma rede é limitado pela capacidade de
seus arcos, que pode ser finita ou infinita.
Diz-se que um arco é orientado ou dirigido se ele
permitir fluxo positivo em uma direção e fluxo zero
na direção oposta. Uma rede orientada é aquela em
que todos os arcos são orientados.
Um caminho representa uma sequência de arcos
distintos que ligam dois nós passando por outros
nós, independentemente da direção de fluxo em
cada arco.
Uma rede conectada é uma rede tal que todos os
pares de nós estão ligados por no mínimo um
caminho.
Uma árvore é uma rede conectada sem ciclos
formada por um subconjunto de todos os nós, e uma
árvore geradora corresponde a uma árvore que liga
todos os nós de rede. Veja a figura acima.
5.1 Caminho Mínimo
O problema do caminho mínimo determina o
caminho mais curto entre um destino e uma origem
em uma rede
Algorítmo de Dijkstra: determina o caminho mais
curto entre o nó de origem e qualquer outro nó da
rede.
Fases do algoritmo:
Fase_0: Dado uma rede, rotule o nó de origem (nó 1)
com o rótulo permanente [0,--]. Determine i = 1;
Os rótulos dos nós do algoritmo de Dijsktra são de
dois tipos: temporários e permanentes. Um rótulo
temporário é modificado se for possível encontrar
uma rota mais curta até um nó. Se não for possível
encontrar nenhuma rota melhor, o status do rótulo
temporário muda para permanente.
Fase_1: Calcular os rótulos temporários [Ui + Dij, i]
para cada nó j que puder ser alcançado partindo do
nó i, contando que j não seja permanentemente
rotulado.
a.) Se o nó j já estiver rotulado com [Uj,k]
passando por um outro nó k, e se Ui + Dij <
Uj, substitua [Uj, k] por [ ui + Dij, i];
b.) Se todos os nós tiverem rótulos
permanentes, pare. Caso contrário,
selecione o rótulo [ Ui, S], cuja distância
(=Uj) é a mais curta entre todos os rótulos
temporários (empates são resolvidos
arbitrariamente). Determine i = r e repita a
etapa i;
Exemplo: A rede da figura abaixo fornece as rotas
possíveis e seus cumprimentos em milhas entre a cidade
1 ( nó 1) e quatro outas cidades (nó 2 a 5). Determine os
caminhos mais curtos entre a Cidade 1 e cada uma das
quatro outras cidades.
Iteração 0: Designe o rótulo permanente [0, --] ao nó 1;
Iteração 1: Os nós 2 e 3 podem ser alcançados com base
no nó 1 ( último no rotulado permanente).
Assim, a lista de nós rotulados (permanentes e
temporários ) fica como demonstrado na tabela abaixo:
Para os dois rótulos temporários [100,1] e [30,1], o nó 3
resulta na menor distância (U3 = 30). Assim, o status do
nó 3 muda para permanente.
Iteração 2. Os nós 4 e 5 podem ser alcançados com base
no nó 3, e a lista de nós fica como demonstrado na tabela
abaixo:
O status do rótulo temporário [40,3] no nó 4 muda para
permanente (U4 = 40).
Iteração 3. Os Nós 2 e 5 podem ser alcançados com base
no nó 4. Assim, a lista de nós rotulados é atualizada
conforme demonstrado na tabela abaixo:
O rótulo temporário do nó 2 [100,1] obtido na iteração 1
muda para [55,4] na iteração 3 a fim de indicar que foi
encontrada uma rota mais curta que passa pelo nó 4.
Além disso, na iteração 3, o nó 5 tem dois rótulos
alternativos com a mesma distância U5 = 90.
Na iteração 3, o rótulo para o nó 2 passa a ser
permanente.
Iteração 4: Só o nó 3 pode ser alcançado com base no nó
2. Contudo o nó 3 tem um rótulo permanente e não pode
ser rotulado novamente.
A nova lista de rótulos permanece a mesma na iteração 3,
exceto que o rótulo no nó 2 é permanente. Isso deixa o
nó 5 como o único rótulo temporário.
Como o nó 5 não leva a outros nós, seu status é
convertido em permanente, e o processo termina.
O caminho mais curto entre o nó 1 e qualquer outro é
determinado começando no nó de destino desejado e
percorrendo a rota inversa a partir desse ponto, usando a
informação dada pelos rótulos permanentes.
Por exemplo, a seguinte sequencia determina a rota mais
curta do nó 1 ao nó 2.
(2)  [55,4]  (4)  [40,3]  (3)  [30,1]  (1)
Exercício: A rede da figura abaixo fornece as distâncias
em milhas entre pares de cidades. Use o algoritmo de
Dijkstra para achar o caminho mais curto entre as
seguintes cidades:
a.) Cidades 1 e 8
b.) Cidades 1 e 6
5.2 Fluxo máximo
Dado um arco (i,j) com i < j, usamos a notação (Cij,
Cji) para representar as capacidades de fluxo nas
duas direções i  j e j  i , respectivamente,
conforme apresentado na figura abaixo.
Cij
i
Cji
j
Cij: arco de fluxo I  J
Cji: arco de fluxo J  I
Define-se um corte como um conjunto de arcos, que
quando eliminados da rede, causará um rompimento
total do fluxo entre o nó de origem e o nó
sorvedouro.
A capacidade do corte é igual à soma das
capacidades de seus arcos.
Entre todos os possíveis cortes na rede, o que tiver a
menor capacidade dá o fluxo máximo da rede.
Considere a rede da figura abaixo. As capacidades
bidirecionais são mostradas nos respectivos arcos
usando a convenção apresentada anteriormente.
A figura apresenta 3 cortes cujas capacidades estão
apresentadas a seguir:
Corte 2
0
20
4
Corte 3
Corte 1
5
10
1
0
0
30
5
0
20
30
0
2
40
0
0
10
3
20
Corte
Arcos Associados
Capacidades
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
O fluxo máximo da rede não pode ultrapassar 60
unidades. Para determinar o fluxo máximo é
necessário enumerar todos os cortes !
Em uma rede de grande porte este procedimento
pode ficar inviável. Portanto, é necessário de se
desenvolver um algorítmo que torne o processo
eficiente !
Algorítmo de fluxo máximo
Este algoritmo é baseado em achar rotas de
passagem com fluxo líquido positivo entre os nós de
origem e sorvedouro. Cada rota compromete parte
ou toda a capacidade de seus arcos ao fluxo da rede.
Dada a figura anterior, determine o fluxo máximo na
rede.
Etapas do algoritmo:
Iteração 01: Iguale as capacidades residuais iniciais
às capacidades Iniciais ( Cij, Cji);
Etapa 01: Determine a1 = infinito, e rotule o nó 1
com [infinito,--]. Determine i = 1;
Etapa 2: S1 = {2,3,4} (diferente de vazio)
Etapa 3: K =3, por que C13 = max {C12, C13, C14} =
Max { 20,30,10} = 30. Determine a3 = C13 = 30, e
rotule o nó 3 com [30,1]. Determine i=3 e repita a
etapa 2;
Etapa 2: S3 = {4,5}
Etapa 3: K = 5 e a5 = C35 = max {10,20} = 20. Rotule o
nó 5 com [20,3]. Uma rota de passagem é obtida. Vá
para a etapa 5.
Etapa 5: A rota de passagem é determinada pelos
rótulos que iniciam no nó 5 e percorrem a rota
inversa até o nó 1, isto é:
(5)  [20,3]  (3)  [30,1]  (1)
Assim, N1 = {1,3,5} e f1 = min {a1,a2,a5} =
{infinito,30,20} = 20. As capacidades residuais ao
longo da rota N1 são:
(C13, C31) = (30-20, 0 + 20) = (10,20)
(C35, C53) = (20-20, 0 +20) = (0,20)
Iteração 2:
Etapa 1. Determine a1 = infinito, e rotule o nó 1 com
[infinito, --]. Determine i = 1;
Etapa 2: S1 = {2,3,4};
Etapa 3: K=2 e a2 = C12 = max {20,10,10} = 20.
Determine i=2 e repita a etapa 2;
Etapa 2: S2 = {3,5}
Etapa 3: K = 3 e a3 = C23 = 40. Rotule o nó 3 com
[40,2]. Determine i = 3 e repita a etapa 2.
Etapa 2: S3 = {4} . Observe que C35 = 0, portanto, o
nó 5 não pode ser incluído em S3;
Etapa 3: k = 4 e a4 = c34 = 10. Rotule o nó 4 com
[10,3]. Determine i = 4 e repit a etapa 2;
Etapa 2: S4 = {5} . Observe que os nós 1 e 3 estão
rotulados, portanto, não podem ser incluídos em S4;
Etapa 3: K = 5 e a5 = c45 = 20. Rotule o nó 5 com
[20,4]. Foi conseguida uma rota de passagem. Vá
para a etapa 5.
Etapa 5: N2 = {1,2,3,4,5} e
f2 = min {infinito,20,40,10,20} = 10.
As capacidades residuais ao longo da rota de 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)
Iteração 3
Etapa 1: Determine a1 = infinito e rotule o nó 1 com
[infinito, --]. Determine i=1.
Etapa 2: Si = {2,3,4}
Etapa 3: K =2 e a2 = C12 = max[10,10,10] = 10.
Empates são decididos aleatoriamente. Vamos
rotular o nó 2 com [10,1]. Determine i=2 e repetir a
etapa 2.
Etapa 2: S2 = {3,5}
Etapa 3: K=3 e a3 = C23 = 30. Rotule o nó 3 com
[30,2]. Determine i = 3 e repita a etapa 2.
Etapa 2: S3 = vazio, porque C34 = C35 = 0. Vá para a
etapa 4ª fim de percorrer a rota inversa.
Etapa 3: Rota inversa. O rótulo [30,2] no nó 3 dá o nó
imediatamente precedente r =2. Elimine o nó 3 de
qualquer consideração nessa iteração, cancelando-o.
Determine i = r = 2, e repita a etapa 2.
Etapa 2: S2 = {5}. Observe que o nó 3 foi eliminado
na etapa da rota inversa.
Etapa 3: k = 5 e a5 = C25 = 30. Rotule o nó 5 com
[30,2]. Foi conseguida uma rota de passagem. Vá
para a etapa 5.
Etapa 5: N3 = {1,2,5} e C5 = min {infinito, 10,30} = 10.
As residuais ao longo da rota de N3 são:
(C12,C21) = (10-10,10+10) = (0,20)
(C25, C52) =(30 -10 , 0+10) = (20,10)
Iteração 4. Esssa iteração dá N4 = {1,3,2,5} com
f4=10.
Iteração 5. Essa iteração dá N5 = {1,4,5} com f5 = 10
Iteração 6.
Todos os arcos eu partem do nó 1 tem reisduais
zero. Portanto, não há mais nenhuma rota de
passagem possível. Retornar à etapa 6 para
determinar a solução:
Etapa 6: Fluxo máximo na rede é:
F = f1 + f2 + ... + f5 = 20+10+10+10+10 = 60.
contin
Formalização do algorítimo:
Considere o arco (i,j) inicialmente com capacidade
(Cij, Cji). À medida que porções destas capacidades
são comprometidas ao fluxo no arco, as capacidades
residuais (ou capacidades restantes) do arco são
atualizadas. Usando a notação (cij,cji) para
representar essas capacidades residuais.
Para um nó j que recebe fluxo do nó i, anexamos um
rótulo [aj,i], no qual aj é o fluxo do nó i ao nó j.
Assim, as etapas do algoritmo são resumidas da
maneira a seguir:
Etapa 1: Para todos os arcos (i,j) iguale a capacidade
residual à capacidade inicial, isto é:
(cij, cji) = (Cij, Cji).
Seja a1 = infinito e rotule o nó de origem com
[infinito,--]. Determine i = 1 passe para a etapa 2.
Etapa 2: Determine Si, que representa o conjunto de
nós j não rotulados que podem ser alcançados
diretamente do nó i por arcos com residuais
positivos, isto é cij > 0, para todo j E Si. Se Si for
diferente de zero, vá para a etapa 3. Caso contrário,
vá par a etapa 4.
Etapa 3: Determine k E Si, tal que:
Cik = Max {cij}, j E Si
Determine ak = cik e rotule o nó k com [ak,i]. Se k = n, o
nó sorvedouro foi rotulado e foi encontrada uma rota de
passagem. Vá para a etapa 5. Caso contrário, determine i
= k e vá para a etapa 2.
Etapa 4: (percorrer a rota inversa). Se i = 1, nenhuma
rota de passagem é possível, vá para a etapa 6. Caso
contrário, determine que r seja o nó que foi rotulado
imediatamente antes do nó atual i e elimine i do
conjunto de nos adjacentes a r. Determine i=r e vá
para a etapa 2.
Etapa 5: (determinação das capacidades residuais).
Defina os nós da p-ésima rota de passagem de nó de
origem ao nó sorvedouro n como:
Np = (1, K1, K2, ...,n). Então o fluxo máximo ao longo
da rota é calculado por:
Fp = min {a1,ak1,ak2,...,an}
A capacidade residual de cada arco ao longo da rota
de passagemé reduzida de Fp, na direção do fluxo e
aumentada de Fp, na direção contrária; isto é, para
os nós i e j na rota, o fluxo residual é alterado do
atual para:
(a) ( cij – fp, cji + fp) se o fluxo for de i para j;
(b) (cij + fp, cji – fp) se o fluxo for de j para i.
Reinstale quaisquer nós que foram eliminados na etapa 4.
Determine i = 1 e retorne à etapa 2 para tentar uma nova
rota de passagem.
Exercícios:
1.) Determine o fluxo máximo para a rede da figura
abaixo:
2.) Três refinarias enviam um produto à base de
gasolina a dois terminais de distribuição por meio de uma
rede de tubulações. Qualquer demanda que não puder
ser satisfeita pela rede é adquirida de outras fontes. A
rede de tubulações é atendida por três estações de
bombeamento, como mostrado na figura abaixo. O
produto flui pela rede na direção mostrada pelas setas. A
capacidade de cada segmento de tubulação (mostrada
diretamente nos arcos) é dada em milhões de barris por
dia.
Estações
bombeamento
Refinarias
1
terminais
20
10
7
4
10
10
2
50
50
6
20
30
20
20
5
30
3
8
15
Determine o seguinte:
a.) A produção diária em cada refinaria que combina
com a máxima capacidade da rede;
b.) A demanda diária em cada terminal que combina
com a máxima capacidade da rede;
c.) A capacidade diária de cada bomba que combina
com a máxima capacidade da rede.
Obs: A solução do problema proposto requer equipar a
rede com uma única origem e um único sorvedouro
usando arcos unidirecionais de capacidade infinita
representados na figura abaixo e grifados em vermelho:
Estações
bombeamento
Refinarias
1
terminais
20
10
7
4
20
10
10
80
0
2
60
50
50
6
9
20
30
20
20
5
15
50
30
3
15
8
3.) Use o algoritmo de Dijkstra para achar o caminho
mais curto entre o nó 1 e todos os outros da rede da
figura abaixo:
6
6
2
7
5
1
2
7
4
4
2
7
6
6
1
5
3
9
1
7
5
3
7
4.) De três depósitos A, B e C, dispondo-se
respectivamente de 20,10 e 35 toneladas de um dado
produto, pretende-se fazer chegar a três destinos D,E e
F, respectivamente, 25, 20 e 20 toneladas do produto. As
disponibilidades de transporte via caminhão entre as
localidades é dada na tabela abaixo. Estabeleça o melhor
plano de transportes.
5.) Dado o grafo abaixo determinar o fluxo máximo
entre os nós 1 e 6
v
Download