You are on page 1of 106

Otimizao Combinatria, Notas de aula, 2009/2

c _ Departamento de Computao, Universidade Federal de Ouro Preto.


OTIMIZAO COMBINATRIA
Marcone Jamilson Freitas Souza
Departamento de Computao
Instituto de Cincias Exatas e Biolgicas
Universidade Federal de Ouro Preto
Homepage: http://www.iceb.ufop.br/decom/prof/marcone
E-mail: marcone.freitas@yahoo.com.br
2 Otimizao Combinatria
Sumrio
I Programao Inteira 4
1 Introduo 4
1.1 Caractersticas dos modelos lineares de programao inteira . . . . . . . . . . . . . 4
2 Modelagem de Programao Matemtica Inteira 6
2.1 Alocao de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Problema da Mochila 0-1 (Knapsack Problem) . . . . . . . . . . . . . . . . . . . . 8
2.3 Problema da Mochila Inteira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Problema da Mochila 0-1 Mltipla . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Problema da Mochila Inteira Mltipla . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 Problema de Corte de Estoque (Cutting Stock Problem) . . . . . . . . . . . . . . . 12
2.7 Problema de Corte de Estoque Unidimensional . . . . . . . . . . . . . . . . . . . . 13
2.8 Alocao de pessoal (Sta Scheduling) . . . . . . . . . . . . . . . . . . . . . . . . 15
2.9 Problema da Fbrica de Prateleiras . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.10 Fluxo Mximo em Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.11 Caminho Mnimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.12 Programao da produo - exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . 24
2.13 Sequenciamento em processadores paralelos e idnticos . . . . . . . . . . . . . . . 26
2.14 Planejamento da Produo - Problema da Fbrica de Motores . . . . . . . . . . . 27
2.15 Problema de empacotamento (Bin Packing) . . . . . . . . . . . . . . . . . . . . . 30
2.16 Open Dimensional Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.17 Programao de horrios em escolas (School timetabling) . . . . . . . . . . . . . . 32
2.18 Localizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.18.1 p-Medianas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.18.2 p-Centros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.18.3 p-Medianas capacitado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.19 Mistura de Minrios com Metas de Qualidade . . . . . . . . . . . . . . . . . . . . 35
2.20 Problema das Usinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.21 Dimensionamento de lotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.22 Planejamento da produo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.22.1 Um item sem restrio de capacidade . . . . . . . . . . . . . . . . . . . . . 43
2.22.2 Mltiplos itens e restrio de capacidade . . . . . . . . . . . . . . . . . . . 44
2.23 Representao de restries disjuntivas . . . . . . . . . . . . . . . . . . . . . . . . 44
2.24 Sequenciamento em uma mquina . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.24.1 Minimizao do tempo de uxo total . . . . . . . . . . . . . . . . . . . . . 47
2.24.2 Minimizao do atraso mximo . . . . . . . . . . . . . . . . . . . . . . . . 48
2.24.3 Minimizao da soma dos atrasos . . . . . . . . . . . . . . . . . . . . . . . 48
2.24.4 Minimizao da soma dos atrasos e adiantamentos . . . . . . . . . . . . . . 48
2.24.5 Minimizao do nmero de tarefas atrasadas . . . . . . . . . . . . . . . . . 49
2.24.6 Minimizao do lateness mximo . . . . . . . . . . . . . . . . . . . . . . . 49
2.24.7 Sequenciamento com tempo de preparao de mquina . . . . . . . . . . . 49
2.24.8 Sequenciamento em uma mquina com penalidades por antecipao e atraso
da produo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.25 Mquinas Paralelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.26 Job Shop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Modelagem de PPLs 3
2.27 Planejamento de lavra com Alocao Dinmica de Caminhes . . . . . . . . . . . 55
2.28 Linearizao do produto de variveis binrias . . . . . . . . . . . . . . . . . . . . . 58
3 Branch-and-Bound 60
4 Integrao do LINGO em planilhas Excel 62
4.1 Problema de Transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2 Algumas consideraes sobre @OLE . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Embutindo planilhas do EXCEL no LINGO . . . . . . . . . . . . . . . . . . . . . 65
4.4 Embutindo Modelos LINGO no EXCEL . . . . . . . . . . . . . . . . . . . . . . . 67
4.5 Utilizando links OLE automatizados no EXCEL . . . . . . . . . . . . . . . . . . . 69
4.6 Comando SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5 Problema do Caixeiro Viajante 74
5.1 Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2 Modelagem de Programao Matemtica . . . . . . . . . . . . . . . . . . . . . . . 74
5.3 Modelagem Heurstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3.1 Heursticas Construtivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3.2 Heursticas de Renamento . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.4 Variantes do PCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4.1 Problema dos m-Caixeiros Viajantes . . . . . . . . . . . . . . . . . . . . . 82
5.4.2 Problema do Caixeiro Viajante com Coleta Seletiva de Prmios . . . . . . 82
6 Problema de Roteamento de Veculos 84
6.1 Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2 Modelagem de Programao Matemtica . . . . . . . . . . . . . . . . . . . . . . . 84
6.3 Gerao de colunas para o PRV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.4 Modelos Heursticos para o PRV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.4.1 Heursticas Construtivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.4.2 Heursticas de renamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7 Enumerao Implcita em Programao Inteira 0-1 93
8 Exerccios propostos 98
4
Parte I
Programao Inteira
1 Introduo
1.1 Caractersticas dos modelos lineares de programao inteira
[Retirado de Goldbarg e Luna (2005), vide [3]] Uma confeitaria pode produzir dois tipos de sorvete
em lata: chocolate e creme. Cada lata do sorvete de chocolate vendido com um lucro de $3 e as
latas de creme com um lucro de $1. Contratos com vrias lojas impem que sejam produzidas no
mnimo 10 latas de sorvete de chocolate por dia e que o total de latas fabricadas por dia nunca
seja menor que 20. O mercado s capaz de consumir at 40 latas de sorvete de creme e 60 de
chocolate. As mquinas de preparao do sorvete disponibilizam 180 horas de operao por dia,
sendo que cada lata de sorvete de chocolate consome 2 horas de trabalho e cada lata de creme, 3
horas. Determine o esquema de produo que maximiza os lucros com a venda de latas de sorvete.
Soluo:
(a) Variveis de deciso:
x
j
= nmero de latas de sorvete do tipo j a serem produzidas por dia, sendo j = 1 (chocolate)
e j = 2 (creme)
(b) Funo objetivo:
max f(x) = 3
..
$
(lata de chocolate)
x
1
..
(latas de chocolate)
+ 1
..
$
(lata de creme)
x
2
..
(latas de creme)
(c) Restries:
c.1) Demanda do mercado:
x
1
60 (O mercado no absorve mais do que 60 latas de sorvete de chocolate por dia)
x
2
40 (No h demanda para mais do que 40 latas de sorvete de creme por dia)
c.2) Contrato com as lojas:
x
1
10 (Exige-se uma produo mnima diria de 10 latas de sorvete de chocolate)
x
1
+ x
2
20 (Exige-se uma produo mnima diria de 20 latas de sorvete)
c.3) Disponibilidade das mquinas:
2x
1
+ 3x
2
180 (H apenas 180 horas de operao disponveis nas mquinas por dia)
c.4) Integralidade e no-negatividade:
x
1
, x
2
Z
+
Para resolver esse Problema de Programao Linear Inteira (PLI), construamos gracamente
a regio vivel:
5
Propriedade de um PPL: O timo de um problema de programao linear (PPL), se existir,
estar em um vrtice do politopo denido pela regio vivel.
Do Clculo Diferencial e Integral sabemos que a direo e sentido de mximo crescimento de
uma funo f determinada pelo seu gradiente f(x) =
_
f(x)
x
1
,
f(x)
x
2
, ,
f(x)
x
n
_
.
Sendo a funo f(x) = 3x
1
+ x
2
, resulta que f(x) = (3, 1). Para conhecermos a direo e
sentido do gradiente, da origem caminhamos 3 unidades no sentido Ox
1
e uma unidade no sentido
Ox
2
. Pela regra de composio de foras (regra do paralelograma), tem-se o sentido e direo do
gradiente. Traa-se, a seguir, uma reta perpendicular direo do gradiente. Caminhando-se com
essa reta no sentido apontado pelo gradiente at tangenciar a regio vivel tem-se, no ponto de
tangncia, a soluo tima. Logo, o timo do PPL em questo ocorre no vrtice de coordenadas
(60, 20), com valor timo dado por f(x

) = 200, isto , no esquema timo de produo, devem ser


produzidas diariamente 60 latas de sorvete de chocolate e 20 de creme, com um retorno de $ 200.
No exemplo dado, a soluo tima ocorreu em um ponto de coordenadas inteiras. No entanto,
nem sempre isso ocorre, conforme mostra o exemplo a seguir:
max f(x) = x
1
+ 19x
2
x
1
+ 20x
2
50
x
1
+ x
2
20
x
1
, x
2
Z
+
Fazendo-se a relaxao linear desse problema, isto , desprezando-se as restries de integra-
lidade das variveis e assumindo que as mesmas so no-negativas (x
1
0 e x
2
0), a soluo
tima desse PPI relaxado :
x

1
= 18, 89
x

2
= 1, 58
f(x

) = 48, 42
Vamos supor que seja uma boa estratgia determinar os inteiros mais prximos do entorno
dessa soluo contnua. Vejamos os valores da funo objetivo para as possveis combinaes:
6
x
1
x
1
f(x)
19 2 invivel
18 1 37
19 1 38
18 2 invivel
Se essa estratgia fosse correta, concluiramos, de forma EQUIVOCADA, que x
1
= 19 e x
2
= 1
a soluo tima do problema, com valor timo dado por f(x) = 38. Na realidade, a soluo
tima : x

1
= 10 e x

2
= 2, com f(x

) = 48, ou seja, o valor timo difere em 21% do anteriormente


apontado.
Esse exemplo mostra que pode no ser uma boa estratgia arredondar os valores do entorno
de uma soluo tima contnua como uma forma de determinar a soluo tima do problema de
variveis inteiras. Mais frente (Seo 3) mostraremos a tcnica branch-and-bound, destinada a
encontrar a soluo tima de um problema de programao inteira.
2 Modelagem de Programao Matemtica Inteira
2.1 Alocao de recursos
[Retirado de [4]] A Capito Caverna S.A., localizada em Pedra Lascada, aluga 3 tipos de bar-
cos para passeios martimos: jangadas, supercanoas e arcas com cabine. A companhia fornece
juntamente com o barco um capito para naveg-lo e uma tripulao que varia de acordo com a
embarcao: uma para jangadas, duas para supercanoas e trs para arcas. A companhia tem 4
jangadas, 8 supercanoas e 3 arcas e em seu corpo de funcionrios: 10 capites e 18 tripulantes.
O aluguel por dirias e a Capito Caverna lucra $50 por jangada, $70 por supercanoa e $100
por arca. Faa um modelo de programao matemtica que determine o esquema de aluguel que
maximiza o lucro.
Soluo:
(a) Variveis de deciso:
x
i
= nmero de embarcaes do tipo i a serem alugadas, sendo i = 1 (jangada), i = 2
(supercanoa) e i = 3 (arca com cabine).
(b) Funo objetivo:
max f(x) = 50x
1
+ 70x
2
+ 100x
3
(c) Restries:
c.1) Nmero de capites:
x
1
+ x
2
+ x
3
10 (H somente 10 capites)
c.2) Nmero de tripulantes:
x
1
+ 2x
2
+ 3x
3
18 (H somente 18 tripulantes)
c.3) Quantidade de jangadas:
x
1
4 (O nmero de jangadas est limitado a 4)
c.4) Quantidade de supercanoas:
x
2
8 (H apenas 8 supercanoas)
c.5) Quantidade de arcas com cabine:
x
3
3 (H apenas 3 arcas com cabine disponveis)
7
c.6) Integralidade e no-negatividade:
x
1
, x
2
, x
3
Z
+
Para fazer um modelo genrico desse PPL, coloquemos os dados em uma tabela e faamos as
seguintes convenes:
emb : Conjunto dos diferentes tipos de embarcao = Jangada, Supercanoa, Arca
l
i
: Lucro proporcionado pelo aluguel da embarcao do tipo i
cap
i
: Nmero de capites necessrios para comandar a embarcao do tipo i
trip
i
: Nmero de tripulantes necessrios para trabalhar na embarcao do tipo i
disp
i
: Nmero disponvel de embarcaes do tipo i
ntrips : Nmero de tripulaes disponveis
ncapitaes : Nmero de capites disponveis
Tipo de embarcao # Tripulantes req. # Capites req. # Emb. disp. Lucro ($)
Jangada 1 1 4 50
Supercanoa 2 1 8 70
Arca 3 1 3 100
Funcionrios disp. 18 10
O modelo genrico relativo ao problema em questo pode ser assim formulado:
max

iemb
l
i
x
i

iemb
cap
i
x
i
ncapitaes

iemb
trip
i
x
i
ntrips
x
i
disp
i
i emb
x
i
Z
+
i emb
Segue uma implementao LINGO interfaceando com um arquivo Excel, onde se considera a
seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas Nome
A2:A4 embarcacoes
B2:B4 capitaes
C2:C4 tripulacoes
D2:D4 disponibilidade
E2:E4 lucro
B5 ncapitaes
C5 ntrips
F2:F4 x
F7 fo
8
sets:
emb /@ole(caverna.xls,embarcacoes)/:l, x, cap, trip, disp;
endsets
data:
l = @ole(caverna.xls,lucro);
cap = @ole(caverna.xls,capitaes);
trip = @ole(caverna.xls,tripulacoes);
disp = @ole(caverna.xls,disponibilidade);
ncapitaes = @ole(caverna.xls,ncapitaes);
ntrips = @ole(caverna.xls,ntrips);
enddata
[fo] max = @sum(emb(i): l(i)*x(i));
[fcap] @sum(emb(i): cap(i)*x(i)) <= ncapitaes;
[ftrip] @sum(emb(i): trip(i)*x(i)) <= ntrips;
@for(emb(i): [fdisp] x(i) <= disp(i));
@for(emb(i): @gin(x(i)));
data:
@ole(caverna.xls,x) = x;
@ole(caverna.xls,fo) = fo;
enddata
A soluo tima para o problema alugar 4 jangadas, 4 supercanoas e 2 arcas, produzindo um
lucro mximo de R$680,00.
2.2 Problema da Mochila 0-1 (Knapsack Problem)
Um excursionista planeja fazer uma viagem acampando. H 5 itens que ele deseja levar consigo,
mas estes, juntos, excedem o limite de 60 quilos que ele supe ser capaz de carregar. Para ajudar
a si prprio no processo de seleo, ele atribui valores, por ordem crescente de importncia a cada
um dos itens conforme a tabela a seguir:
9
Item 1 2 3 4 5
Peso (Kg) 52 23 35 15 7
Valor 100 60 70 15 8
Supondo a existncia de uma unidade de cada item, faa um modelo de programao inteira
que maximize o valor total sem exceder as restries de peso.
Soluo:
(a) Variveis de deciso:
x
j
=
_
1, se o item j for colocado na mochila;
0, caso contrrio.
(b) Funo objetivo:
max f(x) = 100x
1
+ 60x
2
+ 70x
3
+ 15x
4
+ 8x
5
(c) Restries:
c.1) Limite de peso:
52x
1
+ 23x
2
+ 35x
3
+ 15x
4
+ 7x
5
60 (Pode-se carregar 60 Kg, no mximo)
c.2) Integralidade:
x
1
, x
2
, x
3
, x
4
, x
5
0, 1
Considerando a notao a seguir:
itens : Conjunto dos itens = 1, 2, 3, 4, 5
cap : Capacidade da mochila
w
j
: Peso relativo ao item j
p
j
: Valor de retorno proporcionado pelo item j
o problema da mochila 0-1 pode ser formulado como:
max

jitens
p
j
x
j

jitens
w
j
x
j
cap
x
j
0, 1 j itens
2.3 Problema da Mochila Inteira
Trata-se de uma extenso do problema anterior, na qual para cada item j existem u
j
unidades
disponveis. A modelagem de programao inteira deste problema :
max

jitens
p
j
x
j

jitens
w
j
x
j
cap
x
j
u
j
j itens
x
j
Z
+
j itens
em que a varivel de deciso x
j
indica o nmero de unidades do item j alocados mochila.
10
2.4 Problema da Mochila 0-1 Mltipla
Neste problema, alm do conjunto de itens, cada qual com peso w
j
e valor de retorno p
j
, h um
conjunto de mochilas, cada qual com capacidade cap
i
. Existe uma unidade de cada item e o
objetivo tambm maximizar o valor de retorno dos itens alocados s mochilas.
A modelagem de programao inteira deste problema :
max

imochilas

jitens
p
j
x
ij

jitens
w
j
x
ij
cap
i
i mochilas

imochilas
x
ij
1 j itens
x
ij
0, 1 i mochilas , j itens
em que a varivel de deciso x
ij
assume valor 1 se o item j for alocado mochila i e 0, caso
contrrio. O primeiro conjunto de restries assegura que cada mochila i no comporta mais que
cap
i
unidades de peso, enquanto o segundo conjunto impede que um mesmo item j seja alocado
a mais de uma mochila.
2.5 Problema da Mochila Inteira Mltipla
Este problema difere do anterior no sentido de que neste problema pode haver mais de uma unidade
de cada item; no caso, h u
j
unidades disponveis de cada item j.
A modelagem de programao inteira deste problema :
max

imochilas

jitens
p
j
x
ij

jitens
w
j
x
ij
cap
i
i mochilas

imochilas
x
ij
u
j
j itens
x
ij
Z
+
i mochilas , j itens
Neste modelo, x
ij
indica a quantidade de itens j alocados mochila i. Mostra-se, a seguir,
uma implementao LINGO deste problema.
No arquivo Excel considerado, h a seguinte correspondncia de nomes para os blocos de
clulas:
Bloco de clulas Nome
D5:M5 Itens
C11:C13 Mochilas
D6:M6 peso
D7:M7 benecio
D11:D13 capacidade
D8:M8 u
D20:M22 x
O26 fo
11
sets:
Itens /@ole(MochilaInteiraMultipla(R).xls,Itens)/: w, p, u;
Mochilas/@ole(MochilaInteiraMultipla(R).xls,mochilas)/: cap;
matriz(Mochilas, Itens): x;
endsets
data:
w, p, cap, u = @ole(MochilaInteiraMultipla(R).xls,
peso,beneficio,capacidade,u);
enddata
! Maximizar o benefcio pelo uso dos Itens;
[fo] max = @sum(Mochilas(i): @sum(Itens(j): p(j)*x(i,j)));
! A capacidade da mochila no pode ser superada;
@for(Mochilas(i): @sum(Itens(j): w(j)*x(i,j)) <= cap(i));
! Existem uj unidades de cada item j;
@for(Itens(j): @sum(Mochilas(i): x(i,j)) <= u(j));
! permitido levar um nmero inteiro de Itens;
@for(Mochilas(i): @for(Itens(j): @gin(x(i,j))));
data:
@ole(MochilaInteiraMultipla(R).xls,x,fo) = x, fo;
enddata
Na soluo tima deste problema, a mochila A recebe 2 unidades do item 4; a mochila B
recebe uma unidade do item 3 e uma do item 9, enquanto a mochila C recebe uma unidade do
item 3, duas unidades do item 5 e duas do item 10. O valor de retorno mximo 61.
12
2.6 Problema de Corte de Estoque (Cutting Stock Problem)
Certa empresa trabalha com a produo de etiquetas autocolantes. O papel usado para sua
confeco encontra-se em bobinas de mesmo comprimento, todas com largura de 50 cm. As
encomendas para a prxima semana impem a necessidade de se cortarem 32 bobinas de 15 cm
de largura, 17 bobinas de 17,5 cm de largura e 21 bobinas de 20 cm de largura. poltica da
empresa manter em estoque o excedente ao pedido em quantidade mxima de 10 bobinas cortadas
de acordo com a encomenda. Esta ao evita a imobilizao de capital, uma vez que so incertos
os prximos pedidos.
O departamento tcnico relacionou na tabela abaixo as possveis programaes de cortes, tendo
em vista as encomendas.
Programaes de corte
Largura da Faixa Cortada
Desperdcio
15cm 17,5cm 20cm (cm)
1 3 0 0 5
2 2 1 0 2,5
3 1 2 0 0
4 2 0 1 0
5 0 1 1 12,5
6 0 0 2 10
Elabore um modelo de programao inteira que determine a estratgia a ser seguida pela em-
presa de forma a minimizar os desperdcios face necessidade de produo.
Modelo de Programao Matemtica
Sejam os seguintes dados de entrada para o problema:
padroes : Conjunto de padres de corte;
bobinas : Conjunto dos tipos de bobinas;
desp
i
: Desperdcio relativo aos cortes realizados de acordo com o padro i;
demanda
j
: Demanda por bobinas do tipo j;
a
ij
: Quantidade de bobinas do tipo j produzidas no padro de corte i;
estmax : Estoque mximo de bobinas permitido;
e as seguintes variveis de deciso:
x
i
: Nmero de cortes realizados segundo o padro i
O modelo de programao matemtica para esse problema de corte de estoque :
13
min

ipadroes
desp
i
x
i

ipadroes
a
ij
x
i
demanda
j
j bobinas

ipadroes
a
ij
x
i
demanda
j
+ estmax j bobinas
x
i
Z
+
i padroes
Nesta formulao, o objetivo minimizar as perdas com os padres de corte. O primeiro
conjunto de restries assegura o atendimento da demanda por bobinas do tipo j, enquanto
o segundo indica que para cada tipo de bobina j, no podem ser estocadas mais que estmax
unidades.
2.7 Problema de Corte de Estoque Unidimensional
Uma serralheria dispe de barras de 7 metros de comprimento que devem ser cortadas para obter
barras menores atendendo a uma encomenda. As seguintes quantidades e tamanhos so requeri-
dos: 92 barras de 2 metros, 59 barras de 3 metros e 89 barras de 4 metros. Elabore um modelo
de programao linear inteira que minimize as perdas com os cortes.
Soluo:
Nesse problema no so dados os padres de corte, sendo necessrio determin-los previamente.
A tabela a seguir relaciona os possveis padres de corte formados a partir do corte de barras de
7 metros de comprimento, bem como as perdas relativas a cada padro.
Quant. de barras por tipo Perda
Padro 2 m. 3 m. 4 m. (m.)
1 0 1 1 0
2 2 1 0 0
3 3 0 0 1
4 0 2 0 1
5 1 0 1 1
Modelo de Programao Matemtica:
Sejam os seguintes dados de entrada para o problema:
padroes : Conjunto dos possveis padres de corte;
barras : Conjunto de barras;
perda
i
: Perda com os cortes realizados de acordo com o padro i;
demanda
j
: Demanda por barras do tipo j;
a
ij
: Quantidade de barras do tipo j produzidas no padro de corte i;
e as seguintes variveis de deciso:
x
i
: Nmero de cortes realizados segundo o padro i
14
Assim, o modelo de programao matemtica :
min

ipadroes
perda
i
x
i

ipadroes
a
ij
x
i
demanda
j
j barras
x
i
Z
+
i padroes
Observao:
Relativamente ao problema anterior, considere que a serralheria no tem espao para reaproveitar
as barras menores no usadas. Elabore um modelo de programao linear inteira que minimize as
perdas com os cortes e com o excesso de barras menores no aproveitadas.
Nessa nova situao, chamando de dimenbarra
j
o comprimento da barra do tipo j, em metros,
ento o modelo de programao matemtica que contempla esse novo objetivo :
min

ipadroes
perda
i
x
i
+

jbarras
dimenbarra
j

_

ipadroes
a
ij
x
i
demanda
j
_

ipadroes
a
ij
x
i
demanda
j
j barras
x
i
Z
+
i padroes
Nesta nova funo objetivo, a componente
_

ipadroes
a
ij
x
i
demanda
j
_
indica o excesso de
barras do tipo j geradas. Multiplicando-a por dimenbarra
j
tem-se o valor da perda, em metros,
devido ao excesso de barras produzidas.
A seguir, uma implementao LINGO do problema interfaceando com um arquivo Excel. No
arquivo Excel considerado, h a seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas Nome
B10:B14 padroes
C9:E9 barras
C8:E8 dimenbarra
F10:F14 perda
C10:E14 a
C15:E15 demanda
J16:L16 excesso
M10:M14 solucao
M19 ptotal
15
sets:
padroes/@ole(CorteExcesso.xls,padroes)/: perda, x;
barras/@ole(CorteExcesso.xls,barras)/: demanda, dimenbarra;
matriz(padroes,barras): a;
endsets
data:
perda = @ole(CorteExcesso.xls,perda);
demanda = @ole(CorteExcesso.xls,demanda);
a = @ole(CorteExcesso.xls,a);
dimenbarra = @ole(CorteExcesso.xls,dimenbarra);
enddata
[fo] min = @sum(padroes(i): perda(i)*x(i)) +
(@sum(barras(j):
dimenbarra(j) * @sum(padroes(i): a(i,j)*x(i)) - demanda(j)));
@for(barras(j): [excbarra] @sum(padroes(i): a(i,j)*x(i)) >= demanda(j));
@for(padroes(i): @GIN(x(i)));
data:
@ole(CorteExcesso.xls,excesso,solucao,ptotal) = excbarra, x, fo;
enddata
Como se observa, na soluo tima devem ser cortadas 59 peas no padro 1, 21 no padro 3
e 30 no padro 5. A perda total de 530 metros, sendo que apenas uma barra de 2 metros foi
cortada em excesso.
2.8 Alocao de pessoal (Sta Scheduling)
Um hospital trabalha com atendimento varivel em demanda durante as 24 horas do dia. As
necessidades distribuem-se segundo a tabela:
16
Turno Horrio Nmero requerido de enfermeiros
1 08 s 12 h 51
2 12 s 16 h 58
3 16 s 20 h 62
4 20 s 24 h 41
5 24 s 04 h 32
6 04 s 08 h 19
O horrio de trabalho de um enfermeiro de 8 horas seguidas e s pode ser iniciado no comeo
de cada turno, isto , s 8 ou 12 ou 16 ou 20 ou 24 ou 04 horas. Elabore um modelo de PLI que
minimize o gasto com a mo-de-obra. Considere que cada enfermeiro recebe $100 por hora de
trabalho no perodo diurno (08 s 20 h) e $125 no perodo noturno (20 s 08 h).
Soluo:
(a) Variveis de deciso:
x
i
= nmero de enfermeiros que iniciam sua jornada no incio do turno i.
(b) Funo objetivo:
min f(x) = 800x
1
+ 800x
2
+ 900x
3
+ 1000x
4
+ 1000x
5
+ 900x
6
(c) Restries:
c.1) Nmero de enfermeiros necessrios no turno 1:
x
1
+ x
6
51
c.2) Nmero de enfermeiros necessrios no turno 2:
x
2
+ x
1
58
c.3) Nmero de enfermeiros necessrios no turno 3:
x
3
+ x
2
62
c.4) Nmero de enfermeiros necessrios no turno 4:
x
4
+ x
3
41
c.5) Nmero de enfermeiros necessrios no turno 5:
x
5
+ x
4
32
c.6) Nmero de enfermeiros necessrios no turno 6:
x
6
+ x
5
19
c.7) Integralidade e no-negatividade:
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
Z
+
Para fazer um modelo genrico deste PPLI, utilizemos as seguintes notaes:
turnos : Conjunto dos turnos de trabalho = 1, 2, 3, 4, 5, 6
c
i
: Custo do enfermeiro que inicia sua jornada no turno i
demanda
i
: Nmero de enfermeiros necessrios durante o turno i
O modelo genrico relativo ao problema em questo pode ser assim formulado:
min

iturnos
c
i
x
i
x
i
+ x
i1
demanda
i
i turnos
x
i
Z
+
i turnos
17
As restries x
i
+ x
i1
demanda
i
indicam que em cada turno i trabalham os enfermeiros
que iniciaram sua jornada no turno i, bem como aqueles que comearam sua jornada de trabalho
no turno anterior.
Em princpio, essas restries no podem ser utilizadas diretamente, uma vez que quando i = 1,
a varivel x
i1
no est denida. Uma soluo seria substitu-las pelas duas restries seguintes:
x
i
+ x
i1
demanda
i
i turnos [ i ,= 1 e x
1
+ x
|turnos|
demanda
1
, onde [turnos[ representa
a cardinalidade do conjunto turnos.
No LINGO, uma soluo para esta situao usar uma lista circular. A funo que faz isso no
LINGO @wrap. Ela recebe como argumentos os parmetros index e limit, onde limit o nmero
de elementos do conjunto, que no exemplo citado pode ser determinado por @size(turnos), e index
o ndice considerado. @wrap(index, limit) = index+klimit, onde k um inteiro tal que index
[1, limit]. Informalmente, k deve ser tal que @wrap(index, limit) devolva um nmero entre 1 e
limit. Exemplo: @wrap(8, 6) = 8 +(1) 6 = 2; @wrap(0, 6) = 0 +(1) 6 = 6; @wrap(1, 6) =
1 + (1) 6 = 5, etc. Assim, no LINGO, as restries x
i
+x
i1
demanda
i
i turnos podem
ser representadas por: @for(turnos(i) : x(i) + x(@wrap(i 1, @size(turnos))) demanda(i)).
A seguir, a implementao LINGO do problema interfaceando com o Excel.
No arquivo Excel considerado h a seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas Nome
B3:B8 turnos
E3:E8 custo
D3:D8 demanda
G3:G8 excturno
F3:F8 soluo
E10 fo
sets:
turnos/@ole(enfermeiros.xls,turnos)/:c, !custo;
x, !soluo;
demanda;!demanda;
endsets
data:
c, demanda = @ole(enfermeiros.xls,custo,demanda);
enddata
18
[fo] min = @sum(turnos(i): c(i)*x(i));
@for(turnos(i):
[excturno] x(i) + x(@wrap(i-1,@size(turnos))) >= demanda(i));
@for(turnos(i): @gin(x(i)));
data:
@ole(enfermeiros.xls,soluo,fo,excturno) = x, fo, excturno;
enddata
Como se observa, na soluo tima devem ser contratados: 51 enfermeiros para iniciarem o
trabalho no turno 1, 34 no turno 2, 28 no turno 3, 13 no turno 4, 19 no turno 5 e nenhum no
turno 6. O custo total mnimo com a contratao de enfermeiros de R$125.200,00.
Observao:
Relativamente ao problema anterior, suponha que cada enfermeiro possa fazer hora-extra traba-
lhando mais 4 horas consecutivas alm de sua jornada normal de trabalho, isto , mais um turno
de trabalho. Suponha que a hora-extra seja remunerada em 50% a mais que a hora normal.
Considere, tambm, que em cada turno no mais de 20% dos enfermeiros possam estar fazendo
hora-extra. Faa um modelo de programao linear inteira que minimize os gastos com a con-
tratao de mo-de-obra. Antes de resolver o problema, pense na seguinte questo: A soluo
tima dessa variante poder ter custo menor que a da soluo tima sem a possibilidade de os
enfermeiros fazerem hora-extra? Justique.
Soluo:
(a) Variveis de deciso:
x
i
= nmero de enfermeiros que iniciam sua jornada no incio do turno i e no fazem hora-
extra.
y
i
= nmero de enfermeiros que iniciam sua jornada no incio do turno i e fazem hora-extra.
(b) Funo objetivo:
min f(x, y) = 800x
1
+ 800x
2
+ 900x
3
+ 1000x
4
+ 1000x
5
+ 900x
6
+
1400y
1
+ 1550y
2
+ 1650y
3
+ 1750y
4
+ 1600y
5
+ 1500y
6
(c) Restries:
c.1) Nmero de enfermeiros necessrios no turno 1:
x
1
+ x
6
+ y
5
+ y
1
+ y
6
51
c.2) Nmero de enfermeiros necessrios no turno 2:
x
2
+ x
1
+ y
6
+ y
2
+ y
1
58
c.3) Nmero de enfermeiros necessrios no turno 3:
x
3
+ x
2
+ y
1
+ y
3
+ y
2
62
c.4) Nmero de enfermeiros necessrios no turno 4:
x
4
+ x
3
+ y
2
+ y
4
+ y
3
41
c.5) Nmero de enfermeiros necessrios no turno 5:
x
5
+ x
4
+ y
3
+ y
5
+ y
4
32
19
c.6) Nmero de enfermeiros necessrios no turno 6:
x
6
+ x
5
+ y
4
+ y
6
+ y
5
19
c.7) Limite de enfermeiros no turno 1:
y
5
0, 20(x
1
+ x
6
+ y
5
+ y
1
+ y
6
)
c.8) Limite de enfermeiros no turno 2:
y
6
0, 20(x
2
+ x
1
+ y
6
+ y
2
+ y
1
)
c.9) Limite de enfermeiros no turno 3:
y
1
0, 20(x
3
+ x
2
+ y
1
+ y
3
+ y
2
)
c.10) Limite de enfermeiros no turno 4:
y
2
0, 20(x
4
+ x
3
+ y
2
+ y
4
+ y
3
)
c.11) Limite de enfermeiros no turno 5:
y
3
0, 20(x
5
+ x
4
+ y
3
+ y
5
+ y
4
)
c.12) Limite de enfermeiros no turno 6:
y
4
0, 20(x
6
+ x
5
+ y
4
+ y
6
+ y
5
)
c.13) Integralidade e no-negatividade:
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
, y
1
, y
2
, y
3
, y
4
, y
5
, y
6
Z
+
Para fazer um modelo genrico desse PPL, considere que phe signica o percentual mximo de
enfermeiros fazendo hora-extra em cada turno, no caso, 0,20 e que c
i
o custo sem hora-extra e
d
i
, com hora-extra. Dessa forma, o modelo genrico para este problema pode ser formulado como:
min

iturnos
(c
i
x
i
+ d
i
y
i
)
x
i
+ x
i1
+ y
i2
+ y
i
+ y
i1
demanda
i
i turnos
y
i2
phe (x
i
+ x
i1
+ y
i2
+ y
i
+ y
i1
) i turnos
x
i
, y
i
Z
+
i turnos
A seguir, o modelo LINGO interfaceando com um arquivo Excel referente ao problema em
questo, com a seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas Nome Bloco de clulas Nome
A2:A7 turnos I9 phe
D2:D7 custoshe I2:I7 folga
E2:E7 custoche F2:F7 x
C2:C7 demanda G2:G7 y
H2:H7 excturno D9 fo
20
sets:
turnos/@ole(enfhe.xls,turnos)/:c, !custo sem hora-extra;
d, !custo com hora-extra;
x, !enfermeiros sem hora-extra;
y, !enfermeiros com hora-extra;
demanda;!demanda;
endsets
data:
c, d, demanda = @ole(enfhe.xls,custoshe,custoche,demanda);
phe = @ole(enfhe.xls,phe);
enddata
[fo] min = @sum(turnos(i): c(i)*x(i) + d(i)*y(i));
@for(turnos(i):
[excturno] x(i) + x(@wrap(i-1,@size(turnos))) +
y(i) + y(@wrap(i-1,@size(turnos))) +
y(@wrap(i-2,@size(turnos))) >= demanda(i));
@for(turnos(i):
[folga] y(@wrap(i-2,@size(turnos))) <= phe*
(x(i) + x(@wrap(i-1,@size(turnos))) +
y(i) + y(@wrap(i-1,@size(turnos))) +
y(@wrap(i-2,@size(turnos)))));
@for(turnos(i):
@gin(x(i));
@gin(y(i)));
data:
@ole(enfhe.xls,x,fo,excturno) = x, fo, excturno;
@ole(enfhe.xls,y,folga) = y, folga;
enddata
Como se observa, na soluo tima devem ser contratados: 20 enfermeiros para iniciarem o
trabalho no turno 1 sem fazer hora-extra, 26 no turno 2, 19 no turno 3, 17 no turno 4, nenhum no
turno 5 e 9 no turno 6. Por outro lado, devem ser contratados 12 enfermeiros no turno 1 fazendo
hora-extra, 5 no turno 3 e 10 no turno 5. O custo total mnimo com a contratao de enfermeiros
de R$120.050,00.
2.9 Problema da Fbrica de Prateleiras
Uma fbrica manufatura 5 tipos de prateleiras (p
1
, p
2
, p
3
, p
4
, p
5
) utilizando dois processos de pro-
duo: processo normal (N) e processo acelerado (A). Cada produto requer um certo nmero de
horas para ser trabalhado dentro de cada processo e alguns produtos s podem ser fabricados
atravs de um dos tipos de processo. O quadro a seguir resume o consumo (em horas) dentro de
cada esquema de fabricao e os lucros (em R$) obtidos aps a deduo dos custos de produo.
21
Prateleiras p
1
p
2
p
3
p
4
p
5
Lucro (R$/unidade) 570 575 555 550 560
Processo Normal 12 16 - 19 9
Processo Acelerado 10 16 5 - -
A montagem nal de cada prateleira requer 16 h de mo-de-obra por unidade. A fbrica possui
3 mquinas para o processo normal e 2 para o processo acelerado. As mquinas trabalham em 2
turnos de 8 horas por dia em um regime de 6 dias por semana. Uma equipe de 8 pessoas trabalha
em turno nico de 8 horas durante 6 dias na montagem das prateleiras. Determine o melhor
esquema de produo.
Soluo:
(a) Variveis de deciso:
x
ij
= nmero de prateleiras do tipo j a serem fabricadas pelo processo i, sendo i = N (processo
normal) e i = A (processo acelerado).
(b) Funo objetivo:
max f(x) = 570(x
N1
+ x
A1
) + 575(x
N2
+ x
A2
) + 555x
A3
+ 550x
N4
+ 560x
N5
(c) Restries:
c.1) Tempo disponvel para o processo normal:
12x
N1
+ 16x
N2
+ 19x
N4
+ 9x
N5
288 (= 3 2 8 6)
c.2) Tempo disponvel para o processo acelerado:
10x
A1
+ 16x
A2
+ 5x
A3
192 (= 2 2 8 6)
c.3) Tempo disponvel para a montagem:
16(x
N1
+ x
A1
+ x
N2
+ x
A2
+ x
A3
+ x
N4
+ x
N5
) 384 (= 8 8 6)
c.4) Integralidade e no-negatividade:
x
N1
, x
A1
, x
N2
, x
A2
, x
A3
, x
N4
, x
N5
Z
+
Sejam os seguintes dados de entrada:
Prat : Conjunto das prateleiras
Proc : Conjunto dos tipos de processo
tp
i
: Tempo disponvel para a realizao do processo i
t
ij
: Tempo necessrio para a produo de cada prateleira j no processo i
tm
j
: Tempo necessrio para a montagem de cada prateleira j
Totaltm : Tempo total disponvel para a montagem das prateleiras
O modelo genrico pode ser formulado da seguinte forma:
max

iProc

jPrat
c
i
x
ij

jPrat
t
ij
x
ij
tp
i
i Proc

iProc

jPrat
tm
j
x
ij
Totaltm
x
ij
Z
+
i Proc, j Prat
22
2.10 Fluxo Mximo em Redes
A gura a seguir representa uma rede de comunicao de dados entre computadores. Os nmeros
representam a capacidade mxima em MBytes por segundo que pode ser transmitido de um
computador para outro. Admita que a transmisso s possvel no sentido especicado pela seta.
Qual o uxo mximo que pode passar entre A e G atravs da rede?
Soluo:
(a) Variveis de deciso:
x
ij
= quantidade de uxo a ser enviada do n i ao n j, j ,= i.
(b) Funo objetivo:
max f(x) = x
AB
+ x
AC
(c) Restries:
c.1) Equilbrio de uxo nos ns:
x
EG
+ x
FG
(x
AB
+ x
AC
) = 0 (N A)
x
AB
(x
BC
+ x
BD
+ x
BE
) = 0 (N B)
x
AC
+ x
BC
(x
CD
+ x
CF
) = 0 (N C)
x
BD
+ x
CD
(x
DE
+ x
DF
) = 0 (N D)
x
BE
+ x
DE
+ x
FE
x
EG
= 0 (N E)
x
CF
+ x
DF
(x
FE
+ x
FG
) = 0 (N F)
c.2) Capacidade nos arcos:
x
AB
6
x
AC
7
x
BC
1
x
BD
3
x
BE
4
x
CD
2
x
CF
3
x
DE
3
x
DF
2
x
EG
2
x
FE
2
x
FG
4
c.3) Integralidade e no-negatividade:
x
AB
, x
AC
, x
BC
, x
BD
, x
BE
, x
CD
, x
CF
, x
DE
, x
DF
, x
EG
, x
FE
, x
FG
Z
+
Para formular o problema de forma genrica, considere as seguintes notaes:
23
V : Conjunto de ns
cap
ij
: Capacidade do arco (i, j)
n : Cardinalidade do conjunto de ns, isto , n = [V [
Assim, o modelo genrico pode ser escrito como:
max

jV
x
1j

jV
x
ij


jV
x
ji
= 0 i V, i ,= 1 e i ,= n

jV
x
1j


iV
x
in
= 0
x
ij
cap
ij
i, j V
x
ij
Z
+
i, j V
Neste modelo, considera-se que o n 1 o n origem e que o n n o n destino.
2.11 Caminho Mnimo
[Extrado de Lachtermacher (2004), vide [4]] Uma fbrica de artigos de decorao, localizada em
Lambari (MG), deve entregar uma grande quantidade de peas na cidade de Baependi (MG). A
empresa quer saber qual o caminho que seu caminho de entregas deve fazer para minimizar a
distncia total percorrida. A gura a seguir, extrada de Lachtermacher (2004), representa, na
forma de rede, as ligaes entre as cidades da regio.
Soluo:
(a) Variveis de deciso:
x
ij
=
_
1, se o arco (i, j) pertencer ao caminho;
0, caso contrrio.
(b) Funo objetivo:
min f(x) = 41x
12
+ 44x
13
+ 50x
15
+ 37x
24
+ 27x
35
+ 45x
46
+ 4x
56
(c) Restries:
c.1) Equilbrio de uxo nos ns:
x
12
+ x
13
+ x
15
= 1 (N 1)
x
12
x
24
= 0 (N 2)
x
13
x
35
= 0 (N 3)
x
24
x
46
= 0 (N 4)
x
15
+ x
35
x
56
= 0 (N 5)
x
46
+ x
56
= 1 (N 6)
24
c.2) Integralidade e no-negatividade:
x
12
, x
13
, x
15
, x
24
, x
35
, x
46
, x
56
0, 1
Considere os seguintes parmetros de entrada:
V : Conjunto dos vrtices (ns)
d
ij
: Distncia do vrtice i ao vrtice j
n : Cardinalidade do conjunto de vrtices, isto , n = [V [
Considerando o n 1 como o n origem e n como o n destino, pode-se modelar o problema de
caminho mnimo genericamente como:
min

iV

jV
d
ij
x
ij

jV
x
ij


jV
x
ji
= 0 i V, i ,= 1 e i ,= n

jV
x
1j
= 1

iV
x
in
= 1
x
ij
0, 1 i, j V
2.12 Programao da produo - exemplo 1
Uma determinada empresa est interessada em maximizar o lucro mensal proveniente de quatro
de seus produtos, designados por I, II, III e IV. Para fabricar esses produtos, ela utiliza dois
tipos de mquinas (M1 e M2) e dois tipos de mo-de-obra (MO1 e MO2), que tm as seguintes
disponibilidades:
Disponibilidade
Mquina (mquina-hora/ms)
M1 70
M2 20
Disponibilidade
Mo-de-obra (homem-hora/ms)
MO1 120
MO2 160
O setor tcnico da empresa fornece os seguintes coecientes, que especicam o total de horas
de mquina e horas de mo-de-obra necessrias para a produo de uma unidade de cada produto:
Produtos
Mquinas I II III IV
M1 5 4 8 9
M2 2 6 0 8
Produtos
Mo-de-obra I II III IV
MO1 2 4 2 8
MO2 7 3 0 7
O setor comercial fornece as seguintes informaes:
Potencial de venda Lucro unitrio
Produtos (unidades/ms) (R$/ms)
I 70 10
II 60 8
III 40 9
IV 20 7
25
Faa o planejamento da produo mensal da empresa objetivando maximizar o lucro.
Soluo:
(a) Variveis de deciso:
x
j
= quantidade de produtos do tipo j a serem fabricadas mensalmente.
(b) Funo objetivo:
max f(x) = 10x
I
+ 8x
II
+ 9x
III
+ 7x
IV
(c) Restries:
c.1) Disponibilidade de tempo da mquina 1:
5x
I
+ 4x
II
+ 8x
III
+ 9x
IV
70
c.2) Disponibilidade de tempo da mquina 2:
2x
I
+ 6x
II
+ 8x
IV
20
c.3) Disponibilidade de tempo da mo-de-obra 1:
2x
I
+ 4x
II
+ 2x
III
+ 8x
IV
120
c.4) Disponibilidade de tempo da mo-de-obra 2:
7x
I
+ 3x
II
+ 7x
IV
160
c.5) Potencial de venda dos produtos:
x
I
70
x
II
60
x
III
40
x
IV
20
c.6) Integralidade e no-negatividade:
x
I
, x
II
, x
III
, x
IV
Z
+
Para a modelagem genrica do problema, considere os seguintes dados de entrada, alm da varivel
de deciso apresentada anteriormente:
Prod : Conjunto dos produtos
Maq : Conjunto das mquinas
MO : Conjunto das mos-de-obra
l
j
: Lucro de uma unidade do produto j, em unidades monetrias
p
j
: Potencial de venda do produto j
m
ij
: Tempo gasto para a produo do produto j na mquina i, em horas
o
kj
: Tempo requerido para a produo do produto j pela mo-de-obra k, em horas
tm
i
: Tempo disponvel da mquina i, em horas
to
k
: Tempo disponvel para a mo-de-obra k, em horas
Ento, o modelo de programao matemtica que maximiza a produo :
max

jProd
l
j
x
j

jProd
m
ij
x
j
tm
i
i Maq

jProd
o
kj
x
j
to
k
k MO
x
j
p
j
j Prod
x
j
Z
+
j Prod
26
2.13 Sequenciamento em processadores paralelos e idnticos
Suponha que seja necessrio executar uma lista de 10 jobs em um conjunto de 3 processadores.
Sabe-se que cada job pode ser executado em qualquer ordem e em qualquer processador, sendo o
tempo de processamento independente do processador. O tempo (em minutos) gasto para execu-
o de cada job : 6, 4, 5, 4, 3, 7, 8, 5, 3 e 3. Elabore o modelo de programao matemtica que
minimize o tempo de execuo de todos os jobs.
Soluo:
(a) Variveis de deciso:
x
ij
=
_
1, se o job j for executado no processador i;
0, caso contrrio.
C
max
= makespan (Instante de trmino do processador mais carregado)
(b) Funo objetivo:
min C
max
(c) Restries:
c.1) Cada job deve ser executado em um nico processador:
x
11
+ x
21
+ x
31
= 1 (job 1)
x
12
+ x
22
+ x
32
= 1 (job 2)
x
13
+ x
23
+ x
33
= 1 (job 3)
x
14
+ x
24
+ x
34
= 1 (job 4)
x
15
+ x
25
+ x
35
= 1 (job 5)
x
16
+ x
26
+ x
36
= 1 (job 6)
x
17
+ x
27
+ x
37
= 1 (job 7)
x
18
+ x
28
+ x
38
= 1 (job 8)
x
19
+ x
29
+ x
39
= 1 (job 9)
x
1,10
+ x
2,10
+ x
3,10
= 1 (job 10)
c.2) Tempo de execuo dos jobs em cada processador:
Proc. 1: 6x
11
+ 4x
12
+ 5x
13
+ 4x
14
+ 3x
15
+ 7x
16
+ 8x
17
+ 5x
18
+ 3x
19
+ 3x
1,10
C
max
Proc. 2: 6x
21
+ 4x
22
+ 5x
23
+ 4x
24
+ 3x
25
+ 7x
26
+ 8x
27
+ 5x
28
+ 3x
29
+ 3x
2,10
C
max
Proc. 3: 6x
31
+ 4x
32
+ 5x
33
+ 4x
34
+ 3x
35
+ 7x
36
+ 8x
37
+ 5x
38
+ 3x
39
+ 3x
3,10
C
max
c.3) Integralidade e no-negatividade:
x
ij
0, 1 i = 1, 2, 3 e j = 1, 2, ..., 10
Considere as seguintes notaes:
Jobs : Conjunto dos jobs
Procs : Conjunto dos processadores
t
j
: Tempo de execuo do job j
Genericamente, pode-se modelar o problema como:
min C
max

iProcs
x
ij
= 1 j Jobs

jJobs
t
j
x
ij
C
max
i Procs
x
ij
0, 1 i Procs e j Jobs
27
2.14 Planejamento da Produo - Problema da Fbrica de Motores
[Retirado de Lachtermacher (2004), vide [4]] A LCL Motores recebeu recentemente uma enco-
menda para produzir trs tipos de motores. Cada tipo de motor necessita de um determinado
nmero de horas de trabalho no setor de montagem e acabamento. A LCL pode terceirizar parte
de sua produo. A tabela a seguir resume essas informaes:
Modelo 1 2 3 Total (h)
Demanda (unidades) 3000 2500 500
Montagem (h/unidade) 1,1 1,9 0,7 6000
Acabamento (h/unidade) 2,5 0,8 4,0 10000
Custo de produo (R$) 50 90 120
Terceirizado (R$) 65 92 140
Elabore o modelo de programao matemtica que minimiza os custos de produo.
Soluo:
(a) Variveis de deciso:
x
i
= quantidade de motores do modelo i a ser produzido.
y
i
= quantidade de motores do modelo i a ser terceirizado.
(b) Funo objetivo:
min f(x, y) = 50x
1
+ 90x
2
+ 120x
3
+ 65y
1
+ 92y
2
+ 140y
3
(c) Restries:
c.1) Atendimento demanda dos modelos de motores:
x
1
+ y
1
3000
x
2
+ y
2
2500
x
3
+ y
3
500
c.2) Respeito ao tempo disponvel para a montagem:
1, 1x
1
+ 1, 9x
2
+ 0, 7x
3
6000
c.3) Respeito ao tempo disponvel para o acabamento:
2, 5x
1
+ 0, 8x
2
+ 4x
3
10000
c.4) Integralidade e no-negatividade:
x
1
, x
2
, x
3
, y
1
, y
2
, y
3
Z
+
Considere que:
Modelos : Conjunto dos diferentes modelos de motores
cprod
j
: Custo de produo do modelo j de motor
cterc
j
: Custo de terceirizao do modelo j de motor
demanda
j
: Demanda dos motores do modelo j
TempMont
j
: Tempo necessrio para a montagem do modelo j de motor
TempAcab
j
: Tempo necessrio para o acabamento do modelo j de motor
TempDispMont : Tempo disponvel para a montagem
TempDispAcab : Tempo disponvel para o acabamento
Genericamente, pode-se modelar o problema da seguinte forma:
28
min

jModelos
cprod
j
x
j
+

jModelos
cterc
j
y
j
x
j
+ y
j
demanda
j
j Modelos

jModelos
TempMont
j
x
j
TempDispMont

jModelos
TempAcab
j
x
j
TempDispAcab
x
j
, y
j
Z
+
j Modelos
Segue um modelo LINGO que l os dados do arquivo-texto Motores.txt e exporta a soluo para
os arquivos Producao.txt, no caso dos modelos produzidos pela prpria empresa, e Terceirizado.txt,
no caso dos modelos que devem ser terceirizados.
sets:
Modelos / @file(Motores.txt) /: x, y, cprod, cterc,
TempMont, TempAcab,
demanda;
endsets
! Importar dados de arquivo texto;
data:
demanda = @file(Motores.txt);
TempMont = @file(Motores.txt);
TempAcab = @file(Motores.txt);
cprod = @file(Motores.txt);
cterc = @file(Motores.txt);
TempDispMont = @file(Motores.txt);
TempDispAcab = @file(Motores.txt);
enddata
[fo] min = @sum(Modelos(j): cprod(j)*x(j)) +
@sum(Modelos(j): cterc(j)*y(j));
[folgaMont] @sum(Modelos(j): TempMont(j)*x(j)) <= TempDispMont;
[folgaAcab] @sum(Modelos(j): TempAcab(j)*x(j)) <= TempDispAcab;
@for(Modelos(j):
[Estoque] x(j) + y(j) >= demanda(j));
@for(Modelos(j):
@gin(x(j));
@gin(y(j)));
! Exportar para arquivo texto;
data:
@text(Producao.txt) = x;
@text(Terceirizado.txt) = y;
enddata
29
Neste modelo, Estoque um vetor de 3 posies e indica o excesso de produo; folgaMont
um escalar que indica a folga, em horas, no setor de montagem e folgaAcab um escalar que
indica a folga, em horas, no setor de acabamento.
O arquivo Motores.txt, que contm os dados, apresentado a seguir. Observe que a cada
chamada desse arquivo so lidos todos os dados at o smbolo til (). Assim, a ordem de chamada
deve ser aquela referente leitura dos dados no modelo. Observe tambm que, no caso de nmeros
decimais, deve-se utilizar o ponto como separador decimal e no a vrgula.
! Modelos;
1 2 3 ~
! Demanda;
3000 2500 500 ~
! Montagem;
1.1 1.9 0.7 ~
! Acabamento;
2.5 0.8 4 ~
! Custo de produo;
50 90 120 ~
! Custo de terceirizao;
65 92 140 ~
! Tempo disponivel para montagem;
6000 ~
! Tempo disponvel para acabamento;
10000
O custo timo de produo neste exemplo de $438.750,00 unidades monetrias, sendo que
na soluo tima devem ser produzidas pela prpria fbrica 3000 unidades do modelo 1, 625 do
modelo 2 e 500 do modelo 3; enquanto que 1875 unidades do modelo 2 devem ser terceirizadas.
Observe que o gargalo do sistema produtivo o setor de acabamento, j que na soluo tima no
h folga nesse setor; j na montagem h 1162,5 horas de folga.
30
2.15 Problema de empacotamento (Bin Packing)
H um conjunto de contineres e outro de itens a serem alocados a esses contineres. Sabe-se que
cada continer i tem capacidade cap
i
e que cada item j tem um peso w
j
. Determine o nmero
mnimo de contineres necessrio para empacotar todos os itens.
Soluo:
Para a formulao de programao matemtica deste problema, sejam os seguintes parmetros
de entrada:
Conteineres: Conjunto dos contineres
Itens : Conjunto dos itens
w
j
: Peso do item j
cap
i
: Capacidade do continer i
e as seguintes variveis de deciso:
y
i
: Varivel que assume o valor 1 se o continer i usado e 0, caso contrrio
x
ij
: Varivel que assume o valor 1 se o item j colocado no continer i e 0, caso contrrio
Ento o Bin Packing Problem pode ser modelado como:
min

iConteineres
y
i
(BP1)

iConteineres
x
ij
= 1 j Itens (BP2)

jItens
w
j
x
ij
cap
i
y
i
i Conteineres (BP3)
x
ij
0, 1 i Conteineres, j Itens (BP4)
y
i
0, 1 i Conteineres (BP5)
Neste modelo, a expresso (BP1) indica que o objetivo minimizar o nmero de contineres.
As restries (BP2) asseguram que cada item alocado a um nico continer. O conjunto de
restries (BP3) impede que a capacidade de cada continer seja ultrapassada. As restries
(BP4) e (BP5) estabelecem que as variveis de deciso so binrias.
2.16 Open Dimensional Problem
Considere um objeto retangular de largura W e comprimento sucientemente grande. Considere,
tambm, a necessidade de se obter, a partir desse objeto, um conjunto de itens diversos i = 1, , n
de dimenses (h
i
, w
i
), onde h
i
o comprimento e w
i
W, a largura (Vide Figura 1).
O Open Dimensional Problem (ODP) consiste em determinar a melhor forma de cortar o objeto
para atender ao pedido, de modo a minimizar o comprimento do objeto utilizado.
A Figura 2 mostra uma soluo para o exemplo da Figura 1, a qual, naturalmente, no a
melhor. Nesta soluo, o comprimento do objeto dado pela soma das alturas dos itens 5, 1 e 6,
isto , o comprimento utilizado h
5
+ h
1
+ h
6
.
Este problema aparece na literatura com uma srie de nomes diferentes, dependendo do tipo
de variao sofrida. No caso de os itens serem retngulos, o ODP recebe os nomes de Rectangular
Strip Packing Problem ou Two-Dimensional Strip Packing Problem. Quando os itens retangu-
lares devem ser colocados no objeto de forma ortogonal, o ODP conhecido como Orthogonal
31
Figura 1: Objeto e itens a serem produzidos Figura 2: Exemplo de uma soluo
Rectangular Strip Packing Problem. Ele denominado Level Packing Problem quando os itens
so alocados no objeto formando-se nveis. Quando os itens possuem forma no-regular, como,
por exemplo, na indstria de sapatos, o ODP referenciado como Irregular Strip Packing Problem
ou Nesting Problem. No caso de itens retangulares, existem duas formas de se cortar os objetos:
de forma guilhotinada e de forma no-guilhotinada. Na forma guilhotinada, o corte se estende de
um lado ao outro do objeto. J na forma no guilhotinada, o corte acompanha o contorno dos
itens. O modelo apresentado a seguir considera apenas a forma guilhotinada.
Soluo:
No modelo a seguir, os itens so alocados formando-se faixas e o objetivo consiste em minimizar
a soma dos comprimentos das faixas. Para sua modelagem, considera-se que:
o primeiro item alocado em cada faixa (mais esquerda) o dentre os outros
a primeira faixa do objeto (mais embaixo) a de maior altura
os itens so ordenados de forma decrescente em relao altura, ou seja, h
1
h
2
h
n
Como consequencia da terceira considerao, tem-se que a altura de cada faixa corresponde
altura h
i
do item i que a inicializa (primeiro item alocado).
Assim, sendo n o nmero de faixas formadas para alocar todos os itens demandados, pode-se
denir a seguinte varivel de deciso:
y
i
=
_
1 Se o item i inicializa a faixa i
0 Caso contrrio
Deve-se ressaltar, ainda, que, devido primeira e terceira considerao, somente os itens j, tal
que j > i, podem ser alocados na faixa. Essa condio se deve ao fato de que, se um item j, tal
que j = i, inicializa a faixa i, ele no pode ser atribudo novamente a essa faixa. Assim sendo,
denida a seguinte varivel binria:
x
ij
=
_
1 Se o item j estiver alocado na faixa i
0 Caso contrrio
32
Assim, o ODP na forma guilhotinada pode ser modelado por:
min
n

i=1
h
i
y
i
j1

i=1
x
ij
+ y
j
= 1 j = 1, , n
n

j=i+1
w
j
x
ij
(W w
i
) y
i
i = 1, , n 1
y
i
0, 1 i = 1, , n
x
ij
0, 1 i = 1, , n, j = 1, , n, j < i
O primeiro conjunto de restries garante que cada item ser alocado uma nica vez. O
segundo conjunto de restries assegura que o somatrio da largura dos itens alocados em cada
faixa no ultrapassar a largura do objeto. As demais restries denem as variveis de deciso
como binrias.
2.17 Programao de horrios em escolas (School timetabling)
H um conjunto P de professores, um conjunto T de turmas, um conjunto D de dias da semana
(segunda, tera, quarta, quinta, sexta) e um conjunto H de horrios dirios para a realizao
de aulas. Suponha que a cada professor i est associada uma determinada matria previamente
alocada e que um professor i no pode dar mais do que q = 2 aulas por dia para qualquer turma.
Suponha, tambm, que a cada professor i est associada uma preferncia c
ikl
por dar aula em um
determinado dia k e horrio l, onde c
ikl
0, 1, 2, , 10 e quanto maior o valor de c
ikl
maior
a preferncia. Seja CH
ij
a carga horria do professor i para a turma j. Elabore um modelo de
programao inteira que faa a alocao dos professores s turmas maximizando a preferncia dos
professores com relao aos dias e horrios das aulas.
Soluo:
O problema de programao de horrios em escolas pode ser modelado da seguinte forma:
max

iP

jT

kD

lH
c
ikl
x
ijkl
(PH1)

jT
x
ijkl
1 i P, k D, l H (PH2)

iP
x
ijkl
1 j T, k D, l H (PH3)

kD

lH
x
ijkl
= CH
ij
i P, j T (PH4)

lH
x
ijkl
q i P, j T, k D (PH5)
x
ijkl
0, 1 i P, j T, k D, l H (PH6)
Neste modelo, as restries (PH2) asseguram que xado um dia e um horrio dirio, um
professor no d aula para mais de uma turma ao mesmo tempo. As restries (PH3) impedem
que uma turma tenha aula com mais de um professor ao mesmo tempo. As restries (PH4)
garantem que a carga horria de cada professor para cada turma cumprida. O conjunto de
restries (PH5) impede que uma turma tenha mais de q aulas dirias com um mesmo professor,
enquanto as restries (PH6) estabelecem que as variveis de deciso so binrias. Finalmente,
(PH1) indica que a preferncia dos professores maximizada.
Observa-se que neste modelo as restries (PH5) no indicam que as q aulas so consecutivas.
Para modelar este caso, vide trabalho [7], disponvel no endereo eletrnico:
33
http://www.decom.ufop.br/prof/marcone/Publicacoes/tesemarcone.ps
Uma restrio comum neste tipo de problema considerar a indisponibilidade do professor.
Neste caso, seja disp
ikl
= 1 se o professor i est disponvel no dia k e horrio dirio l e 0, caso
contrrio. Assim, as restries (PH2) devem ser substitudas por:

jT
x
ijkl
disp
ikl
i P, k D, l H (PH7)
2.18 Localizao
[Retirado de Arenales et al. (2007). Vide [1]] A localizao de facilidades um aspecto crtico
do planejamento estratgico de empresas privadas e pblicas. Exemplos tpicos no setor pblico
envolvem decises de localizao de centros de sade, escolas e estaes de bombeiros, enquanto
no setor privado tem-se a localizao de fbricas, armazns e centros de distribuio. Em diversas
situaes, tais como em sistemas de distribuio, as decises da localizao de facilidades e de
designao de clientes a facilidades so feitas simultaneamente.
A seguir, apresentam-se modelos matemticos de alguns problemas importantes de localizao.
Para tal, considere os seguintes parmetros:
J : Conjunto de ns j que representam os clientes
I : Conjunto de locais i candidatos localizao de facilidades
q
j
: Demanda do cliente j
d
ij
: Distncia do cliente j facilidade localizada em i
c
ij
: Custo de atender a demanda q
j
do cliente j a partir de uma facilidade localizada em i
f
i
: Custo xo de instalao de uma facilidade no local i
Q
i
: Capacidade da facilidade instalada no local i
2.18.1 p-Medianas
Este problema envolve a localizao de p facilidades e a designao de clientes a facilidades de
modo a minimizar a soma das distncias de clientes a facilidades e tal que cada cliente seja atendido
por uma nica facilidade.
Variveis de deciso:
x
ij
=
_
1, se o cliente j atendido pela facilidade localizada em i;
0, caso contrrio.
y
i
=
_
1, se a facilidade aberta no local i;
0, caso contrrio.
O modelo genrico relativo ao problema em questo pode ser assim formulado:
min

iI

jJ
d
ij
x
ij
(LF1)

iI
x
ij
= 1 j J (LF2)
x
ij
y
i
i I, j J (LF3)

iI
y
i
= p (LF4)
x
ij
0, 1 i I, j J (LF5)
y
i
0, 1 i I (LF6)
34
A funo objetivo (LF1) minimiza a distncia total de designao de clientes a facilidades. As
restries (LF2) garantem que cada cliente j atendido por uma nica facilidade. As restries
(LF3) asseguram que cada cliente j s pode ser designado a uma facilidade que esteja aberta no
local i. A restrio (LF4) indica que exatamente p facilidades so abertas. As restries (LF5) e
(LF6) representam o tipo das variveis.
importante observar que as restries (LF3) fazem a ligao entre as variveis x e y. Sem
elas, poderamos ter, olhando apenas para (LF4), uma soluo do tipo y
2
= 1 e y
4
= 1, indicando
que seriam instaladas facilidades nos locais 2 e 4. Poderamos ter, tambm, por (LF2), que x
13
= 1
e x
11
= 1, isto , que os clientes 1 e 3 seriam atendidos por uma facilidade instalada no local 1,
o que no correto, pois nenhuma facilidade est instalada (aberta) no local 1. Este exemplo
mostra a necessidade das restries (LF4). Por elas, dado um cliente j e uma facilidade i, se
y
i
= 1 ento x
ij
pode ser 0 ou 1, isto , o cliente j pode ou no ser atendido pela facilidade i. No
entanto, se y
i
= 0 ento x
ij
s pode ser 0, isto , se no houver uma facilidade instalada (aberta)
no local i, ento nenhum cliente j pode ser atendido por i.
2.18.2 p-Centros
[Retirado de Arenales et al. (2007). Vide [1]] Este problema envolve a localizao de p facilidades
e a designao de clientes a facilidades de modo a minimizar a distncia mxima de clientes a
facilidades. Este problema admite variaes do modelo bsico. O problema de p-centros-ns
restringe os ns de facilidades aos ns de clientes, enquanto o problema de p-centros-absolutos
permite que os ns de facilidades estejam em qualquer lugar dos arcos que ligam ns de clientes.
Para formular este problema, considere as variveis do problema das p-medianas e a seguinte
varivel adicional:
r : Distncia mxima de um cliente quando designado a uma facilidade
O modelo de programao inteira referente a esse problema pode ser formulado como:
min r (LF6)
r

iI
d
ij
x
ij
j J (LF7)

iI
x
ij
= 1 j J (LF2)
x
ij
y
i
i I, j J (LF3)

iI
y
i
= p (LF4)
x
ij
0, 1 i I, j J (LF5)
y
i
0, 1 i I (LF6)
A funo objetivo (LF6) minimiza a distncia mxima de um cliente a uma facilidade. A
restrio (LF7) expressa r como um limitante superior da distncia de cada cliente j a uma
facilidade. As demais restries so idnticas s do problema das p-medianas.
2.18.3 p-Medianas capacitado
Neste caso, associa-se uma capacidade Q
i
facilidade instalada no local i. Assim, as restries
(LF3) so substitudas por:

jJ
q
j
x
ij
Q
i
y
i
i I (LF8)
35
2.19 Mistura de Minrios com Metas de Qualidade
Uma mineradora recebe uma encomenda para produzir 6000 toneladas de minrio atendendo a
especicao abaixo.
Elemento Teor Mnimo
Meta
Teor Mximo
qumico permitido permitido
Fe (%) 44,5 47,0 49,5
Al
2
O
3
(%) 0,27 0,32 0,37
P (%) 0,035 0,040 0,043
PPC (%) 2,05 2,35 2,65
He (%) 38 40 50
Sabe-se que esta encomenda pode ser atendida a partir de um conjunto de pilhas de minrios,
cuja composio e disponibilidade so relacionadas a seguir.
Pilha
Fe Al
2
O
3
P PPC He Massa
(%) (%) (%) (%) (%) (ton)
01 52,64 0,52 0,084 4,48 45 1500
02 39,92 0,18 0,029 0,65 97 2000
03 47,19 0,50 0,050 2,52 52 1700
04 49,36 0,22 0,039 1,74 78 1450
05 43,94 0,46 0,032 2,36 41 1250
06 48,97 0,54 0,057 4,34 90 1890
07 47,46 0,20 0,047 5,07 9 1640
08 46,52 0,32 0,039 3,51 4 1124
09 56,09 0,95 0,059 4,10 80 1990
10 46,00 0,26 0,031 2,51 21 900
11 49,09 0,22 0,040 4,20 12 1540
12 49,77 0,20 0,047 4,81 12 1630
13 53,03 0,24 0,047 4,17 1 1320
14 52,96 0,29 0,052 4,81 1 1245
15 42,09 0,17 0,031 1,38 47 1859
A tabela a seguir classica os parmetros de controle em 5 critrios: Irrelevante (-), Impor-
tante (I), Muito Importante (MI), Crtico (C) e Muito Crtico (MC), cujos pesos so tambm
apresentados.
Critrio - I MI C MC
Peso do Critrio 0 1 5 10 100
Parmetro Fe Al
2
O
3
P PPC He
Critrio MI - MC C -
Considere, ainda, os seguintes pesos para comparar os diversos parmetros de controle entre
si:
Parmetro Fe Al
2
O
3
P PPC He
Peso de comparao 1 100 1000 10 1
36
Suponha que se possa retomar apenas mltiplos de 10 toneladas e que para cada pilha s se
pode retomar um mnimo de 500 toneladas. Qual a estratgia da mineradora para atender ao pe-
dido, de forma que as especicaes de qualidade estejam mais prximas das metas especicadas?
Observao: considere que a penalidade pelo desvio de atendimento meta igual ao produto do
peso de comparao pelo correspondente peso do critrio.
Modelo de Programao Matemtica
Sejam os seguintes dados de entrada para o problema:
parametros : Conjunto de parmetros de controle;
pilhas : Conjunto de pilhas;
tl
j
: Teor mnimo admissvel para o parmetro j no produto nal (%);
tr
j
: Teor desejvel para o parmetro j no produto nal (%);
wdt
j
: Peso do desvio da meta para o parmetro j;
dtn
j
: Desvio negativo da meta para o parmetro j, em toneladas;
dtp
j
: Desvio positivo da meta para o parmetro j, em toneladas;
Qu
i
: Quantidade mxima disponvel na pilha i, em toneladas;
nunidret
i
: Nmero de unidades de retomada;
t
ij
: Teor do parmetro j na pilha i (%);
p : Produo total requerida, em toneladas.
e as seguintes variveis de deciso:
x
i
: Quantidade de minrio a ser retirada da pilha i, em toneladas;
y
i
:
_
1 se a pilha i for usada;
0 caso contrrio.
O modelo de programao matemtica para o Exerccio 2.19 :
min

jparametros
(wdt
j
dtn
j
+ wdt
j
dtp
j
)

ipilhas
(t
ij
tu
j
)x
i
0 j parametros

ipilhas
(t
ij
tl
j
)x
i
0 j parametros

ipilhas
((t
ij
tr
j
) x
i
) + dtn
j
dtp
j
= 0 j parametros
x
i
Qu
i
i pilhas

ipilhas
x
i
= p
nunidret
i
= x
i
/unidret i pilhas
y
i
x
i
/Qu
i
i pilhas [ Qu
i
,= 0
x
i
retmin y
i
i pilhas
nunidret
i
Z
+
i pilhas
y
i
0, 1 i pilhas
37
Seguem a planilha com os parmetros de entrada e sada para o Problema da Mistura em
questo, juntamente com a implementao LINGO.
Modelo Lingo
title: MisturaMetas(R).lg4;
sets:
parametros /@ole(MisturaMetas(R).xls,parametros)/: tl, tu, tr, wdt, dtn, dtp;
pilhas /@ole(MisturaMetas(R).xls,pilhas)/: Qu, nunidret, x, y;
matriz(pilhas,parametros): t;
endsets
data:
! Importa os dados do Excel;
tl, tu, tr, t, wdt, Qu, p, retmin, unidret =
@ole(MisturaMetas(R).xls,tl,tu,tr,teor,wdt,Qu,p,retmin,unidret);
enddata
! Minimizar o desvio do teor de cada parmetro j em relao a sua meta de qualidade;
[fo] min = @sum(parametros(j): wdt(j)*dtn(j) + wdt(j)*dtp(j));
! O limite superior de especicao deve ser satisfeito para cada parmetro j;
@for(parametros(j): @sum(pilhas(i): (t(i,j) - tu(j))*x(i)) <= 0);
! O limite inferior de especicao deve ser satisfeito para cada parmetro j;
@for(parametros(j): @sum(pilhas(i): (t(i,j) - tl(j)) x(i)) >= 0);
! A meta de qualidade deve ser buscada para cada parmetro j;
@for(parametros(j): @sum(pilhas(i): (t(i,j) - tr(j)) x(i)) + dtn(j) - dtp(j) = 0);
38
! A quantidade a ser retomada em cada pilha i deve ser inferior ou igual a Qu(i);
@for(pilhas(i): @BND(0, x(i), Qu(i)));
! A produo total deve ser igual a p;
@sum(pilhas(i): x(i)) = p;
! A quantidade x(i) a ser retomada na pilha i deve ser mltipla de unidret;
@for(pilhas(i): nunidret(i) = x(i) / unidret);
! Se for retomada qualquer quantidade na pilha i ento y(i) = 1.
Caso contrario, y(i) assume valor 0;
@for(pilhas(i) [ Qu(i) #ne# 0: y(i) >= x(i)/Qu(i));
! Se for retomar alguma pilha i a quantidade x(i) a retomar deve ser superior ou
igual a retmin;
@for(pilhas(i): x(i) >= retmin*y(i));
! A varivel nunidred(i) inteira e y(i) binria;
@for(pilhas(i):
@GIN(nunidret(i));
@BIN(y(i));
);
data:
! Exporta os resultados para Excel;
@ole(MisturaMetas(R).xls,dtn,dtp,solucao) = dtn, dtp, x;
enddata
2.20 Problema das Usinas
Uma empresa siderrgica possui 3 usinas e cada uma delas requer uma quantidade mensal mnima
de minrio para operar. A empresa adquire minrio de 4 minas diferentes. Cada uma das minas
tem uma capacidade mxima de produo mensal estabelecida. Por imposies contratuais, o
custo do minrio para a empresa composto por um custo xo mensal para cada mina (este valor
pago em caso de haver produo na mina), mais um custo de transporte ($/t) que varia de
acordo com a distncia entre as minas e usinas (cada par mina/usina tem um custo diferente). Os
dados so mostrados na tabela a seguir:
MINAS Usina 1 Usina 2 Usina 3
Cap. mx. das Custo
minas (t/ms) Fixo ($)
Mina 1 ($/t) 10 8 13 11500 50000
Mina 2 ($/t) 7 9 14 14500 40000
Mina 3 ($/t) 6,5 10,8 12,4 13000 30000
Mina 4 ($/t) 8,5 12,7 9,8 12300 25500
Quant. req. (t/ms) 10000 15400 13300 - -
Construir um modelo de otimizao para determinar a quantidade de minrio a ser comprada
de cada mina e levada a cada usina de forma a minimizar o custo total de compra de minrio.
39
Modelo de Programao Matemtica
Sejam os seguintes dados de entrada para o problema:
minas : Conjunto de Minas ;
usinas : Conjunto de usinas;
cap
i
: Capacidade de produo da mina i;
cxo
i
: Custo xo de utilizao da mina i;
demanda
j
: Demanda requerida pela usina j;
custo
ij
: Custo de transporte de minrio da mina i para a usina j.
e as seguintes variveis de deciso:
x
ij
: Quantidade de minrio a ser transportado da mina i para a usina (j), em toneladas;
y
i
:
_
1 se a mina i for usada;
0 caso contrrio.
O modelo de programao matemtica para o Exerccio 2.20 :
min

iminas

jusinas
(custo
ij
x
ij
) +

iminas
(cxo
i
y
i
)
s.a:

jusinas
x
ij
cap
i
i minas

iminas
x
ij
= demanda
j
j usinas
y
i
(

jusinas
x
ij
)/cap
i
i minas
x
ij
0 i minas, j usinas
y
i
0, 1 i minas
40
Modelo LINGO
Title: Usinas(R).lg4;
sets:
minas/@ole(Usinas(R).xls,minas)/: cap, cxo, y;
usinas/@ole(Usinas(R).xls,usinas)/: demanda;
matriz(minas,usinas): custo, x;
endsets
data:
! Importa os dados do Excel;
cap, cxo, demanda, custo = @ole(Usinas(R).xls,cap,cxo,demanda,custo);
enddata
! Minimiza os custos com transporte entre as minas e o custo xo de utilizao das minas;
[fo] min = @sum(matriz(i,j): custo(i,j)*x(i,j)) + @sum(minas(i): cxo(i)*y(i));
! Total transportado de uma mina para as usinas deve ser menor ou igual
capacidade de produo da mina;
@for(minas(i): @sum(usinas(j): x(i,j)) <= cap(i));
! A quantidade de minrio que chega a uma usina deve ser igual demanda da mesma,
uma vez que a oferta maior que a demanda ;
@for(usinas(j):@sum(minas(i): x(i,j)) = demanda(j));
! Se houver produo na mina i ento y(i) = 1;
@for(minas(i): y(i) >= @sum(usinas(j): x(i,j)) / cap(i));
41
! As variveis y(i) so binrias;
@for(minas(i): @BIN(y(i)));
data:
! Exporta os dados para o Excel;
@ole(Usinas(R).xls,solucao,ctotal) = x, fo;
enddata
2.21 Dimensionamento de lotes
Empresas de manufatura fabricam, em geral, diversos tipos de produtos solicitados por diferentes
clientes, muitas vezes em grandes quantidades, os quais devem estar prontos para entrega em
diferentes datas previamente agendadas. Como as fbricas tm capacidade de produo limitada
devido quantidade de mquinas, mo-de-obra etc. disponveis, necessrio planejar a produo,
isto , decidir o qu e quanto produzir (em outras palavras, dimensionar os lotes de produo),
assim como quando produzir. A necessidade de antecipao da fabricao de produtos estocados
de um perodo para outro acarreta custos de estocagem e algumas diculdades operacionais. No
planejamento da produo, deseja-se determinar o tamanho dos lotes de produo para atender a
demanda na data solicitada de modo que a soma dos custos de produo e estocagem seja mnima.
Considere uma empresa que fabrica n produtos e deseja programar sua produo nos prximos
[T[ perodos de tempo. Este conjunto de perodos de tempo para o qual a empresa planeja sua pro-
duo denominado horizonte de planejamento. Suponhamos que a demanda de cada produto em
cada perodo do horizonte de planejamento conhecida. Em cada perodo, os recursos necessrios
para a produo so limitados e renovveis, isto , em cada perodo, uma quantidade de recursos
est disponvel e no depende de como foram utilizados nos perodos anteriores. Exemplos de
recursos renovveis so mo-de-obra, energia eltrica e horas de mquinas, enquanto recursos no
renovveis so, por exemplo, matrias-primas que sobram em um perodo e podem ser utilizadas
nos perodos seguintes. H a possibilidade de estocagem de produtos de um perodo para o outro.
Considere os seguintes dados do problema:
d
it
: demanda do item i no perodo t
R
t
: disponibilidade de recursos renovveis no perodo t
r
i
: quantidade de recursos necessrios para a produo de uma unidade do item i
c
it
: custo de produzir uma unidade do item i no perodo t
h
it
: custo de estocar uma unidade do item i no perodo t
T : conjunto dos perodos do horizonte de planejamento
e as seguintes variveis de deciso:
x
it
: nmero de itens do tipo i produzidos no perodo t
I
it
: nmero de itens do tipo i em estoque no nal do perodo t
Os estoques iniciais do horizonte de planejamento I
i0
so dados. A seguir, so detalhadas as
restries do problema.
42
minimizar
n

i=1
|T|

t=1
(c
it
x
it
+ h
it
I
it
) (2.1)
x
i,t
+ I
i,t1
I
it
= d
i,t
i = 1, 2, . . . , n; t = 1, 2, , [T[ (2.2)
n

i=1
r
i
x
it
R
t
t = 1, 2, , [T[ (2.3)
I
it
Z
+
i = 1, 2, , n; t = 1, 2, , [T[ (2.4)
x
it
Z
+
i = 1, 2, , n; t = 1, 2, , [T[ (2.5)
A funo objetivo (2.1) visa a minimizao dos custos com a produo e a estocagem dos
produtos em cada perodo do horizonte de planejamento. As restries (2.2) so de conservao
de estoque. Assim, para cada item i, o nvel de estoque no nal do perodo t igual ao que se
tinha em estoque no nal do perodo anterior (t1), adicionado ao montante que foi produzido no
perodo t, menos o que foi demandado no perodo t. As restries (2.3) asseguram que a capacidade
requerida para a produo dos itens em cada perodo t no pode superar a capacidade disponvel
da fbrica. As restries (2.4) asseguram o atendimento demanda. De fato, a quantidade x
it
do
item i produzida no perodo t mais a quantidade em estoque no nal do perodo anterior, I
i,t1
,
deve ser maior ou igual a d
it
, ou seja, x
it
+I
i,t1
d
it
. Nesta ltima expresso, o termo esquerda
representa, por denio, I
it
. Logo, garante-se o atendimento s demandas impondo-se I
it
0 e
inteiro.
2.22 Planejamento da produo
[Retirado de Arenales et al. (2007). Vide [1]] A seguir, so apresentados alguns modelos impor-
tantes de planejamento da produo, conhecidos na literatura como modelos de dimensionamento
de lotes (lot sizing). Os modelos apresentados possuem as seguintes caractersticas comuns: (a) o
horizonte de planejamento nito e dividido em perodos; (b) a demanda de cada item em cada
perodo dinmica, isto , varia ao longo do horizonte de planejamento; (c) a demanda e outros
parmetros dos modelos so supostos conhecidos, isto , tratam-se de modelos determinsticos.
Existem outros modelos em que o horizonte pode ser innito, a varivel tempo contnua, a de-
manda expressa como uma taxa em relao ao tempo, e ainda modelos em que a demanda
estocstica. Para enunciar os modelos matemticos, considere os seguintes parmetros:
d
it
: demanda do item i no perodo t
b
i
: tempo para produzir uma unidade do item i
C
t
: capacidade de produo, em horas, de uma mquina ou instalao no perodo t
sp
i
: tempo de preparao de mquina para processar o item i
s
i
: custo de preparao do item i
h
i
: custo unitrio de estoque do item i
I
0
i
: estoque inicial do item i
n : nmero de itens nais
T : conjunto dos perodos do horizonte de planejamento
Considere, tambm, as seguintes variveis de deciso:
x
it
= quantidade do item i produzida no perodo t (tamanho do lote)
I
it
= estoque do item i no m do perodo t
y
it
=
_
1, se o item i produzido no perodo t
0, caso contrrio.
43
2.22.1 Um item sem restrio de capacidade
[Retirado de Arenales et al. (2007). Vide [1]] O problema mais simples de dimensionamento de
lotes envolve um nico item, sem restrio de capacidade. Neste caso, h o custo unitrio de
estoque; s o custo de preparao do item; I
0
o estoque inicial; I
t
o estoque do item no m
do perodo t; x
t
a quantidade do item produzida no perodo t e y
t
= 1 se o item for produzido
no perodo t e 0, caso contrrio. Seu modelo :
min

tT
(s y
t
+ h I
+
t
) (DL1)
I
t
= I
t1
+ x
t
d
t
t T, I
0
= I
|T|
= 0 (DL2)
x
t

_
|T|

k=t
d
k
_
y
t
t T (DL3)
x
t
0 t T (DL4)
I
t
0 t T (DL5)
y
t
0, 1 t T (DL6)
A funo objetivo (DL1) minimiza o custo total de preparao e estoque. As restries (DL2)
representam equaes de balanceamento de estoque em cada perodo t. Se I
0
> 0 use esse estoque
inicial para abater demandas no horizonte; portanto, pode-se assumir, sem perda de generalidade,
que I
0
= 0. Alm disso, na soluo tima I
|T|
= 0 uma decorrncia da minimizao do custo
de estoque. As restries (DL3) garantem que a produo no perodo t limitada superiormente
pela demanda acumulada do perodo t ao ltimo perodo [T[, e que o tamanho do lote positivo,
isto , x
t
> 0 somente se h produo no perodo t (y
t
= 1). As restries (DL4), (DL5) e (DL6)
indicam o tipo das variveis.
No caso em que a demanda pode ser atendida com atraso, atribui-se uma penalidade por
unidade de demanda no atendida no perodo t. Considere as variveis:
I
+
t
: estoque no m do perodo t
I

t
: falta (demanda no atendida) no perodo t
Com a introduo destas novas variveis, a formulao anterior modicada para a seguinte:
min

tT
(s y
t
+ h I
t
+ I

t
) (DL7)
I
+
t
I

t
= I
+
t1
I

t1
+ x
t
d
t
t T, I
+
0
= I

0
= 0 (DL8)
x
t

_
|T|

k=t
d
k
_
y
t
t T (DL9)
x
t
0 t T (DL10)
I
+
t
0 t T (DL11)
I

t
0 t T (DL12)
y
t
0, 1 t T (DL13)
A funo objetivo (DL7) minimiza o custo total de preparao, estoque e demanda no aten-
dida. As restries de balanceamento (DL8) levam em considerao o estoque e a demanda no
atendida em cada perodo t. As restries (DL9) so idnticas s restries (DL3), e as restries
(DL10) a (DL13) indicam o tipo das variveis.
A considerao de demanda no atendida pode ser includa nos modelos a seguir, de acordo
com o exposto anteriormente.
44
2.22.2 Mltiplos itens e restrio de capacidade
[Retirado de Arenales et al. (2007). Vide [1]] Este problema, conhecido na literatura como
capacitated lot sizing problem, trata de um conjunto N de itens que devem ser processados em
uma nica mquina ou facilidade, com restries de capacidade, e pode ser modelado como:
min

iN

tT
(s
i
y
it
+ h
i
I
it
) (DL14)
I
it
= I
i,t1
+ x
it
d
it
i N, t T, I
i0
= 0 (DL15)

iN
(sp
i
y
it
+ b
i
x
it
) C
t
t T (DL16)
x
it
M
it
y
it
t T (DL17a)
M
it
= min
C
t
sp
i
b
i
,
|T|

k=t
d
ik
i N, t T (DL17b)
x
it
0 i N, t T (DL18)
I
it
0 i N, t T (DL19)
y
it
0, 1 i N, t T (DL20)
A funo objetivo (DL14) minimiza o custo total de preparao e estoque. As restries (DL15)
correspondem ao balanceamento de estoque de cada item i em cada perodo t. As restries
(DL16) expressam que em cada perodo t, o tempo total de preparao e produo limitado pela
capacidade disponvel. As restries (DL17a) implicam que x
it
> 0 se e somente se y
it
= 1. O
limitante M
it
em (DL17b) o mnimo entre a capacidade restante no perodo t (se i produzido
nesse perodo) e a demanda acumulada do perodo t ao perodo [T[. As demais restries indicam
o tipo das variveis de deciso.
2.23 Representao de restries disjuntivas
Em muitos problemas prticos, requer-se que apenas uma dentre vrias restries seja satisfeita.
Esse tipo de situao aparece com frequncia em problemas de programao de tarefas em m-
quinas, como os apresentados na Seo 2.24.
Consideremos inicialmente o caso de duas restries, sendo que apenas uma delas deve estar
ativa. Sejam as restries:
r
1
(x
1
, x
2
, , x
n
) b
1
(2.6)
r
2
(x
1
, x
2
, , x
n
) b
2
(2.7)
Neste caso, basta denir uma varivel binria y tal que se y = 1 ento r
1
estar ativa e se
y = 0 ento r
2
quem estar ativa. Matematicamente, podemos representar isto por:
r
1
(x
1
, x
2
, , x
n
) b
1
+ M(1 y) (2.8)
r
2
(x
1
, x
2
, , x
n
) b
2
+ My (2.9)
em que M um nmero sucientemente grande.
Exemplo: Considere as restries:
4x
1
+ 2x
2
80 (2.10)
2x
1
+ 5x
2
100 (2.11)
45
Figura 3: Exemplo de restries disjuntivas
As linhas cheias da Figura 3 mostram as retas que geram os semi-espaos denidos pelas
restries (2.10) e (2.11). J as linhas vermelhas (mais grossas) mostram o quanto essas retas tm
que ser transladadas de forma que elas sejam redundantes, isto , no ativas.
Para encontrar as retas vermelhas (em linhas mais grossas) proceda como segue. Gere, inici-
almente, a reta base. Seja a reta 4x
1
+ 2x
2
= 80, a qual geradora do semi-espao denido pela
restrio (2.10). Explicitando x
2
dessa equao e simplicando, tem-se: 2x
2
= 80 4x
1
. Para ser
redundante, essa reta tem que ser transladada, no mnimo, 30 unidades direita do ponto (20,
0), isto , deve passar pelo ponto (50, 0) ou direita dele pois, caso contrrio, ela interceptaria
o semi-espao denido pela restrio 2x
1
+ 5x
2
100, eliminando alguns pontos do espao de
solues viveis. Assim, precisamos determinar o valor de M tal que 2x
2
= 80 + M 4x
1
passe
pelo ponto (50, 0), isto , 0 = 80 +M 4 50. Resolvendo, tem-se M = 120. De forma anloga,
repetindo-se o procedimento para a outra reta, conclui-se que o valor M a ser adicionado ao lado
direito da segunda restrio 100.
Observe que o menor valor de M dado por max120, 100 = 120. Um valor pequeno de
M desejvel para acelerar os mtodos de resoluo de problemas de programao inteira. A
representao matemtica da disjuno das duas restries apresentadas dada, ento, por:
4x
1
+ 2x
2
80 + 120(1 y) (2.12)
2x
1
+ 5x
2
100 + 120y (2.13)
Se tivermos m restries r
1
(x) b
1
, r
2
(x) b
2
, , r
m
(x) b
m
e apenas uma delas deve estar
ativa ao mesmo tempo, ento criamos m variveis binrias y
i
e escrevemos:
46
r
1
(x
1
, x
2
, , x
n
) b
1
+ M(1 y
1
) (2.14)
r
2
(x
1
, x
2
, , x
n
) b
2
+ M(1 y
2
) (2.15)
.
.
. (2.16)
r
i
(x
1
, x
2
, , x
n
) b
i
+ M(1 y
i
) (2.17)
.
.
. (2.18)
r
m
(x
1
, x
2
, , x
n
) b
n
+ M(1 y
m
) (2.19)
y
1
+ y
2
+ + y
i
+ + y
m
= 1 (2.20)
y
i
0, 1 i = 1, 2, , m (2.21)
Assim, se y
i
= 1 ento r
i
(x) b
i
+ M(1 y
i
) = b
i
e esta restrio ca ativa e as demais,
inativas. Se y
i
= 0 ento r
i
(x) b
i
+ M(1 y
i
) = b
i
+ M ca redundante (inativa) e, portanto,
satisfeita para qualquer valor de x, uma vez que M um nmero arbitrariamente grande.
2.24 Sequenciamento em uma mquina
[Retirado de Arenales et al. (2007) [1]] Considere um conjunto N de tarefas a serem processadas em
uma mquina. Todas as tarefas esto disponveis para processamento no instante zero e admite-
se que a interrupo (preemption) de qualquer tarefa no permitida. Considere os seguintes
parmetros inteiros e no-negativos:
p
i
: tempo de processamento da tarefa i
d
i
: data de entrega da tarefa i
M : nmero arbitrariamente grande
Sejam as seguintes variveis de deciso:
C
i
= instante de trmino do processamento da tarefa i
T
i
= atraso da tarefa i, dado por T
i
= maxC
i
d
i
, 0
E
i
= adiantamento ou avano da tarefa i, dado por E
i
= maxd
i
C
i
, 0
L
i
= lateness da tarefa i, isto , L
i
= C
i
d
i
x
ij
=
_
1, se a tarefa i precede imediatamente a tarefa j
0, caso contrrio.
Observe que o lateness mede o grau de atraso, o qual pode ser negativo. Neste ltimo caso, o
valor negativo indica que a tarefa no est atrasada e, sim, adiantada em relao sua data de
entrega.
Seja zero (0) uma tarefa ctcia que precede imediatamente a primeira tarefa e sucede ime-
diatamente a ltima tarefa de uma sequncia de tarefas. A partir desses parmetros e variveis,
possvel formular problemas com critrios distintos de otimizao. As seguintes restries so
comuns a todos os problemas:

iN{0},i=j
x
ij
= 1 j N 0 (S1)

jN{0},j=i
x
ij
= 1 i N 0 (S2)
C
j
C
i
M + (p
j
+ M)x
ij
i N 0, j N (S3)
C
i
0 i N, C
0
= 0 (S4)
x
ij
0, 1 i N 0, j N 0 (S5)
47
As restries (S1) e (S2) garantem que cada tarefa tem apenas uma tarefa imediatamente
predecessora e uma tarefa imediatamente sucessora, respectivamente. Quando x
ij
= 1 a restrio
(S3) implica que C
j
C
i
+ p
j
e se x
ij
= 0, ento C
j
C
i
M, isto , a restrio (S3) ca
redundante (desativada). As restries (S4) e (S5) indicam o tipo das variveis. Observe que C
0
xado em ZERO.
2.24.1 Minimizao do tempo de uxo total
O tempo de uxo total corresponde soma dos tempos de trmino das tarefas, isto ,

iN
C
i
. O
problema, ento, consiste em:
min

iN
C
i
(S1) - (S5)
Pode-se demonstrar que a soluo tima deste problema dada pela regra SPT (shortest pro-
cessing time), em que as tarefas so sequenciadas em ordem no decrescente dos tempos de proces-
samento, isto , as tarefas so processadas na sequncia [1], [2], ..., [n], tal que p
[1]
p
[2]
p
[n]
e [i] corresponde tarefa da i-sima posio. Por exemplo, p
[2]
o tempo de processamento da
tarefa que ocupa a segunda posio na sequncia de produo.
Exerccio:
Determine o tempo de uxo total do problema de sequenciamento a seguir, em que h 7 tarefas
com os seguintes tempos de processamento e datas de entrega.
Tarefas 1 2 3 4 5 6 7
Tempo de processamento (p) 7 4 2 5 6 3 1
Data de entrega (d) 13 10 6 9 3 20 4
Segue o modelo LINGO. Observe, neste modelo, que o conjunto Tarefas envolve as tarefas
reais 1, 2, , 7 e mais a tarefa ctcia 0. Assim, quando necessrio referenciar apenas as tarefas
reais, necessrio excluir a tarefa 0 (de ndice 1).
sets:
Tarefas / 0 1 2 3 4 5 6 7/: p, d, C;
Matriz(Tarefas, Tarefas): x;
endsets
data:
p = 0 7 4 2 5 6 3 1;
d = 0 13 10 6 9 3 20 4;
M = 1000;
enddata
[fo] min = @sum(Tarefas(i) | i #NE# 1: C(i));
@for(Tarefas(j):
@sum(Tarefas(i) | i #NE# j: x(i,j)) = 1);
@for(Tarefas(i):
48
@sum(Tarefas(j) | j #NE# i: x(i,j)) = 1);
@for(Tarefas(j) | j #NE# 1:
@for(Tarefas(i):
C(j) >= C(i) - M + (p(j) + M)*x(i,j)));
C(1) = 0;
@for(Tarefas(j):
@for(Tarefas(i):
@bin(x(i,j))));
O uxo total timo deste exemplo 84, sendo a sequncia tima dada por 7 3 6 2
4 5 1. As datas de trmino so C(1) = 28, C(2) = 10, C(3) = 3, C(4) = 15, C(5) = 21,
C(6) = 6 e C(7) = 1.
2.24.2 Minimizao do atraso mximo
O atraso mximo, denotado por T
max
, est associado tarefa com maior diferena entre seu
instante de trmino e data de entrega, isto , T
max
= max
iN
T
i
. Observe que T
i
= maxC
i
d
i
, 0
implica T
i
C
i
d
i
e T
i
0. O problema de minimizao de T
max
pode, ento, ser formulado
como:
min T
max
T
max
T
i
i N
T
i
C
i
d
i
i N
T
i
0 i N
(S1) - (S5)
Demonstra-se que a soluo tima deste problema dada pela regra EDD (Earliest Due Date),
que consiste em sequenciar as tarefas em ordem no decrescente das datas de entrega, isto , as
tarefas so processadas na sequncia: [1], [2], , [n] tal que d
[1]
d
[2]
d
[n]
.
2.24.3 Minimizao da soma dos atrasos
Com este critrio de otimizao, o problema modelado como:
min

iN
T
i
T
i
C
i
d
i
i N
T
i
0 i N
(S1) - (S5)
2.24.4 Minimizao da soma dos atrasos e adiantamentos
Este problema modelado como:
49
min

iN
(T
i
+ E
i
)
T
i
C
i
d
i
i N
E
i
d
i
C
i
i N
T
i
0 i N
E
i
0 i N
(S1) - (S5)
2.24.5 Minimizao do nmero de tarefas atrasadas
Sejam as variveis y
i
= 1 se a tarefa i est atrasada e y
i
= 0, caso contrrio. Ento a formulao
do problema dada por:
min

iN
y
i
T
i
C
i
d
i
i N
T
i
My
i
i N
T
i
0 i N
y
i
0, 1 i N
(S1) - (S5)
Note que se T
i
> 0 ento y
i
= 1.
2.24.6 Minimizao do lateness mximo
Seja L
max
= max
iN
L
i
o lateness mximo. Como a varivel L
i
livre, isto , pode assumir valores
negativos ou nulos ou positivos, denamos L
i
= L
+
i
L

i
, com L
+
i
0 e L

i
0. Desta maneira, o
problema pode ser representado pelo seguinte modelo, onde todas as variveis so no-negativas:
min L
max
L
max
L
+
i
L

i
i N
L
+
i
L

i
= C
i
d
i
i N
L
+
i
0 i N
L

i
0 i N
(S1) - (S5)
Demonstra-se que a soluo tima deste problema tambm dada pela regra EDD (Earliest
Due Date).
2.24.7 Sequenciamento com tempo de preparao de mquina
Considere agora que para processar uma tarefa i seja necessrio um tempo de preparao de
mquina dado por s
i
, conhecido como tempo de setup. Se esse tempo for independente da sequn-
cia, basta incorpor-lo ao tempo de execuo dessa tarefa, isto , basta considerar o tempo de
processamento da tarefa i como s
i
+p
i
. Neste caso, o conjunto de restries (S3) alterado para:
C
j
C
i
M + (s
j
+ p
j
+ M)x
ij
i N 0, j N (S6)
Se, por outro lado, o tempo de preparao for dependente da sequncia, ento o conjunto de
restries (S3) deve ser substitudo por:
C
j
C
i
M + (s
ij
+ p
j
+ M)x
ij
i N 0, j N (S7)
50
onde s
ij
indica o tempo de preparao da mquina para processar a tarefa j imediatamente aps
a tarefa i.
Todas as formulaes anteriores continuam vlidas ao se substituir (S3) por (S6) ou (S7).
No caso de o tempo de preparao for dependente da sequncia, o problema de minimizao do
makespan, representado por C
max
, consiste na determinao do tempo total para processar todas
as tarefas, isto , C
max
= max
iN
C
i
e pode ser formulado como:
min C
max
C
max
C
i
i N
(S1) - (S2) - (S7) - (S4) - (S5)
2.24.8 Sequenciamento em uma mquina com penalidades por antecipao e atraso
da produo
Apresentamos a seguir uma classe de problemas de sequenciamento em uma mquina com penali-
dades por antecipao e atraso da produo (PSUMAA), o qual tem as seguintes caractersticas:
(a) Uma mquina deve processar um conjunto de n tarefas (jobs).
(b) Cada tarefa possui um tempo de processamento p
i
, uma data inicial e
i
e uma data nal t
i
desejadas para o trmino do processamento.
(c) A mquina executa no mximo uma tarefa por vez e uma vez iniciado o processamento de
uma tarefa, a mesma deve ser nalizada, ou seja, no permitido a interrupo de seu pro-
cessamento.
(d) Todas as tarefas esto disponveis para processamento na data 0.
(e) Quando uma tarefa j sequenciada imediatamente aps uma tarefa i, sendo estas pertencentes
a diferentes famlias de produtos, necessrio um tempo s
ij
para a preparao da mquina.
Tempos de preparao de mquina nulos (s
ij
= 0) implicam em produtos da mesma famlia.
Assume-se, ainda, que a mquina no necessita de tempo de preparao inicial, ou seja, o
tempo de preparao da mquina para o processamento da primeira tarefa na sequncia
igual a 0.
(f) permitido tempo ocioso entre a execuo de duas tarefas consecutivas.
(g) As tarefas devem ser nalizadas dentro de uma janela de tempo [e
i
, t
i
], denominada janela de
entrega. Se a tarefa i for nalizada antes de e
i
ento h um custo de manuteno de estoque.
Caso a tarefa seja nalizada aps t
i
ento h associado um custo por atraso (que pode ser
uma multa imposta por contratos de prestao de servio), alm de insatisfao do cliente.
As tarefas que forem nalizadas dentro da janela de entrega no proporcionam nenhum custo
para a empresa.
(h) Os custos por antecipao e atraso da produo so dependentes das tarefas, ou seja, cada
tarefa possui um custo unitrio de antecipao
i
e um custo unitrio de atraso
i
.
(i) O objetivo a ser alcanado com a resoluo deste problema a minimizao do somatrio dos
custos de antecipao e atraso da produo.
51
Para modelar este PSUMAA, sejam n o nmero de tarefas a serem processadas, p
i
o tempo de
processamento da tarefa i, I
i
a data de incio do processamento da tarefa i (I
i
0) e s
ij
o tempo
de preparao da mquina necessrio para processar a tarefa j imediatamente depois da tarefa i.
Sejam, ainda, 0 (zero) e n+1 duas tarefas ctcias, de tal forma que 0 antecede imediatamente a
primeira tarefa e n+1 sucede imediatamente a ltima tarefa na sequncia de produo. Admite-se
que p
0
e p
n+1
so iguais a zero e que s
0i
= 0 e s
i,n+1
= 0, i = 1, . . . , n.
As restries (2.22) garantem a existncia de um tempo suciente para completar uma tarefa i
antes de comear uma tarefa j, caso uma tarefa j seja processada imediatamente aps uma tarefa
i, sem nenhuma tarefa intermediria.
I
j
I
i
+ y
ij
(M + s
ij
) + p
i
M i = 0, 1, . . . , n , j = 1, 2, . . . , n + 1 e i ,= j (2.22)
No conjunto de restries (2.22), M um valor adequadamente grande. A varivel de deciso
y
ij
0, 1 denida da seguinte forma:
y
ij
=
_
1, se a tarefa j sequenciada imediatamente aps a tarefa i;
0, caso contrrio.
Assim, quando y
ij
= 1, as restries (2.22) tornam-se:
I
j
I
i
+ p
i
+ s
ij
(2.23)
No caso em que y
ij
= 0, tem-se:
I
j
I
i
+ p
i
M (2.24)
Nesta ltima situao, as restries (2.22) cam desativadas, pois a equao (2.24) redun-
dante, uma vez que a parcela (I
j
I
i
p
i
) ser sempre maior que M.
As restries (2.25) e (2.26) garantem que cada tarefa tenha somente uma tarefa imediatamente
antecessora e uma tarefa imediatamente sucessora, respectivamente.
n

i=0, i=j
y
ij
= 1 j = 1, 2, . . . , n + 1 (2.25)
n+1

j=1, j=i
y
ij
= 1 i = 0, 1, . . . , n (2.26)
Sejam e
i
a data de incio do perodo de entrega da tarefa i, E
i
o tempo de antecipao da
tarefa i, t
i
a data de trmino do perodo de entrega da tarefa i e T
i
o tempo de atraso da tarefa
i. As restries (2.27) a (2.30) garantem que o tempo de antecipao E
i
seja o mximo entre 0 e
e
i
p
i
I
i
e que o tempo de atraso T
i
seja o mximo entre 0 e I
i
+ p
i
t
i
.
I
i
+ p
i
+ E
i
e
i
i = 1, 2, . . . , n (2.27)
I
i
+ p
i
T
i
t
i
i = 1, 2, . . . , n (2.28)
E
i
0 i = 1, 2, . . . , n (2.29)
T
i
0 i = 1, 2, . . . , n (2.30)
Sejam
i
e
i
os custos de antecipao e atraso da produo da tarefa i por unidade de tempo,
respectivamente. O custo total por antecipao dado por
n

i=1

i
E
i
, enquanto o custo total por
atraso determinado por
n

i=1

i
T
i
. A funo objetivo, que consiste em minimizar o somatrio dos
custos totais de antecipao e atraso da produo, dado pela equao (2.31).
min z =
n

i=1
(
i
E
i
+
i
T
i
) (2.31)
Resumindo, as variveis de deciso do modelo relativo ao PSUMAA estudado so:
52
I
i
: data de incio do processamento da tarefa i;
y
ij
: varivel binria que determina a sequncia de produo, se y
ij
=1 a tarefa j processada
imediatamente depois da tarefa i e 0 caso contrrio;
E
i
: tempo de antecipao da tarefa i;
T
i
: tempo de atraso da tarefa i;
Assim, o modelo correspondente de Programao Linear Inteira Mista (PLIM) para o PSU-
MAA dado :
minimizar z =
n

i=1
(
i
E
i
+
i
T
i
) (2.32)
sujeito a: I
j
I
i
y
ij
(M + s
ij
) p
i
M i = 0, 1, . . . , n; (2.33)
j = 1, 2, . . . , n + 1 e i ,= j
n+1

j=1, j=i
y
ij
= 1 i = 0, 1, . . . , n (2.34)
n

i=0, i=j
y
ij
= 1 j = 1, 2, . . . , n + 1 (2.35)
I
i
+ p
i
+ E
i
e
i
i = 1, 2, . . . , n (2.36)
I
i
+ p
i
T
i
t
i
i = 1, 2, . . . , n (2.37)
I
i
0 i = 0, 1, . . . , n + 1 (2.38)
E
i
0 i = 1, 2, . . . , n (2.39)
T
i
0 i = 1, 2, . . . , n (2.40)
y
ij
0, 1 i, j = 0, 1, 2, . . . , n, n + 1 (2.41)
2.25 Mquinas Paralelas
Existem trs categorias de ambientes de mquinas paralelas: idnticas, uniformes e no relaciona-
das. Em mquinas idnticas, todas as tarefas tm o mesmo tempo de processamento e exigem o
mesmo tempo de preparao. Em mquinas uniformes, o tempo de processamento de uma tarefa e
o tempo de preparao de mquinas mais modernas so proporcionais aos tempos correspondentes
mquina mais antiga. Em mquinas no relacionadas no existe uma relao entre os tempos
de processamento e preparao de mquinas distintas.
Os modelos a seguir referem-se a m mquinas paralelas e n tarefas disponveis para processa-
mento no instante zero, sem interrupo de processamento de qualquer tarefa.
Para o problema de minimizao do makespan em mquinas idnticas, seja p
i
o tempo de
processamento da tarefa i, i = 1, , n.
Sejam as seguintes variveis de deciso:
C
max
: makespan
x
ik
: Varivel binria que assume valor 1 se a tarefa i processada na mquina k e 0, caso
contrrio
Assim, o modelo de programao matemtica para a minimizao do makespan em mquinas
paralelas idnticas pode ser representado por:
53
minimizar C
max
(2.42)
m

k=1
x
ik
= 1 i = 1 = 1, 2, . . . , n (2.43)
C
max

n

i=1
p
i
x
ik
k = 1, 2, , m; (2.44)
C
max
0 (2.45)
x
ik
0, 1 i = 0, 1, 2, . . . , n; k = 1, 2, , m (2.46)
A funo objetivo (2.42) representa a minimizao do makespan. As restries (2.43) asseguram
que uma tarefa i designada a exatamente uma mquina, enquanto as restries (2.44) impem
que o makespan o maior tempo de processamento entre todas as mquinas. As restries (2.45)
e (2.46) indicam o tipo das variveis.
Apresenta-se, a seguir, um modelo para minimizao da soma dos avanos e atrasos aplicvel
a qualquer dos trs tipos de mquinas anteriormente mencionados. Para tanto, sejam os seguintes
parmetros de entrada:
p
ik
: Tempo de processamento da tarefa i na mquina k
s
ijk
: Tempo de preparao da mquina k para processar a tarefa j
imediatamente aps a tarefa i
d
i
: Data de entrega da tarefa i
M : Nmero sucientemente grande
e as seguintes variveis de deciso:
C
ik
: Instante de trmino do processamento da tarefa i na mquina k
x
ijk
: Varivel binria que assume valor 1 se a tarefa i precede imediatamente a
tarefa j na mquina k e 0, caso contrrio
T
i
: Atraso da tarefa i, isto , maxC
i
d
i
, 0
E
i
: Avano da tarefa i, isto , maxd
i
C
i
, 0
A varivel T
i
mensura o quanto a tarefa i est atrasada, enquanto E
i
indica o quanto est
adiantada em relao data de entrega.
A seguir, o modelo de programao matemtica para a minimizao dos avanos e atrasos em
mquinas paralelas.
54
minimizar
n

i=1
(T
i
+ E
i
) (2.47)
m

k=1
n

i=0
x
ijk
= 1 j = 1, 2, . . . , n (2.48)
n

j=1
x
0jk
1 k = 1, , m1 (2.49)
n

i=0
i=h
x
ihk

n

j=0
j=h
x
hjk
= 0 h = 1, 2, , n (2.50)
k = 1, 2, , m
C
jk
C
ik
M + (s
ijk
+ p
jk
+ M)x
ijk
i = 0, 1, , n (2.51)
j = 1, 2, , n
k = 1, 2, , m
T
i
C
i
d
i
i = 1, , n (2.52)
E
i
d
i
C
i
i = 1, , n (2.53)
T
i
0 i = 1, 2, . . . , n (2.54)
E
i
0 i = 1, 2, . . . , n (2.55)
x
ijk
0, 1 i, j = 0, 1, 2, . . . , n (2.56)
k = 1, 2, , m
A funo objetivo (2.47) expressa a minimizao da soma total dos atrasos e avanos das
tarefas. As restries (2.48) impem que cada tarefa j tem uma nica tarefa predecessora imediata
em uma nica mquina. As restries (2.49) garantem que cada mquina k, se usada, tem uma
nica sequncia de processamento. As restries (2.50) asseguram que cada tarefa j tem uma
nica tarefa sucessora imediata, com exceo da tarefa 0, que estabelece o incio e o nal da
sequncia de processamento na mquina k. Se x
ijk
= 1, a restrio (2.51) implica que na mquina
k tem-se C
jk
C
ik
+ s
ijk
+ p
jk
e, se x
ijk
= 0, ento C
jk
C
ik
M, isto , a restrio (2.51)
ca desativada. As restries (2.52) e (2.53) determinam as tarefas que esto com atrasos ou
adiantamentos, respectivamente. As restries (2.54), (2.55) e (2.56) indicam os tipos de variveis.
2.26 Job Shop
Um Job Shop clssico um ambiente de produo com n tarefas e m mquinas, em que cada
tarefa processada nas m mquinas, de acordo com um roteiro preestabelecido. Considere, por
exemplo, 5 tarefas e 3 mquinas, denotadas por 1, 2 e 3. As matrizes O e P a seguir, representam,
respectivamente, a matriz de operaes, e a matriz de tempos de processamento nessas mqui-
nas. Assim, por exemplo, a primeira linha da matriz O indica que a tarefa 1 processada nas
mquinas 2, 1 e 3, nesta ordem, com tempos de processamento de 5, 7 e 10 unidades de tempo,
respectivamente, correspondentes aos elementos da primeira linha da matriz P.
O =
_

_
2 1 3
1 2 3
3 2 1
2 1 3
3 1 2
_

_
P =
_

_
5 7 10
9 5 3
5 8 2
2 7 4
8 8 8
_

_
55
Admita que as n tarefas estejam disponveis para processamento no instante inicial e que no
permitida a interrupo do processamento de qualquer tarefa. Sejam os parmetros:
p
ik
: Tempo de processamento da tarefa i na mquina k
maq
i
: mquina que processa a i-sima tarefa
M : Nmero sucientemente grande
e as seguintes variveis de deciso:
C
ik
: Instante de trmino do processamento da tarefa i na mquina k
x
ijk
: Varivel binria que assume valor 1 se a tarefa i precede a tarefa j na mquina k e
0, caso contrrio
Assim, o modelo de programao matemtica relativo ao Job Shop pode ser representado por:
minimizar
n

i=1
C
im
(2.57)
C
i,maq
1
p
i,maq
1
i = 1, 2, . . . , n (2.58)
C
i,maq
k+1
C
i,maq
k
+ p
i,maq
k+1
i = 1, 2, . . . , n; k = 1, , m1 (2.59)
C
jk
C
ik
+ p
jk
M(1 x
ijk
) i, j = 1, 2, , n; k = 1, 2, , m (2.60)
C
ik
C
jk
+ p
ik
Mx
ijk
i, j = 1, 2, , n; k = 1, 2, , m (2.61)
C
ik
0 i, j = 1, 2, . . . , n; k = 1, 2, , m (2.62)
x
ijk
0, 1 i, j = 0, 1, 2, . . . , n; k = 1, 2, , m (2.63)
A funo objetivo (2.57) expressa a minimizao do tempo de uxo total das tarefas. As
restries (2.58) garantem que a primeira operao de cada tarefa i completada aps o respectivo
tempo de processamento. As restries (2.59) impem que a operao k +1 seja concluda depois
do trmino da operao k e do tempo de processamento da operao k +1. As restries (2.60) e
(2.61) so restries disjuntivas que indicam respectivamente se, na mquina k, a tarefa i precede
a tarefa j, ou a tarefa j precede a tarefa i. Se x
ijk
= 1 ento, de (2.60) e (2.61), tem-se que:
C
jk
C
ik
+ p
jk
e C
ik
C
jk
p
ik
M, isto , o conjunto de restries (2.61) desativado. De
modo anlogo, se x
ijk
= 0 ento C
jk
C
ik
p
jk
M e C
ik
C
jk
+p
ik
, isto , as restries (2.60)
so desativadas. As restries (2.62) e (2.63) estabelecem o tipo das variveis.
2.27 Planejamento de lavra com Alocao Dinmica de Caminhes
Nesse problema h um conjunto de frentes de minrio e estril, um conjunto de carregadeiras e
um conjunto de caminhes. O objetivo alocar as carregadeiras s frentes de lavra e determinar
o nmero de viagens que cada caminho deve fazer cada frente de lavra de forma a atender a
produo requerida de minrio e estril, bem como as caractersticas fsicas e qumicas desejadas
para o produto a ser gerado. Normalmente, a produo (ou ritmo de lavra) determinada para
uma hora e replicada enquanto as condies da mina forem as mesmas. A cada carregadeira est
associada uma produtividade mxima, em toneladas/hora e cada caminho tem uma capacidade
mxima de carregamento. So conhecidos os tempos de ciclo, em minutos, de cada caminho
cada frente de lavra, bem como as especicaes dos minrios, ditos parmetros de controle, em
56
cada frente. Os caminhes s podem fazer viagens a frentes nos quais h carregadeiras compa-
tveis, porque existem carregadeiras que so pequenas e no tm altura suciente para carregar
determinados caminhes. A alocao dos caminhes dita dinmica no sentido de que ao descar-
regar, um caminho pode se direcionar a uma frente de lavra diferente da viagem anterior. Este
mecanismo de alocao permite aumentar a produtividade da frota de caminhes mas, em con-
trapartida, exige um sistema de despacho de caminhes. Considera-se, tambm, o atendimento a
uma relao estril/minrio. Essa relao requerida para a mina de modo a viabilizar a abertura
de novas frentes e a realizao de obras de infraestrutura.
Para a modelagem exata do problema, ser utilizada a tcnica de pesquisa operacional conhe-
cida como programao por metas (Goal Programming). Para tanto, sejam os seguintes dados de
entrada:
M : Conjunto das frentes de minrio;
E : Conjunto das frentes de estril;
F : Conjunto das frentes formado por M E;
S : Conjunto dos parmetros de controle analisados no minrio;
Carreg: Conjunto dos equipamentos de carga (carregadeiras);
V : Conjunto dos equipamentos de transporte (caminhes);
Pr : Ritmo de lavra recomendado (t/h);
Pl : Ritmo de lavra mnimo (t/h);
Pu : Ritmo de lavra mximo (t/h);

: Penalidade por desvio negativo da produo;

+
: Penalidade por desvio positivo da produo;
t
ij
: Valor do parmetro j na frente i (%);
tr
j
: Teor recomendado para o parmetro j na mistura (%);
tl
j
: Teor mnimo admissvel para o parmetro j na mistura (%);
tu
j
: Teor mximo admissvel para o parmetro j na mistura (%);

j
: Penalidade por desvio negativo para o parmetro j na mistura;

+
j
: Penalidade por desvio positivo para o parmetro j na mistura;
rem : Relao estrio/minrio requerida;
Cu
k
: Produo mxima do equipamento de carga k (t/h);
cap
l
: Capacidade do caminho l (t);
T
il
: Tempo total de ciclo do caminho l frente i (min).
txMax
l
Taxa de utilizao mxima permitida para o caminho l (%);
comp
lk
:
_
1 se o caminho l pode ser usado com o equipamento de carga k;
0 caso contrrio.
e as seguintes variveis de deciso:
x
i
: Ritmo de lavra da frente i (t/h);
y
ik
:
_
1 se o equipamento de carga k for alocado frente i;
0 caso contrrio.
n
il
: Nmero de viagens que o caminho l realiza na frente i em uma hora;
dm

j
: Desvio negativo de meta relativo ao parmetro j na mistura (t/h);
dm
+
j
: Desvio positivo de meta relativo ao parmetro j na mistura (t/h);
P

: Desvio negativo do ritmo de lavra em relao ao recomendado (t/h);


P
+
: Desvio positivo do ritmo de lavra em relao ao recomendado (t/h).
Desvio negativo (ou desvio por baixo) de meta do parmetro de controle (respectivamente
ritmo de lavra recomendado) indica o quanto se cou abaixo da meta (respectivamente ritmo de
57
lavra recomendado), enquanto desvio positivo (ou desvio por cima) indica o quanto se ultrapassou
a meta (respectivamente ritmo de lavra recomendado).
O modelo de programao matemtica relativo alocao dinmica de uma frota heterognea
de caminhes e equipamentos de carga, levando-se em considerao metas de produo e qualidade
de minrio, apresentado pelas equaes (2.64)-(2.82).
min

jS

j
dm

j
+

jS

+
j
dm
+
j
+

+
+
P
+
(2.64)
s.a:

iM
(t
ij
tu
j
)x
i
0 j S (2.65)

iM
(t
ij
tl
j
)x
i
0 j S (2.66)

iM
(t
ij
tr
j
)x
i
+ dm

j
dm
+
j
= 0 j S (2.67)

iM
x
i
Pu (2.68)

iM
x
i
Pl (2.69)

iM
x
i
+ P

P
+
= Pr (2.70)
x
i
0 i F (2.71)
dm
+
j
, dm

j
0 j S (2.72)
P
+
, P

0 (2.73)

iE
x
i
rem

iM
x
i
0 (2.74)

kCarreg
y
ik
1 i F (2.75)

iF
y
ik
1 k Carreg (2.76)
y
ik
0, 1 i F, k Carreg (2.77)
x
i

kCarreg
Cu
k
y
ik
0 i F (2.78)
n
il
T
il
60

kCarreg, comp
lk
=0
y
ik
0 i F, l V (2.79)

iF
n
il
T
il
60 txMax
l
l V (2.80)
x
i

lV
n
il
cap
l
= 0 i F (2.81)
n
il
Z
+
i F, l V (2.82)
58
Observa-se que (2.65)-(2.73) so restries que juntamente com a funo objetivo (2.64) for-
mam o modelo de mistura de minrios com metas (vide exerccio 2.19, pgina 35). A restrio
(2.74) assegura o atendimento da relao estril/minrio mnima requerida. As demais restries
que complementam o modelo podem ser divididas em dois grupos. O primeiro diz respeito
alocao de equipamentos de carga e a faixa de produtividade que torna vivel a utilizao desses
equipamentos. As restries (2.75) denem que cada frente deve operar com no mximo um equi-
pamento de carga, enquanto que as restries (2.76) estabelecem que cada equipamento de carga
deve operar em uma frente, no mximo. As restries (2.77) xam as variveis y
ik
como binrias.
As restries (2.78) limitam o ritmo de lavra mximo em cada frente em funo da produtividade
da carregadeira a ela alocada.
O segundo grupo de restries est relacionado ao transporte de material na mina e alocao
dos caminhes. As restries (2.79) fazem com que cada caminho somente realize viagens uma
frente onde esteja alocado um equipamento de carga compatvel. As restries (2.80) denem que
cada caminho opere no mximo txMax
l
% de sessenta minutos. As restries (2.81) fazem com
que o ritmo de lavra de uma frente seja igual produo realizada pelos caminhes alocados a
essa frente. As restries (2.82) asseguram que o nmero de viagens que um caminho faz a uma
frente um valor inteiro positivo.
2.28 Linearizao do produto de variveis binrias
Propriedade: O produto z = x
1
x
2
x
n
com x
j
0, 1 j = 1, 2, , n equivalente a
x
1
+ x
2
+ + x
n
z n 1, z x
j
, x
j
0, 1, j = 1, 2, , n, z 0.
Exemplo: Aplicar esta propriedade ao problema no-linear 0-1 a seguir, transformando-o em um
problema de programao linear inteira mista (PLIM).
min 3x
1
+ 2x
2
+ x
3
9x
1
x
2
+ 4x
1
x
2
x
3
s.a: x
j
0, 1 j = 1, 2, 3
(a) Linearizao do produto z
1
= x
1
x
2
:
Aplicando a propriedade ao produto das duas variveis binrias, resulta:
x
1
+ x
2
z
1
2 1 = 1
z
1
x
1
z
1
x
2
z
1
0
(b) Linearizao do produto z
2
= x
1
x
2
x
3
:
De forma anloga, obtm-se:
x
1
+ x
2
+ x
3
z
2
3 1 = 2
z
2
x
1
z
2
x
2
z
2
x
3
z
2
0
Levando os resultados obtidos em (a) e (b) no modelo no-linear, obtem-se o seguinte problema
de programao linear inteira mista equivalente:
59
min 3x
1
+ 2x
2
+ x
3
- 9z
1
+ 4z
2
x
1
+ x
2
- z
1
1
- x
1
+ z
1
0
- x
2
+ z
1
0
x
1
+ x
2
+ x
3
- z
2
2
- x
1
+ z
2
0
- x
2
+ z
2
0
- x
3
+ z
2
0
x
1
, x
2
, x
3
0, 1
z
1
, z
2
0
60
3 Branch-and-Bound
O mtodo Branch-and-Bound um mtodo de busca em rvore que se fundamenta na programao
linear para explorar o espao de busca. Em cada passso do mtodo as variveis inteiras so
relaxadas e o subproblema resultante resolvido por um mtodo da programao linear. Se a
soluo desse subproblema tiver todas as variveis inteiras, ento os descendentes do ramo da
rvore analisado esto, naturalmente, implicitamente enumerados. H outro critrio para a poda
da rvore tambm, mas trataremos disso mais adiante. Havendo variveis no inteiras e falhando
esse outro critrio, feita a escolha de uma varivel a ramicar. Escolhida essa varivel, deve-se,
agora, escolher qual ramo da rvore explorar primeiro, aquele associado ao valor menor ou igual
ao piso da varivel (isto , o ramo x
j
x
j
|) ou o ramo associado ao valor maior ou igual ao teto
da varivel (isto , o ramo x
j
x
j
| +1). Gracamente, isso signica dividir o espao de solues
em dois subconjuntos tendo como elementos separadores o piso e o teto da varivel ramicada. A
regio do espao de busca entre o piso e o teto pode ser excluda, pois desprovida de solues
inteiras.
Para ilustrar o mtodo seja o seguinte problema de programao linear inteira.
min 4x
1
+ 3x
2
= z
8x
1
+ 3x
2
24
5x
1
+ 6x
2
30
x
1
+ 2x
2
9
x
1
, x
2
Z
+
A Figura 4 apresenta a rvore de branching desse problema de programao inteira, no qual se
aplicou um critrio, conhecido como Variante de Dank, para escolher a varivel a ramicar. Este
critrio consiste em escolher para ramicar a varivel no inteira que esteja mais prxima de um
inteiro (tanto com relao ao piso quanto ao teto).
Considerando como regras busca em profundidade e analisar primeiramente o valor maior da
varivel escolhida para ser ramicada, isto , o ramo x
j
x
j
|+1, mostremos quais problemas de
programao linear (PPLs) seriam necessrios resolver aplicando-se a tcnica branch-and-bound.
Como o PPL 1 no produziu soluo com variveis inteiras, ento escolhida uma varivel
para ramicar; que, no caso do Critrio de Dank, a varivel x
2
. Como x
2
= 3, 69, ento dois
ramos tm que ser resolvidos: o ramo no qual x
2
3 e o ramo no qual x
2
4. Os valores de
x
2
entre 3 e 4 so desprezados porque no conduzem a solues inteiras. Pela regra estabelecida,
devemos resolver primeiro o ramo da rvore associado a x
2
4.
O PPL 3 formado, portanto, pelo PPL 1 relaxado includa a restrio x
2
4. Resolvendo
o PPL 3 encontramos uma soluo que tambm no inteira. Supondo busca em profundidade,
deve-se, portanto, ramicar uma das variveis no inteiras do PPL 3 (No caso de busca em
largura, resolveramos o PPL 2). No caso, apenas a varivel x
1
no inteira e dois ramos devem
ser considerados: o associado a x
1
1 e o associado a x
1
2. Pela regra estabelecida, o ramo
x
1
2 deve ser resolvido primeiro.
Resolvendo-se o PPL 4, o qual formado pelo PPL 1 includas as restries x
2
4 e x
1
2,
obtm-se uma soluo inteira com valor z = 20. Ento esse ramo da rvore est denitivamente
explorado, podendo-se fazer o backtracking e resolver o outro ramo imediato da rvore, descendente
do PPL 3.
Resolvendo-se o PPL 5, o qual descendente do PPL 3, encontra-se uma soluo no inteira
de valor z = 20. Ora, uma soluo com esse valor j foi encontrada resolvendo-se o PPL 4.
Resolvendo-o encontraramos uma soluo pior, ento a rvore de busca pode ser podada no n
em questo. Como todos os ramos descendentes do PPL 1 associados x
2
4 j foram analisados,
ainda que implicitamente, resta analisar o ramo associado a x
2
3. Esse ramo deve ser analisado
61
Figura 4: rvore de Branching
porque sendo descendente do PPL 1, o qual tem valor z = 17, 54, poderamos encontrar valores
de z iguais a 18 ou 19 e, portanto, inferiores ao melhor encontrado at o momento, que z = 20.
Entretanto, resolvendo o PPL 2 encontramos soluo inteira, mas com z = 21. Nesse ponto, h a
poda por dois motivos: primeiro, porque foi encontrada uma soluo inteira e, segundo, porque o
valor de z pior que o melhor valor encontrado at o momento (Bastava a ocorrncia de um desses
motivos para que a poda pudesse ser realizada). Fazendo-se o backtracking retorna-se ao n raiz,
que o PPL 1. Como os dois ramos da rvore foram analisados, o mtodo encerrado, retornando
x

1
= 2, x

2
= 4, associado a z

= 20, como soluo tima para o problema de programao linear


inteira dado.
Exerccio:
Resolva o seguinte PLI pelo mtodo Branch-and-Bound, apresentando toda a rvore de deciso.
Use a variante de Dank para escolher a varivel a ramicar, sendo que em caso de empate, escolha
a varivel de maior ndice. Escolhida a varivel a ramicar, opte por analisar primeiro o valor
maior da varivel. Faa busca em profundidade.
max 2x
1
+ x
2
= z
x
1
+ 2x
2
7
x
1
+ x
2
0
6x
1
+ 2x
2
21
x
1
, x
2
Z
+
62
4 Integrao do LINGO em planilhas Excel
Para ilustrar a integrao do LINGO em planilhas do Microsoft Excel, consideremos o Problema
de Transporte denido a seguir.
4.1 Problema de Transporte
Dado um conjunto de fontes de produo (fbricas), um conjunto de mercados consumidores
(armazns), e uma rede de possveis caminhos de transporte (rotas) das fontes de produo para
os mercados, o objetivo da problema determinar o carregamento que minimiza o custo total
de transporte, de modo que as capacidades das fontes produtivas no sejam ultrapassadas e as
demandas dos mercados sejam atendidas. Considere a quantidade ofertada pelas fbricas maior
que a soma das demandas dos armazns.
Para fazer a modelagem de programao matemtica deste problema, sejam os seguintes pa-
rmetros de entrada:
fabricas : Conjunto das fbricas
armazens : Conjunto dos armazns
custo
ij
: Custo de transporte de uma unidade de produto da fbrica i ao armazm j
demanda
j
: Demanda por produtos do armazm j
capacidade
i
: Capacidade de produo da fbrica i
Considerando as variveis de deciso qtdEnviada
ij
como sendo a quantidade de produtos a
serem enviadas da fbrica i ao armazm j, temos o seguinte modelo de programao matemtica:
minimizar

ifabricas

jarmazens
custo
ij
qtdEnviada
ij

jarmazens
qtdEnviada
ij
capacidade
i
i fabricas

ifabricas
qtdEnviada
ij
= demanda
j
j armazens
qtdEnviada
ij
Z
+
i fabricas j armazens
A ltima restrio, que estabelece o domnio das variveis qtdEnviada
ij
no conjunto dos in-
teiros desnecessria. O Problema de Transporte tem a propriedade de que qualquer soluo do
problema inteira. Assim, esta ltima restrio pode ser substituda apenas por:
qtdEnviada
ij
0 i fabricas j armazens
O modelo LINGO do Problema de Transporte apresentado a seguir.
63
MODEL:
TITLE: Problema de Transporte;
SETS:
fabricas / @OLE(Transporte.xlst,fabricas) /: capacidade;
armazens / @OLE(Transporte.xls,armazens) / : demanda;
rotas(fabricas, armazens): custo, qtdEnviada;
ENDSETS
DATA:
capacidade = @OLE(Transporte.xls,capacidade);
demanda = @OLE( Transporte.xls,demanda);
custo = @OLE( Transporte.xls,custo);
ENDDATA
[FO] MIN = @SUM(rotas(i,j): custo(i,j)*qtdEnviada(i,j));
! As capacidades das fbricas no podem ser ultrapassadas;
@FOR(fabricas(i): @SUM(armazens(j): qtdEnviada(i,j)) <= capacidade(i));
! As demandas dos armazns devem ser atendidas;
@FOR(armazens(j): @SUM(fabricas(i): qtdEnviada(i,j)) = demanda(j));
@FOR(rotas(i,j): @GIN(qtdEnviada(i,j));
DATA:
@OLE(Transporte.xls,solucao) = qtdEnviada;
@OLE( Transporte.xls,cTotal) = FO;
ENDDATA
END
Os dados de entrada para este modelo so apresentados pela gura a seguir. Nesta planilha
esto denidos os seguintes campos:
Nome Campo
fabricas B6:B11
armazens C5:J5
capacidade K6:K11
demanda C12:J12
custo C6:J11
solucao C21:J26
cTotal I28
64
4.2 Algumas consideraes sobre @OLE
Ao utilizar a funo @OLE, algumas consideraes devem ser feitas:
1. Para que @OLE funcione corretamente necessrio que o arquivo .xls utilizado esteja
aberto, a no ser quando objetos embutidos so utilizados (objetos embutidos so explicados
na prxima seo);
2. A funo @OLE no trabalha com conjuntos derivados tridimensionais; e
3. @OLE l os campos denidos no Excel, de acordo com a seguinte ordem: da esquerda para
direita e de cima para baixo.
65
4.3 Embutindo planilhas do EXCEL no LINGO
Assim como possvel embutir um modelo LINGO no EXCEL, o processo pode ser invertido de
modo que uma planilha seja embutida no LINGO.
Para embutir um arquivo .xls no LINGO, siga os seguintes passos:
1. selecione o menu Edit[Insert New Object;
2. selecione a opo Criar do Arquivo na caixa de dialogo Inserir Objeto;
3. digite o caminho e o nome do arquivo a ser embutido;
4. marque a caixa Vincular; e
5. clique no boto OK.
Este processo ilustrado com o modelo Problema de Transporte, apresentado na seo 4.1.
Aps inserir o novo objeto contendo o arquivo Transporte.xls, temos:
66
A planilha de dados est agora embutida no LINGO, exibida ao topo do modelo Problema de
Transporte. Para edit-la, basta dar um duplo-clique sobre o objeto.
67
Quando o modelo for resolvido, o LINGO enviar os resultados para o arquivo Transporte.xls
atualizando a planilha embutida, como exibido a seguir.
4.4 Embutindo Modelos LINGO no EXCEL
O LINGO capaz de funcionar como um servidor OLE. Isto signica que um modelo do LINGO
pode ser embutido em qualquer aplicao que funcione como cliente OLE como, por exemplo, o
EXCEL. Embutir um modelo no EXCEL conveniente, pois o modelo estar sempre disponvel
sempre que o arquivo .xls for aberto, no sendo necessrio abrir o otimizador LINGO.
Para embutir um documento do LINGO em um arquivo do EXCEL, siga os seguintes passos:
1. selecione o menu Inserir[Objeto;
2. selecione o objeto LINGO Document na lista Tipo de objeto; e
3. clique no boto OK;
68
Aps concluir os passos citados acima, um documento em branco do LINGO surgir na planilha
corrente. O modelo pode ser digitado no documento diretamente, ou copiado de uma outra
aplicao (copiar/colar).
Para ilustrar este recurso, ser utilizado o modelo Problema de Transporte descrito na seo
4.1. Embutindo este modelo em um arquivo nomeado como Transporte.xls, teramos:
Ao dar um duplo-clique sobre o objeto contendo o modelo embutido, uma barra de comandos
do LINGO aparecer no canto superior da tela. Para resolver o modelo, basta clicar no boto
Solve da barra de comandos. Depois de otimizar o modelo, o LINGO enviar os resultados para
o arquivo Transporte.xls, como exibido a seguir.
69
4.5 Utilizando links OLE automatizados no EXCEL
O LINGO disponibiliza um comando script, prprio para ser usado pelo EXCEL, que permite a
criao de um link OLE automatizado. Este link estabelece uma relao cliente-servidor entre o
EXCEL e o LINGO. Com isto, torna-se possvel resolver um modelo escrito na prpria planilha
do EXCEL, sem a necessidade de utilizar o aplicativo do LINGO, de forma transparente para o
usurio.
Para ilustrar esse recurso ser utilizado o modelo Problema de Transporte mostrado na seo
4.1. Esta ilustrao assume que o leitor esteja razoavelmente familiarizado com o uso de macros
do Visual Basic.
Primeiramente, faa um modelo LINGO interfaceando com o Excel na forma usual. A seguir, v
na opo Ferramentas / Personalizar do Excel e ative o box Caixa de Ferramentas de Controle.
70
Ao aparecer a caixa de ferramenta, clique em Boto de Comando dessa Caixa e a seguir
clique em uma posio adequada da planilha para inserir esse boto. Ser, ento, criado o boto
CommandButton1. Dando um duplo clique nele, aparecer a janela de edio do Visual Basic.
Nesse editor, h uma janela esquerda com as propriedades desse boto, conforme ilustra a gura
a seguir.
Altere a propriedade caption para um nome adequado, por exemplo, Solve (observe que o
nome anterior e default CommandButton1).
Na gura a seguir, representantiva da planilha Excel que faz interface com o Excel, aparece na
coluna K28 o boto Solve resultante da alterao realizada.
Nesta planilha, intitulada Dados, esto denidos os seguintes campos:
Nome Campo Nome Campo
fabricas B6:B11 custo C6:J11
armazens C5:J5 solucao C21:J26
capacidade K6:K11 cTotal I28
demanda C12:J12
71
Existe ainda uma segunda planilha, chamada Modelo, que foi criada para conter o cdigo
script referente ao modelo do Problema de Transporte. Um script deve possuir o seguinte
esquema:
SET ECHOIN 1
Outras funes SET
MODEL:
modelo LINGO
END
GO
SET ECHOIN 0
QUIT
Observe que o modelo LINGO delimitado pelas palavras-chave MODEL e END. O comando
SET ECHOIN 1 ativa o terminal do LINGO, permitindo que o script seja lido. J o comando
GO usado para resolver o modelo, descrito entre as palavras-chave MODEL e END. O comando
QUIT libera a memria usada pela aplicao LINGO.
Os comandos anteriores devem ser adicionados ao modelo LINGO e toda a relao de comandos,
comeando de SET ECHOIN 1 at QUIT deve ser marcada e copiada dentro do ambiente de
modelagem LINGO com o comando CRTL C, por exemplo. Agora, posicione o cursor na planilha
Modelo do Excel em uma certa posio, no caso, na clula A1. D CRTL V. A gura a seguir
exibe o resultado dessa operao na planilha Modelo:
Para que este script seja enviado ao LINGO necessrio que ele esteja denido atravs do
seguinte campo:
Nome Campo
modelo A1:A31
72
Isto , o bloco do Excel onde est o cdigo LINGO deve ser marcado e nomeado como modelo
ou outro nome qualquer.
Denidos os campos e o modelo LINGO, ser necessrio associar ao boto Solve, criado na
planilha Dados, o seguinte cdigo:
Private Sub CommandButton1_Click()
Dim iErr As Integer
Dim LINGO As Object
Set LINGO = CreateObject("LINGO.Document.4")
iErr = LINGO.RunScriptRange("modelo")
If (iErr > 0) Then
MsgBox ("Erro. O modelo no pode ser Resolvido")
End If
End Sub
Se o editor Visual Basic no estiver aberto, este pode ser acionado dando-se um duplo clique no
boto Solve. Os cdigos anteriores supem que a propriedade Name CommandButton1. Caso
ela seja mudada para Solve, ento a primeira linha dever ser Private Sub Solve_Click().
A automao OLE utilizada para chamar o mtodo RunScriptRange, passando o campo
modelo como parmetro. A rotina RunScriptRange ento, solicita ao EXCEL que obtenha
o contedo deste campo e, inicia o processo de execuo do script. Esse processo continua at
que a palavra-chave QUIT seja encontrada ou no haja mais comando a ser lido. A instruo
RunScriptRange retornar um valor 0 caso o script esteja pronto para ser processado.
Voltando planilha Dados, para que o modelo seja resolvido basta apenas que o boto Solve
seja pressionado. Aps uma breve pausa, a soluo encontrada pelo LINGO enviada planilha,
como mostra a gura a seguir.
Feche o Editor do Visual Basic e retorne planilha Excel. Para sair do modo de desenvolvi-
mento, clique no boto Sair do modo de design do box Caixa de Ferramentas de Controle.
73
Pronto, o boto Solve est preparado para uso. Feche o LINGO, pois no preciso que ele esteja
aberto para o boto funcionar. A seguir clique no boto Solve e a resposta ser enviada para a
planilha automaticamente.
4.6 Comando SET
O comando SET permite alterar conguraes padres do LINGO. Todas as opes congurveis
pelo usurio esto disponveis atravs desse comando. Sua sintaxe :
SET nome_do_parametro [ ndice_do_parametro [valor_do_parametro]
Caso o valor do parmetro seja omitido, o LINGO utilizar o valor padro para o parmetro
especicado. Alguns dos parmetros acessveis atravs do comando SET so apresentados a seguir.
ndice Nome Padro Descrio
10 TIMLIM 0 Tempo limite de execuo em segundos
(0: sem limite)
23 TERSEO 0 Omite o relatrio gerado aps a resoluo do modelo
(0: no, 1: sim)
24 STAWIN 1 Exibe a janela de status do processo de busca
(1: sim, 0: no)
33 ECHOIN 0 Envia comandos script para o terminal
(0: no, 1: sim)
34 ERRDLG 1 Exibe mensagens de erro em uma caixa de dilogo
(1: sim, 0: no)
46 DUALCO 1 Calcula os valores duais
(0: no calcula, 1: calcula s dual, 2: calcula dual e range)
51 CUTOFF 1 10

9 Qualquer soluo com valor menor ou igual a CUTOFF


considerada como zero
41 SOLVEL 0 Escolhe o resolvedor dos PPLs
(0: LINGO decide, 1: Primal Simplex
2: Dual Simplex, 3: Barreira)
40 PRBLVL 0 Em programao inteira mista, realiza a operao probing,
isto , tenta deduzir um valor mais prximo de um inteiro
para acelerar a busca. Pode surtir o efeito contrrio.
(0: LINGO escolhe, 1: nvel mais baixo, 7: nvel mais alto)
18 IPTOLR 5 10
8
Esta tolerncia um valor r variando entre 0 e 1, que indica
ao mtodo B & B para somente buscar solues inteiras cujo
valor seja pelo menos 100 r% melhor que a melhor
soluo inteira encontrada at ento. Acelera a busca, mas
pode no garantir a soluo tima.
17 IPTOLA 8 10
8
Esta tolerncia um valor r, que indica ao mtodo B & B
para somente buscar solues inteiras cujo valor seja pelo
menos r unidades melhores que a melhor soluo inteira
encontrada at ento. Acelera a busca, mas pode no garantir
a soluo tima.
16 HURDLE none Valor de uma soluo, normalmente encontrado via uma
heurstica. Com esse valor, o mtodo B & B no explora
solues piores que ele. Assim, serve para acelerar a busca.
74
5 Problema do Caixeiro Viajante
5.1 Denio
Dado um conjunto de n cidades e uma matriz de distncias d
ij
entre elas, o Problema do Caixeiro
Viajante (PCV), ou Traveling Salesman Problem - TSP, consiste em estabelecer uma rota para
um Caixeiro, iniciando seu percurso em uma cidade, chamada cidade origem, passar por todas as
demais n 1 cidades uma nica vez e retornar cidade origem percorrendo a menor distncia
possvel.
Exemplicando, consideremos 6 cidades com as distncias dadas pela tabela a seguir:
Cidade 1 2 3 4 5 6
1 0 2 1 4 9 1
2 2 0 5 9 7 2
3 1 5 0 3 8 6
4 4 9 3 0 2 5
5 9 7 8 2 0 2
6 1 2 6 5 2 0
Uma possvel soluo para o exemplo considerado s = (1 4 2 5 3 6). Para esta soluo, a
distncia total percorrida dist = d
14
+ d
42
+ d
25
+ d
53
+ d
36
+ d
61
= 4 + 9 + 7 + 8 + 6 + 1 = 35.
Observe que qualquer permutao das n cidades representa uma soluo para o PCV. O que
queremos , dentre todas as possveis permutaes (solues), determinar aquela cuja distncia
total percorrida a menor possvel.
Se d
ij
= d
ji
diz-se que o PCV simtrico. Caso contrrio ele dito assimtrico.
Para o PCV simtrico h (n 1)!/2 solues possveis. Para mostrar a magnitude do espao
de solues, para n = 20 h 6 10
16
solues. Supondo que um computador avalie uma soluo
(rota) em 10
8
segundos, seriam necessrios 6 10
8
segundos ou 168951 horas ou 7039 dias ou
cerca de 19 anos para se encontrar a melhor soluo por enumerao completa de todas as possveis
solues.
5.2 Modelagem de Programao Matemtica
Seja o grafo G = (Cidades, A), onde Cidades conjunto de cidades (clientes) e A o conjunto de
arcos ligando duas cidades, isto , A = (i, j) [ i ,= j.
Seja d
ij
a distncia da cidade i para a cidade j.
(a) Variveis de deciso:
x
ij
: varivel binria que assume valor 1 se o arco (i, j) for utilizado e 0, caso contrrio
f
ij
: quantidade de uxo enviada da cidade i para a cidade j
(b) Funo objetivo:
min

iCidades

jCidades
d
ij
x
ij
(c) Restries:
c.1) cada cidade k s chega um arco:

iCidades
x
ik
= 1 k Cidades
75
c.2) De cada cidade k s sai um arco:

jCidades
x
kj
= 1 k Cidades
c.3) Eliminao de subciclos:

iCidades
f
ik


jCidades
f
kj
= 1 k Cidades [ k ,= 1
f
ij
(n 1)x
ij
i Cidades, j Cidades
c.4) Integralidade e no-negatividade:
x
ij
0, 1 i Cidades, j Cidades
f
ij
0 i Cidades, j Cidades
Observe que nas restries de eliminao de subciclos, a varivel contnua f indica o uxo em
um arco. Na primeira delas, impe-se que o uxo que chega a uma cidade k menos o que
sai de k seja igual a 1 (exceto para a cidade origem, cujo ndice 1). J na segunda, o uxo
mximo que passa em um arco usado no percurso inferior a n 1, onde n o nmero de
cidades, e quando um arco no usado (x
ij
= 0) ento o uxo nulo.
O modelo LINGO completo do PCV apresentado a seguir. Neste modelo, V o conjunto de
cidades e PCV.txt (vide Figura 5) um arquivo texto contendo os dados do PCV, a saber:
relao das cidades (A, , P) e suas coordenadas cartesianas.
! Cidades;
A B C D E F G H I J K L M N O P ~
! Coordenadas x;
30 37 49 52 20 40 21 17 31 52 51 42 31 5 12 36 ~
! Coordenadas y;
40 52 49 64 26 30 47 63 62 33 21 41 32 25 42 16
Figura 5: Arquivo PCV.txt
76
model:
title: Problema do Caixeiro Viajante;
sets:
V / @file(Coordenadas.txt) /: u, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
data:
coord_x = @file(PCV.txt);
coord_y = @file(PCV.txt);
enddata
@for(V(i):
x(i,i) = 0;
@for(V(j):
d(i,j) = ( (coord_x(j) - coord_x(i))^2 +
(coord_y(j) - coord_y(i))^2 )^(0.5)));
[fo] min = @sum(V(i): @sum(V(j): d(i,j) * x(i,j)));
! A cada cidade k s chega um arco;
@for(V(k):
@sum(V(i): x(i,k)) = 1);
! De cada cidade k s sai um arco;
@for(V(k):
@sum(V(j): x(k,j)) = 1);
! Restricoes de eliminacao de subciclos;
@for(V(k) | k #ne# 1:
@sum(V(i): f(i,k)) - @sum(V(j): f(k,j)) = 1);
@for(V(i):
@for(V(j): f(i,j) <= (@size(V) - 1) * x(i,j)));
@for(V(i):
@for(V(j): @bin(x(i,j))));
end
A soluo tima deste problema tem distncia total fo = 219, 45, sendo a rota tima dada por
A M F J K P E N O G H I B D C L A.
77
5.3 Modelagem Heurstica
5.3.1 Heursticas Construtivas
Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por elemento. A
forma de escolha de cada elemento a ser inserido a cada passo varia de acordo com a funo de
avaliao adotada, a qual, por sua vez, depende do problema abordado. Nas heursticas clssicas,
os elementos candidatos so geralmente ordenados segundo uma funo gulosa, que estima o
benefcio da insero de cada elemento, e somente o melhor elemento inserido a cada passo.
importante mencionar que no h garantia de que a soluo nal produzida por uma heu-
rstica seja a tima.
A gura a seguir mostra o pseudocdigo para a construo de uma soluo inicial para um
problema de otimizao que utiliza uma funo de avaliao g(.). Nesta gura, t
melhor
indica o
membro do conjunto de elementos candidatos com o valor mais favorvel da funo de avaliao
g, isto , aquele que possui o menor valor de g no caso de o problema ser de minimizao ou o
maior valor de g no caso de o problema ser de maximizao.
procedimento ConstrucaoGulosa(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C ,= ) faa
4 g(t
melhor
) = melhorg(t) [ t C;
5 s s t
melhor
;
6 Atualize o conjunto C de elementos candidatos;
7 m-enquanto;
8 Retorne s;
m ConstrucaoGulosa;
Ilustraremos o PCV com trs heursticas construtivas, a saber: (a) Heurstica do Vizinho Mais
Prximo; (b) Heurstica de Nemhauser e Bellmore e (c) Heurstica da Insero Mais Barata.
(a) Heurstica do Vizinho Mais Prximo:
Nesta heurstica, parte-se da cidade origem e adiciona-se a cada passo a cidade k ainda no
visitada cuja distncia ltima cidade visitada a menor possvel. O procedimento de cons-
truo termina quando todas as cidades forem visitadas, situao na qual feita a ligao
entre a ltima cidade visitada e a cidade origem.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A cidade
6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Adicione a cidade 4 rota, j que sua distncia cidade 3 a menor dentre as
cidades ainda no visitadas (no caso, as cidades 2, 4, 5 e 6).
iii) Passo 3: Adicione a cidade 5 rota, j que sua distncia cidade 4 a menor dentre
todas as cidades ainda no visitadas (no caso, as cidades 2, 5 e 6)
iv) Passo 4: Adicione a cidade 6 rota, j que sua distncia cidade 5 a menor dentre
todas as cidades ainda no visitadas (no caso, as cidades 2 e 6)
v) Passo 5: Adicione a cidade 2 rota, j que esta a nica cidade ainda no visitada
vi) Passo 6: Faa a ligao da cidade 2 (ltima cidade visitada) cidade 1 (cidade origem)
78
Ao nal desses 6 passos, teremos produzido a soluo s = (1 3 4 5 6 2). Para esta soluo,
a distncia total percorrida dist = d
13
+d
34
+d
45
+d
56
+d
62
+d
21
= 1+3+2+2+2+2 = 12.
Complexidade da Heurstica do Vizinho Mais Prximo:
Iterao # operaes Observaes
1 n 1 H n 1 ligaes para serem analisadas
2 n 2 H n 2 ligaes para serem analisadas

n 1 1 H apenas uma cidade ainda no visitada
Total 1 + 2 + + n 1 = n(n 1)/2 operaes
A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo elemento
n 1, a razo igual a 1 e o nmero de termos n 1. A soma dos termos desta PA vale
S =
_
a
1
+a
nelem
2
_
nelem =
_
1+(n1)
2
_
(n 1) = n(n 1)/2
(b) Heurstica de Bellmore e Nemhauser:
Nesta heurstica, adicionamos rota corrente a cidade k ainda no visitada que esteja mais
prxima dos extremos da subrota, isto , a cidade k se liga a uma cidade que esteja em uma
extremidade da subrota ou outra extremidade.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A cidade
6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 6 a que menos dista de
um extremo da rota (cidade 1) e a cidade 4 a que menos dista do outro extremo da rota
(cidade 3). Como a distncia d
61
= 1 < d
34
= 3, ento a cidade 6 a escolhida e deve ser
conectada cidade 1, isto , a rota corrente : s = (6 1 3).
iii) Passo 3: Das cidades ainda no visitadas (2, 4 e 5), a cidade 2 a que menos dista de um
extremo da rota (cidade 6) e a cidade 4 a que menos dista do outro extremo da rota
(cidade 3). Como a distncia d
26
= 2 < d
34
= 3, ento a cidade 2 a escolhida e deve ser
conectada cidade 6, isto , a rota corrente : s = (2 6 1 3). A cidade 5 tambm
poderia ter sido escolhida para se conectar cidade 6, pois tem a mesma distncia da
cidade 2 cidade 6.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), a cidade 5 a que menos dista de um
extremo da rota (cidade 2) e a cidade 4 a que menos dista do outro extremo da rota
(cidade 3). Como a distncia d
34
= 3 < d
52
= 7, ento a cidade 4 a escolhida e deve ser
conectada cidade 3, isto , a rota corrente : s = (2 6 1 3 4).
v) Passo 5: A nica cidade ainda no visitada a cidade 5. Ela dista 7 unidades de um
extremo da rota (cidade 2) e 2 unidades do outro extremo (cidade 4). Logo, a cidade 5
deve ser conectada cidade 4, isto , a rota corrente : s = (2 6 1 3 4 5).
vi) Passo 6: Como todas as cidades j foram visitadas, resta agora somente conectar as duas
extremidades (cidades 5 e 2) para formar um ciclo hamiltoniano.
Ao nal desses 6 passos, teremos produzido a soluo s = (2 6 1 3 4 5). Para esta soluo,
a distncia total percorrida dist = d
26
+d
61
+d
13
+d
34
+d
45
+d
52
= 2+1+1+3+2+7 = 16.
79
(c) Heurstica da Insero Mais Barata:
Nesta heurstica, parte-se de uma subrota inicial envolvendo trs cidades e, a cada passo,
adiciona-se uma cidade k ainda no visitada entre as cidades i e j da subrota cujo custo de
insero s
k
ij
dado pela frmula abaixo seja a menor possvel.
s
k
ij
= d
ik
+ d
kj
d
ij
As guras a seguir ilustram a insero da cidade k entre as cidades i e j.
(a) Antes da insero (b) Depois da insero
Observa-se que a subrota inicial pode ser formada por um procedimento construtivo qualquer.
Por exemplo, parta da cidade origem e adicione subrota a cidade mais prxima. A seguir,
considerando as duas extremidades (cidade origem e ltima cidade inserida), adicione a cidade
ainda no visitada cuja soma das distncias s duas extremidades seja a menor.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, constri-se uma
soluo com os seguintes passos:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A cidade
6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 2 a aquela cuja distncia
s cidades extremas 1 e 3 a menor, no caso, d
21
+ d
32
= 2 + 5 = 7. Ento, a cidade
2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a subrota corrente : s =
(1 3 2), com a cidade 2 ligada cidade 1. Com os passos 2 e 3 encerra-se a
construo de uma subrota inicial envolvendo trs cidades. A distncia total percorrida
: d(s) = d
13
+ d
32
+ d
21
= 1 + 5 + 2 = 8.
iii) Passo 3: Das cidades ainda no visitadas (4, 5 e 6), calculemos o custo de insero entre
todas as cidades i e j da subrota. A tabela a seguir mostra os custos de insero.
i k j s
k
ij
= d
ik
+ d
kj
d
ij
1 4 3 s
4
13
= 4 + 3 - 1 = 6
1 5 3 s
5
13
= 9 + 8 - 1 = 16
1 6 3 s
6
13
= 1 + 6 - 1 = 6
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
3 6 2 s
6
32
= 6 + 2 - 5 = 3
2 4 1 s
4
21
= 9 + 4 - 2 = 11
2 5 1 s
5
21
= 7 + 9 - 2 = 14
2 6 1 s
6
21
= 2 + 1 - 2 = 1

80
Como o menor custo de insero s
6
21
, ento a cidade 6 deve ser inserida entre as cidades
2 e 1. Logo, a subrota corrente passa a ser: s = (1 3 2 6). A distncia associada
a essa subrota : d(s) = d(s)
anterior
+ s
6
21
= 8 + 1 = 9.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero entre
todas as cidades i e j da subrota corrente. A tabela a seguir mostra os custos de insero.
i k j s
k
ij
= d
ik
+ d
kj
d
ij
1 4 3 s
4
13
= 4 + 3 - 1 = 6

1 5 3 s
5
13
= 9 + 8 - 1 = 16
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
2 4 6 s
4
26
= 9 + 5 - 2 = 12
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 4 1 s
4
61
= 5 + 4 - 1 = 8
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
4
13
, ento a cidade 4 deve ser inserida entre as cidades
1 e 3. Logo, a subrota corrente passa a ser: s = (1 4 3 2 6). A distncia
associada a essa subrota : d(s) = d(s)
anterior
+ s
4
13
= 9 + 6 = 15.
v) Passo 5: A nica cidade ainda no visitada a cidade 5. A tabela a seguir mostra os
custos de insero dessa cidade entre todas as arestas da subrota corrente.
i k j s
k
ij
= d
ik
+ d
kj
d
ij
1 5 4 s
5
14
= 9 + 2 - 4 = 7

4 5 3 s
5
43
= 2 + 8 - 3 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 10
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
5
14
, ento a cidade 5 deve ser inserida entre as cidades
1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A distncia associada a
essa rota : d(s) = d(s)
anterior
+ s
5
14
= 15 + 7 = 22.
5.3.2 Heursticas de Renamento
Uma heurstica de renamento consiste em promover modicaes em uma soluo de forma
a tentar melhor-la. Elas so baseadas na noo de vizinhana. Mais especicamente, seja S
o espao de busca de um problema de otimizao e f a funo objetivo a otimizar (minimizar
ou maximizar). A funo N, a qual depende do problema considerado, associa a cada soluo
s S sua vizinhana N(S) S. Cada soluo s

N(s) chamada de vizinho de s.


Denomina-se movimento a modicao m que transforma uma soluo s em outra, s

, que
esteja em sua vizinhana. Representa-se essa operao por s

s m.
Em linhas gerais, nesta classe de heursticas parte-se de uma soluo inicial qualquer (a qual
pode ser obtida por uma heurstica construtiva ou ento gerada aleatoriamente) e caminha-se,
a cada iterao, de vizinho para vizinho de acordo com a denio de vizinhana adotada.
No caso do PCV, um movimento m pode ser a troca entre duas posies no vetor s. Assim,
se s = (4 3 1 2)
t
, ento, com este tipo de movimento, so seus vizinhos as seguintes solues:
s

1
= (3 4 1 2)
t
, s

2
= (1 3 4 2)
t
, s

3
= (2 3 1 4)
t
, s

4
= (4 1 3 2)
t
, s

5
= (4 2 1 3)
t
81
e s

6
= (4 3 2 1)
t
. No caso de o movimento m ser a realocao de uma cidade em outra
posio na sequncia, os vizinhos de s sero: s

1
= (3 4 1 2)
t
, s

2
= (3 1 4 2)
t
, s

3
= (4 1 3 2)
t
,
s

4
= (4 1 2 3)
t
, s

5
= (4 3 2 1)
t
. H outros movimentos mais elaborados, tal como o movimento
Or, que consiste em realocar um bloco contguo de cidades em outra posio da sequncia.
No exemplo considerado, considerando blocos de tamanho 2, teramos os seguintes vizinhos:
s

1
= (1 4 3 2)
t
, s

2
= (4 2 3 1)
t
, s

3
= (4 1 2 3)
t
. Neste exemplo, o primeiro vizinho gerado
pela insero do bloco (4 3) entre as cidades 1 e 2; o segundo vizinho, pela insero do bloco
(3 1) entre as cidades 2 e 4 e, nalmente, o terceiro vizinho, pela insero do bloco (1 2) entre
as cidades 4 e 3.
Uma heurstica clssica de renamento o Mtodo da Descida (Descent Method) - no caso
de o problema ser de minimizao - ou Mtodo da Subida (Hill climbing Method)- no caso de
o problema ser de maximizao. Nesse mtodo parte-se de uma soluo inicial qualquer e a
cada passo so analisados todos os seus possveis vizinhos, movendo-se somente para aquele
que representar uma melhora no valor atual da funo de avaliao. Desta forma, o mtodo
pra quando um timo local, com relao vizinhana utilizada, encontrado.
Uma variante do mtodo da Descida/Subida o Mtodo de Primeira Melhora (First Improve-
ment Method). Nesse mtodo, interrompe-se a explorao da vizinhana quando um vizinho
melhor encontrado. Desta forma, apenas no pior caso, toda a vizinhana explorada. En-
tretanto, tal como no mtodo da descida/subida, este mtodo tambm ca preso no primeiro
timo local encontrado.
Outro mtodo alternativo, que evita essa pesquisa exaustiva o Mtodo de Descida/Subida
Randmica (Random Descent/Uphill Method). Ele consiste em analisar um vizinho qualquer e
o aceitar somente se ele for estritamente melhor que a soluo corrente; no o sendo, a soluo
corrente permanece inalterada e outro vizinho gerado. O procedimento interrompido aps
um nmero xo de iteraes sem melhora no valor da melhor soluo obtida at ento. Como
nesse mtodo no feita a explorao de toda a vizinhana da soluo corrente, no h
garantia de que a soluo nal seja um timo local com relao vizinhana adotada.
Na Figura 6 mostra-se o pseudocdigo do Mtodo Randmico de Descida aplicado ao re-
namento de uma soluo s em um problema de minimizao de uma funo f(.), utilizando
uma estrutura de vizinhana N(.). Nesta gura, IterMax representa o nmero mximo de
iteraes sem melhora no valor da funo de avaliao.
procedimento DescidaRandomica(f(.), N(.), IterMax, s);
1 Iter 0; {Contador de iteraes sem melhora }
2 enquanto (Iter < IterMax) faa
3 Iter Iter + 1;
4 Selecione aleatoriamente s

N(s);
5 se (f(s

) < f(s)) ento


6 Iter 0;
7 s s

;
8 m-se;
9 m-enquanto;
10 Retorne s;
m DescidaRandomica;
Figura 6: Mtodo de Descida Randmica
82
5.4 Variantes do PCV
5.4.1 Problema dos m-Caixeiros Viajantes
Nesta variante do PCV h m Caixeiros e se deseja minimizar a distncia total percorrida por
todos eles. Considere os seguintes parmetros de entrada:
Cidades : Conjunto das cidades
d
ij
: Distncia da cidade i cidade j
n : Cardinalidade do conjunto de cidades, isto , n = [Cidades[
m : Nmero de Caixeiros Viajantes
(a) Variveis de deciso:
x
ij
varivel binria que assume valor 1 se o arco (i, j) for utilizado e 0, caso contrrio
f
ij
quantidade de uxo enviada da cidade i para a cidade j
(b) Funo objetivo:
min

iCidades

jCidades
d
ij
x
ij
(c) Restries:
c.1) cada cidade k, exceto a origem (cidade de ndice 1), s chega um arco:

iCidades
x
ik
= 1 k Cidades [ k ,= 1
c.2) De cada cidade k, exceto a origem (cidade de ndice 1), s sai um arco:

jCidades
x
kj
= 1 k Cidades [ k ,= 1
c.3) Da cidade origem saem m arcos:

jCidades
x
1j
= m
c.4) cidade origem chegam m arcos:

iCidades
x
i1
= m
c.5) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade k menos
o que sai de k igual a 1:

iCidades
f
ik


jCidades
f
kj
= 1 k Cidades [ k ,= 1
c.6) O uxo mximo que passa em um arco usado no percurso inferior a n m, onde n o
nmero de cidades e m o nmero de caixeiros:
f
ij
(n m)x
ij
i Cidades, j Cidades
c.7) Integralidade e no-negatividade:
x
ij
0, 1 i Cidades, j Cidades
f
ij
0 i Cidades, j Cidades
5.4.2 Problema do Caixeiro Viajante com Coleta Seletiva de Prmios
O Problema do Caixeiro Viajante com Coleta de Prmios (PCVCP), referido na literatura inglesa
como Prize Collecting Traveling Salesman Problem (PCTSP), uma variante do Problema do
83
Caixeiro Viajante. O PCVCP pode ser associado a um caixeiro viajante que coleta um prmio
p
k
, no negativo, em cada cidade k que ele visita e paga uma penalidade
k
para cada cidade k
que no visita, com um custo c
ij
de deslocamento entre as cidades i e j. O problema encontra-se
em minimizar o somatrio dos custos da viagem e penalidades, enquanto inclui na sua rota um
nmero suciente de cidades que o permita coletar um prmio mnimo, p
min
, pr-estabelecido.
O PCVCP foi formulado inicialmente por Egon Balas [2] como um modelo para a programao
da operao diria de uma fbrica que produzia lminas de ao. Por razes que tinham a ver
com o desgaste dos rolos e tambm por outros fatores, a sequncia na ordem do processamento
era essencial. A programao consistia na escolha de um nmero de lminas associadas s suas
ordens de execuo, que satiszessem o limite inferior do peso, e que ordenadas numa sequncia
apropriada, minimizasse a funo de sequncia. As tarefas de escolha das lminas e das opes
disponveis para o seu sequenciamento necessitavam ser resolvidas em conjunto.
Para a modelagem de programao matemtica do PCVCP, sejam os seguintes parmetros de
entrada:
Cidades : Conjunto das cidades
c
ij
: Custo de deslocamento da cidade i cidade j
n : Cardinalidade do conjunto de cidades, isto , n = [Cidades[
p
k
: Prmio coletado por visitar a cidade k

k
: Penalidade paga por no visitar a cidade k
(a) Variveis de deciso:
x
ij
varivel binria que assume valor 1 se o arco (i, j) for utilizado e 0, caso contrrio
f
ij
a quantidade de uxo enviada da cidade i para a cidade j
z
k
varivel binria que assume valor 1 se a cidade k for visitada e 0, caso contrrio
(b) Funo objetivo:
min

iCidades

jCidades
c
ij
x
ij
+

kCidades

k
(1 z
k
)
(c) Restries:
c.1) cada cidade k visitada s chega um arco:

iCidades
x
ik
= z
k
k Cidades
c.2) De cada cidade k visitada s sai um arco:

jCidades
x
kj
= z
k
k Cidades
c.3) O prmio mnimo p
min
deve ser coletado:

kCidades
p
k
z
k
p
min
c.4) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade k menos
o que sai de k igual a 1 se a cidade k for visitada e 0, caso contrrio:

iCidades
f
ik


jCidades
f
kj
= z
k
k Cidades [ k ,= 1
c.5) O uxo mximo que passa em um arco usado no percurso inferior a n 1, sendo n o
nmero de cidades:
f
ij
(n 1)x
ij
i Cidades, j Cidades
84
c.6) Integralidade e no-negatividade:
x
ij
0, 1 i Cidades, j Cidades
f
ij
0 i Cidades, j Cidades
z
k
0, 1 k Cidades
6 Problema de Roteamento de Veculos
6.1 Denio
Seja um conjunto de consumidores 1, 2, , n e uma frota ilimitada de veculos sediada em
um nico depsito 0. Para cada par (i, j) dado o custo de ligao c
ij
. No problema bsico de
roteamento de veculos, a frota homognea, isto , os veculos tm a mesma capacidade (cap).
O PRV consiste em encontrar as rotas de custo mnimo para os veculos satisfazendo as seguintes
condies:
i) Toda rota comea e termina no depsito
ii) A demanda q
k
de todos os consumidores deve ser atendida
iii) Em toda rota, a demanda q
k
atendida no pode ultrapassar a capacidade cap do veculo
6.2 Modelagem de Programao Matemtica
Considere os seguintes parmetros de entrada:
V : Conjunto dos consumidores e o depsito, isto , V = 0, 1, 2, , n
c
ij
: Custo de ligao entre os elementos i e j de V
q
k
: Demanda do consumidor k. No caso do depsito, tem-se q
0
= 0
cap : Capacidade de cada veculo
(a) Variveis de deciso:
x
ij
varivel binria que assume valor 1 se o arco (i, j) for utilizado e 0, caso contrrio
f
ij
a quantidade de uxo enviada do n i para o n j
(b) Funo objetivo:
min

iV

jV
c
ij
x
ij
(c) Restries:
c.1) cada n k, exceto aquele referente ao depsito 0, s chega um arco:

iV
x
ik
= 1 k V, k ,= 0
c.2) De cada n k, exceto aquele referente ao depsito 0, s sai um arco:

jV
x
kj
= 1 k V, k ,= 0
c.3) No depsito 0, o nmero de arcos que saem igual ao nmero de arcos que chegam:

jV
x
0j
=

iV
x
i0
85
c.4) Exceto para o n referente ao depsito, o uxo que chega ao n k menos o que sai de k
igual demanda associada ao k-simo n:

iV
f
ik


jV
f
kj
= q
k
k V [ k ,= 0
c.5) O uxo mximo que passa em um arco usado no percurso inferior a cap:
f
ij
(cap)x
ij
i V, j V
c.6) Integralidade e no-negatividade:
x
ij
0, 1 i V, j V
f
ij
0 i V, j V
Uma formulao de eliminao de subciclos que requer menor quantidade de variveis apre-
sentada a seguir. Estas restries substituem as de uxo apresentadas anteriormente (restries
c.4 e c.5):
u
k
u
i
+ q
k
cap + cap (x
ki
+ x
ik
) (q
k
+ q
i
) x
ki
k V, k ,= 0, i V, i ,= 0, i ,= k
q
k
u
k
cap k V, k ,= 0
u
k
cap (cap q
k
) x
0k
k V, k ,= 0
u
k
q
k
+

iV | i=0
(q
i
x
ik
) k V, k ,= 0
Observamos que 0, nessas expresses, representa o depsito. Assim, no LINGO, devemos alud-
lo a @index(0) ou, simplesmente, ao cliente de ndice 1 (considerando que o mesmo o primeiro
da lista).
A seguir, so apresentados dois modelos LINGO referentes ao PRV, em que V = 0, 1, 2, , n.
O primeiro interfaceia com uma planilha Excel, enquanto no segundo a leitura de dados feita a
partir de um arquivo txt. No primeiro modelo, escreve-se @index(0) para se referenciar ao depsito
(0) e so usadas variveis de uxo para eliminar subciclos. J no segundo modelo, pressupe-se
que o depsito a primeira cidade do conjunto V ; assim, tem ndice 1.
model:
sets:
cidades / @ole(prv.xls,cidades)/: q;
matriz(cidades, cidades): c, ! Matriz de custos;
x, ! x(i, j) = 1 se o arco (i,j) fizer parte da soluo;
f; ! Fluxo de i para j;
endsets
data:
q, cap = @ole(prv.xls,demanda,capVeic);
enddata
[fo] min = @sum(matriz(i,j): c(i,j)*x(i,j));
! De cada cidade k, exceto o depsito, s sai um nico veculo;
@for(cidades(k) | k #NE# @index(0): @sum(cidades(j): x(k,j)) = 1);
! A cada cidade k, exceto o depsito, s chega um nico veculo;
@for(cidades(k) | k #NE# @index(0): @sum(cidades(i): x(i,k)) = 1);
! O nmero de veculos que saem do depsito deve ser igual
ao nmero de veculos que chegam ao depsito;
86
@sum(cidades(j): x(@index(0), j)) = @sum(cidades(i): x(i, @index(0)));
! Ao passar por uma cidade k, exceto o depsito (0), o veculo deve atender a
demanda dessa cidade, i., deve deixar q(k) unidades de produto na cidade k;
@for(cidades(k) | k #ne# @index(0):
@sum(cidades(i): f(i,k)) - @sum(cidades(j): f(k,j) ) = q(k) );
! O fluxo mximo em cada aresta no pode superar a capacidade do veculo;
@for(matriz(i,j): f(i,j) <= (cap)*x(i,j));
! As variveis x so binrias;
@for(matriz(i,j): @bin(x(i,j)));
! Exporta a soluo para o arquivo prv.xls;
data:
@ole(prv.xls,x,fo) = x, fo;
enddata
end
O segundo modelo requer um menor nmero de variveis e utiliza variveis reais u 0 para
eliminar subciclos. Como dito anteriormente, considera-se que o depsito o primeiro elemento
do conjunto V . Alm disso, as distncias entre os elementos de V so calculadas a partir de suas
coordenadas. Nesse modelo, a entrada de dados via arquivo txt.
! Cidades;
Dep A B C D E F G H I J K ~
! Coordenadas x;
30 37 49 52 20 40 21 17 31 52 51 42 ~
! Coordenadas y;
40 52 49 64 26 30 47 63 62 33 21 41 ~
! Demanda dos clientes;
0 14 26 18 26 32 17 27 8 16 15 28 ~
! Capacidade dos veculos;
50
model:
title: Problema de Roteamento de Veculos;
sets:
V / @file(PRV.txt) /: u, q, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
! Leitura dos dados;
data:
coord_x = @file(PRV.txt);
87
coord_y = @file(PRV.txt);
q = @file(PRV.txt);
cap = @file(PRV.txt);
enddata
! Clculo das distncias entre os elementos de V;
@for(V(i):
x(i,i) = 0;
@for(V(j):
d(i,j) = ( (coord_x(j) - coord_x(i))^2 +
(coord_y(j) - coord_y(i))^2 )^(0.5)));
[fo] min = @sum(V(i): @sum(V(j): d(i,j) * x(i,j)));
! A cada cidade k, exceto o depsito, s chega um arco;
@for(V(k) | k #ne# 1:
@sum(V(i): x(i,k)) = 1);
! De cada cidade k, exceto o depsito, s sai um arco;
@for(V(k) | k #ne# 1:
@sum(V(j): x(k,j)) = 1);
! O nmero de veculos que saem do depsito deve ser igual
ao nmero de veculos que chegam ao depsito;
@sum(cidades(j): x(1, j)) = @sum(cidades(i): x(i, 1));
! Restries de eliminao de subciclos;
@for(V(k):
@for(V(i) | i #ne# k #and# i #ne# 1:
u(k) >= u(i) + q(k) - cap + cap*(x(k,i) + x(i,k)) - (q(k) + q(i))*x(k,i)));
@for(V(k) | k #NE# 1:
@bnd(q(k), u(k), cap));
@for(V(k) | k #NE# 1:
u(k) <= cap - (cap - q(k))*x(1,k));
@for(V(k) | k #NE# 1:
u(k) >= q(k) + @sum(V(i) | i #ne# 1: q(i)*x(i,k)));
! As variveis de deciso x so binrias;
@for(V(i):
@for(V(j): @bin(x(i,j))));
end
88
6.3 Gerao de colunas para o PRV
Seja Colunas = 1, 2, , n um conjunto de colunas (rotas) para o PRV e Linhas = 1, 2, , m
um conjunto de clientes a serem visitados (linhas). Seja c
j
o custo da coluna j.
O PRV, nesse caso, consiste em escolher as colunas de tal forma que cada linha seja coberta
por uma nica coluna a custo mnimo.
Para essa modelagem de programao matemtica, conhecida como modelo de particionamento
de conjuntos, sejam os seguintes parmetros de entrada:
Colunas : Conjunto das colunas (rotas)
Linhas : Conjunto das linhas (clientes a serem visitados)
c
j
: Custo da coluna j
a
ij
: Parmetro que assume o valor 1 se o cliente i for atendido pela rota j e 0, c.c.
(a) Variveis de deciso:
x
j
varivel binria que assume valor 1 se a coluna j for utilizada e 0, caso contrrio
(b) Funo objetivo:
min

jColunas
c
j
x
j
(c) Restries:
c.1) Cada linha i coberta por uma nica coluna j:

jColunas
a
ij
x
j
= 1 i Linhas
c.2) Integralidade e no-negatividade:
x
j
0, 1 j Colunas
Segue um pequeno exemplo com 8 clientes e 6 possveis rotas.
Rotas
Clientes 1 2 3 4 5 6
1 1 0 0 0 0 0
2 1 0 0 0 0 0
3 1 0 0 0 0 0
4 0 1 0 0 1 0
5 0 1 0 0 0 1
6 0 0 1 0 1 0
7 0 0 1 0 0 1
8 0 0 0 1 1 0
Custo 100 50 70 60 80 40
Nesse exemplo, a rota 1 atende aos clientes 1, 2 e 3 ao custo de 100 unidades monetrias. J
a rota 2 atende aos clientes 4 e 5 ao custo de 50 u.m.
Observe que na soluo de particionamento de conjuntos, cada linha deve ser coberta por uma
nica coluna. Assim, por exemplo, o cliente 4 no pode ser atendido conjuntamente pelas rotas 2
e 4.
Uma soluo para esse exemplo : x
(1)
= (1 1 1 1 0 0)
t
, cujo custo f(x
(1)
) = 100 + 50 + 70 +
60 = 280. Nesse vetor x
(1)
fazem parte da soluo as colunas 1, 2, 3 e 4. Outra possvel soluo :
x
(2)
= (1 0 0 0 1 1)
t
, cujo custo f(x
(2)
) = 100 +80 +40 = 220. Essa segunda soluo composta
pelas colunas 1, 5 e 6. O que se deseja determinar quais colunas fazem parte da soluo tima.
89
O PRV tambm pode ser modelado como um problema de recobrimento de conjuntos, conhe-
cido na literatura inglesa como Set Covering Problem. Neste caso, cada cliente deve ser coberto
por pelo menos uma rota (coluna). O modelo de programao matemtica correspondente :
(a) Variveis de deciso:
x
j
varivel binria que assume valor 1 se a coluna j for utilizada e 0, caso contrrio
(b) Funo objetivo:
min

jColunas
c
j
x
j
(c) Restries:
c.1) Cada linha i coberta por pelo menos uma coluna j:

jColunas
a
ij
x
j
1 i Linhas
c.2) Integralidade e no-negatividade:
x
j
0, 1 j Colunas
Nesta ltima modelagem, se um cliente porventura for visitado (coberto) por mais de uma
rota, ento, na soluo nal, deve-se escolher sua ocorrncia em apenas uma das rotas e elimin-lo
das demais.
6.4 Modelos Heursticos para o PRV
6.4.1 Heursticas Construtivas
(a) Adaptao da Heurstica do Vizinho Mais Prximo ao PRV
Nesta heurstica, a ideia comear com um veculo no depsito e ir para o cliente mais prximo
que ainda possa ser visitado sem desrespeitar as restries do problema. Caso o veculo no
possa atender mais clientes, deve-se retornar ao depsito e recomear o procedimento com
outro veculo. O procedimento pra quando todos os clientes forem atendidos.
Exemplo: Considere a matriz de custos a seguir, onde o depsito referenciado pelo nmero
0, e as demandas de cada uma das 5 cidades. Sabendo que os veculos tm 20 unidades de
capacidade, determine as rotas de custo mnimo para os veculos.
Cliente 0 1 2 3 4 5 Demanda
0 0 6 7 8 9 10 0
1 6 0 3 2 1 4 5
2 7 3 0 5 3 4 9
3 8 2 5 0 8 1 6
4 9 1 3 8 0 5 4
5 10 4 4 1 5 0 7
Na sequncia de passos a seguir, mostra-se como construir uma soluo para o PRV pela
Heurstica do Vizinho Mais Prximo partindo-se do depsito.
i) Passo 0: Sai-se do depsito com o veculo 1.
90
ii) Passo 1: Adicione a cidade 1 rota do primeiro veculo, j que sua distncia ao depsito
a menor (d
10
= 6 < d
i0
i V ) e a demanda acumulada (5 unidades) menor que a
capacidade do veculo (20 unidades).
iii) Passo 2: Adicione a cidade 4 rota do primeiro veculo, j que sua distncia ltima
cidade visitada (cidade 1) a menor dentre as cidades ainda no visitadas (no caso, as
cidades 2, 3, 4 e 5), e a demanda acumulada (9 unidades) menor que a capacidade do
veculo (20 unidades).
iv) Passo 3: Adicione a cidade 2 rota do primeiro veculo, j que sua distncia ltima
cidade visitada (cidade 4) a menor dentre todas as cidades ainda no visitadas (no caso,
as cidades 2, 3 e 5) e a demanda acumulada (18 unidades) menor que a capacidade do
veculo (20 unidades).
v) Passo 4: A cidade mais prxima cidade 2, dentre as ainda no visitadas (cidades 3 e 5),
a cidade 5. No entanto, a demanda dessa cidade (7 unidades) no pode ser atendida
pelo veculo 1, pois seria ultrapassada a capacidade do veculo 1. Passa-se ento para
a segunda cidade mais prxima, no caso, a cidade 3. Tambm nesse caso sua demanda
(6 unidades) no pode ser atendida pelo veculo 1. Como as cidades no visitadas no
podem ser atendidas pelo veculo 1, retorna-se ao depsito, fechando-se a rota do primeiro
veculo.
vi) Passo 5: Sai-se do depsito com o veculo 2.
vii) Passo 6: Adicione a cidade 3 rota do segundo veculo, j que sua distncia ao depsito a
menor dentre as duas cidades ainda no visitadas (cidades 3 e 5), pois d
03
= 8 < d
05
= 10)
e a demanda acumulada (6 unidades) pode ser atendida.
viii) Passo 7: A nica cidade ainda no visitada a cidade 5. Sua demanda, de 7 unidades,
pode ser atendida pelo veculo corrente, pois a demanda acumulada passa a ser de 13
unidades, que menor que a capacidade do veculo 2 (de 20 unidades).
ix) Passo 8: No h cidades no atendidas. Logo, deve-se retornar ao depsito com o segundo
veculo.
Ao nal desses 8 passos, teremos produzido as seguintes rotas:
Rota 1: s
(1)
= (0 1 4 2). Nesta rota, a distncia percorrida pelo primeiro veculo
dist(s
(1)
) = d
01
+ d
14
+ d
42
+ d
20
= 6 + 1 + 3 + 7 = 17. A carga til do veculo 1 de 18
unidades, ou 90% de sua capacidade.
Rota 2: s
(1)
= (0 1 4 2). Nesta rota, a distncia percorrida pelo segundo veculo
dist(s
(2)
) = d
03
+ d
35
+ d
50
= 8 + 1 + 10 = 19. A carga til do veculo 2 de 13 unidades, ou
65% de sua capacidade.
O nmero de veculos utilizados , portanto, 2 e a distncia total percorrida por eles dist =
dist(s
(1)
) + dist(s
(2)
) = 17 + 19 = 36 unidades de distncia.
(b) Heurstica de Clarke e Wright
Este mtodo comea com um veculo atendendo um cliente e retornando ao depsito. A gura
a seguir ilustra essa situao, onde se mostram duas rotas, uma atendendo a cidade i e a outra
cidade j.
91
A seguir, so feitas todas as possveis combinaes entre duas rotas de modo que um veculo
possa ser eliminado e a distncia de viagem, reduzida. Isto , deve ser calculada a economia
s
ij
entre todos os pares (i, j) de cidades onde i uma cidade da extremidade de uma rota e j
uma extremidade de uma outra rota, conforme equao a seguir.
s
ij
= d
i0
+ d
0j
d
ij
A gura seguinte ilustra a juno das duas rotas, uma envolvendo a cidade i e a outra, a
cidade j.
importante observar que as combinaes de rotas so feitas apenas entre as cidades das
extremidades das rotas. Alm disso, s podem ser combinadas rotas que atendam s restries
de capacidade dos veculos envolvidos (e outras restries porventura existentes, como por
exemplo, janelas de tempo).
Calculadas todas as possveis combinaes (tarefa que executada uma nica vez), reali-
zada aquela combinao que produz a maior economia possvel satisfazendo, naturalmente, as
restries estabelecidas.
Exemplo: Resolva o exemplo anterior pela Heurstica de Clarke e Wright.
1
a
Iterao:
Inicialmente, alocamos um veculo para atender cada um dos clientes. A distncia total
percorrida :
dist = d
01
+d
10
+d
02
+d
20
+d
03
+d
30
+d
04
+d
40
+d
05
+d
50
= 6+6+7+7+8+8+9+9+10+10 = 80.
Nmero de veculos = 5.
92
i j d
i0
d
0j
d
ij
s
ij
= d
i0
+ d
0j
d
ij
Demanda acumulada
1 2 6 7 3 s
12
= 6 + 7 - 3 = 10 14
1 3 6 8 2 s
13
= 6 + 8 - 2 = 12 11
1 4 6 9 1 s
14
= 6 + 9 - 1 = 14 9
1 5 6 10 4 s
15
= 6 + 10 - 4 = 12 12
2 3 7 8 5 s
23
= 7 + 8 - 5 = 10 15
2 4 7 9 3 s
24
= 7 + 9 - 3 = 13 13
2 5 7 10 4 s
25
= 7 + 10 - 4 = 13 16
3 4 8 9 8 s
34
= 8 + 9 - 8 = 9 10
3 5 8 10 1 s
35
= 8 + 10 - 1 = 17

13
4 5 9 10 5 s
45
= 9 + 10 - 5 = 14 11

Maior economia
Como s
35
= maxs
ij
(i, j) e a soma das demandas das rotas envolvendo os clientes 3 e 5
no supera a capacidade de um veculo, devemos combinar essas duas rotas. A distncia total
percorrida :
dist = dist s
35
= 80 17 = 63.
Nmero de veculos: 4
2
a
Iterao:
Atualizemos o quadro anterior apenas com relao s demandas acumuladas, j que as eco-
nomias sero as mesmas.
i j d
i0
d
0j
d
ij
s
ij
= d
i0
+ d
0j
d
ij
Demanda acumulada
1 2 6 7 3 s
12
= 6 + 7 - 3 = 10 14
1 3 6 8 2 s
13
= 6 + 8 - 2 = 12 18
1 4 6 9 1 s
14
= 6 + 9 - 1 = 14

9
1 5 6 10 4 s
15
= 6 + 10 - 4 = 12 18
2 3 7 8 5 s
23
= 7 + 8 - 5 = 10 22
2 4 7 9 3 s
24
= 7 + 9 - 3 = 13 13
2 5 7 10 4 s
25
= 7 + 10 - 4 = 13 22
3 4 8 9 8 s
34
= 8 + 9 - 8 = 9 17
4 5 9 10 5 s
45
= 9 + 10 - 5 = 14 17

Maior economia
Como s
14
= maxs
ij
(i, j) e a soma das demandas das rotas envolvendo os clientes 1 e 4
no supera a capacidade de um veculo (que de 20 unidades), devemos combinar as rotas
envolvendo os clientes 1 e 4. A distncia total percorrida :
dist = dist s
14
= 63 14 = 49.
Nmero de veculos: 3
3
a
Iterao:
Igualmente, atualizemos o quadro anterior apenas com relao s demandas acumuladas, j
que as economias sero as mesmas.
i j d
i0
d
0j
d
ij
s
ij
= d
i0
+ d
0j
d
ij
Demanda acumulada
1 2 6 7 3 s
12
= 6 + 7 - 3 = 10 18
1 3 6 8 2 s
13
= 6 + 8 - 2 = 12 22
1 5 6 10 4 s
15
= 6 + 10 - 4 = 12 22
2 3 7 8 5 s
23
= 7 + 8 - 5 = 10 22
2 4 7 9 3 s
24
= 7 + 9 - 3 = 13

18
2 5 7 10 4 s
25
= 7 + 10 - 4 = 13 22
3 4 8 9 8 s
34
= 8 + 9 - 8 = 9 22
4 5 9 10 5 s
45
= 9 + 10 - 5 = 14 22
93

Maior economia
Como s
24
= maxs
ij
(i, j) e a soma das demandas das rotas envolvendo os clientes 2 e 4
no supera a capacidade de um veculo (que de 20 unidades), devemos combinar as rotas
envolvendo os clientes 1 e 4. A distncia total percorrida :
dist = dist s
24
= 49 13 = 36.
Nmero de veculos: 2
4
a
Iterao:
Atualizemos o quadro anterior com relao s demandas acumuladas, eliminando as combina-
es j efetuadas, bem como aquelas que no tm as cidades i e j nas extremidades das rotas
(no caso, as combinaes envolvendo as cidades 1 e 2, 2 e 4, 3 e 4, e 4 e 5).
i j d
i0
d
0j
d
ij
s
ij
= d
i0
+ d
0j
d
ij
Demanda acumulada
1 3 6 8 2 s
13
= 6 + 8 - 2 = 12 31
1 5 6 10 4 s
15
= 6 + 10 - 4 = 12 31
2 3 7 8 5 s
23
= 7 + 8 - 5 = 10 31
2 5 7 10 4 s
25
= 7 + 10 - 4 = 13 31
Como todas as combinaes de duas rotas resulta em uma rota invivel, pois a demanda
acumulada supera a capacidade de um veculo, o mtodo pra e retorna como soluo nal as
rotas:
Rota 1: 0 1 4 2 0
Rota 2: 0 3 5 0
Distncia total = 36
Nmero de veculos utilizados: 2
Tal como anteriormente, podem ser calculadas as taxas de utilizao de cada veculo, as quais,
no caso, so as mesmas da soluo gerada pela Heurstica do Vizinho Mais Prximo.
6.4.2 Heursticas de renamento
As heursticas de renamento clssicas do PRV so baseadas em movimentos envolvendo troca
(exchange ou swap) e realocao (insertion ou shift) de clientes em uma mesma rota ou em rotas
distintas.
Comentemos o funcionamento dessas heursticas. Dada uma soluo inicial s, obtida por
uma heurstica construtiva, so analisados todos os vizinhos possveis usando-se o movimento de
realocao (ou troca), inicialmente com realocaes (trocas) intra-rotas e depois com realocaes
(trocas) inter-rotas. Se o melhor vizinho s

for melhor que a soluo corrente s ento s

passa a
ser a nova soluo corrente, isto , s s

e o procedimento continua a partir de s ; caso contrrio,


o procedimento retorna s como soluo tima local.
7 Enumerao Implcita em Programao Inteira 0-1
[Baseado no livro [5], dos professores Nelson Maculan Filho e Mrcia Costa Fampa da UFRJ]
Seja:
(P): min z =
n

j=1
c
j
x
j
(1)
n

j=1
a
ij
x
j
b
i
i = 1, 2, , m (2)
x
j
0, 1 j = 1, 2, , n (3)
94
onde c
j
, a
ij
, b
i
R
Sem perda de generalidade, podemos sempre supor c
j
0 j = 1, 2, , n, pois no caso de
existir k tal que c
k
< 0, basta criar uma varivel y
k
0, 1 tal que x
k
= 1 y
k
. Com essa
mudana de varivel, a nova funo objetivo passa a ser
n

j=1
j=k
c
j
x
j
c
k
x
k
+c
k
. Assim, teremos que
minimizar z c
k
=
n

j=1
j=k
c
j
x
j
c
k
y
k
. Logo, a seguinte hiptese assumida ao longo desta seo:
Hiptese: c
j
0 j = 1, 2, , n
Denimos tambm c = (c
1
c
2
c
n
), b
t
= (b
1
b
2
b
m
), x
t
= (x
1
x
2
x
n
) e A = (a
ij
)
mn
uma matriz com m linhas e n colunas.
O problema (P) poder ser escrito tambm da seguinte maneira:
(P): min z = cx (4)
Ax b (5)
x 0, 1
n
(6)
Uma soluo de (3) ou (6) ser representada por x
p
= (x
p
1
x
p
2
x
p
n
)
t
, ou tambm pelo
conjunto J
p
= j [ x
j
= 1.
Exemplo: Para x
7
= (0 1 1 1 0 0 1 1)
t
tem-se J
7
= 2, 3, 4, 7, 8.
Uma soluo x
q
dita descendente de x
p
se J
p
J
q
. Exemplo: a soluo x
q
= (1 1 1 0 1 1)
t

descendente da soluo x
p
= (0 0 1 0 1 1)
t
.
Em alguns problemas, certas variveis devem ser xadas a priori para que possamos satisfazer
as desigualdades de (2). Exemplos:
3x
1
+ 7x
2
+ 2x
3
+ x
4
5 implica que x
2
= 0.
2x
1
+ 8x
2
+ x
3
+ x
4
9 implica que x
2
= 1.
No caso em que estas duas restries faam parte de (2), podemos assegurar que o conjunto
de solues viveis vazio.
Propriedade 1 Se x
p
uma soluo de (3) ento

jJ
p
c
j
x
j


jJ
q
c
j
x
j
para todas as solues x
q
descendentes de x
p
.
Demonstrao:
Basta lembrar que c
j
0 j = 1, 2, , n e que J
p
J
q
.
Propriedade 2 Se x
0
= (0 0 0)
t
satisfaz (2), ento x
0
uma soluo tima de (P).
Demonstrao:
Como, por hiptese, c
j
0 e x
j
0, 1 ento z =
n

j=1
c
j
x
j
0. Logo, o valor mnimo de z 0
z = 0, ou seja, o ponto timo (ponto de mnimo) ocorre para x = 0.
Ser apresentado, a seguir, um esquema de enumerao que supe que a soluo inicial x
0
tal
que J
0
= , isto , x
0
= (0 0 0)
t
no satisfaz o conjunto de restries (2). Se esse conjunto
de restries fosse satisfeito, ento x
0
seria timo do problema (P) pela Propriedade 2.
Esquema de Enumerao:
Suponhamos que estejamos na soluo x
p
de (3) e que z seja a melhor soluo vivel de (P)
encontrada at o momento, isto , existe x
q
tal que z =

jJ
q
c
j
x
j
e que x
q
seja vivel de (P). Caso
no tenhamos ainda encontrado uma soluo vivel, colocamos z = +.
95
A partir da soluo x
p
desejamos obter x
q
descendente de x
p
tal que [J
q
[ = [J
p
[ +1 ou, equiva-
lentemente, J
q
= J
p
l, onde l o ndice da varivel que assumir valor unitrio. Consideremos
as seguintes hipteses:
(i) Se x
p
vivel de (P) ento no nos interessa buscar um descendente x
q
de x
p
, pois

jJ
p
c
j
x
j


jJ
q
c
j
x
j
(vide Propriedade 1).
(ii) Se

jJ
p
c
j
x
j
+ c
l
z l , J
p
, isto quer dizer que todas as solues descendentes de x
p
fornecero valores funo objetivo (1) sempre superiores ou iguais a z. Nesse caso, tambm
no nos interessa enumerar os descendentes de x
p
.
(iii) Se existir ndice i tal que:
b
i


jJ
p
a
ij
x
j


jJ
p
mnimo0, a
ij
< 0
ento nunca haver um descendente de x
p
vivel. Assim, tambm no haver interesse em
enumerar os descendentes de x
p
.
Denimos (i), (ii) e (iii) como condies de parada na soluo x
p
.
Quando tivermos parado em x
p
por uma das trs condies, teremos enumerado implicita-
mente todas as solues descendentes de x
p
.
Caso em x
p
no tenhamos nenhuma condio de parada satisfeita, teremos que procurar uma
soluo descendente de x
p
, por exemplo, x
q
, tal que J
q
= J
p
l, onde evidentemente l , J
p
.
Consideremos s
i
= b
i

j=1
a
ij
x
j
e s
i
0 i = 1, 2, , m, isto , a varivel s
i
ser de folga da
restrio i.
Seja s
p
i
= b
i


jJ
p
a
ij
x
j
, isto , s
p
i
representa o valor de s
i
quando x = x
p
.
Em x
p
podemos denir os seguintes conjuntos:
1. A
p
= k [

jJ
p
c
j
x
j
+ c
k
z, k , J
p

2. D
p
= k [ i com s
p
i
< 0, tem-se a
ik
0, k , J
p

3. C
p
= 1, 2, , n (J
p
A
p
D
p
)
Dito de outra forma, o conjunto D
p
pode ser determinado vericando-se quais so as colunas k,
dentre aquelas no pertencentes soluo parcial J
p
, para as quais tm-se coecientes a
ik
maiores
ou iguais a zero em toda a coluna. Para formar o conjunto A
p
necessrio que todas as colunas
k no pertencentes soluo J
p
resultem em piora (ou manuteno) do valor da melhor soluo
encontrada at o momento, no caso, z.
O conjunto C
p
fornecer os ndices das variveis candidatas a tomarem valor igual a 1, isto ,
os ndices l C
p
para formar uma soluo x
q
descendente de x
p
na forma J
q
= J
p
l. Observe
que o conjunto A
p
fornece os ndices das variveis que pioram (ou mantm) o valor da soluo
corrente caso entrem na soluo. J D
p
rene os ndices das variveis cuja entrada produzir
descendentes inviveis. Assim, tanto A
p
quanto D
p
reunem ndices para os quais no vale a pena
incorpor-los soluo.
Seja d
p
j
=
m

i=1
min0, s
p
i
a
ij
x
j
, j C
p
e d
p
l
= max
jC
p
d
p
j
, isto , d
p
l
a menor soma das
inviabilidades. Em outras palavras, cada parcela min0, s
p
i
a
ij
x
j
representa o nvel de inviabi-
lidade existente na restrio i devido a insero da varivel x
j
(com valor igual a 1) na soluo
96
corrente, uma vez que somente os valores negativos de s
p
i
a
ij
x
j
interessam. O somatrio das
inviabilidades de todas as restries devido a insero da varivel que est na coluna j mede o
nvel de inviabilidade devido a esta varivel. Quando se utiliza o mximo dos somatrios, o que
se deseja saber qual a coluna que consegue reduzir a inviabilidade ao menor nvel.
Caso d
p
l
= 0 ento a soluo descendente associada a J
q
= J
p
l ser vivel do problema
(P).
No caso de haver mais de um ndice para o qual d
p
j
= 0, isto ,
L
p
= j C
p
[ d
p
j
= 0
ento o ndice l escolhido para a soluo descendente ser aquele associado a c
l
= min
jL
p
c
j
.
Obviamente, no caso em que nenhuma condio de parada seja vericada, tem-se C
p
,= .
Suponhamos, agora, que em x
q
descendente direto de x
p
, isto , o ltimo a ser desenvolvido a
partir de x
p
, o conjunto C
q
seja vazio, ou ainda uma das trs condies de parada seja satisfeita.
Teremos, ento, de x
q
voltar a x
p
e atualizar C
p
de duas maneiras:
(i) C
p
= C
p
l, onde l tal que J
q
= J
p
l.
(ii) A
p
poder ser modicado caso z tambm o seja, acarretando outra modicao em C
p
.
O retorno de x
q
a x
p
denominado backtracking. A enumerao pra completamente quando
C
0
= . Deve ser observado que z sempre atualizado ao se encontrar uma soluo vivel melhor
que as anteriores. Caso o problema (P) seja vazio, z = no nal da enumerao.
Apresentaremos, a seguir, uma maneira de enumerao implcita nita, isto , nunca enume-
raremos explicitamente a mesma soluo e, assim, a enumerao termina.
Usaremos uma estrutura de pilha proposta por Glover (1965) e Georion (1967). Essa pilha
representa o conjunto dos ndices associados s variveis xadas.
Seja a pilha , para a qual p(j) ser sua j-sima componente tal que:
p(j) > 0 se x
p(j)
= 1
p(j) < 0 se x
p(j)
= 0
Por exemplo, = [3, 2, 7, 4] representa x
3
= 0, x
2
= 1, x
7
= 0, x
4
= 0 com valores xos e
todos os descendentes x
q
dessa soluo no podero ter os ndices 3, 7 e 4 pertencendo a J
q
.
Algoritmo de Balas:
Fase inicial
= ;
Fase 0 (Inicializao)
= ;
z = ;
Fase 1
Se uma das condies de parada for vericada v para a fase 2. No caso de ser a primeira, isto
, est associada a uma soluo vivel x
p
do problema (P), ento neste caso se cx
p
< z far-se-
z = cx
p
e a melhor soluo at o momento x
p
;
Caso contrrio, v para a fase 3;
97
Fase 2
Enquanto o ltimo elemento da pilha for negativo, remov-lo da pilha;
Se a pilha estiver vazia v para a fase 4;
Caso o ltimo elemento da pilha seja positivo, troque seu sinal e v para a fase 1;
Fase 3
Escolha uma varivel x
l
pelo critrio aconselhado, ajunte pilha o elemento l e v para a fase 1;
Fase 4
Pare, soluo tima associada a z;
Se z = +, ento o problema (P) no admite soluo vivel;
Exemplo:
Resolva o modelo de programao linear em variveis 0-1 a seguir pelo Mtodo de Enumerao
Implcita de Balas.
min z = 5x
1
+ 7x
2
+ 10x
3
+ 3x
4
+ x
5
s.a: x
1
+ 3x
2
5x
3
x
4
+ 4x
5
-2
2x
1
6x
2
+ 3x
3
+ 2x
4
2x
5
0
x
2
2x
3
+ x
4
+ x
5
-1
x
1
, x
2
, x
3
, x
4
, x
5
{0,1}
Variveis de folga s
i
:
s
1
= 2 + x
1
3x
2
+ 5x
3
+ x
4
4x
5
0
s
2
= 0 2x
1
+ 6x
2
3x
3
2x
4
+ 2x
5
0
s
3
= 1 + 0x
1
x
2
+ 2x
3
x
4
x
5
0
Iterao inicial:
x
0
= (0 0 0 0 0)
t
, J
0
= , s
0
1
= 2, s
0
2
= 0, s
0
3
= 1. = . Tem-se:
1) x
0
invivel pois s
i
< 0, no caso, tem-se s
0
1
= 2 < 0 e s
0
3
= 1 < 0
2) z = , pois no se conhece uma soluo vivel
3) As duas primeiras condies de parada, (i) e (ii), no so vericadas. Vejamos a terceira:
-2 + 1 + 0 + 5 + 1 + 0 = 5 0
0 + 0 + 6 + 0 + 0 + 2 = 8 0
-1 + 0 + 0 + 2 + 0 + 0 = 1 0
que tambm no vericada. Assim, necessitamos encontrar uma soluo descendente de x
0
.
Para isso, deniremos os seguintes conjuntos:
A
0
= , pois z =
D
0
= 2, 5. Logo, C
0
= 1, 2, 3, 4, 5 (A
0
D
0
J
0
) = 1, 3, 4, isto , as variveis x
1
, x
3
e x
4
so as candidatas a tomarem o valor 1 (apenas uma entre elas o tomar).
Calculemos d
0
j
j C
0
:
d
0
1
= 1 2 1 = 4; d
0
3
= 0 3 + 0 = 3; d
0
4
= 1 2 2 = 5 e d
0
3
= maxd
0
1
, d
0
3
, d
0
4
,
indicando que l = 3 e a varivel x
3
deve assumir o valor 1.
Iterao 1:
J
1
= J
0
3 = 3, s
1
1
= 3, s
1
2
= 3, s
1
3
= 1, e x
1
= (0 0 1 0 0)
t
no vivel de (P), pois
s
i
< 0, no caso, s
1
2
= 3 < 0. = [3]. Como z = e:
3 + 1 + 0 + 1 + 0 = 5 0
-3 + 0 + 6 + 0 + 2 = 5 0
1 + 0 + 0 + 0 + 0 = 1 0
nenhuma das condies de parada foi vericada. Passaremos, ento, a procurar uma soluo des-
98
cendente de x
1
.
A
1
= , pois z = .
D
1
= 1, 4. Logo: C
1
= 1, 2, 3, 4, 5 (1, 4 3) = 2, 5.
d
1
2
= 0 + 0 + 0 = 0, d
1
5
= 1 1 + 0 = 2. Assim sendo, d
1
2
= maxd
1
2
, d
1
5
= 0. Logo, l = 2 e x
2
a nova varivel a assumir valor 1.
Iterao 2:
J
2
= J
1
2 = 3, 2, s
2
1
= 0, s
2
2
= 3, s
2
3
= 0, e x
2
= (0 1 1 0 0)
t
vivel de (P). = [3, 2].
z = cx
2
= c
2
+ c
3
= 7 + 10 = 17. Como z = 17 < z = , ento z deve ser atualizado para
z = 17. A primeira regra de parada satisfeita, indicando que devemos fazer backtracking a partir
da soluo corrente.
Iterao 3: (backtracking)
Com o backtracking, a varivel x
2
assume agora o valor ZERO. Assim = [3, 2]. x
3
= (0 0 1 0 0)
t
descendente de x
1
e no vivel. z = 17. As duas ltimas condies de parada sero aplicadas
no considerando a coluna de dados relativa ao ndice 2, pois x
2
= 0 xo. A segunda condio
de parada no vericada; no entanto, a terceira atendida:
3 + 1 + 1 + 0 = 5 0
-3 + 0 + 0 + 2 = -1 < 0
1 + 0 + 0 + 0 = 1 0
Devemos, portanto, fazer novo backtracking.
Iterao 4: (backtracking)
Com o backtracking, = [3]. A soluo x
4
= (0 0 0 0 0)
t
descendente de x
0
, mas com x
3
= 0
xo. z = 17. As duas primeiras condies de parada no so satisfeitas. Testemos a terceira:
-2 + 1 + 0 + 1 + 0 = 0 0
0 + 0 + 6 + 0 + 2 = 8 0
-1 + 0 + 0 + 0 + 0 = -1 < 0
Como a terceira condio de parada vericada, ento devemos fazer novo backtracking.
Iterao Final: (backtracking)
Com o backtracking, = . Logo, a soluo tima x

= (0 1 1 0 0)
t
, com valor z = 17.
8 Exerccios propostos
(1) Suponha a existncia de cinco diferentes projetos a serem executados e seja x
j
a varivel binria
de deciso tal que x
j
= 1 se o projeto j for selecionado e 0, caso contrrio. Considerando essa
aplicao, qual o signicado das seguintes restries?
(a) x
1
+ x
2
+ x
3
+ x
4
+ x
5
2
(b) x
1
+ x
2
+ x
3
+ x
4
+ x
5
2
(c) x
3
x
1
(d) x
2
+ x
3
+ x
4
x
1
(e) x
2
+ x
3
+ x
4
x
1
99
(2) No problema das p-medianas aparecem as duas restries abaixo:

iFacilidades
x
ij
= 1 j Clientes
x
ij
y
i
i Facilidades, j Clientes
em que Facilidades o conjunto de locais candidatos a sedir uma facilidade; Clientes o con-
junto de clientes; y
i
uma varivel de deciso binria que assume valor unitrio se no local i
for instalada uma facilidade e 0, caso contrrio; e x
ij
uma varivel de deciso binria que vale
1 se o cliente j for atendido pela facilidade instalada no local i e 0, caso contrrio. Qual o
signicado de cada uma dessas restries?
(3) Um editor de uma revista cientca precisa designar um conjunto de artigos cientcos para
serem revisados em uma mesma poca por um conjunto de revisores. Os artigos podem ser
atribudos aos revisores conforme a tabela abaixo, onde uma clula assume valor unitrio
se o revisor considerado um especialista no tema tratado no artigo. Cada artigo deve ser
analisado por, pelo menos, dois revisores. Um revisor, por sua vez, pode analisar um mximo
de 3 artigos. Faa um modelo de programao matemtica para designar os artigos cientcos
aos revisores, de forma que o nmero de revisores necessrios seja mnimo.
Artigo
Revisor 1 2 3 4 5
A 1 0 1 0 0
B 1 0 0 0 1
C 0 1 1 1 1
D 0 1 1 0 0
E 1 0 1 0 0
F 1 0 1 1 0
G 0 1 1 0 1
H 1 0 0 1 0
(4) No incio de cada perodo letivo, toda instituio de ensino tem que resolver o seguinte pro-
blema: Alocar as turmas de disciplinas ao conjunto de salas existentes. Em muitas institui-
es, em geral as particulares, as aulas so divididas em mdulos de dois horrios seguidos;
por exemplo, das 8 s 10 horas um mdulo e das 10 s 12 horas outro mdulo. Uma estra-
tgia de soluo largamente usada para problemas de alocao satisfazendo a esta condio,
consiste em para cada mdulo, resolver um problema de designao (Tambm chamado de
problema de atribuio). Para exemplicar o problema de designao envolvido, considere um
conjunto T de turmas e um conjunto S de salas, como o exemplicado nas tabelas a seguir,
que se referem necessidade de salas para as turmas em um dado mdulo. O problema de
designao consiste, ento, em alocar as turmas s salas, satisfazendo s restries de que
cada turma deve ser alocada a uma nica sala e que em cada sala deve haver apenas uma
nica turma. Fazer um modelo de programao matemtica para alocar as turmas s salas
em um dado horrio. Considere como funo objetivo minimizar a folga na sala, sendo esta
dada pela funo custo c
ij
dada pela tabela abaixo. Nesta funo, quando no h folga na
sala j para alocar a turma i, adicionada uma penalidade de valor 1000. Por exemplo, ao se
alocar a turma 2 na sala 4, a alocao invivel e, assim, a funo custo recebe o valor 990,
correspondente operao (30 - 40) + 1000. Observe, assim, que neste modelo, as alocaes
so sempre possveis, ainda que inviveis.
100
Sala 1 2 3 4 5 6
Capacidade 70 60 45 30 48 50
Turma 1 2 3 4 5
Demanda 28 40 59 63 51
Salas
Turmas 1 2 3 4 5 6
1 42 32 17 2 20 22
2 30 20 5 990 992 10
3 11 1 986 971 989 991
4 7 997 982 967 985 987
5 19 9 994 979 997 999
(5) A Laminao a Frio Ltda. produz bobinas, rolos e tas de ao para estamparia. A empresa
produz bobinas de 1,20 metros de largura e com diversas espessuras, que so armazenadas no
estoque. Quando seus clientes fazem pedidos, as bobinas so retiradas do estoque e cortadas
nas dimenses solicitadas. Conhecendo os pedidos e usando sua experincia, a rea de pla-
nejamento estabelece os chamados padres de corte. Um padro de corte estabelece como
uma bobina deve ser cortada. Nesse caso especco, os padres de corte denidos pela rea
de planejamento so cinco, conforme tabela a seguir.
Largura dos rolos Padres de corte
demandados [cm] Demanda A B C D E
19 10 1 0 0 3 1
36 12 1 0 2 1 0
62 15 1 1 0 0 0
25 31 0 2 0 1 2
48 17 0 0 1 0 1
Por exemplo, o padro de corte A estabelece que para cada bobina de 120 cm, rolos de 19, 36
e 62 cm devem ser criados.
No processo de corte h duas grandes fontes de custos. A primeira referente s perdas com
os cortes e a segunda, sobra de rolos. A demanda frequentemente faz com que sobrem rolos,
os quais devem ser armazenados no estoque para uso futuro. O custo da perda de $1,00/cm
de rolo perdido. O custo da sobra de $0,20/cm para o rolo destinado ao estoque. Pede-se
formular um modelo de programao matemtica que minimize os custos com as perdas com
o corte e com as sobras de rolos.
(6) Uma das prticas recentes de desvio de verbas pblicas tem sido o superfaturamento de ativi-
dades relacionadas limpeza e conservao do patrimnio pblico. Diferentemente das obras,
limpeza de difcil auditoria e, mais importante do que isso, a investigao tem diculdades
de avaliar o servio realizado meses atrs (as obras, por outro lado, podem ser reavaliadas
dcadas depois de terem sido construdas). Para melhorar a situao, a prefeitura da cidade
de So Paulo elaborou uma licitao relativa atividade de limpeza. A licitao subdividiu
o municpio em vrias regies e, para aumentar a transparncia e diminuir a corrupo, es-
tabeleceu que cada licitante pode ganhar a licitao em duas regies, no mximo. Por outro
lado, os licitantes podem fazer suas propostas para quantas regies desejarem. A tabela a
101
seguir apresenta uma amostra das regies e licitantes. Os campos em branco indicam que os
licitantes no apresentaram proposta para a regio porque acharam que o pagamento mximo
era menor do que valia a regio. Os valores da tabela se referem a milhes de reais.
Licitante
Regio A B C D E
Butanta 11 12 13 13 13
Itaquera 20 21 24 22 23
Lapa 9 10 11 12
SantoAmaro 4 5 6 5
Centro 13 14 16
Para a amostra, dena qual o custo mnimo da licitao e qual licitante deve car com qual
regio de modo que o custo da prefeitura seja mnimo.
(7) Foi feita uma licitao para a construo de 4 trechos de uma rodovia. Participaram dessa
licitao as empresas A, B, C e D, cujos preos esto listados na tabela a seguir, por trecho.
Considerando que cada trecho deve ser feito por uma nica construtora e que cada construtora
no pode participar da construo de mais de dois trechos, faa um modelo de programao
matemtica para que se gaste a menor quantidade possvel de recursos na construo desses
trechos de rodovia.
Trecho
Construtora 1 2 3 4
A 500 700 300 200
B 450 1000 450 250
C 650 800 500 320
D 550 950 480 280
(8) Em uma dada empresa, os funcionrios trabalham cinco dias seguidos e folgam os dois seguin-
tes. A necessidade de funcionrios por dia da semana, bem como os custos de cada funcionrio
que inicia sua jornada em um dado dia da semana esto listados na tabela a seguir.
Dia Dom Seg Ter Qua Qui Sex Sab
Nmero requerido 12 20 16 13 16 19 14
Custo ($) 135 100 125 160 160 160 160
O objetivo da empresa reduzir os custos com a contratao de funcionrios. Elabore um
modelo de programao matemtica que minimize os custos com a contratao de funcionrios.
Implemente este modelo em um otimizador e determine quantos funcionrios contratar em
cada dia da semana, bem como o custo total da contratao semanal.
(9) No problema de p-centros, o objetivo localizar p facilidades e designar clientes a facilidades
de modo a minimizar a distncia mxima de clientes a facilidades. Este problema pode ser
formulado como:
102
minimize r (8.83)
sujeito a:

iFacilidades
d
ij
x
ij
r j Clientes (8.84)

iFacilidades
x
ij
= 1 j Clientes (8.85)
x
ij
y
i
i Facilidades, j Clientes (8.86)

iFacilidades
y
i
= p (8.87)
y
i
0, 1 i Facilidades (8.88)
x
ij
0, 1 i Facilidades, j Clientes (8.89)
em que Clientes representa o conjunto de vrtices representando a localizao dos clientes,
Facilidades representa o conjunto de vrtices representando os locais candidatos instalao
de uma facilidade, d
ij
a distncia da facilidade instalada no local i ao cliente localizado em
j, y
i
uma varivel binria que assume valor unitrio se uma facilidade for instalada no local
i, x
ij
uma varivel binria que tem valor unitrio se a facilidade instalada no local i atender
ao cliente do local j.
Dada a tabela a seguir, onde so dadas as coordenadas cartesianas dos locais A, , P, isto
, (coordx, coordy), determine pelo modelo anterior, a localizao tima de p = 2 facilidades
considerando que todos os locais so candidatos instalao de uma facilidade.
Local A B C D E F G H I J K L M N O P
coordx 30 37 49 52 20 40 21 17 31 52 51 42 31 5 12 36
coordy 40 52 49 64 26 30 47 63 62 33 21 41 32 25 42 16
Mostre, tambm, quais os clientes atendidos por cada facilidade, bem como o menor valor que
r assume.
(10) dado um objeto retangular de largura L e comprimento sucientemente grande. A partir
desse objeto, deseja-se gerar uma unidade de vrios itens retangulares de dimenses (h
i
, w
i
),
onde h
i
o comprimento e w
i
L, a largura. Para produzir esses itens faz-se um corte
guilhotinado, isto , um corte que se estende de um lado ao outro do objeto formando uma
faixa. O objetivo minimizar a soma dos comprimentos das faixas.
Para a modelagem apresentada a seguir, considera-se que (1) o primeiro item alocado em cada
faixa (mais esquerda) o de maior altura, (2) que a primeira faixa do objeto (mais baixa)
a mais alta e (3) que os itens so ordenados em forma decrescente em relao altura, isto
, h
1
h
2
h
n
.
Assim, o Open Dimensional Problem guilhotinado pode ser modelado por:
min

iItens
h
i
y
i
y
j
+

iItens | i<j
x
ij
= 1 j Itens

jItens | j>i
w
j
x
ij
(L w
i
) y
i
i Itens
y
i
0, 1 i Itens
x
ij
0, 1 i Itens, j Itens, j < i
103
Neste modelo, x
ij
uma varivel de deciso binria que assume valor unitrio caso o item j
esteja alocado faixa i e y
i
uma varivel binria que vale 1 se o item i inicializa a faixa i.
O primeiro conjunto de restries garante que cada item ser alocado uma nica vez. O
segundo conjunto de restries assegura que o somatrio da largura dos itens alocados em
cada faixa no ultrapassar a largura do objeto. As demais restries denem que as variveis
de deciso so binrias.
Considerando um objeto retangular de largura L = 20 e comprimento sucientemente grande,
e os itens da tabela a seguir, determinar o comprimento mnimo da soma das faixas, quais
itens inicializam cada faixa, bem como os itens alocados a cada faixa.
Item A B C D E F G H I J
altura h
i
15 14 13 11 9 7 6 4 2 1
largura w
i
9 4 10 3 5 11 10 5 8 6
(11) H um conjunto I de agentes, cada qual com capacidade b
i
para processar um conjunto J de
tarefas. Cada tarefa j J s pode ser processada por um nico agente i, demandando dele
a
ij
unidades de recurso. Sabe-se que o custo de alocar o agente i tarefa j c
ij
. Faa um
modelo de otimizao para minimizar o custo total de alocao.
Para ilustrar este problema, conhecido como Problema Generalizado de Atribuio (PGA),
sejam as tabelas 1 e 2. Na Tabela 1 mostra-se a quantidade a
ij
de recursos requeridos para
um agente i executar uma tarefa j, bem como a capacidade b
i
de cada agente.
Tabela 1: Quantidade de recursos demandados pelas tarefas e Capacidade dos agentes
Tarefas
Agente 1 2 3 4 5 Capacidade
A 9 13 17 16 13 15
B 15 12 11 18 19 30
C 11 16 14 13 12 25
A Tabela 2 mostra o custo c
ij
de alocao de um agente i a uma tarefa j.
Tabela 2: Custo de alocao de agentes a tarefas
Tarefas
Agente 1 2 3 4 5
A 4 3 7 6 3
B 5 2 1 8 9
C 1 6 4 3 2
(12) Uma serralheria dispe de barras de 10 m de comprimento que devem ser convenientemente
cortadas em barras menores, nos seguintes tamanhos e quantidades: (a) 30 barras de 3 m; (b)
35 barras de 4 m; (c) 58 barras de 5 m; (d) 51 barras de 6 m; (e) 73 barras de 7 m. Pede-se o
esquema de corte que minimiza a perda total, bem como o excesso de barras menores cortadas.
104
(13) Um analista de sistemas deseja acessar cinco diferentes arquivos espalhados em dez diferentes
discos, como mostrado na Tabela 3. Nesta tabela, cada clula (i, j) com valor 1 indica que o
arquivo i encontra-se no disco j. Por exemplo: no disco 2 podem ser encontrados os arquivos 1,
3 e 5. A capacidade de armazenamento de cada um dos discos, em GB, tambm apresentada
na tabela. Deseja-se determinar o conjunto de discos que contenham todos os arquivos, sem
repetio, de sorte que a capacidade total seja a menor possvel.
Tabela 3: Arquivos por disco e capacidade dos discos
Disco
Arquivo 1 2 3 4 5 6 7 8 9 10
1 1 1 0 1 1 0 0 1 1 0
2 1 0 1 0 0 0 0 0 0 0
3 0 1 0 0 1 0 1 0 0 1
4 0 0 1 0 0 1 0 1 0 0
5 1 1 0 1 0 1 1 0 1 1
Cap. (GB) 30 50 10 20 10 40 30 10 20 20
(14) Uma empresa precisa programar sua produo para o prximo ms. Sabe-se que ela dispe
de uma nica mquina para processar todas as encomendas e que estas podem ser executadas
em qualquer ordem e no h necessidade de preparar a mquina. Determine o atraso mximo,
conhecendo-se o tempo de processamento de cada encomenda (p
i
), em dias, e as datas de
entrega (d
i
) no ms, conforme tabela a seguir.
Tarefa A B C D E F G
p
i
7 4 2 5 6 3 1
d
i
13 10 6 9 3 20 5
Para resolver este problema, utilize a seguinte regra vlida para problemas de sequenciamento
de tarefas em uma mquina: O atraso mximo pode ser obtido, de forma tima, pela heurstica
EDD (Earliest Due Date), isto , sequenciando as tarefas em ordem no-decrescente das datas
de entrega, ou seja, processando as tarefas na sequncia d[1] d[2] d[n], onde [i] indica
a i-sima tarefa e d[i] sua data de entrega.
(15) Uma emissora de TV pretende programar um conjunto de propagandas em vrios intervalos
comerciais, de diferentes duraes, ao longo de um dia. Sabe-se que esto programados m = 50
intervalos ao longo do dia, que cada intervalo i, com i = 1, , 50, dura b
i
segundos, que h
n = 100 propagandas que podem ser inseridas na programao e que cada propaganda j
dura a
j
segundos e traz um retorno de c
ij
unidades monetrias se for inserida no intervalo
i. Considerar que no necessrio inserir todas as propagandas na grade de programao
da emissora e que cada propaganda s ser veiculada uma nica vez. Fazer um modelo de
programao matemtica para a emissora de TV planejar a insero das propagandas de forma
que o retorno nanceiro seja o maior possvel.
(16) Simplique o problema a seguir, justicando sucintamente.
105
maximize 5x
1
+ 3x
2
+ x
3
+ 2x
4
(8.90)
sujeito a: x
1
+ 8x
2
+ 4x
3
+ 2x
4
6 (8.91)
x
1
+ 3x
2
+ x
3
+ 7x
4
8 (8.92)
x
j
0, 1 j = 1, 2, . . . , 4 (8.93)
(17) Transforme o problema de programao linear em variveis 0-1 a seguir, em outro no qual
apenas uma dentre as restries (8.95)-(8.97) esteja ativa e as demais, inativas.
minimize 4x
1
+ 3x
2
+ x
3
+ 2x
4
(8.94)
sujeito a: x
1
+ 3x
2
+ 5x
3
+ 2x
4
7 (8.95)
2x
1
+ 5x
2
+ x
3
+ 3x
4
9 (8.96)
x
1
+ 2x
2
+ 3x
3
+ x
4
10 (8.97)
x
j
0, 1 j = 1, 2, . . . , 4 (8.98)
(18) Transforme o problema no-linear 0-1 seguinte em um problema de programao linear inteira
mista (PLIM):
minimize 4x
1
x
2
x
4
(8.99)
sujeito a: 2x
1
x
3
+ x
2
+ 3x
4
4 (8.100)
x
j
0, 1 j = 1, 2, 3, 4 (8.101)
(19) Resolva pelo mtodo branch-and-bound, com as regras (a) (d), o PLI a seguir. Faa a
rvore de busca e enumere a sequncia de busca.
max 4x
1
+ 5x
2
+ 4x
3
sujeito a: x
1
+ x
2
4
x
2
+ 2x
3
5
2x
1
+ 2x
2
+ 4x
3
15
x
j
Z
+
j = 1, 2, 3
(a) Utilize a variante de Dank para escolher a varivel a ramicar. Em caso de empate nesta
regra, ramique a varivel de menor ndice;
(b) Faa busca em profundidade;
(c) Escolhida a varivel a ramicar, ramique primeiro o valor menor da varivel;
106
Referncias
[1] M. Arenales, V. Armentano, R. Morabito, and H. Yanasse. Pesquisa Operacional para cursos
de Engenharia. Editora Campus, Rio de Janeiro, 2007.
[2] E. Balas. The prize collecting traveling salesman problem. Networks, 19:621636, 1989.
[3] Marco Cesar Goldbarg and Henrique Pacca L. Luna. Otimizao Combinatria e Programao
Linear: modelos e algoritmos. Editora Campus, 2
a
edio, Rio de Janeiro, 2005.
[4] G. Lachtermacher. Pesquisa Operacional na tomada de decises. Editora Campus, 2
a
edio,
Rio de Janeiro, 2004.
[5] N. Maculan and M. H. Costa Fampa. Otimizao Linear. Editora da Universidade de Braslia,
Braslia, 2006.
[6] C. H. Papadimitriou and K. Steiglitz. Combinatorial Optimization: Algorithms and Comple-
xity. Dover Publications, Inc., New York, 1998.
[7] M. J. F. Souza. Programao de Horrios em Escolas: uma aproximao por me-
taheursticas. Tese de doutorado, Programa de Engenharia de Sistemas e Computao,
COPPE, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2000. Disponvel em
www.decom.ufop.br/prof/marcone/Publicacoes/tesemarcone.ps.
[8] Hamdy A. Taha. Pesquisa Operacional. Editora Pearson, 8
a
edio, So Paulo, 2008.

You might also like