Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Informtica
Prof. Mauro Nacif Rocha
Prof. Luiz Aurlio Raggi
Prof. Heleno do Nascimento Santos
INF-280
Pesquisa Operacional I
Contedo:
Programao Linear
Programao em Redes
Fevereiro de 2005
ii
1873 (Jordan),
1896 (Minkowsky), 1903 (Farkas)
1920 (Markov)
Modelos dinmicos.
1920 (Erlang)
1947 (Dantzig)
a partir de 1947
Operational Research
Operations Research
2. Definio
Pesquisa Operacional o uso do mtodo cientfico com o objetivo de prover departamentos executivos de elementos quantitativos para a tomada de decises, com relao a operaes sob seu
controle (Kittel, 1947).
A Pesquisa Operacional a aplicao do mtodo cientfico, por equipes multidisciplinares, a problemas envolvendo o controle de sistemas organizados de forma a fornecer solues que melhor
interessam a determinada organizao (Ackoff,1968).
Pesquisa Operacional uma metodologia de estruturar processos aparentemente no estruturados
por meio da construo de modelos. Utiliza um conjunto de tcnicas quantitativas com o intuito de
resolver os aspectos matemticos dos modelos (Ehrlich, 1991).
Hoje, o termo operations research, ou pesquisa operacional, significa um mtodo cientfico
para tomada de deciso, que busca determinar como melhor planejar e operar um sistema, usualmente sob condies que requerem alocao de recursos escassos.
identificao do problema;
construo de um modelo;
obteno da soluo;
teste do modelo e avaliao da soluo;
implantao e acompanhamento da soluo.
Deve-se salientar que tais fases no so distintas, superpondo-se e interagindo entre si, na
tentativa de se obter uma melhor identificao entre o modelo e o real. Quando a pesquisa operacional usada para resolver um problema de uma organizao, o seguinte procedimento, poder ser
seguido:
Passo 1 - Identificao e formulao do problema
Em primeiro lugar deve ser definido claramente o problema da organizao, incluindo a especificao dos objetivos e as partes da organizao que devem ser estudadas antes que o problema
possa ser resolvido.
Passo 2 - Observao do sistema
Dados devem ser coletados para estimar valores de parmetros que afetam o problema da
organizao. Estes valores so usados para desenvolver e avaliar o modelo matemtico para o problema.
Passo 3 - Formulao do modelo matemtico para o problema
Consiste no desenvolvimento do modelo matemtico para o problema. Geralmente, existem
vrias tcnicas que podem ser aplicadas na soluo dos modelos matemticos. A tcnica adequada
selecionada em funo das caractersticas do modelo representativo do problema. Algumas situaes, no entanto, so to complexas que no existem modelos analticos tratveis que possam repre2
sent-las. Quando isso acontece possvel desenvolver modelos de simulao e usar a capacidade
dos computadores para aproximar o comportamento desses sistemas.
Passo 4 - Verificao do modelo e uso do modelo para predio
Verifica-se se o modelo matemtico proposto para o problema uma representao fidedigna da realidade. Os dados coletados durante a observao do problema podem ser usados para a validao do modelo na situao corrente.
Passo 5 - Selecionar uma alternativa aceitvel
Dado o modelo do problema e um conjunto de alternativas (solues viveis) deve-se escolher aquela (se existir) que melhor atende aos objetivos da organizao. Em alguns casos, a seleo
da melhor alternativa possvel um problema de difcil soluo e, nesses casos, aceita-se uma boa
alternativa.
Passo 6 - Apresentao dos resultados e concluses
A partir da definio do modelo e das alternativas determinadas para o problema so feitas
as recomendaes para os gerentes das organizaes para que eles possam tomar as decises que
melhor atendem os objetivos buscados.
Passo 7 - Implementao e avaliao das recomendaes
Se a organizao aceita o estudo realizado e as recomendaes feitas, parte-se para a fase de
implementao da soluo, a qual deve ser constantemente monitorada, e atualizada dinamicamente, fazendo-se mudanas quando necessrias.
4. reas de aplicao
Segundo trabalhos apresentados em reunies da Sociedade Brasileira de Pesquisa Operacional (SOBRAPO), citam-se abaixo algumas reas onde a P.O. foi aplicada com algum sucesso e onde se observa a grande variedade dessas aplicaes:
administrao
agropecuria
economia e planejamento econmico
educao e sade
energia
engenharia
foras armadas
investimentos e finanas
localizao-armazenamento-distribuio
planejamento e controle da produo
planejamento urbano e regional
recursos hdricos
siderurgia
telecomunicaes
transporte
5. Tcnicas aplicadas
Os trabalhos de PO desenvolvidos e submetidos para apresentao em congressos e para publicao revistas cientficas envolvem a utilizao das seguintes tcnicas:
Estas tcnicas permitem que se resolva uma variedade enorme de problemas, dentre os quais
so tpicos:
Alocao de recursos
Localizao e distribuio da produo
Estoque
Substituio e reposio de equipamentos
Seqenciamento e coordenao de tarefas
Determinao de caminhos em rede
Situaes de competio (teoria dos jogos)
Busca de informao
Roteamento de veculos
Fluxos em rede
Problemas de caractersticas hbridas
Objetivos: determinar a localizao e capacidade das facilidades (restaurantes, depsitos, antenas de rdio etc.) de
forma a suprir a demanda da regio toda com um custo
mnimo e/ou lucro mximo (considerando um determinado
perodo). Cada facilidade possui normalmente um custo
fixo de instalao e custos variveis de operao.
Problema da Mochila
Rolando Caio da Rocha, um exuberante alpinista, est se preparando para uma longa escalada nos
Alpes. Ele consegue levar at W quilos em sua mochila. Ele tem N diferentes tipos de itens que pode incluir em seu fardo, e cada unidade de item j pesa wj quilos. Para cada item j, ele calculou um
valor numrico Rj representando o valor de sobrevivncia de cada unidade do item. Como exemplo,
se ele levar cinco unidades do item 3 e sete unidades do item 9, o valor para ele desta seleo na
mochila 5R3 + 7R9. O problema do Rolando escolher o nmero de cada tipo para incluir em sua
mochila.
Gro 2
Gro 3
Necessidades mnimas
2
3
7
1250
Nutriente A
1
1
0
250
Nutriente B
5
3
0
900
Nutriente C
0,6
0,25
1
232,5
Nutriente D
41
35
96
$/peso
Objetivos: formular uma rao formada a partir da mistura dos gros que atenda s necessidades
mnimas e mximas de nutrientes e tenha um custo mnimo.
Usinas
S1
Fornecimentos
disponveis
S2
S3
Depsitos
D1
D2 Necessidades
D3 de demanda
Dn
Sm
Objetivos: determinar a quantidade do produto que cada fornecedor deve enviar para cada depsito,
de forma que o custo total do transporte seja mnimo, que cada depsito tenha sua demanda atendida, e que nenhum depsito estoure sua capacidade de fornecimento.
Problemas de Produo
Recursos
Especificaes
Atividades
INSUMOS
PRODUTOS
Mquinas
Produto 1
Ferramentas
Produto 2
Capital
Decises
.
Matria prima
.
Mo-de-obra
Produto n
CUSTOS
RECEITA
Objetivos: determinar as atividades que devem ser realizadas ou produzidas de forma a maximizar o
lucro ou minimizar o custo de produo, levando-se em conta a quantidade mxima disponvel para
cada insumo.
Custos cij
Objetivos: minimizar o custo total para executar um conjunto de tarefas, onde cada tarefa deve ser
executada por uma nica mquina, e cada mquina executa uma nica tarefa.
2. O problema geral
Recursos escassos devem ser
repartidos entre demandas competitivas
Decises
so interligadas na
tomada de deciso
Demandas competem
entre si na
procura dos
recursos escassos
Objetivos:
Otimizar a distribuio dos recursos limitados no atendimento s demandas competitivas;
Maximizar lucros ou o uso dos recursos;
Minimizar custos, sobras, tempos ou distncias.
FORMULAO
DO
PROBLEMA
OBTENO
DO
MODELO
DEFINIO
DO MTODO
DE SOLUO
OBTENO
E PREPARO
DOS DADOS
EXPERINCIA
RESOLUO
DO
PROBLEMA
INTERPRETAO
DOS
RESULTADOS
COMPARAO
COM A
REALIDADE
IMPLEMENTAO
DA
SOLUO
4. Modelagem de problemas
MODELOS SO REPRESENTAES DA REALIDADE
SIMPLIFICAO
DA
REALIDADE
SISTEMA
INTERRELACIONAMENTO
MODELO
5. Modelos matemticos
Os modelos matemticos so modelos simblicos - o sistema real representado por EQUAES
E EXPRESSES MATEMTICAS que descrevem suas propriedades relevantes.
n DECISES QUE SO
QUANTIFICVEIS E
INTERRELACIONADAS
n VARIVEIS DE DECISO
(x1, x2, , xn)
REPRESENTA A MEDIDA
DE EFICINCIA DO
SISTEMA
FUNO OBJETIVO
SO RESTRIES AOS
VALORES DAS VARIVEIS
DE DECISO
A REALIDADE
UMA APROXIMAO
VALIDADE
ASSOCIADA AO
GRAU DE CORRELAO
10
a11x1
a21x1
+
+
a12x2
a22x2
+
+
am1x1
+ am2x2
+ a1nxn , =,
+ a2nxn , =,
b1
b2
+ amnxn , =,
bm
xn 0,
xn 0.
5. Construo do modelo
Associar x1, x2, , xn s n atividades;
Escrever as equaes de balanceamento por recurso;
Indicar o uso dos recursos;
Estabelecer a funo objetivo como medida de eficincia.
12
Nutriente A
Nutriente B
Nutriente C
Nutriente D
$/kg
Gro 2
3
1
3
0,25
35
Gro 3
7
0
0
1
96
Necessidades mnimas
1250
250
900
232,5
+ 3x2
+ x2
+ 3x2
+ 0,25x2
+ 7x3
+ x3
1250,0
250,0
900,0
232,5
(Nutriente A)
(Nutriente B)
(Nutriente C)
(Nutriente D)
Queremos obter uma rao que tenha um custo mnimo. Portanto, o modelo completo fica assim:
Minimizar
Sujeito a:
2x1
x1
5x1
0,6x1
e:
+ 3x2
+ x2
+ 3x2
+ 0,25x2
+ 7x3
+ x3
1250,0
250,0
900,0
232,5
(Nutriente A)
(Nutriente B)
(Nutriente C)
(Nutriente D)
x1 0, x2 0, x3 0
13
Problema de Produo
A empresa Nova Linha produz artigos de vidro de alta qualidade: janelas e portas, em trs sees de
produo:
a capacidade de produo por minuto de cada seo, a ser utilizada para produzir uma
unidade de cada produto
Produto 1
Produto 2
Capacidade
disponvel
12
18
Lucro unitrio
(em R$)
Modelo completo:
x1
2x 2
3x1 + 2x 2
4
12
18
x1 0, x2 0
14
Problema da Mochila
Rolando Caio da Rocha, um exuberante alpinista, est se preparando para uma longa escalada nos
Alpes. Ele consegue levar at W quilos em sua mochila. Ele tem N diferentes tipos de itens que pode incluir em seu fardo, e cada unidade de item j pesa wj quilos. Para cada item j, ele calculou um
valor numrico Rj representando o valor de sobrevivncia de cada unidade do item. O problema do
Rolando escolher o nmero de cada tipo para incluir em sua mochila.
Modelo:
F.O.: Max. R1x1 + R2x2 + ... + Rjxj + ... + RNxN
s.a.: w1x1 + w2x2 + ... + wjxj + ... + wNxN W
xj 0
ou:
N
Max.
R x
j
j=1
s.a.:
w x
j
j =1
xj 0
15
Cutting Stock
Tamanho (mm) Quantidade
3100
26
1530
71
850
47
Tamanho da Barra: 6000 mm
3100
1530
850
Sobra:
Sendo
F.O.: Min. NB = x1 + x2 + x3 + x4 + x5 + x6
s.a.:
x1
+ x2
x1
+ 3x3 + 2x4
+ x5
x1 + 3x2
+ x3 + 3x4 + 5x5 + 7x6
x1 0, x2 0, x3 0, x4 0, x5 0, x6 0
26
71
47
Se:
Min. NB =
x
j =1
s.a.
a x
j =1
ij
bi ,
i = 1, 2, ..., m
xj 0 e inteiro, j = 1, 2, ..., n
16
Cidade A
Cidade B
Cidade C
Tipo 1
23
58
64
Tipo 2
15
20
24
Tipo 3
1,4
3,8
4,2
Denote por xij o nmero de avies do tipo i enviado para a Cidade j (x1A, x1B, x1C, x2A etc.). Formule
um modelo de PL para esse problema.
17
Quantidade
de Unidades
Disponveis
Capacidade de
Transporte
Capacidade
para bagagem
Custo por
Viagem
Tempo de
Viagem
Veculo de
6 ton. do
Exrcito
Veculo de
ton. do
Exrcito
Helicptero
nibus
Micronibus
Veculo
de Passeio
10
20
15
10
60
20 pessoas
5 pessoas
10 pessoas
30 pessoas
15 pessoas
5 pessoas
1 ton.
20 kg
50 kg
1 ton.
500 kg
100 kg
10 u.m.
4 u.m.
75 u.m.
5 u.m.
3 u.m.
2 u.m.
1h
45 min.
10 min.
45 min.
30 min.
30 min.
Para minimizar o pnico, as crianas devero viajar acompanhadas por suas mes. Existem 10 famlias com 5 filhos, 25 com 4 filhos, 150 com 3, 450 com 2 e 350 com 1. Os carros de passeio s podero fazer uma viagem de evacuao, ficando, por segurana, retidos fora da rea de perigo.
Formular o programa de evacuao que minimize os custos finais da operao.
18
19
Exemplo 2
Por determinao mdica, um jovem precisa fazer algum tipo de atividade fsica em uma academia.
Por questes pessoais, ele escolheu fazer natao e/ou plo aqutico. Ele sabe que:
Uma hora de aula de natao custa R$8,00;
Uma hora de aula de plo custa R$5,00;
Seu oramento lhe permite dispor de 100 reais mensais para as atividades de academia;
Seus afazeres escolares lhe do liberdade de gastar mensalmente, no mximo, 18 horas e 40.000
calorias de sua energia para essas atividades;
Cada hora de aula de plo consome 3.300 calorias, e de natao consome 1.600 calorias;
Ele no tem preferncia por nenhuma dessas duas atividades.
Como ele deve planejar as suas atividades fsicas para obter o nmero mximo de horas-aula, considerando o limite dos recursos que tem? Modele o problema como um problema de programao
linear (PPL).
x1 Horas-aula de natao;
s.a.:
mx. x1 + x2
(1)
x1 + x2 18
8x1 + 5x2 100
1600x1 + 3300x2 40000
(2)
(3)
(4)
(3)
(1)
(4)
(2)
20
Exemplo 3
Um fazendeiro deseja determinar que rea de sua propriedade deve plantar milho e feijo para maximizar o seu lucro, e informa o seguinte:
a) o fazendeiro dispe de uma rea mxima de 8 alqueires para o plantio das 2 culturas, 100 m3 de
gua para irrigao por semana, e a semente de feijo lhe permite um plantio de 4 alqueires no
mximo;
b) o lucro por alqueire plantado com milho de R$200,00 e plantado com feijo de R$150,00;
c) cada alqueire plantado com milho requer 10m3 de gua por semana, e com feijo 20m3 ;
d) por questes pessoais, ele deseja plantar no mximo 2/3 da rea total com milho.
x1 Qtde. de alqueires plantados com milho
x2 Qtde. de alqueires plantados com feijo
mx. 200x1 + 150x2
s.a.: x1 + x2 = 8
x2 4
x1 16/3
10x1 + 20x2 100
(1)
(2)
(3)
(4)
21
Exemplo 4
Suponha que, por motivos justificveis, uma certa dieta alimentar esteja restrita a leite desnatado e
uma salada de composio bem conhecida. Sabendo-se ainda que os requisitos nutricionais sero
expressos em termos de vitamina A e clcio e controlados por suas quantidades mnimas (em miligramas). A tabela abaixo resume a quantidade de cada nutriente em disponibilidade nos alimentos e
a sua necessidade diria para a boa sade de uma pessoa.
Nutriente Leite (copo) Salada (500g) Requisito Nutricional
Mnimo
Vit. A
2 mg
50 mg
11 mg
Clcio
50 mg
10 mg
70 mg
Custo/unid.
R$ 2,00
R$ 1,20
sendo
2x1 + 1,2x2
------
2x1 + 50x2 11
50x1 + 10x2 70
22
1.
Exemplo 1:
mx. x1 + x2
s.a.:
(1)
(2)
x2
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
x1
1
0
0
3 4
F.O.
(1)
(2)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
23
Exemplo 2:
min
s.a.
2x1 + 1,2x2
2x1 + 50x2 11
50x1 + 10x2 70
(1)
(2)
(2)
(1)
2.
s.a.:
8x1 + 5x2 100
16x1 + 33x2 400
(1)
(2)
x2
20
19
18
17
16
(1)
15
14
13
12
11
10
9
8
7
6
5
(2)
4
3
2
x1
1
0
0
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
24
3.
Exemplo 1:
max
s.a.
2x1 + 1,2x2
2x1 + 50x2 11
50x1 + 10x2 70
(1)
(2)
(2)
(1)
Exemplo 2:
max
s.a.
x1 x2
2x1 x2 0
x2 4
(1)
(2)
x2
(1)
(2)
x1
25
Exemplo 3:
min
s.a.
x1 2x2
2x1 x2 0
x1 + 2x2 4
(1)
(2)
x2
(1)
(2)
x1
Neste caso, embora existam solues timas finitas (qualquer ponto sobre a reta 2, incluindo
e direita do ponto de intercesso dessa reta com a reta 1), limitando o valor timo da F.O.,
o conjunto desses pontos no limitado ou fechado.
4.
Z = f(x1, x2)
x1 + x2 1
x1 + x2 2
(1)
(2)
x2
(2)
(1)
x1
Veja que, neste caso, no existe nenhum ponto (x1, x2) no plano euclidiano que satisfaa simultaneamente as expresses (1) e (2).
26
O Mtodo Simplex
O mtodo Simplex, desenvolvido por DANTZIG em 1956, procura, a partir de uma determinada partio da matriz A, resolver o sistema de equaes Ax = b. Veremos a seguir como podemos preparar um modelo de PL qualquer para que seja resolvido pelo Simplex, quais os fundamentos tericos do algoritmo, e como ele podemos us-lo para resolver os modelos estudados.
c1x1
a11x1
a21x1
+
+
+
c2x2
a12x2
a22x2
+
+
+
am1x1
am2x2
xn0,
xn0,
+ cnxn
+ a1nxn , =,
+ a2nxn , =,
b1
b2
+ amnxn , =,
bm
xn0
A forma apresentada acima a expandida. Outras formas de representar um problema de programao linear so as mostradas a seguir:
a) Forma de Somatrio:
n
Maximizar Z =
c
j =1
xj
ij
x j , =, bi,
Sujeito a:
a
j =1
xj 0,
i = 1, , m;
j = 1, , n.
b) Forma Matricial
Maximizar Z =
Sujeito a:
cx
Ax , =,
x 0
27
Maximizar Z =
c
j =1
xj
ij
x j = bi,
Sujeito a:
j =1
xj 0,
bi 0,
i = 1, , m;
j = 1, , n;
i = 1, , m.
importante salientar que em um problema de programao linear qualquer podem aparecer varveis que devem ser deixadas livres em sua formulao, ou seja, variveis irrestritas em sinal. Alm
disso, outras varveis podem representar grandezas que na prtica no podem ser positivas. Para
que um problema com variveis dos tipos mencionados acima seja colocado na forma padro tornam-se necessrios alguns recursos matemticos, os quais sero discutidos a seguir.
Recursos para se obter a forma padro de um modelo de PL
1) Funo Objetivo
Os problemas de programao linear consistem em maximizar ou minimizar uma funo objetivo.
Um problema de minimizar pode ser transformado em maximizar fazendo-se:
Ento, se o problema minimizar e deseja-se trabalhar como maximizar, multiplica-se os coeficientes da funo objetivo por (-1), resolve-se o problema de maximizar e toma-se o negativo do valor
encontrado. Esse valor o mnimo do problema original.
2) Variveis de Folga
Considere a inequao linear do tipo "":
n
a
j =1
kj
x j bk
Utiliza-se uma varivel xk, chamada varivel de folga, em que xk = bk j akj xj, de forma que
n
a
j =1
kj
x j + x k = bk
Para cada restrio do tipo "" deve-se utilizar uma varivel de folga diferente que representa a
folga do recurso disponvel que no foi utilizado.
28
3) Variveis de Excesso
Considere a inequao linear do tipo "":
n
a
j =1
sj
x j bs
Utiliza-se uma varivel xs, chamada varivel de excesso, em que xs = j asj xj, bs, de forma que
n
a
j =1
sj
x j x s = bs
Para cada restrio do tipo "" deve-se utilizar uma varivel de excesso diferente que representa o
excesso do recurso utilizado.
4) Variveis livres ou irrestritas em sinal
Quando uma varivel representa uma grandeza que pode assumir na prtica valores positivos, nulos
ou negativos, ou seja, a varivel deve ser irrestrita em sinal, ento na forma padro essa varivel
substituda pela diferena de duas outras no negativas, e, posteriormente, quando o problema for
resolvido, seu valor real resgatado. Assim, se xl irrestrita em sinal, faz-se: xl = xl' - xl'', onde xl'
0 e xl'' 0. Resolve-se o problema com xl' e xl'', e aps a soluo obtm-se xl.
5) Variveis com valores no positivos
Quando uma varivel xq representa uma grandeza que no deve assumir valores positivos no problema original, ento, para construir a forma padro do modelo de PL, substitui-se essa varivel, fazendo-se xq = - xq', onde xq' 0. Resolve-se o PPL com xq' e, posteriormente, recupera-se xq.
6) Termos independentes com valores negativos
Se algum bi tiver sinal negativo, basta multiplicar a linha toda por 1:
4x1 3x2 2 4x1 + 3x2 2
Exemplo:
min.
s.a.
2x1 + 1,2x2
2x1 + 50x2 11
50x1 + 10x2 70
Forma padro:
max. 2x1 1,2x2
s.a.
2x1 + 50x2 x3 = 11
50x1 + 10x2 x4 = 70
29
Definies bsicas
Considere o problema de programao linear na forma matricial e padro:
Maximizar Z =
Sujeito a:
cx
Ax =
x
(1)
(2)
(3)
b
0
Define-se como soluo de um PPL, um vetor x que satisfaz as restries (2); soluo vivel de um
PPL um vetor x que satisfaz as restries (2) e (3); e regio vivel ou conjunto de solues viveis de um PPL o conjunto de vetores x que satisfazem (2) e (3).
Considere o sistema Ax = b no problema acima e suponha que
posto [A | b] = posto [A] = m,
o que significa que o sistema Ax = b compatvel, ou seja, tem soluo. Uma permutao das colunas de A pode ser feita de forma a obter
A = [B,N],
onde B uma matriz quadrada de dimenses m m, e N de dimenses m (n-m). Se o posto (B) =
m, ento B uma matriz inversvel, e uma soluo do sistema pode ser dado por:
x B = B 1b
xN = 0
O vetor x = (xB | xN) chamado uma soluo bsica do sistema de equaes Ax = b. Se x 0, ento
x chamado uma soluo bsica vivel do sistema. A matriz B chamada matriz bsica, ou simplesmente base do sistema e a matriz N chamada matriz no bsica. No vetor x = (xB | xN), as
componentes de xB so chamadas variveis bsicas e as componentes de xN so chamadas variveis no bsicas. Se todas as componentes de xB forem maiores que zero, ento x chamado soluo bsica vivel no degenerada, e se pelo menos uma de suas componentes for nula, ento x
chamado soluo bsica degenerada.
Exemplo para ilustrar as definies bsicas
Seja o problema de programao linear com duas variveis e duas restries:
Maximizar z =
sujeito a:
x1
x1
+
+
xj
3 x2
x2
x2
6
3
(1)
(2)
(3)
30
Obtendo-se a forma padro do PPL pela introduo das variveis de folga x3 e x4 nas restries (2) e
(3), respectivamente, tem-se o seguinte sistema de equaes lineares:
x1 +
xj 0
x2 +
x2
x3
+
=
x4 =
6
3
a2
a3
a4 ]
Para se obter uma matriz bsica B (2 2) a partir da matriz A, deve-se selecionar 2 vetores, ai e aj,
linearmente independentes. Para uma matriz A (m n), o nmero mximo possvel de matrizes
quadradas de dimenses m m dado por:
n!
m!(n m)!
No caso, n = 4 e m = 2, assim esse nmero mximo 6. No entanto, como os vetores a1 e a3 so iguais, ou seja, no so linearmente independentes, o nmero de matrizes bsicas fica reduzido a 5.
A seguir so mostradas todas as matrizes bsicas obtidas a partir do sistema dado, com as respectivas solues bsicas xB e as no bsicas xN.
1)
1 1
a2 ] =
0 1
x
1 1 6 3
x B = 1 = B 1b =
=
0 1 3 3
x2
x 0
xN = 3 =
x 4 0
B = [a1
31
2)
1 0
a4 ] =
0 1
x1
1 0 6 6
x B = = B 1b =
=
0 1 3 3
x4
x 0
xN = 2 =
x3 0
B = [a1
3)
1 1
a3 ] =
1 0
x
0 1 6 3
x B = 2 = B 1b =
=
1 1 3 3
x3
x 0
xN = 1 =
x 4 0
B = [a 2
4)
1 0
a4 ] =
1 1
x2
1 0 6 6
x B = = B 1b =
=
1 1 3 3
x4
x 0
xN = 1 =
x3 0
B = [a 2
5)
1 0
a4 ] =
0 1
x
1 0 6 6
x B = 3 = B 1b =
=
0 1 3 3
x4
x 0
xN = 1 =
x 2 0
B = [a 3
Das solues bsica obtidas, apenas a soluo nmero 4 no vivel, visto que o componente x4
negativo. Ento so 4 solues bsicas viveis para o PPL, a saber:
3
3
1
x = ,
0
0
6
0
2
x = ,
0
3
0
3
3
x = ,
3
0
0
0
4
x =
6
3
Estes pontos pertencem a R4 . Uma projeo em R2, ou seja, no plano gerado por x1 e x2, tem como
resultante os seguintes pontos:
32
3
x1 = ,
3
6
x2 = ,
0
0
x3 = ,
3
0
x4 =
0
Estes pontos so identificados na soluo grfica do problema, mostrando que eles correspondem
aos pontos extremos do polgono de restries (figura seguinte).
x3
x1
x2
x4
x1
x2
x2
2 x2
6
3
9
33
x2
x2
2 x2
x3
+
x4
+
x5
=
=
=
6
3
9
a2
a3
1 1 1 0 0
a 4 ] = 0 1 0 1 0
1 2 0 0 1
Considere a matriz bsica formada pelas trs primeiras colunas de A, ou seja, B = [a1 a2 a3]. A soluo correspondente dada por:
Variveis bsicas:
x1
1 1 1
x B = x 2 = B 1b = 0 1 0
x3
1 2 0
Variveis no bsicas:
6 0 2 1 6 3
3 = 0 1 0 3 = 3
9 1 1 1 9 0
x 4 0
xN = =
x5 0
Tendo em vista que a varivel bsica x3 = 0, ento a soluo degenerada. Veremos as implicaes
disso mais tarde.
34
Teoremas fundamentais
Considere o problema de programao linear na forma padro:
Maximizar Z = cx
Sujeito a:
Ax = b
x 0
Relembraremos agora algumas definies bsicas, ilustrando-as de forma um pouco diferente:
Definio 1: Uma base de uma matriz A (m n) uma matriz quadrada de m vetores coluna linearmente independentes em m. As variveis associadas a essas colunas so chamadas
variveis bsicas.
Ax = b
x = (xB, xR), onde:
xB representa o vetor das variveis bsicas de m componentes, e
xR representa o vetor das restantes n m variveis no bsicas.
xB
x:
A:
nm
BxB = b
35
Teorema 1
O conjunto C das solues viveis de um modelo de programao linear um conjunto convexo.
Demonstrao:
x = x1 + (1 ) x 2 C
{x1 , x 2 } C
0 1
Ax = A[ x1 + (1 ) x 2 ] = Ax1 + (1 ) Ax 2 = b + (1 )b = b
Teorema 2
Toda soluo bsica vivel do sistema Ax = b um ponto extremo do conjunto de solues viveis,
ou seja, um ponto extremo do conjunto C
Teorema 3
Todo ponto extremo x de um conjunto de solues viveis de um sistema Ax = b uma soluo bsica vivel.
Corolrio 1: O conjunto de pontos extremos de um conjunto de solues viveis finito e limitado
em C nm .
Corolrio 2: Se existe uma soluo vivel, ento existe uma soluo bsica vivel.
Teorema 4
1. Se o PPL tem soluo tima (mximo ou mnimo de Z) finita, ento pelo menos uma soluo tima ocorre em um ponto extremo (vrtice) do conjunto C;
2. Se a soluo tima ocorre simultaneamente em mais de um ponto extremo, ento qualquer combinao convexa desses pontos extremos tambm soluo tima.
36
O Algoritmo Simplex
O algoritmo Simplex um procedimento computacional desenvolvido para resolver problemas de
programao linear. Podemos dividi-lo em duas fases distintas:
Fase 1 - consiste em determinar uma soluo bsica vivel do PPL ou, ento, mostrar que tal soluo no existe. Neste ltimo caso, no havendo soluo bsica vivel, no existe soluo para o
problema, ou seja, o conjunto de restries inconsistente. Quando uma soluo bsica vivel puder ser identificada facilmente, a Fase 1 no precisa ser usada;
Fase 2 - consiste em determinar a soluo tima para o PPL ou, ento, mostrar que a soluo ilimitada, ou seja, que o valor de Z pode crescer ou decrescer infinitamente. A Fase 2 inicia a partir de
uma soluo bsica vivel do PPL, que pode ser obtida usando-se a Fase 1.
Ilustrao
Caso tpico de problema em que necessrio o uso da Fase 1:
Maximizar
sujeito a:
1 x1
-1 x1
1 x1
2 x1
2 x1
+
+
+
+
2 x2
3 x2
2 x2
1 x2
1 x2
9
0
10
5
Soluo grfica
1 x1
-1 x1
1 x1
2 x2
2 x1
+
+
+
+
2 x2
3 x2
2 x2
1 x2
1 x2
+ x3
+ x4
+ x5
- x6
=
=
=
=
9
0
10
5
37
Tomando-se x1 e x2 como variveis no bsicas, tem-se x1 = 0 e x2 = 0. Os valores das variveis bsicas so obtidas de forma trivial, ou seja: x3 = 9, x4 = 0, x5 = 10 e x6 = -5. A soluo bsica correspondente x = (0, 0, 9, 0, 10, -5), que no vivel, pois existe uma componente negativa (x6 = -5).
Neste caso, para se obter uma soluo bsica inicial necessrio usar a Fase 1 do Simplex. Veremos como isso pode ser feito mais adiante.
Caso de problema em que no necessrio usar a Fase 1:
Maximizar
sujeito a:
5 x1
1 x1
1 x1
2 x2
1 x2
2 x2
3
4
9
Soluo grfica
5 x1
1 x1
1 x2
2 x2
1 x2
2 x2
+ x3
+ x4
+ x5
=
=
=
3
4
9
Tomando-se x1 e x2 como variveis no bsicas, tem-se x1 = 0 e x2 = 0. Os valores das variveis bsicas so obtidas de forma trivial, ou seja: x3 = 3, x4 = 4 e x5 = 9. A soluo bsica correspondente
x = (0, 0, 3, 4, 9), que vivel, pois todas componentes so no negativas. Neste caso, para se obter
uma soluo bsica inicial no necessrio usar a Fase 1 do Simplex.
38
Podemos tambm descrever o algoritmo em forma de fluxograma, como mostra a figura seguinte:
39
40
Exemplo 1
Uma grande fbrica de mveis dispe em estoque de 250m de tbuas, 600m de pranchas e 500m de
painis de conglomerado. A fbrica normalmente oferece uma linha de mveis composta por um
modelo de escrivaninha, uma mesa de reunio, um armrio e uma prateleira. Cada tipo de mvel
consome uma certa quantidade de matria prima, conforme a tabela abaixo. A escrivaninha vendida por R$100, a mesa por R$80, o armrio por R$120 e a prateleira por R$20. Modele e resolva o
problema pelo simplex, de forma a maximizar a receita com a venda dos mveis.
Tbua
Prancha
Painis
Valor de
Revenda (R$)
80
120
Disponibilidade
do Recurso (m)
250
600
500
20
250
600
500
+ x1
+ x2
+ x3
=
=
=
250
600
500
A nossa soluo bsica vivel inicial pode ser obtida, neste caso, de forma trivial:
x1 = 250; x2 = 600; x3 = 500; xE = xM = xA = xP = 0.
Podemos agora montar o quadro simplex. Para isso, trataremos a equao da F.O. como se
fosse apenas mais uma equao do nosso sistema linear:
Z
+ 100xE
xE
3xE
+ 80xM
+ xM
xM
+ 2xM
+ 120xA
+ xA
+ xA
+ 4xA
+ 20xP
+ 4xP
+ 4xP
+ x1
+ x2
+ x3
=
=
=
=
0
250
600
500
41
Essa linha ser destacada no quadro, e sua importncia ser vista no decorrer do algoritmo.
Alm disso, usaremos a 1 coluna para fazer a numerao das linhas, somente para facilitar
as explicaes a seguir. A 2 coluna serve para relacionarmos as variveis bsicas (V.B.):
L0
L1
L2
L3
V.B.
Z
x1
x2
x3
xE
100
1
0
3
xM
80
1
1
2
xA
120
1
1
4
xP
20
4
2
0
x1
0
1
0
0
x2
0
0
1
0
x3
0
0
0
1
b
0
250
600
500
Para entrar na base, devemos escolher a varivel que possui o maior coeficiente na linha L0.
Esses coeficientes indicam a contribuio que cada varivel d Funo Objetivo. para cada
unidade de aumento de seus respectivos valores. No quadro acima, vemos que cada unidade
de aumento da varivel xA resulta em um aumento de 120 unidade no valor da F.O. Essa a
varivel que mais contribui localmente para o processo de maximizao da F.O., e portanto a escolhida para entrar na base. Esse processo de escolha representado no fluxograma da
seguinte maneira:
cj* = max(cj)
onde j* representa a coluna correspondente varivel que deve entrar na base.
Para que a varivel xA entre na base, preciso que uma varivel bsica saia da base (por
que?). Para determinar isso, s fazer com que o valor de xA cresa o mximo possvel. Podemos ver pelos valores do quadro acima que, se xA for maior que 125 (ou 4xA > 500), ento
teremos para a ultima restrio o seguinte:
4xA + x3 = 500
x3 = 500 4xA
e o valor de x3 seria negativo, o que seria invivel. Com isso, o maior valor que xA pode assumir sem violar nenhuma das restries xA = 125. Nesse caso, o valor de x3 seria igual a
zero, e ele ento sai da base. Todo esse processo de escolha representado no fluxograma da
seguinte maneira:
Escolher i* | min(bi / aij*), aij* > 0
onde i* representa a linha correspondente varivel que deve sair da base.
O significado desse procedimento bem simples: divida todos os bi pelos valores de aij*
que forem maiores que zero, e pegue o menor valor dessa diviso, que corresponder linha
i*. No caso acima, teramos:
L1: 250 / 1 = 250
L2: 600 / 1 = 600
L3: 500 / 4 = 125
i*
42
L0
L1
L2
L3
V.B.
Z
x1
x2
x3
xE
100
1
0
3
xM
80
1
1
2
xA
120
1
1
4
xP
20
4
2
0
x1
0
1
0
0
x2
0
0
1
0
x3
0
0
0
1
b
0
250
600
500
O elemento destacado representa o nosso pivot. Observe que os vetores-coluna das variveis
bsicas na matriz A formam uma matriz identidade, e seus coeficientes da linha L0 so nulos.
Esse padro ser mantido durante todo o decorrer do algoritmo. Dessa forma, os valores das
V.B. so obtidos diretamente na ltima coluna (b), e o valor de Z obtido na posio b0.
O pivoteamento consiste ento em transformar a coluna correspondente varivel que est
entrando na base em um vetor cannico, substituindo o vetor cannico da varivel que est
saindo da base. Fazemos isso por meio das operaes bsicas de linha.
Primeiro, fazemos L3 L3 4:
L0
L1
L2
L3
V.B.
Z
x1
x2
xA
xE
100
1
0
xM
80
1
1
xA
120
1
1
1
xP
20
4
2
0
x1
0
1
0
0
x2
0
0
1
0
x3
0
0
0
b
0
250
600
125
Depois, fazemos:
L0 -120 L3 + L0
L1 -1 L3 + L1
L2 -1 L3 + L2
L0
L1
L2
L3
V.B.
Z
xE
10
xM
20
xA
0
xP
20
x1
0
x2
0
x3
-30
b
-15.000
x1
125
x2
xA
0
1
2
0
0
0
1
0
475
125
L1 L1
L0 -20 L1 + L0
L2 - L1 + L2
L3 - L1 + L3
e obtemos o terceiro quadro simplex:
L0
L1
L2
L3
V.B.
Z
xM
x2
xA
xE
0
-1
xM
0
1
0
0
xA
0
0
0
1
xP
-140
8
-1
-4
x1
-40
2
1
-1
x2
0
0
1
0
x3
-20
-
0
b
-20.000
250
350
0
Z* = 20.000
A varivel de folga x2 representa a folga do recurso Pranchas. A soluo tima para esse
problema, consiste em fabricar somente 250 mesas, tendo uma sobra de 350m de pranchas, e
obtendo um lucro mximo de R$20.000,00.
Veja que, apesar da varivel xA estar na base, seu valor nulo, indicando que essa soluo
degenerada.
Entre todas as candidatas a entrar na base, selecione a varivel xk que possui o menor ndice.
Entre todas as candidatas a sair na base, selecione a varivel xr que possui o menor ndice.
44
Exemplo 2
Uma sorveteria produz dois tipos de sorvete: no palito e no copinho. Na sorveteria, o nico ponto
crtico a mo-de-obra disponvel. O sorvete no copinho consome 50% a mais de mo-de-obra do
que no palito. Sabe-se que se todo sorvete produzido fosse no palito a companhia poderia produzir
400 toneladas por dia. No entanto, o mercado tem condies de absorver, diariamente, apenas 300
toneladas de sorvete no palito e 150 toneladas de sorvete no copinho.
1. Modele o problema de modo a maximizar a produo de sorvete.
Considerando Xp igual quantidade de sorvete em palito, e Xc igual quantidade de sorvete em copinho produzido (em toneladas), temos:
max.
s.a.
Xp + Xc
Xp 300
Xc 150
Xp + 1,5Xc 400
2. Resolva-o graficamente.
Xc
400
300
200
100
100
200
300
400
Xp
Pela inclinao e sentido de crescimento da F.O. (linha pontilhada), vemos que a soluo tima a interseo das retas Xp = 300 e Xp + 1,5Xc = 400. Isso nos d as seguintes coordenadas:
Xp* = 300;
Xc* = (400 Xp) / 1,5 = 100 / 1,5 = 66,67;
Z* = 366,67.
45
46
+ x3
= 4
x2
+ x4
= 6
3x1 + 2x2
- x5 = 18
x1 0, x2 0, x3 0, x4 0, x5 0
x2
x1
Observe que, neste caso, no podemos considerar a soluo inicial contendo somente as variveis
de folga, o que resultaria em uma soluo invivel. Isso pode ser visto na representao grfica do
problema, mostrado acima. A soluo trivial x1 = 0 e x2 = 0 no pertence ao espao de solues.
Nessas situaes, normalmente opta-se por usar um dos seguintes mtodos para solucionar o modelo de P.L.:
Mtodo do grande M
Mtodo das duas fases
Veremos aqui o mtodo das duas fases (o outro ser discutido em sala de aula).
47
Na FASE 1, utilizamos o simplex sobre o problema modificado, e tentamos encontrar uma soluo
bsica vivel inicial do problema original.
Na FASE 2, de posse da base encontrada na 1a Fase, aplicamos o mtodo simplex tradicional em
busca da soluo tima do problema.
FASE 1
1. Introduzimos uma varivel artificial x aj para cada restrio do problema, ou somente para as
restries que tiverem varivel de folga com coeficiente negativo.
2. Resolvemos o problema para a seguinte F.O. modificada:
Min. q = x aj
3. Se q* = 0, ento existe uma soluo bsica vivel para o problema original. Neste caso, eliminamos as variveis artificiais, substitumos a F.O. modificada pela original e prosseguimos com
o simplex.
Introduzindo uma varivel artificial x 6a , e mudando a funo objetivo de forma a conter somente as
variveis artificiais, temos:
Minimizar q = x 6a
s.a.:
x1
3x1
+ x3
x2
+ 2x2
+ x4
- x5
+ x 6a
=
=
=
4
6
18
x1 0, x2 0, x3 0, x4 0, x5 0, x 6a 0
x 6a
-1
0
0
1
4
6
18
18
4
6
18
Iterao 1:
V.B.
x1
q
3
x3
1
x4
0
a
x6
3
18
4
6
18
V.B.
q
x3
x4
x 6a
x1
0
1
0
3
x2
0
0
1
2
x2
2
0
1
2
x3
0
1
0
0
x3
0
1
0
0
x4
0
0
1
0
x4
0
0
1
0
x5
0
0
0
-1
x5
-1
0
0
-1
x 6a
0
0
0
1
48
Iterao 2:
V.B.
x1
q
0
x1
1
x4
0
a
x6
0
V.B.
q
x1
x4
x2
x1
0
1
0
0
x2
2
0
1
x3
-3
1
0
x4
0
0
1
x5
-1
0
0
x 6a
0
0
0
6
4
6
-3
-1
x2
0
0
0
1
x3
0
1
3/2
-3/2
x4
0
0
1
0
x5
0
0
1/2
-1/2
x 6a
-1
0
-1/2
1/2
0
4
3
3
Fim da Fase 1. Retirando as partes sombreadas acima, e re-introduzindo a funo objetivo original,
temos:
FASE 2
V.B.
-Z
x1
x4
x2
x1
3
1
0
0
x2
5
0
0
1
x3
0
1
3/2
-3/2
x4
0
0
1
0
x5
0
0
1/2
-1/2
0
4
3
3
x2
0
0
0
1
x3
9/2
1
3/2
-3/2
x4
0
0
1
0
x5
5/2
0
1/2
-1/2
-27
4
3
3
Iterao 4:
V.B.
x1
-Z
0
x1
1
x3
0
x2
0
x2
0
0
0
1
x3
0
0
1
0
x4
-3
-2/3
2/3
1
x5
1
-1/3
1/3
0
-36
2
2
6
49
x3
-3
1
3
0
x4
-5
0
2
1
x5
0
0
1
0
-42
4
6
6
x2
Z = -36
A
B
Z = -42
q=0
Z = -27
q = 18
0
q=6
2
x1
Nutriente A
Nutriente C
$/kg
Gro 1
2
5
32
Gro 2
3
3
35
Necessidades mnimas
650
1050
32x1 + 35x2
Sujeito a:
2x1
5x1
+ 3x2
650
+ 3x2 1050
x1 0, x2 0
50
FASE 1
Introduzindo as variveis de folga e as variveis artificiais, temos o seguinte modelo artificial, j na
forma padro:
Maximizar q = x5a x6a
s.a.:
+ x5a
2x1
+ 3x2
x3
5x1
+ 3x2
V.B.
q
x5a
x1
0
2
x2
0
3
x3
0
-1
x4
0
0
x5a
-1
1
x 6a
-1
0
650
x 6a
-1
1050
+ x 6a
x4
650
1050
1700
650
-1
1050
Iterao 1:
V.B.
x1
q
7
a
x5
2
x2
6
3
x3
-1
-1
x4
-1
0
x5a
0
1
x 6a
0
0
1700
650
-1
1050
x2
1,8
x3
-1
x4
0,4
x5a
0
x 6a
-1,4
230
1,8
-1
0,4
-0,4
230
x 6a
Iterao 2:
V.B.
x1
q
0
a
x5
0
x1
0,6
-0,2
0,2
210
V.B.
q
x2
x1
x1
0
0
1
x2
0
1
0
x3
0
-0,56
0,33
x4
0
0,22
0,13
x5a
-1
0,56
-0,33
x 6a
-1
-0,22
-0,13
0
127,78
133,33
Fim da Fase 1. Retirando as partes sombreadas acima, e re-introduzindo a funo objetivo original,
temos:
51
FASE 2
V.B.
-Z
x2
x1
x1
32
0
1
x2
35
1
0
x3
0
-0,56
0,33
x4
0
0,22
0,13
0
127,78
133,33
120
80
40
x1
0
0
40
80
F.O.
Nutr.A
Nutr.C
120
160
200
240
280
320
360
400
52
Elementos de Ps-Otimizao
Seja o PPL dado pela Forma Padro:
Max. Z = cx
s.a.
Ax = b,
x0
e suponha que a aplicao do mtodo Simplex encontrou uma soluo tima associada a uma matriz
bsica B.
Podemos ter ento as seguintes situaes:
1.
2.
3.
4.
5.
Mudana no vetor c
Mudana no vetor b
Mudana na matriz A
Adio de nova atividade
Adio de uma nova restrio.
Se a anlise no permite mudana na base B, tem-se uma Anlise de Sensibilidade. Caso contrrio,
uma Anlise Paramtrica. Neste mdulo, ser feita uma abordagem da primeira situao.
Em que faixa podem variar os custos e os meus recursos de modo que a minha soluo no
mude?
Max. Z = cx
s.a.
Ax = b,
x0
equivalente a:
Max. Z = cB xB + cR xR
s.a.
BxB + RxR = b ,
xB 0, xR 0
Como j foi visto anteriormente, o mtodo Simplex procura, a partir de uma determinada
partio da matriz A, resolver o sistema de equaes Ax = b, sendo que a soluo, para xR = 0 , denominada soluo bsica. Se esta soluo atende a restrio x 0, ela denominada de soluo bsica vivel. Se ela minimiza a F.O. Z, ela chamada de soluo tima do PPL.
O Quadro Simplex na Forma Cannica:
xB
xR
-Z
cj zj
cB B 1b
xB
onde
B 1 R
B 1b
zj =
c B B 1 a j
53
Um exemplo:
Considere o modelo do PPL visto na pgina 45 (com Xp e Xc sendo substitudos por x1 e x2, respectivamente):
max.
s.a.
x1 + x2
x1
+ x3
x2
x1 + 1,5x2
xj 0
+ x4
= 300
= 150
+ x5 = 400
sendo
1 0 1 0 0
A = 0 1 0 1 0
1 1,5 0 0 1
300
b = 150
400
c = [1 1 0 0 0]
x1
x
2
x = x3
x4
x5
cB = [1 1 0]
1 0
R = 0 0
0 1
cR = [ 0 0]
0
0
1
B = 0, 67 0 0, 67
0,67 1 0, 67
1
x1
xB = x2
x4
x3
xR =
x5
cR cB B 1R = [ 0,333 0,667 ]
cB xB = 366, 67
...que precisamente o resultado que obtivemos na resoluo do PPL atravs do Simplex:
54
====================================================
-Z|
0.0
0.0
-0.3
0.0
-0.7| -366.7
---------------------------------------------------Xp|
1.0
0.0
1.0
0.0
0.0|
300.0
X4|
0.0
0.0
0.7
1.0
-0.7|
83.3
Xc|
0.0
1.0
-0.7
0.0
0.7|
66.7
====================================================
Mudana no vetor c
A anlise feita considerando-se a variao no coeficiente de cada varivel na funo objetivo, exigindo-se que as condies de otimalidade:
(cj zj) 0
sejam atendidas para toda VNB. Neste caso, se a varivel em questo for no bsica resolve-se uma
desigualdade linear, enquanto que se ela for varivel bsica resolve-se um sistema de desigualdades
lineares.
Exemplo:
Considere a VNB x3 no quadro SIMPLEX timo visto anteriormente. O coeficiente de x3 na F.O.
c3 = 0.
Deve-se ter:
(c3 + ) z3 0 (c3 + ) cB B 1a3 0
0
0 1
1
(0 + ) [1 1 0] 0, 67 0 0, 67 0 0
0, 67 1 0, 67 0
0,333 0
0,333
Isso permite uma variao para c3 de at 0,333. Neste intervalo, x3 continuar sendo VNB. Mais
ainda, os conjuntos de VB e de VNB no mudam.
Para fazer a mesma anlise considerando uma VB (e.g. x1), poderamos fazer assim:
cR cB B 1 R 0
0
0 1 0
1
[ 0 0] [ (1 + ) 1 0] 0, 67 0 0,67 0 0 0
0, 67 1 0, 67 0 1
0,333
55
Mudana no vetor b
Qualquer mudana no vetor b deve ser feita de modo que as VB continuem no negativas, ou seja:
B-1b 0
Exemplo:
Considere o elemento b1=300. Temos ento que:
0
0 300 +
b1 +
1
B
b
0 0, 67 0 0, 67 150 0
2
b3
0, 67 1 0, 67 400
300 + 0
66, 67 0.67 0
83,33 + 0.67 0
125 100
56
Dualidade
L
i
e(t)
i(t)
R
Circuito 1
Circuito 2
Circuito 1:
Circuito 2:
onde G = 1 R
Forma geral: a
dx
+ bx + c xdt = y (t )
dt
Max.
c x
j
(1)
j =1
n
s.a.
ij
x j bi , para i = 1, 2, ..., m
(2)
j =1
xj 0 para j = 1, 2, ..., n
(3)
Min.
b u
(4)
i i
i =1
m
s.a.
a u
ij
c j , para j = 1, 2, ..., n
(5)
i =1
ui 0 para i = 1, 2, ..., m
(6)
Primal (P)
Max. cx
s.a.
Ax b
x0
x: (1 n)
Dual (D)
Min. ub
s.a.
uA c
u0
u: (m 1)
Exemplo:
Primal (P)
Max. 3x1 + 1x2 + 2x3
s.a.
2x1 + 4x2 + 3x3 6
3x1 + 3x2 + 1x3 8
x1 0, x2 0, x3 0
Dual (D)
Min. 6u1 + 8u2
s.a.
2u1 + 3u2 3
4u1 + 3u2 1
3u1 + 1u2 2
u1 0, u2 0
Teorema 1:
Se x e u so solues viveis dos problemas (P) e (D), respectivamente, ento cx u b
Teorema 2:
Se x e u so solues viveis dos problemas (P) e (D), respectivamente, e cx = u b , ento essas solues so timas, ou seja, cx * = u *b
Teorema da Existncia
Para um par de problemas duais, uma e somente uma das alternativas abaixo verdadeira:
Ex:
(P) Max. 3x1 + 2x2
s.a.
x1
3
x1
x2 0
x1 0, x2 0
u(Ax b) = 0
(c uA)x = 0
Prova:
58
Ax b Ax b 0 u ( Ax b) 0
u A c c u A 0 ( c u A) x 0
Fazendo
= u ( Ax b)
= (c u A) x
Teremos:
+ = u ( Ax b) + (c u A) x = cx u b 0
Se x e u forem solues timas, teremos:
cx = u b
Logo,
= =0
Restries
Problema de
Minimizao
0
0
Irrestrito
Variveis
Variveis
Problema de
Maximizao
0
0
Irrestrito
Restries
Na prtica, muitos modelos de PL contm restries do tipo , bem como outras restries do tipo
e outras ainda do tipo =. Podemos ainda ter variveis irrestritas ou at mesmo negativas no
modelo original (no padro), como vimos anteriormente. A tabela abaixo mostra como podemos
converter imediatamente esses modelos mistos em seus respectivos duais, sem que seja necessrio passar fazer o modelo passar por transformaes intermedirias.
Feita essa primeira transformao, podemos ento aplicar as regras usuais para passar o modelo dual para a forma padro, caso, seja necessrio.
59
Exemplo
Uma fbrica pode produzir trs produtos: televisores, DVDs e cmeras de vdeo. Na tabela abaixo
esto apresentados os consumos dos principais recursos da fbrica por produto, bem como a disponibilidade destes recursos, a contribuio unitria de cada produto para o lucro da empresa, e a demanda mnima do mercado.
Recursos da Fbrica
(Setores de Produo)
DVD
Cmera
0,151
0,000
0,078
0,340
0,057
45,00
0,210
0,345
0,056
0,450
0,030
115,00
0,120
0,450
0,045
0,370
0,045
216,00
55,800
15,500
23,200
Produo de Circuitos
Produo de Mecanismos
Produo de Gabinetes
Montagem de Produtos
Expedio
Disponibilidade
(horas / ms)
22,500
17,200
10,500
35,000
6,800
Para o problema acima foi obtida a seguinte soluo tima atravs do Lindo:
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
X1
X2
X3
ROW
2)
3)
4)
5)
6)
7)
8)
9)
9578.494
VALUE
55.800000
15.500000
24.467567
SLACK OR SURPLUS
7.883092
0.842095
4.178559
0.000000
2.053360
0.000000
0.000000
1.267568
REDUCED COST
0.000000
0.000000
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
583.783813
0.000000
-153.486481
-147.702698
0.000000
VARIABLE
X1
X2
X3
ROW
2
3
4
5
6
7
8
9
CURRENT
COEF
45.000000
115.000000
216.000000
CURRENT
RHS
22.500000
17.200000
10.500000
35.000000
6.800000
55.800000
15.500000
23.200000
ALLOWABLE
DECREASE
7.883092
0.842095
4.178559
0.469000
2.053360
2.036438
4.162659
INFINITY
60
(1)
22,5
17,2
10,5
35,0
6,8
55,8
15,5
23,2
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
to seria uma sugesto bvia, mas isso provavelmente j teria sido feito se fosse possvel. Analisando as variveis de folga e os preos duais, vemos que, para cada unidade que aumentarmos a capacidade do Setor de Montagem de Produtos, o lucro aumenta em R$ 583,78 /
ms. Podemos tentar obter essa capacidade adicional usando um pouco de mo de obra ociosa dos setores de Produo de Circuitos e de Produo de Gabinetes. Se no for possvel deslocar essa mo de obra, teramos ainda grande chance de contratar mo de obra adicional a
um custo menor do que R$ 583,78 / hora. Deve ser notado, no entanto, que esse aumento no
lucro s vlido para uma capacidade desse setor 0,62 horas / ms acima da capacidade atual. Portanto, seria interessante fazer algumas simulaes para ter uma idia melhor das conseqncias da contratao de um novo funcionrio para esse setor.
62
Redes de computadores
Redes ferrovirias
Redes de telecomunicaes
Redes de estradas
Redes Eltricas
Redes de esgotos
Redes de transportes
Redes de atividades
scheduling de atividades em grandes projetos
Neste escopo, portanto, uma rede pode se referir a qualquer conjunto de entidades (computadores,
lojas, fbricas, mquinas, pessoas etc.) interligadas por meio de cabos, estradas, caminhos etc., ou
que possuem algum inter-relacionamento. Esse tipo de problema se encaixa perfeitamente na modelagem por meio de grafos, como veremos mais adiante.
Redes / Grafos
ESTRUTURA
TOPOLGICA
INFORMAES QUANTITATIVAS
SOBRE OS ELEMENTOS
63
300
300
250
200
1
200
200
350
200
350
150
Como podemos resolver esse problema? A forma mais simples seria enumerar todas as rotas possveis e calcular a distncia de cada uma. Como a posio da cidade-origem no itinerrio fixo, esse
mtodo envolveria analisar todas as permutaes possveis dentre as n1 cidades restantes, ou seja,
analisar (n1)! possveis rotas.
Com 5 cidades, teramos 4! = 24 rotas, o que seria trivial de analisar (podendo at mesmo ser feito
mo). Com 10 cidades, teramos cerca de 362 mil rotas, o que seria perfeitamente possvel com a
ajuda de um micro-computador. Aumentando esse nmero para 20 cidades, teramos cerca de 1017
rotas. Se pudssemos implementar um programa que pudesse analisar uma soluo (permutao) a
cada ciclo de relgio de um computador, ento usando um computador de 4 GHz gastaramos:
1017
= 2,5 107 segundos = 9,5 meses!
9
4 10
Com 50 cidades, teramos cerca de 1062 rotas, requerendo cerca de 1045 anos de processamento!
Embora o uso de uma tcnica dessas de fora bruta no fosse a maneira mais inteligente de encontrar uma soluo tima para esse problema (a no talvez para um pequeno nmero de cidades),
nesse caso no existe realmente uma tcnica apropriada para fazer isso, seja ela por meio de modelagem matemtica em forma de PL, ou usando um outro algoritmo qualquer. Diferente dos problemas de PL que estudamos anteriormente, que dispem do eficiente mtodo Simplex, todos os mtodos disponveis para a obteno de uma soluo tima para o PCV possuem dificuldade exponencial com o tamanho do problema (nmero de cidades).
Assim como o PCV, diversos outros problemas de programao em redes so extremamente difceis
de resolver. Nesses casos, o mais indicado o uso de heursticas, ou seja, algoritmos buscam encontrar uma soluo boa para o problema, mas no necessariamente a soluo tima, dentro de um
intervalo de tempo vivel.
No entanto, outros problemas de programao em redes, embora possam ser modelados como PLs e
resolvidos pelo Simplex, possuem mtodos de soluo bem mais eficientes e que permitem resolver
problemas bem maiores do que seria possvel se usssemos a modelagem matemtica. Isso possvel graas aos desenvolvimentos obtidos na Teoria dos Grafos. Alm de vermos alguns desses problemas, a nossa preocupao ser tambm identificar aqueles problemas que, assim como o PCV,
so mais difceis de resolver e, portanto, requerem a busca de solues no-timas ou aproximadas.
64
Caminhos;
Redes de comunicao;
Localizao de facilidades (Depsitos, Hospitais, Escolas, etc.);
Desenhos de circuitos impressos;
Desenho e/ou layout de revistas, jornais, etc;
Distribuio de produtos;
Telecomunicaes;
Limpeza urbana;
Controle de trfego;
Atribuio de rdio freqncia mvel, etc.
Teoria dos grafos, sem abusar muito do princpio, uma ferramenta que s vezes resolve problemas
e algumas vezes nos d idias sobre como resolv-los. Ela, em geral, tem que ser usada em conjunto
com muitas outras ferramentas, matemticas ou estatsticas, etc. Felizmente, o uso da teoria dos grafos pode nos ajudar a compreender em poucas palavras o significado de grandes problemas ligados nossa vida social, e algumas de suas possveis solues.
65
Figura 1: Visualizao de Knigsberg, e indicao das sete pontes sobre o rio Pregel.
66
Muitos anos mais tarde, em 1962, um matemtico da Universidade Normal de Shangtun, Kwan
Mei-Ko, quando de sua passagem como funcionrio dos correios durante a revoluo cultural chinesa, preocupou-se com uma situao semelhante de Euler e Heierholzer, porm adequada ao percurso dos carteiros que atenderiam ruas de sua cidade. Neste caso, Kwan mostrou-se interessado em
definir alm da travessia, a forma mais fcil de faz-la, percorrendo a menor distncia possvel.
Kwan, definiu assim o problema: Um carteiro tem que cobrir seu local de trabalho, antes de retornar ao posto. O problema encontrar a menor distncia de percurso para o carteiro. Esse problema conhecido como o Problema do Carteiro Chins.
Dentre as muitas e famosas histrias da Teoria dos Grafos, sem dvida uma das mais curiosas a
do matemtico William Rowan Hamilton. Hamilton j fazia parte da Royal Astronomia Irlandesa
aos 22 anos, foi condecorado Cavalheiro aos 30 anos, e foi reconhecido como um dos lderes matemticos de sua poca. Uma de suas descobertas mais significativas foi a existncia da lgebra no
comutativa, ou seja, a lgebra onde a multiplicao xy no necessariamente igual a yx. H muitos
sistemas de lgebra no comutativa, e um deles, descoberto por Hamilton foi chamado por ele de O
Clculo Icosiano, o qual pode ser interpretado em termos de caminhos sobre um grafo descrito por
um dodecaedro regular.
Hamilton comunicou sua descoberta em uma carta datada de 7 de outubro de 1856, e posteriormente publicou dois artigos sobre o assunto. Ele usou uma representao grfica como base de um quebra-cabeas, que ele chamou de O Jogo Icosiano. Hamilton exps orgulhosamente o seu jogo na
Associao Britnica em Dublin, 1857. A idia foi vendida por 16 pounds para um comerciante de
jogos e quebra-cabeas.
O jogo foi comercializado em 1857, acompanhado por um guia de instrues, escrito pelo prprio
Hamilton. O leitor logo veria que o objetivo do jogo era encontrar caminhos e circuitos sobre o grafo formado pelo dodecaedro, satisfazendo certas condies especficas. Particularmente, o primeiro
problema era o de encontrar um circuito passando somente uma vez por cada vrtice do dodecaedro,
que exatamente o PCV descrito anteriormente (Figura 4).
67
G2:
68
ORDEM
A ordem de um grafo G dada pela cardinalidade do conjunto de vrtices, ou seja,
pelo nmero de vrtices de G. Nos exemplos ao lado:
ordem(G1) = 4
ordem(G2) = 6
ADJACNCIA
Em um grafo simples (a exemplo de G1) dois vrtices v e w so adjacentes (ou vizinhos) se h uma aresta a=(v,w) em G. Est aresta dita ser incidente a ambos, v e w.
o caso dos vrtices Maria e Pedro em G1. No caso do grafo ser dirigido (a exemplo de G2), a adjacncia (vizinhana) especializada em:
Sucessor: um vrtice w sucessor de v se h um arco que parte de v e chega em w.
Em G2, por exemplo, diz-se que Emerson e Antonio so sucessores de Alfredo.
Antecessor: um vrtice v antecessor de w se h um arco que parte de v e chega em
w. Em G2, por exemplo, diz-se que Alfredo e Ceclia so antecessores de Antonio.
GRAU
O grau de um vrtice dado pelo nmero de arestas que lhe so incidentes. Em G1,
por exemplo:
grau(Pedro) = 3
grau(Maria) = 2
grauDeEmissao(Alfredo) = 2
grauDeRecepo(Alfredo) = 0
FONTE
Um vrtice v uma fonte se grauDeRecepo(v) = 0. o caso dos vrtices Isadora,
Alfredo e Ceclia em G2.
SUMIDOURO
Um vrtice v um sumidouro se grauDeEmisso(v) = 0. o caso dos vrtices Renata e Emerson em G2.
69
GRAFO REGULAR
Um grafo dito ser regular quando todos
os seus vrtices tm o mesmo grau.
G4:
V=HUM
A = {(v,w) | (v H e w M) ou (v
M e w H) e <v foi namorado
de w>}
G5:
G6:
K3,3
70
GRAFO VALORADO
Um grafo G(V,A) dito ser valorado quando existe uma ou mais funes relacionando V e/ou A com um conjunto de nmeros.
Para exemplificar (ver o grafo G7), seja
G(V,A) onde:
G7:
MULTIGRAFO
Um grafo G(V,A) dito ser um multigrafo quando existem mltiplas arestas entre
pares de vrtices de G. No grafo G8, por exemplo, h duas arestas entre os vrtices A e
C e entre os vrtices A e B, caracterizando-o
como um multigrafo.
G8:
SUBGRAFO
Um grafo Gs(Vs, As) dito ser subgrafo de
um grafo G(V,A) quando Vs V e As A. O
grafo G9, por exemplo, subgrafo de G8.
G9:
CADEIA
Uma cadeia uma seqncia qualquer de arestas
adjacentes que ligam dois vrtices. O conceito de
cadeia vale tambm para grafos orientados, bastando que se ignore o sentido da orientao dos
arcos. A seqncia de vrtices (x6, x5, x4, x1) um
exemplo de cadeia em G11.
G11:
Uma cadeia dita ser elementar se no passa duas vezes pelo mesmo vrtice.
dita ser simples se no passa duas vezes pela
mesma aresta (arco).
O comprimento de uma cadeia o nmero de arestas (arcos) que a compe.
71
CAMINHO
Um caminho uma cadeia na qual todos os arcos possuem a mesma orientao. Aplica-se, portanto, somente a grafos orientados. A seqncia de vrtices (x1, x2, x5,
x6, x3) um exemplo de caminho em G11.
CICLO
Um ciclo uma cadeia simples e fechada (o vrtice inicial o mesmo que o vrtice
final). A seqncia de vrtices (x1, x2, x3, x6, x5, x4, x1) um exemplo de ciclo elementar em G11.
CIRCUITO
Um circuito um caminho simples e fechado. A seqncia de vrtices (x1, x2, x5, x4,
x1) um exemplo de circuito elementar em G11.
FECHO TRANSITIVO
O fecho transitivo direto (ftd) de um vrtice v o conjunto de todos os vrtices que
podem ser atingidos por algum caminho iniciando em v. O ftd do vrtice x5 do grafo
G17, por exemplo, o conjunto: {x1, x2, x3, x4, x5, x6}. Note que o prprio vrtice faz
parte do ftd j que ele alcanvel partindo-se dele mesmo.
O fecho transitivo inverso (fti) de um vrtice v o conjunto de todos os vrtices a
partir dos quais se pode atingir v por algum caminho. O fti do vrtice x5 do grafo G17,
por exemplo, o conjunto: {x1, x2, x4, x5, x7}. Note que o prprio vrtice faz parte do
fti j que dele se pode alcanar ele mesmo.
GRAFO CONEXO
G12:
G14:
Uma aresta dita ser um a ponte se sua remoo provoca um reduo na conexidade
do grafo. As arestas (x1, x2) em G13 e G14 so exemplos de pontes.
72
RVORE
Uma rvore um grafo conexo sem ciclos.
Seja G(V,A) um grafo com ordem n > 2; as propriedades seguintes so equivalentes para caracterizar G
como uma rvore:
1.
2.
3.
4.
G20:
ARBORESCNCIA
Uma arborescncia uma rvore que possui uma raiz. Aplica-se, portanto, somente a grafos orientados.
G21:
FLORESTA
Uma floresta um grafo cujas componentes conexas
so rvores.
G22:
73
Fluxos em Rede
Uma rede definida como um grafo orientado G(V,A) atravessado por um fluxo F = {f1, f2, ..., fm}
que circula em seus m arcos. Em uma rede, normalmente temos trs tipos de ns:
Ns de oferta ou fontes, que representam entidades que produzem ou distribuem um determinado
produto;
Ns de demanda ou sumidouros, que representam entidades que consomem ou requerem uma determinada demanda do produto;
Ns de transbordo, que representam somente pontos de passagem para os produtos. So cruzamentos, cidades, computadores ou quaisquer outras entidades que no produzem e nem consomem
nada, mas so somente pontos intermedirios entre as ofertas e as demandas.
Temos abaixo alguns exemplos de redes, onde os ns s representam as ofertas, os ns t representam
as demandas, e os demais ns so ns de transbordo. Os valores em cada arco representam, em geral, custos de transporte, distncias ou tempos de viagem entre cada par de ns.
Figura 1
Figura 2
Figura 3
Repare que na Figura 1 temos o caso mais simples, onde h somente um n de oferta e um de demanda. Essa topologia usada, por exemplo, na determinao de um caminho mais curto entre dois
ns, em problemas de fluxo mximo, e em redes PERT.
Na Figura 2, temos diversos ns de oferta e de demanda. Esse grafo poderia representar, por exemplo, um caso tpico onde temos diversas fbricas ou atacadistas que desejam distribuir um ou mais
produtos para determinadas cidades ou lojas.
74
Na Figura 3, o n de oferta (e.g. uma fbrica) possui diversos centros de distribuio (s1, s2 e s3),
que por sua vez distribuem o produto pela rede at outros centros intermedirios (e.g. atacadistas ou
armazns), que por sua vez abastassem o consumidor (que poderia ser mais de um, no caso).
Em todos esses tipos de problema, no entanto, o que normalmente se busca determinar o fluxo da
rede tal que o custo, o tempo ou a distncia total de transporte seja minimizado, ou que o fluxo total
seja maximizado. Para isso, devemos determinar o fluxo em cada arco que liga cada par de ns i e j:
xij
Conhecendo o custo cij em cada arco para se transportar cada unidade desse fluxo, podemos calcular
o custo total do transporte no grafo todo como sendo:
n
(i, j ) A
i =1 j =1
ou:
Custo Total =
( i , j )A
cij xij
(i, j ) A
Da mesma forma, podemos ter restries de capacidade nos ns. Um exemplo seria o da Figura 3
mostrado anteriormente, onde os centros de distribuio s1, s2 e s3 e os armazns t1 e t2 teriam capacidades mnimas e/ou mximas associadas a elas (como poderamos modelar isso?).
75
Podemos calcular a soma total dos fluxos que saem do n i como sendo:
Fluxo total que sai do n i =
( i , j ) A
xij
Da mesma forma, podemos calcular a soma total dos fluxos que chegam ao n i como sendo:
Fluxo total que chega ao n i =
( k ,i ) A
xki
Para os ns de oferta, temos que o fluxo total que sai do n no poder exceder a sua capacidade
mxima de oferta si. Alm disso, podemos enxergar o fluxo que chega ao n de oferta como sendo
um aumento de sua capacidade de produo ou oferta. Portanto, para cada n de oferta dever existir uma restrio com o seguinte formato:
(fluxo total que sai do n i) si + (fluxo total que chega ao n i)
ou...
xij si +
xij
( i , j ) A
ou...
( i , j ) A
( k ,i ) A
xki
xki si
( k ,i ) A
(1)
Para os ns de demanda, temos que o fluxo total que chega ao n dever ser exatamente igual sua
demanda di. Alm disso, podemos enxergar o fluxo que sai do n de demanda como sendo um aumento de sua demanda. Em outras palavras, devemos fazer com que o fluxo resultante ou que efetivamente permanece no n de demanda seja igual a di. Portanto, para cada n de demanda dever existir uma restrio com o seguinte formato:
(fluxo total que chega ao n i) = di + (fluxo total que sai do n i)
ou...
xki = d i +
xki
( k ,i )A
ou...
( k ,i )A
( i , j )A
( i , j ) A
xij
xij = di
Podemos ainda fazer com que o lado esquerdo da equao acima fique igual Eq.1, bastando multiplic-la por (-1):
( i , j ) A
xij
( k ,i ) A
xki = di
(2)
Para os ns de transbordo, temos que o fluxo total que sai do n dever ser exatamente igual ao
fluxo que chega ao n, j que no h produo nem consumo no n. Portanto, para cada n de
transbordo dever existir uma restrio com o seguinte formato:
(fluxo total que sai do n i) = (fluxo total que chega ao n i)
ou...
76
xij =
xij
( i , j ) A
ou...
( i , j ) A
xki
xki = 0
( k ,i ) A
( k ,i )A
(3)
( i , j )A
s.a.
xij
xij
xij
( i , j ) A
( i , j ) A
( i , j ) A
cij xij
xki si
i S
xki = di
i D
xki = 0
i T
( k ,i ) A
( k ,i ) A
( k ,i )A
(i, j ) A
onde:
A = conjunto dos arcos do grafo G = (V, A);
S = conjunto dos ns de oferta;
D = conjunto dos ns de demanda;
T = conjunto dos ns de transbordo;
xij = fluxo no arco (i, j);
cij = custo por unidade do fluxo no arco (i, j);
si = capacidade mxima de oferta dos ns i S;
di = demanda dos ns i D;
lij = limite mnimo para o fluxo no arco (i, j);
uij = limite mximo para o fluxo no arco (i, j).
A ltima restrio, que limita o fluxo nos arcos, poder existir ou no. Quando existir, dizemos que
o problema capacitado. Caso contrrio, o problema no-capacitado, e essa restrio poder ser
substituda por:
(i, j ) A
xij 0
Veja que, para que o modelo seja vivel, devemos ter, obrigatoriamente:
s d
i
i S , j D
77
Sistemas Equilibrados
Em sistemas ditos equilibrados, temos que:
s = d
i
i S , j D
( i , j ) A
cij xij
s.a.
si
xij xki = di
( i , j ) A
( k ,i ) A
0
i S
i D
i T
Fluxo produzido
no n i
Fluxo que
sai do n i
Fluxo consumido
pelo n i
Podemos considerar o fluxo produzido em um n como sendo a sua capacidade mxima de oferta, caso o n seja de oferta. Caso contrrio, o fluxo produzido no n igual a zero. Da mesma forma, podemos considerar o fluxo consumido por um n como sendo a sua demanda, caso o n seja
de demanda. Caso contrrio, o fluxo consumido pelo n igual a zero. Alguns ns podem inclusive
ter, ao mesmo tempo, uma capacidade de oferta e uma demanda interna, o que facilmente resolvido na expresso acima.
Veja que, seja ou no o sistema equilibrado, teremos sempre uma varivel xij para cada arco do
grafo, e tambm uma restrio para cada n do grafo.
78
Algumas Consideraes
1.
2.
3.
4.
5.
Exemplos de Aplicaes
A mais importante aplicao est em planejar a operao de uma rede de distribuio de uma companhia. Este tipo de aplicao envolve determinar um plano para transportar bens a partir das fontes
(fbricas, etc.) para locais de armazenagem intermedirias (quando necessrio) e ento para os clientes (demanda).
Tipo de Aplicao
Ns de
Fornecimento
Ns de
Transbordo
Locais de armazenagem intermedirias
Ns de
Demanda
Fontes de bens
Fontes de resduos
Instalaes de processamento
Locais de depsitos de
resduos slidos
Vendedores
Estoques intermedirios
Gerenciamento de fluxo
de dinheiro
Fontes de dinheiro em
um tempo especfico
Coordenao de mistura
de produtos em plantas
Plantas
Clientes
Instalaes de processamento
Necessidades de dinheiOpes de investiro em um tempo especmento
fico
Produo de um pro- Mercado para um produto especfico
duto especfico
Exemplo 1:
Considere a rede representada pelo grafo a seguir, onde temos:
Dois ns de oferta (A e B), com capacidade de 60 e 50 unidades, respectivamente;
Dois ns de demanda (D e E), com capacidade de 30 e 60 unidades, respectivamente;
Um n de transbordo (C).
79
Temos tambm os custos de transporte cij e as capacidades mximas de fluxo dos arcos AB e CE.
sA = 60
dD = 30
cAD = 9
cAC = 4
cED = 2
cAB = 2
C
uAB = 10
cDE = 3
cCE = 1
cBC = 3
uCE = 80
sB = 50
dE = 60
bD = 30
(9, 0, )
(4, 0, )
(2, 0, )
(2, 0, 10)
(3, 0, )
C
(1, 0, 80)
(3, 0, )
B
bB = 50
bE = 60
onde os bi representam as ofertas nos ns, sendo que ofertas negativas so, na realidade, demandas.
Podemos ento escrever o modelo usando a formulao geral vista anteriormente:
Minimizar
s.a.
N A)
N B)
N C)
N D)
N E)
80
480.0000
VARIABLE
XAB
XAC
XAD
XBC
XCE
XDE
XED
ROW
N A)
N B)
N C)
N D)
N E)
7)
8)
VALUE
0.000000
30.000000
10.000000
50.000000
80.000000
0.000000
20.000000
REDUCED COST
1.000000
0.000000
0.000000
0.000000
0.000000
5.000000
0.000000
SLACK OR SURPLUS
20.000000
0.000000
0.000000
0.000000
0.000000
10.000000
0.000000
DUAL PRICES
0.000000
1.000000
4.000000
9.000000
7.000000
0.000000
2.000000
Esta soluo pode ser vista com mais clareza se usarmos o prprio grafo para ilustr-lo, como visto
na figura abaixo. As linhas tracejadas representam arcos (variveis) no usados na soluo.
bD = 30
bA = 60
10
30
20
C
80
50
B
bB = 50
E
bE = 60
Exemplo 2:
Considere agora a rede representada pelo grafo a seguir, diferindo do anterior somente por ser um
sistema equilibrado e totalmente no-capacitado. Nesse caso, os arcos so rotulados somente com
seus custos cij:
81
bA = 50
bD = 30
9
C
1
3
B
bB = 40
bE = 60
ROW
N A)
N B)
N C)
N D)
N E)
470.0000
VALUE
0.000000
50.000000
0.000000
40.000000
90.000000
0.000000
30.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
0.000000
0.000000
REDUCED COST
1.000000
0.000000
2.000000
0.000000
0.000000
5.000000
0.000000
DUAL PRICES
0.000000
1.000000
4.000000
7.000000
5.000000
82
bA = 50
bD = 30
D
50
30
C
90
40
bB = 40
bE = 60
bD = 30
cAD = 9
cAC = 4
br = 20
cED = 2
cAB = 2
uAB = 10
cBr = 0
cDE = 3
cCE = 1
cBC = 3
uCE = 80
bB = 50
bE = 60
Essa nova rede ter, em seu modelo de PL, uma restrio adicional, correspondendo ao n artificial
r, e duas novas variveis, devido ligao desse n com os dois ns de oferta:
Minimizar
s.a.
N A)
N B)
N C)
N D)
N E)
N r)
xij 0
83
Resolvendo o modelo atravs do Lindo, vemos que a folga que existia para o N A agora transformada no fluxo xAr:
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
XAB
XAC
XAD
XBC
XCE
XDE
XED
XAR
XBR
ROW
N A)
N B)
N C)
N D)
N E)
N R)
8)
9)
480.0000
VALUE
0.000000
30.000000
10.000000
50.000000
80.000000
0.000000
20.000000
20.000000
0.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
10.000000
0.000000
REDUCED COST
1.000000
0.000000
0.000000
0.000000
0.000000
5.000000
0.000000
0.000000
1.000000
DUAL PRICES
0.000000
1.000000
4.000000
9.000000
7.000000
0.000000
0.000000
2.000000
Para exemplificar o uso da formulao restrita, usaremos a rede do Exemplo 2, que j equilibrada,
e acrescentaremos somente os ns f e s, juntamente com os arcos correspondentes:
84
bA = 50
bD = 30
9
bf = 90
bs = 90
bB = 40
bE = 60
bD = 30
9
C
1
3
B
bB = 40
E
bE = 60
85
Iremos agora escrever o modelo de PL, colocando cada varivel em uma coluna distinta, j em um
formato que se assemelha ao quadro simplex:
Minimizar
Z = 2xAB + 4xAC + 9xAD + 3xBC + xCE + 3xDE + 2xED
s.a.
N A)
xAB + xAC + xAD
N B) xAB
+ xBC
N C)
xAC
xBC + xCE
N D)
xAD
xDE
N E)
xCE xDE
xED
+ xED
=
=
=
=
=
50
40
0
30
60
Escrevendo a matriz A separadamente, em forma de tabela, somente com os coeficientes das variveis, temos:
Ns
xAB
+1
1
A
B
C
D
E
xAC
+1
xAD
+1
Arcos
xBC
xCE
+1
1
+1
1
1
xDE
xED
+1
1
1
+1
Repare que, como temos exatamente uma varivel xij para cada arco do grafo, e como cada arco (i,
j) sai do n i e entra no n j, temos ento que cada vetor-coluna da matriz A associado varivel xij ter a forma:
ei ej
onde ei e ej so vetores unitrios.
A principal propriedade da matriz A a total unimodularidade. Dizemos que uma matriz totalmente unimodular quando qualquer sub-matriz quadrada de A possui determinante igual a 0, 1 ou
1. Por causa dessa propriedade, as solues timas obtidas pelo algoritmo Simplex levando-se em
conta o sistema linear Ax = b, sero sempre inteiras, desde que os valores de bi sejam tambm inteiros.
Como j vimos tambm, a soluo juntamente com a respectiva Base segue abaixo:
bA = 50
bD = 30
D
Ns
50
A
B
C
D
E
30
C
90
xAC
+1
1
Arcos
xBC
xCE
+1
1
xED
+1
1
1
+1
40
B
bB = 40
E
bE = 60
86
cij
d1
o1
d2
o2
d3
o3
d4
o4
ns de oferta
(m)
d5
ns de demanda
(n)
Na viso clssica desse problema, os arcos no possuem limite de capacidade para o fluxo (mas
possvel que esses limites existam em alguns casos prticos). O PT consiste ento em determinar o
fluxo entre cada par de ns (i, j), onde i = 1, 2, ..., m, e j = 1, 2, ..., n, de tal forma a obter o menor
custo (ou o maior lucro) total de transporte. Para que o fluxo global seja vivel, devemos observar
tambm as mesmas restries j vistas para o PFCM, ou seja:
No existem ns de transbordo;
S existem arcos saindo dos ns de oferta;
S existem arcos chegando aos ns de demanda.
( i , j )A
s.a.
xij si
( i , j ) A
( i , j ) A
xij = d j
cij xij
i S
j D
(i, j ) A
onde:
A = conjunto dos arcos do grafo G = (V, A);
S = conjunto dos ns de oferta;
D = conjunto dos ns de demanda;
xij = fluxo no arco (i, j);
cij = custo por unidade do fluxo no arco (i, j);
si = capacidade mxima de oferta dos ns i S;
dj = demanda dos ns j D;
lij = limite mnimo para o fluxo no arco (i, j);
uij = limite mximo para o fluxo no arco (i, j).
(i, j ) A
Apesar do modelo acima ser vlido e seguir o padro dos problemas de fluxo em rede, uma outra
forma, talvez mais natural ou intuitiva de escrev-lo mostrado abaixo (para problemas nocapacitados):
Min.
cij xij
xij si
i = 1, 2,3,..., m
xij = d j
j = 1, 2, 3,..., n
( i , j ) A
s.a.
( i , j ) A
( i , j ) A
xij 0
(i, j ) A
cij xij
xij = si
i = 1, 2,3,..., m
xij = d j
j = 1, 2, 3,..., n
( i , j ) A
s.a.
( i , j ) A
( i , j ) A
xij 0
(i, j ) A
88
Exemplo 1:
Considere o Problema de Transporte representado pelo grafo abaixo. Note que os valores ao lado
dos ns so as ofertas (si) e as demandas (dj), e os valores nos arcos so os custos cij.
4
50
20
15
18
25
3
4
5
50
7
6
50
2
4
Usando a forma clssica, o modelo de PL que resolve esse problema pode ser escrito assim:
Min.
s.a.
x11 + x12 50
x21 + x22 + x23 + x24 50
x33 + x34 50
x11 + x21 = 20
x12 + x22 = 15
x23 + x33 = 18
x24 + x34 = 25
xij 0
ROW
S1)
S2)
S3)
D1)
D2)
D3)
D4)
261.0000
VALUE
20.000000
15.000000
0.000000
0.000000
0.000000
0.000000
18.000000
25.000000
SLACK OR SURPLUS
15.000000
50.000000
7.000000
0.000000
0.000000
0.000000
0.000000
REDUCED COST
0.000000
0.000000
0.000000
2.000000
5.000000
2.000000
0.000000
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
-4.000000
-3.000000
-2.000000
-4.000000
89
20
50
50
20
15
18
25
15
18
50
25
Exemplo 2:
Nesse caso, podemos lanar mo do mesmo artifcio apresentado no PFCM para equilibrar sistemas
cuja oferta maior que a demanda, simplesmente introduzindo um n artificial de demanda, como
mostra o grafo abaixo.
4
50
15
18
25
72
7
6
0
3
4
5
50
20
3
0
50
2
4
0
d1)
d2)
d3)
d4)
d5)
x11 + x21 = 20
x12 + x22 = 15
x23 + x33 = 18
x24 + x34 = 25
x15 + x25 + x35 = 72
xij 0
261.0000
VARIABLE
X11
X12
X21
X22
X23
X24
X33
X34
X15
X25
X35
VALUE
20.000000
15.000000
0.000000
0.000000
0.000000
0.000000
18.000000
25.000000
15.000000
50.000000
7.000000
REDUCED COST
0.000000
0.000000
0.000000
2.000000
5.000000
2.000000
0.000000
0.000000
0.000000
0.000000
0.000000
20
15
18
25
72
1
15
15
50
2
50
18
50
25
7
Vale lembrar que possvel tambm usar o modelo restrito para o PT, assim como foi feito para o
PFCM, e a propriedade de total unimodularidade tambm vlida, o que significa que, mesmo
que as variveis xij tenham restries de integralidade, podemos resolver o modelo usando qualquer
software que implementa o simplex (PROLIN, LINDO, LINGO, CPLEX etc.), ignorando essas restries, e com isso aproveitando outros recursos importantes, como os valores dos custos reduzidos,
preos duais e a anlise de sensibilidade.
91
Exemplo 3:
Uma companhia enlata ervilhas nas suas unidades C1, C2 e C3, e transporta as latas por caminho
para as suas unidades de estocagem W1, W2, W3 e W4. A tabela abaixo mostra os custos de transporte, a disponibilidade das unidades Ci e as necessidades dos estoques Wj. Deseja-se determinar a
distribuio das unidades Ci para os estoques Wj, de modo a minimizar o custo do transporte.
C1
C2
C3
Demanda
Origem
W1
464
352
995
80
W4
867
791
685
85
Disponibilidade
75
125
100
Nesse caso temos um grafo bipartido completo K3,4, pois cada unidade Ci pode enviar caminhes
para qualquer um dos estoques Wj. Com isso, teremos 3 4 = 12 variveis, e 3 + 4 = 7 restries. J
que o modelo tambm equilibrado, podemos escrev-lo assim:
Min.
Z=
C1)
C2)
C3)
W1)
W2)
W3)
W4)
s.a.
152535.0
VALUE
0.000000
20.000000
0.000000
55.000000
80.000000
45.000000
0.000000
0.000000
0.000000
0.000000
70.000000
30.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
REDUCED COST
15.000000
0.000000
84.000000
0.000000
0.000000
0.000000
217.000000
21.000000
728.000000
351.000000
0.000000
0.000000
DUAL PRICES
0.000000
97.000000
182.000000
-449.000000
-513.000000
-570.000000
-867.000000
92
80
C1
W1
20
45
W2
C2
55
W3
70
C3
30
W4
Apesar de ser possvel o uso do Simplex Primal tradicional para a resoluo do PT, existem variaes do Simplex que normalmente so usados de maneira muito mais eficiente, o que possibilita resolver problemas bem maiores sem a necessidade da modelagem explcita. Uma das simplificaes
pode ser observada no incio do algoritmo. Ao invs de usar o mtodo das duas fases ou do grande
M para obter uma SBV inicial, podemos usar o mtodo do canto noroeste. Esta , na verdade, uma
heurstica gulosa, que busca uma soluo simples por meio da prpria tabela de ofertas demandas:
C1
C2
C3
Demanda
W1
75
5
80 5
W2
W3
W4
65
55
15
70 15
85
85
65
Disponibilidade
75
125 120 55
100 85
Essa soluo inicial, no tima, teria um custo de transporte de $165.595,00 (contra um timo de
$152.535,00). Com isso, os pivoteamentos comeariam dessa soluo inicial.
C1
75
65
W1
W2
C2
55
W3
15
C3
85
W4
93
Mquinas
(ofertas)
Tarefas
(demanda)
Esse problema tem uma ampla gama de aplicaes, como designao de tarefas, alocao de vagas,
alocao de professores em turmas e salas de aula, agncias de casamento, distribuio de mdicos
entre hospitais, alocao dinmica de txis entre clientes, entre outros. Este problema tambm pode
ser visto com caso especial do Problema de Emparelhamento (PE), os as mesmas alocaes so
feitas entre pares de ns, mas no necessariamente em um grafo bipartido.
Podemos enxergar esse problema como se fosse um PT equilibrado, onde todas as ofertas e demandas so unitrias, ou seja, si = di = 1, i = 1, 2, ..., n. Com isso, podemos escrever o modelo
de PL da seguinte forma:
n
Min.
c x
i =1 j =1
ij ij
s.a.
n
x
j =1
ij
x
i =1
ij
=1
i = 1, 2, 3,..., n
=1
j = 1, 2, 3,..., n
xij {0,1}
i, j
Mquinas
Tarefas
cij
Aplicao do Algoritmo:
1. Determinar o menor valor para cada linha da matriz:
Valor Mnimo
na Linha (ui)
1
Valor Mnimo
na Coluna (vj)
Essa matriz obtida chamada de matriz reduzida. As designaes que minimizam o custo total so
aquelas cujo custo reduzido cij igual a zero. Como nesse caso n = 4, devemos escolher um fluxo
contendo 4 designaes que minimizam o custo. Temos ento as seguintes opes:
0
4
3
0
0
Configurao 1 (invivel)
4
3
0
0
Configurao 2 (tima)
4
3
0
0
Configurao 3 (invivel)
O nmero mximo de clulas com custo reduzido zero tal que no mais de duas ocupem a mesma
linha igual ao nmero mnimo de linhas horizontais e/ou verticais necessrias para cobrir todas as
clulas nulas da matriz. Essas clulas so chamadas independentes. Temos ento o seguinte teorema:
O nmero mximo de clulas independentes em um quadro reduzido do problema de designao
igual ao nmero mnimo de linhas necessrias para cobrir todos os zeros da matriz.
No exemplo acima, veja que necessrio no mnimo 4 linhas para cobrir todas as clulas nulas da
matriz. Exemplos dessa cobertura so dados abaixo:
0
3
4
Neste exemplo temos ento uma nica soluo tima, mostrada acima na Configurao 2, que
fornece um custo total igual a 12. O grafo que representa essa soluo mostrado seguir (nos arcos
foram colocados os custos das designaes, obtidos da matriz original do problema):
96
Mquinas
Tarefas
1
8
1
Exemplo 2:
Considere agora o seguinte PD, tambm contendo 4 mquinas e 4 tarefas:
Mquinas
Tarefas
cij
94
54
68
74
10
88
82
62
88
76
11
74
81
21
Aplicao do Algoritmo:
Subtraindo o menor valor de cada linha, temos:
93
53
67
64
78
72
54
80
68
63
70
10
Agora subtramos o menor valor de cada coluna, obtendo a seguinte matriz reduzida:
93
53
57
64
78
62
54
80
58
63
70
Observando os valores nulos da matriz, vemos que h duas violaes de ortogonalidade da soluo:
97
93
53
57
64
78
62
54
80
58
63
70
53
57
64
54
78
62
80
58
63
70
No importa como os zeros so cobertos ou rotulados, contanto que usemos somente linhas horizontais e/ou verticais, e o nmero dessas linhas seja mnimo. Com a rotulao feita acima e usando
o teorema visto anteriormente, chegamos concluso que nessa matriz reduzida encontramos no
mximo trs clulas (ou variveis) independentes, o que no suficiente, pois precisamos de quatro
variveis para solucionar o problema.
Passamos ento etapa de rotulao propriamente dito. Para cada fluxo invivel (como o visto acima), teremos uma iterao do algoritmo. Essa iterao feita da seguinte maneira:
5. Fazer a cobertura dos zeros usando o menor nmero de linhas possvel (j feito acima):
93
53
57
64
54
78
62
80
58
63
70
Como o menor nmero de linhas menor que n, no temos portanto uma soluo tima vivel, e
prosseguimos ao passo seguinte:
6. Determinar o menor valor descoberto. No exemplo acima, esse valor igual a 53.
7. Subtrair esse valor de todos os valores descobertos, e som-lo a todas as clulas que tm interseo entre uma linha horizontal e uma vertical:
40
11
25
54
133
58
116
70
0
98
11
25
54
0
133
58
116
70
25
50
133
54
120
74
Dessa matriz podemos extrair o fluxo vivel indicado pelas clulas sombreadas acima. Seguindo esse algoritmo, todo fluxo vivel produzido ser timo. Portanto, a soluo acima tima, com soma total mnima igual a 97. O grafo que representa essa soluo dado abaixo:
1
68
10
11
4
Obs.: Nos exemplos acima, obtivemos uma nica soluo tima, mas comum obtermos matrizes
reduzidas contendo vrios fluxos viveis. Nesses casos, todos os fluxos viveis obtidos sero timos, obviamente com valores idnticos para as funes-objetivo.
Podemos resumir o algoritmo completo da seguinte maneira:
10
30
15
40
35
20
25
3
35
Aplicaes:
Encontrar um caminho de distncia mnima.
Encontrar um caminho de tempo de viagem mnimo.
Encontrar um caminho de custo mnimo.
Encontrar um caminho de confiabilidade mxima.
Podemos enxergar esse problema como se fosse um PFCM equilibrado, com as seguintes particularidades:
S existe um n de oferta, correspondente ao local ou ponto de origem;
S existe um n de demanda, correspondente ao local ou ponto de destino;
A oferta e a demanda so unitrias, ou seja, ss = dt = 1, onde s e t so os ns de origem e destino, respectivamente.
Com isso, podemos escrever o modelo de PL da seguinte forma:
Minimizar
( i , j ) A
cij xij
s.a.
1
xij xki = 1
( i , j ) A
( k ,i ) A
0
xij {0,1}
i, j
se i = s
se i = t
caso contrrio
Veja que, assim como no PD, a nossa varivel de deciso binria, ou seja, teremos:
1 se o caminho mais curto contiver o arco (i, j );
xij =
0 caso contrrio.
100
Isso significa que a varivel de deciso xij ir simplesmente determinar quais os arcos por onde se
deve passar para que a distncia, tempo ou custo total do percurso seja mnimo. Novamente aqui
temos tambm a propriedade de total unimodularidade da matriz A e, portanto, essa restrio de integralidade pode ser relaxada se quisermos resolver o problema usando o modelo matemtico.
Ano
1959
1956
1962
1962
Descrio
Complexidade
Seleciona o n de menor potencial
O(n)
Tcnica de rotulao FIFO
O(mn)
Tcnica de rotulao FIFO
O(mn)
Tcnica da operao trplice
O(n)
O problema da determinao do menor caminho entre os vrtices de um grafo pode ser definido
como um dos seguintes casos:
a) Determinar o menor caminho entre dois vrtices dados;
b) Determinar o menor caminho entre um vrtice dado e os demais vrtices do grafo;
c) Determinar o menor caminho entre todos os pares de vrtices do grafo.
Entre os algoritmos citados acima, destacam-se o algoritmo de Dijkstra e o algoritmo de Floyd. O
algoritmo de Dijkstra foi projetado para determinar o menor caminho entre um vrtice dado e os
demais vrtices do grafo, e o algoritmo de Floyd se aplica na determinao do menor caminho entre
todos os pares de vrtices do grafo. O algoritmo de Dijkstra pode ainda ser aplicado na determinao do menor caminho entre dois vrtices dados, entre todos os vrtices e um vrtice-destino e,
tambm, entre todos os pares de vrtices do grafo. Para isso necessrio apenas um pequeno ajuste.
um algoritmo muito eficiente e de fcil implementao, sendo um dos mais empregado na determinao de caminhos mais curtos em grafos.
Algoritmo de Dijkstra
Esse algoritmo bastante simples de implementar e entender e, apesar de no ser o mais eficiente
em termos de tempo de execuo, nem por isso deixa de ser muito rpido. Veremos aqui a sua forma clssica, que calcula o caminho mais curto entre um n origem e todos os demais ns da rede.
No entanto, uma desvantagem desse algoritmo que ele no funciona na presena de arestas ou arcos de custo negativo, o que no problema em aplicaes de logstica, por exemplo, mas pode no
ser adequado para outras aplicaes.
Algoritmo: Seja G(V,A) um grafo orientado e s um vrtice de G:
1. Atribua valor zero estimativa do custo mnimo do vrtice s (a raiz da busca) e infinito s demais estimativas;
2. Atribua um valor qualquer aos precedentes (o precedente de um vrtice t o vrtice que precede
t no caminho de custo mnimo de s para t);
3. Enquanto houver vrtice aberto:
Seja k um vrtice ainda aberto cuja estimativa seja a menor dentre todos os vrtices abertos;
101
Feche o vrtice k
s u v x y
estimativas 0
precedentes - - - - -
s u v x y
estimativas 0 10 5
precedentes s s - s -
s u v x y
estimativas 0 8 14 5 7
precedentes s x x s x
102
s u v x y
estimativas 0 8 13 5 7
precedentes s x y s x
s u v x y
estimativas 0 8 9 5 7
precedentes s x u s x
s u v x y
estimativas 0 8 9 5 7
precedentes s x u s x
Quando todos os vrtices tiverem sido fechados, os valores obtidos sero os custos mnimos dos
caminhos que partem do vrtice tomado como raiz da busca at os demais vrtices do grafo. O caminho propriamente dito obtido a partir dos vrtices chamados acima de precedentes.
Para exemplificar, considere o caminho de custo mnimo que vai de s at v, cujo custo mnimo 9.
O vrtice precedente de v na ltima das tabelas acima u. Sendo assim, o caminho :
s ... u v
Por sua vez, o precedente de u x. Portanto, o caminho :
s ... x u v
Por ltimo, o precedente de x o prprio vrtice s. Logo, o caminho de custo mnimo :
sxuv
103
1
7
T
4
2
4
1
7
T
3
4
C
E
104
8
T
O modelo de PL para problemas de fluxo mximo difere um pouco do modelo geral visto para os
outros problemas de fluxo que estudamos anteriormente. Para este tipo de problema, podemos escrever o modelo assim:
Maximizar
( O , j ) A
s.a.
xOj
xOj
xij
( O , j ) A
( i , j ) A
(ou Maximizar
( i ,T ) A
( k ,i )A
( i ,T ) A
xiT )
xiT = 0
xki = 0
i O, T
(i, j ) A
onde:
A = conjunto dos arcos do grafo G = (V, A);
O = n de Origem;
T = n de Destino;
xij = fluxo no arco (i, j);
lij = limite mnimo para o fluxo no arco (i, j);
uij = limite mximo para o fluxo no arco (i, j).
A primeira restrio faz com que o fluxo total que sai do n de Origem seja igual ao fluxo total que
chega ao n de Destino. O segundo conjunto de restries deve existir para cada um dos demais ns
(de transbordo), mantendo a conservao do fluxo.
Observe que esse problema inerentemente capacitado, onde pelo menos as capacidades mximas
dos arcos devem existir (como no exemplo visto acima).
Construindo o modelo para o Exemplo 1, usando a sintaxe do Lindo, temos:
105
xDT
0
xOB
0
xED
xCE
- xET = 0
- xAB = 0
= 0
= 0
Veja que as restries de capacidade dos arcos foram dadas separadamente, no sendo contadas
como restries normais. Esse recurso normalmente existe para os softwares de PL, e permite que o
modelo seja resolvido de forma muito mais eficiente. No caso do Lindo, podemos usar os comandos
SLB (Simple Lower Bound) para designar os valores de lij, e SUB (Simple Upper Bound) para designar os valores de uij.
Como podemos ver, o Problema de Fluxo Mximo em uma Rede pode ser formulado como um
Problema de Programao Linear e, portanto, o algoritmo Simplex pode ser utilizado para obteno
da soluo tima. Assim como no PFCM e no PT, existem tambm verses simplificadas do Simplex para lidar com este problema, que aproveitam as caractersticas especficas da matriz A e conceitos aproveitados da Teoria dos Grafos.
Entretanto, existem algoritmos mais eficientes para a soluo do PFM. Um deles, bastante conhecido, chamado de Algoritmo do Caminho de Aumento (Augmenting Path Algorithm). O algoritmo
do Caminho de Aumento baseado em dois conceitos intuitivos: uma Rede Residual e um Caminho
de Aumento (propriamente dito).
Rede Residual
Considere os dois grafos mostrados na figura a seguir, representando uma soluo vivel, mas no
tima, para o Exemplo 1 visto anteriormente. Os valores dos arcos da rede da esquerda representam
as capacidades mximas e seus respectivos fluxos (capacidade, fluxo). Os valores dos arcos da rede
da direita representam os resduos, ou seja, a diferena entre a capacidade e o fluxo do arco.
A
5,4
1,1
7,7
3,3
B
2,0
4,2
C
4,2
4,4
5,4
B
2
1,0
E
9,7
0
0
0
T
6,6
106
Caminho de Aumento
Um Caminho de Aumento um caminho a partir da origem para o destino na Rede Residual tal que
todo arco sobre este caminho possui resduo estritamente positivo. O valor mnimo destes resduos
chamado de Capacidade Residual do Caminho de Aumento, uma vez que este representa a quantidade vivel de fluxo que pode ser adicionado ao caminho todo.
A
1
O caminho:
OCEDT
um Caminho de Aumento com Capacidade Residual 1 (menor resduo neste caminho).
0
B
2
C
1
E
T
0
Existem diversas verses do Algoritmo do Caminho de Aumento. A mais conhecida o Algoritmo de Ford-Fulkerson (1962), modificado depois por Dinic (1970) e Edmonds & Karp (1972) para
evitar casos patolgicos que tornam o algoritmo original muito ineficiente.
Outro algoritmo interessante, de desenvolvimento posterior, o de Malhotra, Pramodh-Kamar e
Maheshwari (MPM) (1978), baseado no conceito de potencial de fluxo. A idia deste algoritmo
esgotar a capacidade dos ns da rede, ao invs da capacidade de suas arestas. Os melhores limites
(de desempenho) da atualidade so, no entanto, os algoritmos de Ahuja & Orlin (1986) e Goldberg
& Tarjan (1988).
O fluxograma a seguir resume os passos do algoritmo MPM:
Calcular o Potencial dos vrtices vj
Escolher o vrtice de referncia
vk = mn{ vj}
N O
eliminado?
FIM
107
1
7
9
T
Iterao 1:
Calculando o potencial dos vrtices, temos:
j:
vj:
O
16
A
4
B
8
C
4
D
8
E
7
T
15
O vrtice de referncia ser ento o vrtice A. Forando um fluxo de 4 unidades atravs desse vrtice, temos o primeiro fluxo parcial e a rede residual obtida subtraindo as capacidades originais desse
fluxo:
f1:
A
4
R1 :
A
1
1
1
1
4
Nesse momento, podemos eliminar o vrtice A e seus arcos adjacentes, j que no existe mais caminho de O at T passando por A.
Iterao 2:
Recalculando o potencial dos vrtices, temos:
j:
vj:
O
12
B
7
C
4
D
5
E
6
T
11
O vrtice de referncia ser agora o vrtice C. Forando um fluxo de 4 unidades atravs desse vrtice, temos o segundo fluxo parcial e a rede residual obtida subtraindo as capacidades de R1 desse
fluxo:
108
f2:
R2 :
A
1
1
C
Da mesma forma, podemos eliminar o vrtice C e seus arcos adjacentes, j que no existe mais caminho de O at T passando por C.
Iterao 3:
Recalculando o potencial dos vrtices, temos:
j:
vj:
O
7
B
7
D
5
E
2
T
7
O vrtice de referncia ser agora o vrtice E. Forando um fluxo de duas unidades atravs desse
vrtice, temos o terceiro fluxo parcial e a rede residual obtida subtraindo as capacidades de R2 desse
fluxo:
f3:
R3 :
A
1
2
B
5
T
1
C
Dessa vez, o vrtice que ficou isolado, juntamente com seus arcos adjacentes, foi o vrtice E.
Iterao 4:
Observando o grafo R3 acima, fica claro que o nico fluxo agora possvel o seguinte:
f4:
R4 :
A
1
4
B
1
B
4
2
T
C
Nesse ponto, o algoritmo termina, j que no h mais caminho de O at T. Somando os quatro fluxos parciais, temos ento a seguinte soluo tima:
109
A
4
1
6
8
T
3
C
Veja que essa soluo diferente das outras duas solues timas mostradas anteriormente para o
Exemplo 1.
110
AG1
AG2
AG3
Este problema, portanto, consiste em encontrar pelo menos uma das rvores geradoras cuja soma
das arestas seja mnima. Um modelo matemtico para esse problema dado a seguir:
Min.
cij xij
xij = n 1
xij S 1
( i , j ) A
s.a.
( i , j ) A
( i , j )S
xij {0,1}
S G
(i, j ) A
A primeira restrio faz com que a AGM tenha exatamente n1 arestas. O outro conjunto de restries significa que, para cada subgrafo S do grafo, o nmero de arestas escolhidas deve ser igual ao
nmero de ns em S menos 1. Isso implica na no existncia de ciclos na AGM.
Apesar desse modelo de PL ser teoricamente possvel para obter a AGM, diferentemente dos problemas de fluxo vistos anteriormente, ele impraticvel, porque o nmero de restries cresce exponencialmente com o tamanho do grafo. No entanto, existem tambm algoritmos muito eficientes
111
que resolvem o problema usando somente a Teoria de Grafos. Os mais comuns so o algoritmo de
Kruskal (1956), o de Prim (1957), e o de Borvka. Veremos dois deles a seguir:
Algoritmo de Kruskal:
Seja G = (V, A) um grafo conexo de n vrtices e arestas valoradas.
Ordenar as arestas pelos valores de peso.
T = (lista de arestas contidas na AGM)
Enquanto existir aresta na lista de arestas ordenadas, faa:
a = prxima aresta de menor peso de A.
Se a adio de a em T no formar um ciclo,
ento acrescente a em T.
Exemplo 1:
Determinar uma AGM do grafo abaixo usando o algoritmo de Kruskal.
A
5
1
7
3
T
2
4
Soluo:
A
5
1
4
T
6
3
T
3
1
B
D
1
A
5
4
5
B
4
A
5
3
1
1
7
1
4
T
6
112
A
5
1
7
1
7
B
1
4
T
6
3
1
4
C
3
T
O algoritmo de Prim usa uma abordagem diferente. Ao invs de adies sucessivas de arestas at
que pequenas rvores formadas isoladamente se juntem numa nica rvore geradora, o algoritmo de
Prim inicia a partir de um vrtice qualquer do grafo, e vai sucessivamente unindo os outros vrtices
atravs das arestas de menor peso. Assim, temos uma nica rvore que vai crescendo at conter todos os vrtices de G.
Algoritmo de Prim:
Seja G = (V, A) um grafo conexo de n vrtices e arestas valoradas.
B = Um vrtice inicial qualquer de G.
T = (lista de arestas contidas na AGM)
Enquanto B no contm todos os vrtices
Escolher (u,v) = aresta de menor peso tal que u (V B) e v B
T = T {(u,v)}
B = B {u}
Em outras palavras, temos:
Selecionar qualquer n e conect-lo (isto , adicionar um arco) para o n mais prximo.
Identificar o n desconectado mais prximo para um n conectado e ento conectar estes dois
ns. Repetir este passo at que todos os ns tenham sido conectados.
Observao: no caso de empate de dois ou mais ns no conectados mais prximos de um n conectado, escolher arbitrariamente um dos ns no conectados. Ainda assim, a soluo tima garantida, porm este fato pode ser um sinal da existncia de mltiplas solues timas. Todas as solues timas podem ser obtidas executando novamente o algoritmo com decises diferentes nos
casos de empate. Isso vlido tambm para o algoritmo de Kruskal.
Exemplo 2:
O grafo abaixo representa diversos computadores posicionados em um laboratrio, juntamente com
as ligaes (e suas respectivas distncias em metros) possveis de serem feitas entre eles. Deseja-se
ligar todos os computadores em rede, usando a menor quantidade em cabos coaxiais possvel, de
forma que os usurios possam compartilhar dados e recursos, alm de brincar com jogos interativos.
113
2
5
1
7
3
7
2
4
7
3
1
5
7
3
6
1
5
7
6
4
4
1
7
2
4
3
4
1
7
6
1
4
5
3
4
1
4
3
1
1
7
1
4
7
6
3
1
3
4
2
4
3
7
114
10
13
8
11
14
2
12
15
Suponha agora que os pontos de irrigao, representados pelos vrtices 8, 12, 13 e 14, precisam ser
interligados e abertos. Essa interligao poderia ser feita de vrias formas diferentes. A figura abaixo mostra duas formas de se fazer isso:
10
13
10
13
11
11
4
14
12
14
12
15
6
15
6
Veja que, na primeira soluo, o subgrafo formado foi uma rvore contendo somente os pontos que
precisavam ser interligados. J na segunda soluo, a rvore formada contm, alm dos pontos obrigatrios, um outro ponto (vrtice 11) que, nesse caso, serve apenas de ponto de interligao entre os demais. Esse ponto, que pode ser usado na interligao, mas no precisa obrigatoriamente fazer parte da rvore-soluo, chamado de Ponto de Steiner. A soluo da esquerda, portanto, no
contm pontos de Steiner, enquanto que a da direita contm um ponto de Steiner.
Embora no tenham sido dados os pesos (custos, distncias) das arestas, o objetivo do problema acima seria interligar os quatro pontos acima usando a menor soma total das arestas (para, por exemplo, minimizar a perda de presso por atrito). fcil demonstrar que a soluo ser sempre uma rvore contendo um subconjunto de vrtices e arestas do grafo original. Por isso, esse problema
tambm chamado de Problema da rvore de Steiner.
115
Heursticas
Baseadas no PCMC;
Baseadas na AGM;
Outras.
116
Redes PERT
Exemplo 1 (Hiller/Lieberman, pg 468):
Suponha que uma empreiteira ganhou uma concorrncia de $5,4 milhes para construir uma planta
industrial. O contrato inclui:
Uma penalidade de $300.000,00 se a empreiteira no completar a construo em 47 semanas.
Um bnus de $150.000,00 se a empreiteira completar a construo em 40 semanas.
De acordo com a experincia da empreiteira, a seguinte lista foi elaborada para este projeto:
Tabela 1 - Tarefas, Tarefas Precedentes e Durao Estimada
Tarefas
Durao Estimada
Tarefa
Descrio
Precedentes
(semanas)
A
Escavao e Terraplanagem
2
B
Fundao
A
4
C
Paredes
B
10
D
Telhado
C
6
E
Encanamento Exterior
C
4
F
Encanamento Interior
E
5
G
Muros
D
7
H
Pintura Exterior
E, G
9
I
Instalao Eltrica
C
7
J
Divisrias
F, I
8
K
Piso
J
4
L
Pintura Interior
J
5
M
Acabamento Exterior
H
2
N
Acabamento Interior
K, L
6
117
A durao para a execuo da obra 79 semanas se cada tarefa for realizada uma por vez. No entanto, existem tarefas que podem ser realizadas simultaneamente com outras tarefas, podendo com
isso, reduzir a durao da execuo da obra.
2. Construo da Rede
A rede pode ser construda utilizando os arcos para representar as tarefas e os nos para separar as tarefas de suas tarefas precedentes, porm utilizar os nos para representar as tarefas e os arcos para
representar as relaes de precedncia parece ser mais intuitivo. A figura abaixo ilustra a rede para
o exemplo dado:
0
Incio
10
K
M
2
N
Fim
1 existem 6 caminhos, que so dados na tabela abaixo, juntamente com seus respectivos comprimentos:
Tabela 2 - Caminhos e seus respectivos Comprimentos
Caminho
Comprimento (semanas)
Inicio-A-B-C-D-G-H-M-Fim
2+4+10+6+7+9+2
= 40
Inicio-A-B-C-E-H-M-Fim
2+4+10+4+9+2
= 31
Inicio-A-B-C-E-F-J-K-N-Fim
2+4+10+4+5+8+4+6
= 43
Inicio-A-B-C-E-F-J-L-N-Fim
2+4+10+4+5+8+5+6
= 44
Inicio-A-B-C-l-J-K-N-Fim
2+4+10+7+8+4+6
= 41
Inicio-A-B-C-1-J-L-N-Fim
2+4+10+7+8+5+6
= 42
O caminho com maior comprimento o Caminho Critico, uma vez que todos os demais caminhos
devero alcanar o FIM antes do Caminho Critico. Isto responde a questo 1 dada acima, ou seja, o
tempo total requerido 44 semanas para completar o projeto.
As tarefas sobre este caminho so as Atividades Criticas (Atividades Gargalos), ou seja, qualquer
atraso em uma dessas tarefas ir atrasar a durao de todo o projeto. J as demais tarefas, se sofrerem algum atraso, podero ou no atrasar a durao de todo o projeto. A Figura 2 mostra o Caminho
Critico:
0
Incio
10
K
M
2
N
Fim
precisa ser necessariamente igual ao tempo final da sua tarefa precedente, uma vez que esta tarefa
possui folga (no pertence ao Caminho Critico da Rede). A fim de formalizar este raciocnio, a tcnica PERT utiliza quatro variveis, a saber:
TIC = Tempo Inicial Mais Cedo
TFC = Tempo Final Mais Cedo
TIT = Tempo Inicial Mais Tarde
TFT = Tempo Final Mais Tarde
De posse dessas variveis, as seguintes regras podem ser definidas:
Regra do Tempo Inicial Mais Cedo:
O Tempo Inicial Mais Cedo TICi de uma tarefa i igual ao maior Tempo Final Mais Cedo
TFCj das tarefas precedentes j.
TICi = max (TFCj),
j i
(1)
(2)
(3)
k i
(4)
tido do n Incio at o n Fim. J o clculo do Tempo Final Mais Tarde (TFT) funo dos Tempos Iniciais Mais Tardes (TITs) sucessores, e devem ser obtidos calculando os TITs e TFTs no sentido do n Fim para o n Incio.
Alm disso, podemos observar tambm que o TICJ igual ao TITJ, o que mostra que no h folga
para iniciar essa tarefa. O mesmo acontece com o par TFCJ e TFTJ, o que coerente, j que essa tarefa faz parte do Caminho Crtico da rede. Com uma anlise mais detalhada, poderamos mostrar
que:
Si = TFTi TFCi = TITi TICi
onde Si corresponde folga da tarefa i, ou seja, o atraso que essa tarefa pode sofrer sem comprometer o tempo total do projeto ou o tempo do(s) caminho(s) crtico(s).
Na tabela a seguir mostramos os clculos j prontos para todos os ns da rede. Repare que o caminho crtico, j mostrado na Figura 2, corresponde ao caminho formado pelas tarefas (ns) com folga
Si = 0. Dependendo da topologia da rede e dos tempos Di, podemos ter mais de um caminho crtico.
Tabela 3 Valores calculados para as variveis de todos os ns da rede do Exemplo 1.
Tarefa (i)
Di TICi TITi TFCi TFTi Si
Incio
0
0
0
0
0
0
A
2
0
0
2
2
0
B
4
2
2
6
6
0
C
10
6
6
16
16
0
D
6
16
20
22
26
4
E
4
16
16
20
20
0
F
5
20
20
25
25
0
G
7
22
26
29
33
4
H
9
29
33
38
42
4
I
7
16
18
23
25
2
J
8
25
25
33
33
0
K
4
33
34
37
38
1
L
5
33
33
38
38
0
M
2
38
42
40
44
4
N
6
38
38
44
44
0
Fim
0
44
44
44
44
0
Redes PERT/CPM
Vimos que, nas redes PERT tradicionais, as tarefas so representados por ns no grafo, e com isso
temos uma rede orientada por tarefa. Na rede PERT/CPM, as tarefas so representadas por arcos
no grafo, sendo que os ns nesse caso representam os incios e os trminos de uma ou mais tarefa.
Dizemos ento que a rede PERT/CPM orientada por evento, j que os ns representam um determinado evento do processo, que pode ser o incio ou o trmino de uma ou mais tarefas. Podemos
tratar a rede PERT/CPM como sendo a verso dual da rede PERT (mas no iremos entrar nos aspectos de dualidade aqui, apenas mostrar como obtemos o(s) caminho(s) crtico(s), como fizemos
para rede PERT).
Vamos considerar o mesmo exemplo usado anteriormente. A tabela correspondente aos tempos e
precedncias das tarefas replicada abaixo:
121
7
D
10
H
9
12
Incio
A
2
B
4
C
10
E
3
15
M
2
19
23
11
Fim
F
17
13
K
4
20
N 6
22
14
J
8
16
18
L
5
21
122
i j
(5)
(6)
k i
(7)
(8)
123
124
Bibliografia
AHUJA, R.K., MAGNANTI, T.L., ORLIN, J.B., Network Flows: Theory, Algorithms, and Applications. Prentice Hall, 1993.
BAZARAA, M.S., JARVIS, J.J., SHERALI, H.D., Linear Programming and Network Flows, 2nd
Edition. John Wiley & Sons, 1990.
BREGALDA, P.F., OLIVEIRA, A.F., BORNSTEIN, C.T., Introduo Programao Linear. Editora Campus, 1988.
CAIXETA-FILHO, J.V., Pesquisa Operacional: Tcnicas de Otimizao Aplicadas a Sistemas Agroindustriais, 2 Edio. Editora Atlas, 2004.
HILLIER, F.S., LIEBERMAN, G.J., Introduo Pesquisa Operacional, Editora Campus, Rio de
Janeiro. Editora USP, 1988.
LAW, A.M., KELTON, W.D., Simulation Modeling & Analysis, McGraw-Hill, 1991.
LUNA, H.P.L., GOLDBARG, C.M., Otimizao Combinatria e Programao Linear. Editora
Campus, 2000.
MEDEIROS da SILVA, E., et. al., Pesquisa Operacional: Para os Cursos de Economia, Administrao e Cincias Contbeis, 3 Edio. Editora Atlas, 1998.
PRADO, D., Teoria das Filas e da Simulao. EDG, 1999.
RARDIN, R.L. Optimization in Operations Research, Prentice Hall, 1994.
ROSS, S.M., Simulation Second Edition. Academic Press, 1997.
RUBINSTEIN, R.Y., Monte Carlo Optimization, Simulation and Sensitivity of Queuing Networks.
Krieger Publishing Company, 1992.
SAIGAL, R., Linear Programming: A Modern Integrated Analysis. Kluwer Academic Pub., 1995.
SHIMIZU, T., Pesquisa Operacional em Engenharia, Economia e Administrao: Modelos Bsicos
e Mtodos Computacionais. Editora Guanabara Dois, 1984.
WAGNER, H.M., Pesquisa Operacional, Prentice Hall, 1985.
WINSTON, W.L. Operations Research: Applications and Algorithms, 3rd Edition. Wadsworth,
1997.
125