Beruflich Dokumente
Kultur Dokumente
c
Departamento de Computao, Universidade Federal de Ouro Preto.
OTIMIZAO COMBINATRIA
Departamento de Computao
Instituto de Cincias Exatas e Biolgicas
Universidade Federal de Ouro Preto
Homepage: http://www.decom.ufop.br/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
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
Parte I
Programao Inteira
1 Introduo
Soluo:
(c) Restries:
x2 40 (No h demanda para mais do que 40 latas de sorvete de creme por dia)
Para resolver esse Problema de Programao Linear Inteira (PLI), construamos gracamente
a regio vivel:
5
x1 = 18, 89
x2 = 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
x1 x1 f (x)
19 2 invivel
18 1 37
19 1 38
18 2 invivel
Soluo:
(c) Restries:
Para fazer um modelo genrico desse PPL, coloquemos os dados em uma tabela e faamos as
seguintes convenes:
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
P
max li xi
Piemb
capi xi ncapitaes
iemb
P
tripi xi ntrips
iemb
xi dispi i emb
xi 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:
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
@for(emb(i): @gin(x(i)));
data:
@ole('caverna.xls','x') = x;
@ole('caverna.xls','fo') = fo;
enddata
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:
(c) Restries:
c.2) Integralidade:
x1 , x2 , x3 , x4 , x5 {0, 1}
P
max p j xj
jitens
P
w j xj cap
jitens
xj {0, 1} j itens
P
max p j xj
jitens
P
w j xj cap
jitens
xj uj j itens
xj Z+ j itens
P P
max pj xij
P jitens
imochilas
wj xij capi i mochilas
jitens
P
xij 1 j itens
imochilas
xij {0, 1} i mochilas , j itens
em que a varivel de deciso xij 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
capi unidades de peso, enquanto o segundo conjunto impede que um mesmo item j seja alocado
a mais de uma mochila.
P P
max pj xij
P jitens
imochilas
wj xij capi i mochilas
jitens
P
xij uj j itens
imochilas
xij Z+ i mochilas , j itens
Neste modelo, xij indica a quantidade de itens j alocados mochila i. Mostra-se, a seguir,
uma implementao LINGO deste problema.
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
data:
@ole('MochilaInteiraMultipla(R).xls','x','fo') = x, fo;
enddata
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.
P
min despi xi
ipadroes
P
aij xi demandaj j bobinas
ipadroes
P
aij xi demandaj + estmax j bobinas
ipadroes
xi Z+ i padroes
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.
P
min perdai xi
ipadroes
P
aij xi demandaj j barras
ipadroes
xi 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.
!
P P P
min perdai xi + dimenbarraj aij xi demandaj
ipadroes jbarras ipadroes
P
aij xi demandaj j barras
ipadroes
xi Z+ i padroes
!
P
Nesta nova funo objetivo, a componente aij xi demandaj indica o excesso de
ipadroes
barras do tipo j geradas. Multiplicando-a por dimenbarraj tem-se o valor da perda, em metros,
devido ao excesso de barras produzidas.
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
@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.
Soluo:
sets:
turnos/@ole('enfermeiros.xls','turnos')/:c, !custo;
x, !soluo;
demanda;!demanda;
endsets
data:
c, demanda = @ole('enfermeiros.xls','custo','demanda');
enddata
18
@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:
(c) Restries:
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 ci o custo sem hora-extra e
di , com hora-extra. Dessa forma, o modelo genrico para este problema pode ser formulado como:
P
min (ci xi + di yi )
iturnos
xi + xi1 + yi2 + yi + yi1 demandai i turnos
yi2 phe (xi + xi1 + yi2 + yi + yi1 ) i turnos
xi , yi Z+ i turnos
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
@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.
Prateleiras p1 p2 p3 p4 p5
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:
(c) Restries:
P P
max ci xij
iP roc
PjP rat
tij xij tpi i P roc
PjP rat
P
tmj xij T otaltm
iP roc jP rat
xij Z+ i P roc, j P rat
22
Soluo:
(c) Restries:
V : Conjunto de ns
capij : Capacidade do arco (i, j)
n : Cardinalidade do conjunto de ns, isto , n = |V |
Soluo:
P P
min dij xij
iV jV
P P
xij xji = 0 i V, i 6= 1 e i 6= n
jV P jV
x1j = 1
jV
P
xin = 1
iV
xij {0, 1} i, j V
Disponibilidade Disponibilidade
Mquina (mquina-hora/ms) Mo-de-obra (homem-hora/ms)
M1 70 MO1 120
M2 20 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 Produtos
Mquinas I II III IV Mo-de-obra I II III IV
M1 5 4 8 9 MO1 2 4 2 8
M2 2 6 0 8 MO2 7 3 0 7
Soluo:
Soluo:
min Cmax
j Jobs
P
xij = 1
i Procs
i Procs
P
tj xij Cmax
jJobs
xij {0, 1} i Procs e j Jobs
27
Soluo:
(c) Restries:
Considere que:
P P
min cprodj xj + ctercj yj
jM odelos jM odelos
P xj + y j demandaj j M odelos
T empM ontj xj T empDispM ont
jM odelos
P
T empAcabj xj T empDispAcab
jM odelos
xj , y j Z+ j M odelos
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
@for(Modelos(j):
[Estoque] x(j) + y(j) >= demanda(j));
@for(Modelos(j):
@gin(x(j));
@gin(y(j)));
! 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 ~
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
Soluo:
Para a formulao de programao matemtica deste problema, sejam os seguintes parmetros
de entrada:
P
min yi (BP1)
iConteineres
P
xij = 1 j Itens (BP2)
iConteineres
P
wj xij capi yi i Conteineres (BP3)
jItens
xij {0, 1} i Conteineres, j Itens (BP4)
yi {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.
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:
Como consequencia da terceira considerao, tem-se que a altura de cada faixa corresponde
altura hi 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:
1 Se o item i inicializa a faixa i
yi =
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:
1 Se o item j estiver alocado na faixa i
xij =
0 Caso contrrio
32
n
P
min hi yi
i=1
j1
P
xij + yj = 1 j = 1, , n
i=1
n
P
wj xij (W wi ) yi i = 1, , n 1
j=i+1
yi {0, 1} i = 1, , n
xij {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.
Soluo:
O problema de programao de horrios em escolas pode ser modelado da seguinte forma:
PP P P
max cikl xijkl (PH1)
iP jT kD lH P
xijkl 1 i P, k D, l H (PH2)
jT
P
xijkl 1 j T, k D, l H (PH3)
P iP
P
xijkl = CHij i P, j T (PH4)
kD lH
P
xijkl q i P, j T, k D (PH5)
lH
xijkl {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 dispikl = 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:
P
xijkl dispikl i P, k D, l H (PH7)
jT
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:
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:
1, se o cliente j atendido pela facilidade localizada em i;
xij =
0, caso contrrio.
1, se a facilidade aberta no local i;
yi =
0, caso contrrio.
PP
min dij xij (LF1)
iI jJ
P
xij = 1 j J (LF2)
iI
xij
P yi i I, j J (LF3)
yi = p (LF4)
iI
xij {0, 1} i I, j J (LF5)
yi {0, 1} i I (LF6)
34
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:
O modelo de programao inteira referente a esse problema pode ser formulado como:
min r P (LF6)
r dij xij j J (LF7)
P iI
xij = 1 j J (LF2)
iI
xij
P yi i I, j J (LF3)
yi = p (LF4)
iI
xij {0, 1} i I, j J (LF5)
yi {0, 1} i I (LF6)
P
qj xij Qi yi i I (LF8)
jJ
35
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.
Critrio - I MI C MC
Peso do Critrio 0 1 5 10 100
Parmetro F e Al2 O3 P P P C He
Critrio MI - MC C -
Considere, ainda, os seguintes pesos para comparar os diversos parmetros de controle entre
si:
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.
P
min (wdtj dtnj + wdtj dtpj )
jparametros
P
(tij tuj )xi 0 j parametros
ipilhas
P
(tij tlj )xi 0 j parametros
ipilhas
P
((tij trj ) xi ) + dtnj dtpj = 0 j parametros
ipilhas
xi Qui i pilhas
P
xi = p
ipilhas
Modelo Lingo
title: MisturaMetas(R).lg4;
sets:
endsets
data:
@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));
! 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)));
! 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:
enddata
(cxoi yi )
P P P
min (custoij xij ) +
iminas jusinas iminas
s.a:
P
xij capi i minas
jusinas
P
xij = demandaj j usinas
iminas
P
yi ( xij )/capi i minas
jusinas
Modelo LINGO
Title: Usinas(R).lg4;
sets:
usinas/@ole('Usinas(R).xls','usinas')/: demanda;
matriz(minas,usinas): custo, x;
endsets
data:
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
data:
enddata
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:
|T |
n X
X
minimizar (cit xit + hit Iit ) (2.1)
i=1 t=1
xi,t + Ii,t1 Iit = di,t i = 1, 2, . . . , n; t = 1, 2, , |T | (2.2)
Xn
ri xit Rt t = 1, 2, , |T | (2.3)
i=1
Iit Z+ i = 1, 2, , n; t = 1, 2, , |T | (2.4)
xit 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 (t 1), 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 xit do
item i produzida no perodo t mais a quantidade em estoque no nal do perodo anterior, Ii,t1 ,
deve ser maior ou igual a dit , ou seja, xit + Ii,t1 dit . Nesta ltima expresso, o termo esquerda
representa, por denio, Iit . Logo, garante-se o atendimento s demandas impondo-se Iit 0 e
inteiro.
(s yt + h It+ )
P
min (DL1)
tT
It = It1 + x!t dt t T , I0 = I|T | = 0 (DL2)
|T |
P
xt dk yt t T (DL3)
k=t
xt 0 t T (DL4)
It 0 t T (DL5)
yt {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 I0 > 0 use esse estoque
inicial para abater demandas no horizonte; portanto, pode-se assumir, sem perda de generalidade,
que I0 = 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 , xt > 0 somente se h produo no perodo t (yt = 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:
Com a introduo destas novas variveis, a formulao anterior modicada para a seguinte:
h It + It )
P
min (s yt + (DL7)
tT
It+ It = +
It1
I!
t1 + xt dt t T , I0+ = I0 = 0 (DL8)
|T |
P
xt dk y t t T (DL9)
k=t
xt 0 t T (DL10)
It+ 0 t T (DL11)
It 0 t T (DL12)
yt {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
P P
min (si yit + hi Iit ) (DL14)
iN tT
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 xit > 0 se e somente se yit = 1. O
limitante Mit 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.
r1 (x1 , x2 , , xn ) b1 (2.6)
r2 (x1 , x2 , , xn ) b2 (2.7)
Neste caso, basta denir uma varivel binria y tal que se y = 1 ento r1 estar ativa e se
y=0 ento r2 quem estar ativa. Matematicamente, podemos representar isto por:
r1 (x1 , x2 , , xn ) b1 + M (1 y) (2.8)
r2 (x1 , x2 , , xn ) b2 + M y (2.9)
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 4x1 + 2x2 = 80, a qual geradora do semi-espao denido pela
restrio (2.10). Explicitando x2 dessa equao e simplicando, tem-se: 2x2 = 80 4x1 . 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 2x1 + 5x2 100, eliminando alguns pontos do espao de
solues viveis. Assim, precisamos determinar o valor de M tal que2x2 = 80 + M 4x1 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 max{120, 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:
Se tivermos m restries r1 (x) b1 , r2 (x) b2 , , rm (x) bm e apenas uma delas deve estar
ativa ao mesmo tempo, ento criamos m variveis binrias yi e escrevemos:
46
r1 (x1 , x2 , , xn ) b1 + M (1 y1 ) (2.14)
r2 (x1 , x2 , , xn ) b2 + M (1 y2 ) (2.15)
.
.
. (2.16)
ri (x1 , x2 , , xn ) bi + M (1 yi ) (2.17)
.
.
. (2.18)
rm (x1 , x2 , , xn ) bn + M (1 ym ) (2.19)
y1 + y2 + + yi + + ym = 1 (2.20)
yi {0, 1} i = 1, 2, , m (2.21)
As restries (S1) e (S2) garantem que cada tarefa tem apenas uma tarefa imediatamente
predecessora e uma tarefa imediatamente sucessora, respectivamente. Quando xij = 1 a restrio
(S3) implica que C j C i + pj e se xij = 0, ento Cj Ci M , isto , a restrio (S3) ca
redundante (desativada). As restries (S4) e (S5) indicam o tipo das variveis. Observe que C0
xado em ZERO.
P
min Ci
iN
(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
@for(Tarefas(j):
@sum(Tarefas(i) | i #NE# j: x(i,j)) = 1);
@for(Tarefas(i):
48
@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 7362
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.
min Tmax
Tmax Ti i N
Ti C i di i N
Ti 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] .
P
min Ti
iN
Ti Ci di i N
Ti 0 i N
(S1) - (S5)
P
min (Ti + Ei )
iN
Ti C i di i N
Ei di Ci i N
Ti 0 i N
Ei 0 i N
(S1) - (S5)
P
min yi
iN
Ti C i di i N
Ti M yi i N
Ti 0 i N
yi {0, 1} i N
(S1) - (S5)
min Lmax
Lmax L+i Li i N
Li L
+
i = C i di 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 ).
Se, por outro lado, o tempo de preparao for dependente da sequncia, ento o conjunto de
restries (S3) deve ser substitudo por:
onde sij 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 Cmax , consiste na determinao do tempo total para processar todas
as tarefas, isto , Cmax = max Ci e pode ser formulado como:
iN
min Cmax
Cmax Ci i N
(S1) - (S2) - (S7) - (S4) - (S5)
(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.
(e) Quando uma tarefa j sequenciada imediatamente aps uma tarefa i, sendo estas pertencentes
a diferentes famlias de produtos, necessrio um tempo sij para a preparao da mquina.
Tempos de preparao de mquina nulos (sij = 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.
(g ) As tarefas devem ser nalizadas dentro de uma janela de tempo [ei , ti ], denominada janela de
entrega. Se a tarefa i for nalizada antes de ei ento h um custo de manuteno de estoque.
Caso a tarefa seja nalizada aps ti 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, pi o tempo de
processamento da tarefa i, Ii a data de incio do processamento da tarefa i (Ii 0) e sij 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 p0 e pn+1 so iguais a zero e que s0i = 0 e si,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.
Ij Ii + yij (M + sij ) + pi M i = 0, 1, . . . , n , j = 1, 2, . . . , n + 1 e i 6= j (2.22)
Nesta ltima situao, as restries (2.22) cam desativadas, pois a equao (2.24) redun-
dante, uma vez que a parcela (Ij Ii pi ) 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.
Xn
yij = 1 j = 1, 2, . . . , n + 1 (2.25)
i=0, i6=j
n+1
X
yij = 1 i = 0, 1, . . . , n (2.26)
j=1, j6=i
Sejam ei i, Ei o tempo de antecipao da
a data de incio do perodo de entrega da tarefa
tarefa i , ti a data de trmino do perodo de entrega da tarefa i
e Ti o tempo de atraso da tarefa
i. As restries (2.27) a (2.30) garantem que o tempo de antecipao Ei seja o mximo entre 0 e
ei pi Ii e que o tempo de atraso Ti seja o mximo entre 0 e Ii + pi ti .
Ii + pi + Ei ei i = 1, 2, . . . , n (2.27)
Ii + pi Ti ti i = 1, 2, . . . , n (2.28)
Ei 0 i = 1, 2, . . . , n (2.29)
Ti 0 i = 1, 2, . . . , n (2.30)
n
X
min z = (i Ei + i Ti ) (2.31)
i=1
Resumindo, as variveis de deciso do modelo relativo ao PSUMAA estudado so:
52
yij : varivel binria que determina a sequncia de produo, se yij =1 a tarefa j processada
imediatamente depois da tarefa i e 0 caso contrrio;
Assim, o modelo correspondente de Programao Linear Inteira Mista (PLIM) para o PSU-
MAA dado :
n
X
minimizar z= (i Ei + i Ti ) (2.32)
i=1
sujeito a: Ij Ii yij (M + sij ) pi M i = 0, 1, . . . , n; (2.33)
j = 1, 2, . . . , n + 1 e i 6= j
n+1
X
yij = 1 i = 0, 1, . . . , n (2.34)
j=1, j6=i
Xn
yij = 1 j = 1, 2, . . . , n + 1 (2.35)
i=0, i6=j
Ii + pi + Ei ei i = 1, 2, . . . , n (2.36)
Ii + pi Ti ti i = 1, 2, . . . , n (2.37)
Ii 0 i = 0, 1, . . . , n + 1 (2.38)
Ei 0 i = 1, 2, . . . , n (2.39)
Ti 0 i = 1, 2, . . . , n (2.40)
Cmax : makespan
xik : Varivel binria que assume valor 1 se a tarefa i processada na mquina k e 0, caso
contrrio
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:
A varivel Ti mensura o quanto a tarefa i est atrasada, enquanto Ei indica o quanto est
adiantada em relao data de entrega.
n
X
minimizar (Ti + Ei ) (2.47)
i=1
m X
X n
xijk = 1 j = 1, 2, . . . , n (2.48)
k=1 i=0
X n
x0jk 1 k = 1, , m 1 (2.49)
j=1
n
X Xn
xihk xhjk = 0 h = 1, 2, , n (2.50)
i=0 j=0
i6=h j6=h
k = 1, 2, , m
Cjk Cik M + (sijk + pjk + M )xijk i = 0, 1, , n (2.51)
j = 1, 2, , n
k = 1, 2, , m
Ti Ci di i = 1, , n (2.52)
Ei di C i i = 1, , n (2.53)
Ti 0 i = 1, 2, . . . , n (2.54)
Ei 0 i = 1, 2, . . . , n (2.55)
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 xijk = 1, a restrio (2.51) implica que na mquina
k tem-se Cjk Cik + sijk + pjk e, se xijk = 0, ento Cjk Cik 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.
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:
Assim, o modelo de programao matemtica relativo ao Job Shop pode ser representado por:
n
X
minimizar Cim (2.57)
i=1
Ci,maq1 pi,maq1 i = 1, 2, . . . , n (2.58)
Cik 0 i, j = 1, 2, . . . , n; k = 1, 2, , m (2.62)
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 xijk = 1 ento, de (2.60) e (2.61), tem-se que:
Cjk Cik + pjk e Cik Cjk pik M , isto , o conjunto de restries (2.61) desativado. De
modo anlogo, se xijk = 0 ento Cjk Cik pjk M e Cik Cjk + pik , isto , as restries (2.60)
so desativadas. As restries (2.62) e (2.63) estabelecem o tipo das variveis.
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:
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).
X X
min j dm
j + j+ dm+ + +
j + P + P (2.64)
jS jS
X
s.a: (tij tuj )xi 0 j S (2.65)
iM
X
(tij tlj )xi 0 j S (2.66)
iM
X
(tij trj )xi + dm +
j dmj = 0 j S (2.67)
iM
X
xi P u (2.68)
iM
X
xi P l (2.69)
iM
X
xi + P P + = P r (2.70)
iM
xi 0 i F (2.71)
dmj , dm
+
j 0 j S (2.72)
+
P ,P 0 (2.73)
X X
xi rem xi 0 (2.74)
iE iM
X
yik 1 i F (2.75)
kCarreg
X
yik 1 k Carreg (2.76)
iF
yik {0, 1} i F, k Carreg (2.77)
X
xi Cuk yik 0 i F (2.78)
kCarreg
X
nil Til 60 yik 0 i F, l V (2.79)
kCarreg, complk 6=0
X
nil Til 60 txM axl l V (2.80)
iF
X
xi nil capl = 0 i F (2.81)
lV
nil 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 yik como binrias.
As restries (2.78) limitam o ritmo de lavra mximo em cada frente em funo da produtividade
da carregadeira a ela alocada.
x1 + x2 z1 2 1 = 1
z1 x1
z1 x2
z1 0
x1 + x2 + x3 z2 3 1 = 2
z2 x1
z2 x2
z2 x3
z2 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
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 xj bxj c) ou o ramo associado ao valor maior ou igual ao teto
da varivel (isto , o ramo xj bxj c + 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.
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 2x1 + x2 = z
x1 + 2x2 7
x1 + x2 0
6x1 + 2x2 21
x1 , x2 Z+
62
Para fazer a modelagem de programao matemtica deste problema, sejam os seguintes pa-
rmetros de entrada:
X X
minimizar custoij qtdEnviadaij
ifabricas jarmazens
i fabricas
X
qtdEnviadaij capacidadei
jarmazens
X
qtdEnviadaij = demandaj j armazens
ifabricas
A ltima restrio, que estabelece o domnio das variveis qtdEnviadaij 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:
qtdEnviadaij 0 i f abricas j armazens
O modelo LINGO do Problema de Transporte apresentado a seguir.
63
MODEL:
SETS:
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));
@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
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);
3. @OLE l os campos denidos no Excel, de acordo com a seguinte ordem: da esquerda para
direita e de cima para baixo.
65
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.
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
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.
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
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:
iErr = LINGO.RunScriptRange("modelo")
End If
End Sub
Se o editor Visual Basic no estiver aberto, este pode ser acionado dando-se um duplo clique no
boto Solve. Name CommandButton1. Caso
Os cdigos anteriores supem que a propriedade
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.
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.
5.1 Denio
Dado um conjunto de n cidades e uma matriz de distncias dij 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 n1 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 = d14 + d42 + d25 + d53 + d36 + d61 = 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 dij = dji 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
16
de solues, para n = 20 h 6 10 solues. Supondo que um computador avalie uma soluo
8 8
(rota) em 10 segundos, seriam necessrios 6 10 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.
(c) Restries:
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 (xij = 0) ento o uxo nulo.
! 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
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)));
@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
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.
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 = d13 + d34 + d45 + d56 + d62 + d21 = 1 + 3 + 2 + 2 + 2 + 2 = 12.
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
a1 +anelem
1+(n1)
S= 2
nelem = 2
(n 1) = n(n 1)/2
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 d61 = 1 < d34 = 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 d26 = 2 < d34 = 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 d34 = 3 < d52 = 7, ento a cidade 4 a escolhida e deve ser
conectada cidade 3, isto , a rota corrente : s = (2 6 1 3 4).
Ao nal desses 6 passos, teremos produzido a soluo s = (2 6 1 3 4 5). Para esta soluo,
a distncia total percorrida dist = d26 + d61 + d13 + d34 + d45 + d52 = 2 + 1 + 1 + 3 + 2 + 7 = 16.
79
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.
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, d21 + d32 = 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) = d13 + d32 + d21 = 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.
Como o menor custo de insero s621 , 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 + s621 = 8 + 1 = 9.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero entre
todas as cidades iej da subrota corrente. A tabela a seguir mostra os custos de insero.
Como o menor custo de insero s413 , 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 + s413 = 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.
Como o menor custo de insero s514 , 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
5
essa rota : d(s) = d(s)anterior + s14 = 15 + 7 = 22.
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,
t
se s = (4 3 1 2) , ento, com este tipo de movimento, so seus vizinhos as seguintes solues:
0 0 0 0 0
s1 = (3 4 1 2)t , s2 = (1 3 4 2)t , s3 = (2 3 1 4)t , s4 = (4 1 3 2)t , s5 = (4 2 1 3)t
81
0
e s6 = (4 3 2 1)t . No caso de o movimento m ser a realocao de uma cidade em outra
0 0 0
posio na sequncia, os vizinhos de s sero: s1 = (3 4 1 2)t , s2 = (3 1 4 2)t , s3 = (4 1 3 2)t ,
0 0
s4 = (4 1 2 3)t , s5 = (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:
0 0 0
s1 = (1 4 3 2)t , s2 = (4 2 3 1)t , s3 = (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.
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.
(c) Restries:
c.5) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade k menos
o que sai de
P k igual a 1:
P
fik fkj = 1 k Cidades | k 6= 1
iCidades jCidades
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:
fij (n m)xij i Cidades, j Cidades
c.7) Integralidade e no-negatividade:
xij {0, 1} i Cidades, j Cidades
fij 0 i Cidades, j Cidades
Caixeiro Viajante. O PCVCP pode ser associado a um caixeiro viajante que coleta um prmio
pk , no negativo, em cada cidade k que ele visita e paga uma penalidade k para cada cidade k
que no visita, com um custo cij 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, pmin , 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:
(c) Restries:
c.4) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade k menos
o que sai de
P k igual a 1 se a cidade
P k for visitada e 0, caso contrrio:
fik fkj = zk k Cidades | k 6= 1
iCidades jCidades
c.5) O uxo mximo que passa em um arco usado no percurso inferior a n 1, sendo n o
nmero de cidades:
fij (n 1)xij i Cidades, j Cidades
84
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 cij . 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:
iii) Em toda rota, a demanda qk atendida no pode ultrapassar a capacidade cap do veculo
(c) Restries:
c.1) cada n
P k , exceto aquele referente ao depsito 0, s chega um arco:
xik = 1 k V, k 6= 0
iV
c.2) De cada n
P k , exceto aquele referente ao depsito 0, s sai um arco:
xkj = 1 k V, k 6= 0
jV
c.3) No depsito
P P 0, o nmero de arcos que saem igual ao nmero de arcos que chegam:
x0j = xi0
jV iV
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
P P k -simo n:
fik fkj = qk k V | k =
6 0
iV jV
c.5) O uxo mximo que passa em um arco usado no percurso inferior a cap:
fij (cap)xij i V, j V
c.6) Integralidade e no-negatividade:
xij {0, 1} i V, j V
fij 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):
uk ui + qk cap + cap (xki + xik ) (qk + qi ) xki k V, k 6= 0, i V, i 6= 0, i 6= k
qk uk cap k V, k 6= 0
uk cap (cap
P qk ) x0k k V, k 6= 0
uk qk + (qi xik ) k V, k 6= 0
iV | i6=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
! 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) );
! As variveis x so binrias;
@for(matriz(i,j): @bin(x(i,j)));
end
O segundo modelo requer um menor nmero de variveis e utiliza variveis reais u0 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 ~
model:
title: Problema de Roteamento de Veculos;
sets:
V / @file('PRV.txt') /: u, q, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
coord_y = @file('PRV.txt');
q = @file('PRV.txt');
cap = @file('PRV.txt');
enddata
@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)));
end
88
(c) Restries:
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.
(1)
Uma soluo para esse exemplo : x = (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 :
(c) Restries:
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.
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.
ii) Passo 1: Adicione a cidade 1 rota do primeiro veculo, j que sua distncia ao depsito
a menor (d10 = 6 < di0 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.
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 d03 = 8 < d05 = 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.
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
sij 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.
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.
1a Iterao:
Inicialmente, alocamos um veculo para atender cada um dos clientes. A distncia total
percorrida :
dist = d01 +d10 +d02 +d20 +d03 +d30 +d04 +d40 +d05 +d50 = 6+6+7+7+8+8+9+9+10+10 = 80.
Nmero de veculos = 5.
92
Como s35 = max{sij } (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 s35 = 80 17 = 63.
Nmero de veculos: 4
2a Iterao:
Atualizemos o quadro anterior apenas com relao s demandas acumuladas, j que as eco-
nomias sero as mesmas.
i j di0 d0j dij sij = di0 + d0j dij Demanda acumulada
1 2 6 7 3 s12 = 6 + 7 - 3 = 10 14
1 3 6 8 2 s13 = 6 + 8 - 2 = 12 18
1 4 6 9 1 s14 = 6 + 9 - 1 = 14 9
1 5 6 10 4 s15 = 6 + 10 - 4 = 12 18
2 3 7 8 5 s23 = 7 + 8 - 5 = 10 22
2 4 7 9 3 s24 = 7 + 9 - 3 = 13 13
2 5 7 10 4 s25 = 7 + 10 - 4 = 13 22
3 4 8 9 8 s34 = 8 + 9 - 8 = 9 17
4 5 9 10 5 s45 = 9 + 10 - 5 = 14 17
Maior economia
Como s14 = max{sij } (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 s14 = 63 14 = 49.
Nmero de veculos: 3
3a Iterao:
Igualmente, atualizemos o quadro anterior apenas com relao s demandas acumuladas, j
que as economias sero as mesmas.
Maior economia
Como s24 = max{sij } (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 2 e 4. A distncia total percorrida :
dist = dist s24 = 49 13 = 36.
Nmero de veculos: 2
4a 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).
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: 01420
Rota 2: 0350
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.
[Baseado no livro [5], dos professores Nelson Maculan Filho e Mrcia Costa Fampa da UFRJ]
Seja:
n
P
(P): min z = cj xj (1)
j=1
n
P
aij xj bi i = 1, 2, , m (2)
j=1
xj {0, 1} j = 1, 2, , n (3)
94
onde cj , aij , bi R
Sem perda de generalidade, podemos sempre supor cj 0 j = 1, 2, , n, pois no caso de
existir k tal que ck < 0, basta criar uma varivel yk {0, 1} tal que xk = 1 yk . Com essa
Pn
mudana de varivel, a nova funo objetivo passa a ser cj xj ck xk + ck . Assim, teremos que
j=1
j6=k
n
P
minimizar z ck = cj x j ck y k . Logo, a seguinte hiptese assumida ao longo desta seo:
j=1
j6=k
Hiptese: cj 0 j = 1, 2, , n
Denimos tambm c = (c1 c2 cn ), bt = (b1 b2 bm ), xt = (x1 x2 xn ) e A = (aij )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 xp = (xp1 xp2 xpn )t , ou tambm pelo
conjunto Jp = {j | xj = 1}.
7 t
Exemplo: Para x = (0 1 1 1 0 0 1 1) tem-se J7 = {2, 3, 4, 7, 8}.
q p
Uma soluo x dita descendente de x se Jp Jq . Exemplo: a soluo xq = (1 1 1 0 1 1)t
p t
descendente da soluo x = (0 0 1 0 1 1) .
Em alguns problemas, certas variveis devem ser xadas a priori para que possamos satisfazer
as desigualdades de (2). Exemplos:
3x1 + 7x2 + 2x3 + x4 5 implica que x2 = 0.
2x1 + 8x2 + x3 + x4 9 implica que x2 = 1.
No caso em que estas duas restries faam parte de (2), podemos assegurar que o conjunto
de solues viveis vazio.
Propriedade 1 xp xq
P P
Se uma soluo de (3) ento cj x j cj x j para todas as solues
jJp jJq
descendentes de xp .
Demonstrao:
Basta lembrar que cj 0 j = 1, 2, , n e que Jp Jq .
Demonstrao:
n
P
Como, por hiptese, cj 0 e xj {0, 1} ento z= cj xj 0. Logo, o valor mnimo de z0
j=1
z = 0, ou seja, o ponto timo (ponto de mnimo) ocorre para x = 0.
0
Ser apresentado, a seguir, um esquema de enumerao que supe que a soluo inicial x tal
0 t
que J0 = {}, isto , x = (0 0 0) no satisfaz o conjunto de restries (2). Se esse conjunto
0
de restries fosse satisfeito, ento x seria timo do problema (P) pela Propriedade 2.
Esquema de Enumerao:
Suponhamos que estejamos na soluo xp de (3) e que
P z seja a melhor soluo vivel de (P)
q
encontrada at o momento, isto , existe x tal que z = cj xj e que xq seja vivel de (P). Caso
jJq
no tenhamos ainda encontrado uma soluo vivel, colocamos z = +.
95
p
(i) Se
Px vivelP de (P) ento no nos interessa buscar um descendente xq de xp , pois
cj x j cj xj (vide Propriedade 1).
jJp jJq
xp
P
(ii) Se cj xj + cl z l 6 Jp , isto quer dizer que todas as solues descendentes de
jJp
fornecero valores funo objetivo (1) sempre superiores ou iguais a z. Nesse caso, tambm
p
no nos interessa enumerar os descendentes de x .
P
1. Ap = {k | cj xj + ck z, k 6 Jp }
jJp
3. Cp = {1, 2, , n} (Jp Ap Dp )
Dito de outra forma, o conjunto Dp pode ser determinado vericando-se quais so as colunas k,
dentre aquelas no pertencentes soluo parcial Jp , para as quais tm-se coecientes aik maiores
ou iguais a zero em toda a coluna. Para formar o conjunto Ap necessrio que todas as colunas
k no pertencentes soluo Jp resultem em piora (ou manuteno) do valor da melhor soluo
encontrada at o momento, no caso, z.
O conjuntoCp fornecer os ndices das variveis candidatas a tomarem valor igual a 1, isto ,
q p
os ndices l Cp para formar uma soluo x descendente de x na forma Jq = Jp {l}. Observe
que o conjunto Ap fornece os ndices das variveis que pioram (ou mantm) o valor da soluo
corrente caso entrem na soluo. J Dp rene os ndices das variveis cuja entrada produzir
descendentes inviveis. Assim, tanto Ap quanto Dp reunem ndices para os quais no vale a pena
incorpor-los soluo.
m
p
min{0, spi aij xj }, j Cp e dpl = max{dpj }, isto , dpl a menor soma das
P
Seja dj =
i=1 jCp
p
inviabilidades. Em outras palavras, cada parcela min{0, si aij xj } representa o nvel de inviabi-
lidade existente na restrio i devido a insero da varivel xj (com valor igual a 1) na soluo
96
corrente, uma vez que somente os valores negativos de spi aij xj 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.
p
Caso dl = 0 ento a soluo descendente associada a Jq = Jp {l} ser vivel do problema
(P).
p
No caso de haver mais de um ndice para o qual dj = 0, isto ,
Lp = {j Cp | dpj = 0}
ento o ndice l escolhido para a soluo descendente ser aquele associado a cl = min{cj }.
jLp
Obviamente, no caso em que nenhuma condio de parada seja vericada, tem-se Cp 6= {}.
q p
Suponhamos, agora, que em x descendente direto de x , isto , o ltimo a ser desenvolvido a
p
partir de x , o conjunto Cq seja vazio, ou ainda uma das trs condies de parada seja satisfeita.
q p
Teremos, ento, de x voltar a x e atualizar Cp de duas maneiras:
(ii) Ap poder ser modicado caso z tambm o seja, acarretando outra modicao em Cp .
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
p p
, est associada a uma soluo vivel x do problema (P), ento neste caso se cx < z
far-se-
p p
z = cx e a melhor soluo at o momento x ;
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 xl 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 = 5x1 + 7x2 + 10x3 + 3x4 + x5
s.a: x1 + 3x2 5x3 x4 + 4x5 -2
2x1 6x2 + 3x3 + 2x4 2x5 0
x2 2x3 + x4 + x5 -1
x1 , x2 , x3 , x4 , x5 {0,1}
Variveis de folgasi :
s1 = 2 + x1 3x2 + 5x3 + x4 4x5 0
s2 = 0 2x1 + 6x2 3x3 2x4 + 2x5 0
s3 = 1 + 0x1 x2 + 2x3 x4 x5 0
Iterao inicial:
x0 = (0 0 0 0 0)t , J0 = {}, s01 = 2, s02 = 0, s03 = 1. = . Tem-se:
0 0 0
1) x invivel pois si < 0, no caso, tem-se s1 = 2 < 0 e s3 = 1 < 0
= , pois no se conhece uma soluo vivel
2) z
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 x0 .
Para isso, deniremos os seguintes conjuntos:
A0 = {}, pois z =
D0 = {2, 5}. Logo, C0 = {1, 2, 3, 4, 5} (A0 D0 J0 ) = {1, 3, 4}, isto , as variveis x1 , x3 e x4
so as candidatas a tomarem o valor 1 (apenas uma entre elas o tomar).
0
Calculemos dj j C0 :
d01 = 1 2 1 = 4; d03 = 0 3 + 0 = 3; d04 = 1 2 2 = 5 e d03 = max{d01 , d03 , d04 },
indicando que l = 3 e a varivel x3 deve assumir o valor 1.
Iterao 1:
J1 = J0 {3} = {3}, s11 = 3, s12 = 3, s13 = 1, e x1 = (0 0 1 0 0)t no vivel de (P), pois
si < 0, no caso, s12 = 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 x1 .
A1 = {}, pois z = .
D1 = {1, 4}. Logo: C1 = {1, 2, 3, 4, 5} ({1, 4} {3}) = {2, 5}.
d12 = 0 + 0 + 0 = 0, d15 = 1 1 + 0 = 2. Assim sendo, d12 = max{d12 , d15 } = 0. Logo, l=2 e x2
a nova varivel a assumir valor 1.
Iterao 2:
J2 = J1 {2} = {3, 2}, s21 = 0, s22 = 3, s23 = 0, e x2 = (0 1 1 0 0)t vivel de (P). = [3, 2].
z = cx2 = c2 + c3 = 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 x2 assume agora o valor ZERO. Assim = [3, 2]. x3 = (0 0 1 0 0)t
descendente de x1 e no vivel. z = 17. As duas ltimas condies de parada sero aplicadas
no considerando a coluna de dados relativa ao ndice 2, pois x2 = 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
Iterao 4: ( backtracking )
Com o backtracking, = [3]. A soluo x4 = (0 0 0 0 0)t descendente de x0 , mas com x3 = 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.
8 Exerccios propostos
(1) Suponha a existncia de cinco diferentes projetos a serem executados e seja xj a varivel binria
de deciso tal que xj = 1 se o projeto j for selecionado e 0, caso contrrio. Considerando essa
aplicao, qual o signicado das seguintes restries?
(a) x1 + x2 + x3 + x4 + x5 2
(b) x1 + x 2 + x3 + x4 + x5 2
(c) x3 x1
(d) x2 + x 3 + x4 x1
(e) x2 + x3 + x4 x1
99
xij = 1 j Clientes
X
iFacilidades
em que Facilidades o conjunto de locais candidatos a sedir uma facilidade; Clientes o con-
junto de clientes; yi uma varivel de deciso binria que assume valor unitrio se no local i
for instalada uma facilidade e 0, caso contrrio; e xij 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 cij 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.
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.
minimize r (8.83)
X
sujeito a: dij xij r j Clientes (8.84)
iF acilidades
X
xij = 1 j Clientes (8.85)
iF acilidades
xij yi i F acilidades, j Clientes (8.86)
X
yi = p (8.87)
iF acilidades
yi {0, 1} i F acilidades (8.88)
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.
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
, h1 h2 hn .
Assim, o Open Dimensional Problem guilhotinado pode ser modelado por:
P
min hi yi
iItens
P
yj + xij = 1 j Itens
iItens | i<j
P
wj xij (L wi ) yi i Itens
jItens | j>i
yi {0, 1} i Itens
xij {0, 1} i Itens, j Itens, j < i
103
Neste modelo, xij uma varivel de deciso binria que assume valor unitrio caso o item j
esteja alocado faixa i e yi 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.
Item A B C D E F G H I J
alturahi 15 14 13 11 9 7 6 4 2 1
largura wi 9 4 10 3 5 11 10 5 8 6
(11) H um conjunto I de agentes, cada qual com capacidade bi para processar um conjunto J de
tarefas. Cada tarefa jJ s pode ser processada por um nico agente i, demandando dele
aij unidades de recurso. Sabe-se que o custo de alocar o agente i tarefa j cij . 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 aij de recursos requeridos para
um agente i executar uma tarefa j, bem como a capacidade bi de cada agente.
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
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.
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 (pi ), em dias, e as datas de
entrega (di ) no ms, conforme tabela a seguir.
Tarefa A B C D E F G
pi 7 4 2 5 6 3 1
di 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.
xj {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.
xj {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):
xj {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.
(a) Utilize a variante de Dank para escolher a varivel a ramicar. Em caso de empate nesta
regra, ramique a varivel de menor ndice;
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 a
. Editora Campus, 2 edio, Rio de Janeiro, 2005.
[5] N. Maculan and M. H. Costa Fampa. Otimizao Linear. Editora da Universidade de Braslia,
Braslia, 2006.