Escolar Documentos
Profissional Documentos
Cultura Documentos
Otimizacao Combinatoria
Otimizacao Combinatoria
OTIMIZAO COMBINATRIA
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
Otimizao Combinatria
Sumrio
I
Programao Inteira
1 Introduo
1.1 Caractersticas dos modelos lineares de programao inteira . . . . . . . . . . . . .
4
4
6
6
8
9
10
10
12
13
15
20
22
23
24
26
27
30
30
32
33
33
34
34
35
38
41
42
43
44
44
46
47
48
48
48
49
49
49
50
52
54
Modelagem de PPLs
60
.
.
.
.
.
.
55
58
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
Seletiva de Prmios
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
62
64
65
67
69
73
.
.
.
.
.
.
.
.
74
74
74
77
77
80
82
82
82
.
.
.
.
.
.
84
84
84
88
89
89
93
93
8 Exerccios propostos
98
Parte I
Programao Inteira
1
1.1
Introduo
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:
xj = 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) =
x1
+
1
x2
3
|{z}
|{z}
|{z}
|{z}
$
$
(latas de chocolate)
(latas de creme)
(lata de chocolate)
(lata de creme)
(c) Restries:
c.1) Demanda do mercado:
x1 60 (O mercado no absorve mais do que 60 latas de sorvete de chocolate por dia)
x2 40 (No h demanda para mais do que 40 latas de sorvete de creme por dia)
c.2) Contrato com as lojas:
x1 10 (Exige-se uma produo mnima diria de 10 latas de sorvete de chocolate)
x1 + x2 20 (Exige-se uma produo mnima diria de 20 latas de sorvete)
c.3) Disponibilidade das mquinas:
2x1 + 3x2 180 (H apenas 180 horas de operao disponveis nas mquinas por dia)
c.4) Integralidade e no-negatividade:
x1 , x2 Z+
Para resolver esse Problema de Programao Linear Inteira (PLI), construamos graficamente
a regio vivel:
Fazendo-se a relaxao linear desse problema, isto , desprezando-se as restries de integralidade das variveis e assumindo que as mesmas so no-negativas (x1 0 e x2 0), a soluo
tima desse PPI relaxado :
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
19 2
18 1
19 1
18 2
f (x)
invivel
37
38
invivel
2
2.1
[Retirado de [4]] A Capito Caverna S.A., localizada em Pedra Lascada, aluga 3 tipos de barcos 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:
xi = 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) = 50x1 + 70x2 + 100x3
(c) Restries:
c.1) Nmero de capites:
x1 + x2 + x3 10 (H somente 10 capites)
c.2) Nmero de tripulantes:
x1 + 2x2 + 3x3 18 (H somente 18 tripulantes)
c.3) Quantidade de jangadas:
x1 4 (O nmero de jangadas est limitado a 4)
c.4) Quantidade de supercanoas:
x2 8 (H apenas 8 supercanoas)
c.5) Quantidade de arcas com cabine:
x3 3 (H apenas 3 arcas com cabine disponveis)
7
c.6) Integralidade e no-negatividade:
x1 , x2 , x3 Z+
Para fazer um modelo genrico desse PPL, coloquemos os dados em uma tabela e faamos as
seguintes convenes:
emb
:
li
:
capi
:
tripi
:
dispi
:
ntrips
:
ncapitaes :
Tipo de embarcao
Jangada
Supercanoa
Arca
Funcionrios disp.
# Tripulantes req.
1
2
3
18
# Capites req.
1
1
1
10
# Emb. disp.
4
8
3
Lucro ($)
50
70
100
max
li xi
iemb
P
capi xi
iemb
P
tripi xi
ncapitaes
ntrips
dispi
Z+
iemb
xi
xi
i emb
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
A2:A4
B2:B4
C2:C4
D2:D4
E2:E4
B5
C5
F2:F4
F7
Nome
embarcacoes
capitaes
tripulacoes
disponibilidade
lucro
ncapitaes
ntrips
x
fo
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
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
Peso (Kg) 52
Valor
100
2 3 4 5
23 35 15 7
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:
1, se o item j for colocado na mochila;
xj =
0, caso contrrio.
(b) Funo objetivo:
max f (x) = 100x1 + 60x2 + 70x3 + 15x4 + 8x5
(c) Restries:
c.1) Limite de peso:
52x1 + 23x2 + 35x3 + 15x4 + 7x5 60 (Pode-se carregar 60 Kg, no mximo)
c.2) Integralidade:
x1 , x2 , x3 , x4 , x5 {0, 1}
Considerando a notao a seguir:
itens
cap
wj
pj
:
:
:
:
p j xj
jitens
P
w j xj
cap
{0, 1}
jitens
xj
2.3
j itens
Trata-se de uma extenso do problema anterior, na qual para cada item j existem uj unidades
disponveis. A modelagem de programao inteira deste problema :
max
P
jitens
P
p j xj
w j xj
cap
jitens
xj
xj
uj
Z+
j itens
j itens
10
2.4
Neste problema, alm do conjunto de itens, cada qual com peso wj e valor de retorno pj , h um
conjunto de mochilas, cada qual com capacidade capi . 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
pj xij
imochilas
P jitens
wj xij
jitens
P
xij
capi
i mochilas
j itens
i mochilas , j itens
imochilas
xij
{0, 1}
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.
2.5
Este problema difere do anterior no sentido de que neste problema pode haver mais de uma unidade
de cada item; no caso, h uj unidades disponveis de cada item j.
A modelagem de programao inteira deste problema :
max
pj xij
imochilas
P jitens
wj xij
jitens
P
xij
capi
i mochilas
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.
No arquivo Excel considerado, h a seguinte correspondncia de nomes para os blocos de
clulas:
Bloco de clulas
D5:M5
C11:C13
D6:M6
D7:M7
D11:D13
D8:M8
D20:M22
O26
Nome
Itens
Mochilas
peso
beneficio
capacidade
u
x
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
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.
17,5cm
0
1
2
0
1
0
20cm
0
0
0
1
1
2
Desperdcio
(cm)
5
2,5
0
0
12,5
10
Elabore um modelo de programao inteira que determine a estratgia a ser seguida pela empresa de forma a minimizar os desperdcios face necessidade de produo.
Modelo de Programao Matemtica
Sejam os seguintes dados de entrada para o problema:
padroes
bobinas
despi
demandaj
aij
estmax
:
:
:
:
:
:
13
min
despi xi
ipadroes
aij xi
demandaj
j bobinas
aij xi
demandaj + estmax
j bobinas
ipadroes
P
ipadroes
xi
Z+
i padroes
2.7
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 requeridos: 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.
Padro
1
2
3
4
5
Perda
(m.)
0
0
1
1
1
:
:
:
:
:
14
Assim, o modelo de programao matemtica :
P
min
perdai xi
ipadroes
aij xi
demandaj
j barras
xi
Z+
i padroes
ipadroes
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 dimenbarraj o comprimento da barra do tipo j, em metros,
ento o modelo de programao matemtica que contempla esse novo objetivo :
!
min
perdai xi
ipadroes
dimenbarraj
jbarras
aij xi
aij xi demandaj
ipadroes
demandaj
j barras
ipadroes
xi
Z+
i padroes
!
P
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.
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
B10:B14
C9:E9
C8:E8
F10:F14
C10:E14
C15:E15
J16:L16
M10:M14
M19
Nome
padroes
barras
dimenbarra
perda
a
demanda
excesso
solucao
ptotal
15
sets:
padroes/@ole(CorteExcesso.xls,padroes)/: perda, x;
barras/@ole(CorteExcesso.xls,barras)/: demanda, dimenbarra;
matriz(padroes,barras): a;
endsets
data:
perda
demanda
a
dimenbarra
enddata
=
=
=
=
@ole(CorteExcesso.xls,perda);
@ole(CorteExcesso.xls,demanda);
@ole(CorteExcesso.xls,a);
@ole(CorteExcesso.xls,dimenbarra);
2.8
16
Turno
1
2
3
4
5
6
Horrio
Nmero requerido de enfermeiros
08 s 12 h
51
12 s 16 h
58
16 s 20 h
62
20 s 24 h
41
24 s 04 h
32
04 s 08 h
19
:
:
:
xi + xi1
xi
demandai
Z+
i turnos
i turnos
17
As restries xi + xi1 demandai 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 xi1 no est definida. Uma soluo seria substitu-las pelas duas restries seguintes:
xi + xi1 demandai i turnos | i 6= 1 e x1 + x|turnos| demanda1 , 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+k limit, 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 xi + xi1 demandai i turnos podem
ser representadas por: @f or(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
B3:B8
E3:E8
D3:D8
G3:G8
F3:F8
E10
Nome
turnos
custo
demanda
excturno
soluo
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 trabalhando 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 contratao 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? Justifique.
Soluo:
(a) Variveis de deciso:
xi = nmero de enfermeiros que iniciam sua jornada no incio do turno i e no fazem horaextra.
yi = nmero de enfermeiros que iniciam sua jornada no incio do turno i e fazem hora-extra.
(b) Funo objetivo:
min f (x, y) = 800x1 + 800x2 + 900x3 + 1000x4 + 1000x5 + 900x6 +
1400y1 + 1550y2 + 1650y3 + 1750y4 + 1600y5 + 1500y6
(c) Restries:
c.1) Nmero de enfermeiros necessrios no turno 1:
x1 + x6 + y5 + y1 + y6 51
c.2) Nmero de enfermeiros necessrios no turno 2:
x2 + x1 + y6 + y2 + y1 58
c.3) Nmero de enfermeiros necessrios no turno 3:
x3 + x2 + y1 + y3 + y2 62
c.4) Nmero de enfermeiros necessrios no turno 4:
x4 + x3 + y2 + y4 + y3 41
c.5) Nmero de enfermeiros necessrios no turno 5:
x5 + x4 + y3 + y5 + y4 32
19
c.6) Nmero de enfermeiros necessrios no turno 6:
x6 + x5 + y4 + y6 + y5 19
c.7) Limite de enfermeiros no turno 1:
y5 0, 20(x1 + x6 + y5 + y1 + y6 )
c.8) Limite de enfermeiros no turno 2:
y6 0, 20(x2 + x1 + y6 + y2 + y1 )
c.9) Limite de enfermeiros no turno 3:
y1 0, 20(x3 + x2 + y1 + y3 + y2 )
c.10) Limite de enfermeiros no turno 4:
y2 0, 20(x4 + x3 + y2 + y4 + y3 )
c.11) Limite de enfermeiros no turno 5:
y3 0, 20(x5 + x4 + y3 + y5 + y4 )
c.12) Limite de enfermeiros no turno 6:
y4 0, 20(x6 + x5 + y4 + y6 + y5 )
c.13) Integralidade e no-negatividade:
x1 , x2 , x3 , x4 , x5 , x6 , y1 , y2 , y3 , y4 , y5 , y6 Z+
Para fazer um modelo genrico desse PPL, considere que phe significa 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
demandai
i turnos
phe (xi + xi1 + yi2 + yi + yi1 ) i turnos
Z+
i turnos
Nome
turnos
custoshe
custoche
demanda
excturno
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
Uma fbrica manufatura 5 tipos de prateleiras (p1 , p2 , p3 , p4 , p5 ) utilizando dois processos de produo: 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
Lucro (R$/unidade)
Processo Normal
Processo Acelerado
p1
570
12
10
p2
575
16
16
p3
555
5
p4
550
19
-
p5
560
9
-
A montagem final 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:
xij = 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(xN 1 + xA1 ) + 575(xN 2 + xA2 ) + 555xA3 + 550xN 4 + 560xN 5
(c) Restries:
c.1) Tempo disponvel para o processo normal:
12xN 1 + 16xN 2 + 19xN 4 + 9xN 5 288 (= 3 2 8 6)
c.2) Tempo disponvel para o processo acelerado:
10xA1 + 16xA2 + 5xA3 192 (= 2 2 8 6)
c.3) Tempo disponvel para a montagem:
16(xN 1 + xA1 + xN 2 + xA2 + xA3 + xN 4 + xN 5 ) 384 (= 8 8 6)
c.4) Integralidade e no-negatividade:
xN 1 , xA1 , xN 2 , xA2 , xA3 , xN 4 , xN 5 Z+
Sejam os seguintes dados de entrada:
P rat
P roc
tpi
tij
tmj
T otaltm
:
:
:
:
:
:
iP roc
PjP rat
ci xij
tij xij
PjP rat
P
tmj xij
tpi
T otaltm
Z+
i P roc
iP roc jP rat
xij
i P roc, j P rat
22
2.10
A figura 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 especificado pela seta.
Qual o fluxo mximo que pode passar entre A e G atravs da rede?
Soluo:
(a) Variveis de deciso:
xij = quantidade de fluxo a ser enviada do n i ao n j, j 6= i.
(b) Funo objetivo:
max f (x) = xAB + xAC
(c) Restries:
c.1) Equilbrio de fluxo nos ns:
xEG + xF G (xAB + xAC )
xAB (xBC + xBD + xBE )
xAC + xBC (xCD + xCF )
xBD + xCD (xDE + xDF )
xBE + xDE + xF E xEG
xCF + xDF (xF E + xF G )
=
=
=
=
=
=
0
0
0
0
0
0
(N
(N
(N
(N
(N
(N
A)
B)
C)
D)
E)
F)
23
V
capij
n
:
:
:
Conjunto de ns
Capacidade do arco (i, j)
Cardinalidade do conjunto de ns, isto , n = |V |
i V, i 6= 1 e i 6= n
iV
capij
Z+
xij
xij
i, j V
i, j V
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 figura a seguir, extrada de Lachtermacher (2004), representa, na
forma de rede, as ligaes entre as cidades da regio.
Soluo:
(a) Variveis
de deciso:
1, se o arco (i, j) pertencer ao caminho;
xij =
0, caso contrrio.
(b) Funo objetivo:
min f (x) = 41x12 + 44x13 + 50x15 + 37x24 + 27x35 + 45x46 + 4x56
(c) Restries:
c.1) Equilbrio de fluxo nos
x12 + x13 + x15 = 1
x12 x24
=0
x13 x35
=0
x24 x46
=0
x15 + x35 x56 = 0
x46 + x56
=1
ns:
(N
(N
(N
(N
(N
(N
1)
2)
3)
4)
5)
6)
24
c.2) Integralidade e no-negatividade:
x12 , x13 , x15 , x24 , x35 , x46 , x56 {0, 1}
Considere os seguintes parmetros de entrada:
V : Conjunto dos vrtices (ns)
dij : Distncia do vrtice i ao vrtice j
n : Cardinalidade do conjunto de vrtices, isto , n = |V |
min
dij xij
P
xij
xji
jV
P
x1j
jV
P
xin
iV jV
P
jV
= 0
i V, i 6= 1 e i 6= n
= 1
=
{0, 1}
iV
xij
2.12
i, j V
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:
Mquina
M1
M2
Disponibilidade
(mquina-hora/ms)
70
20
Mo-de-obra
MO1
MO2
Disponibilidade
(homem-hora/ms)
120
160
O setor tcnico da empresa fornece os seguintes coeficientes, que especificam o total de horas
de mquina e horas de mo-de-obra necessrias para a produo de uma unidade de cada produto:
Mquinas
M1
M2
Produtos
I II III IV
5 4 8
9
2 6 0
8
Produtos
Mo-de-obra I II III IV
MO1
2 4 2
8
MO2
7 3 0
7
Produtos
I
II
III
IV
Potencial de venda
(unidades/ms)
70
60
40
20
Lucro unitrio
(R$/ms)
10
8
9
7
25
Faa o planejamento da produo mensal da empresa objetivando maximizar o lucro.
Soluo:
(a) Variveis de deciso:
xj = quantidade de produtos do tipo j a serem fabricadas mensalmente.
(b) Funo objetivo:
max f (x) = 10xI + 8xII + 9xIII + 7xIV
(c) Restries:
c.1) Disponibilidade de tempo da mquina 1:
5xI + 4xII + 8xIII + 9xIV 70
c.2) Disponibilidade de tempo da mquina 2:
2xI + 6xII + 8xIV 20
c.3) Disponibilidade de tempo da mo-de-obra 1:
2xI + 4xII + 2xIII + 8xIV 120
c.4) Disponibilidade de tempo da mo-de-obra 2:
7xI + 3xII + 7xIV 160
c.5) Potencial de venda dos produtos:
xI 70
xII 60
xIII 40
xIV 20
c.6) Integralidade e no-negatividade:
xI , xII , xIII , xIV Z+
Para a modelagem genrica do problema, considere os seguintes dados de entrada, alm da varivel
de deciso apresentada anteriormente:
Prod
Maq
MO
lj
pj
mij
okj
tmi
tok
:
:
:
:
:
:
:
:
:
xj
xj
pj
Z+
j Prod
j Prod
26
2.13
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 execuo 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:
1, se o job j for executado no processador i;
xij =
0, caso contrrio.
Cmax = makespan (Instante de trmino do processador mais carregado)
(b) Funo objetivo:
min Cmax
(c) Restries:
c.1) Cada job deve ser executado em um nico processador:
x11 + x21 + x31 = 1
(job 1)
x12 + x22 + x32 = 1
(job 2)
x13 + x23 + x33 = 1
(job 3)
x14 + x24 + x34 = 1
(job 4)
x15 + x25 + x35 = 1
(job 5)
x16 + x26 + x36 = 1
(job 6)
x17 + x27 + x37 = 1
(job 7)
x18 + x28 + x38 = 1
(job 8)
x19 + x29 + x39 = 1
(job 9)
x1,10 + x2,10 + x3,10 = 1
(job 10)
c.2) Tempo de execuo dos jobs em cada processador:
Proc. 1: 6x11 + 4x12 + 5x13 + 4x14 + 3x15 + 7x16 + 8x17 + 5x18 + 3x19 + 3x1,10 Cmax
Proc. 2: 6x21 + 4x22 + 5x23 + 4x24 + 3x25 + 7x26 + 8x27 + 5x28 + 3x29 + 3x2,10 Cmax
Proc. 3: 6x31 + 4x32 + 5x33 + 4x34 + 3x35 + 7x36 + 8x37 + 5x38 + 3x39 + 3x3,10 Cmax
c.3) Integralidade e no-negatividade:
xij {0, 1} i = 1, 2, 3 e j = 1, 2, ..., 10
Considere as seguintes notaes:
Jobs :
Procs :
tj
:
Cmax
P
xij
iProcs
P
tj xij
j Jobs
Cmax
i Procs
{0, 1}
i Procs e j Jobs
jJobs
xij
27
2.14
[Retirado de Lachtermacher (2004), vide [4]] A LCL Motores recebeu recentemente uma encomenda 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
Demanda (unidades)
Montagem (h/unidade)
Acabamento (h/unidade)
Custo de produo (R$)
Terceirizado (R$)
1
2
3000 2500
1,1
1,9
2,5
0,8
50
90
65
92
3 Total (h)
500
0,7
6000
4,0
10000
120
140
28
min
cprodj xj +
ctercj yj
jM odelos
jM odelos
xj + y j
T empM ontj xj
demandaj
j M odelos
T empDispM ont
T empAcabj xj
T empDispAcab
xj , y j
Z+
jM odelos
P
jM odelos
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
! 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));
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
H um conjunto de contineres e outro de itens a serem alocados a esses contineres. Sabe-se que
cada continer i tem capacidade capi e que cada item j tem um peso wj . 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:
Itens
:
wj
:
capi
:
(BP1)
(BP2)
(BP3)
jItens
xij
yi
{0, 1}
{0, 1}
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
31
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, h1 h2 hn
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
definir a seguinte varivel de deciso:
yi =
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,
definida a seguinte varivel binria:
xij =
32
Assim, o ODP na forma guilhotinada pode ser modelado por:
min
n
P
hi yi
i=1
j1
P
xij + yj
i=1
n
P
wj xij
j = 1, , n
(W wi ) yi
i = 1, , n 1
i = 1, , n
i = 1, , n, j = 1, , n, j < i
j=i+1
yi
xij
{0, 1}
{0, 1}
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 definem as variveis de deciso
como binrias.
2.17
i P, k D, l H
(PH2)
j T, k D, l H
(PH3)
= CHij
i P, j T
(PH4)
i P, j T, k D
(PH5)
{0, 1}
i P, j T, k D, l H
(PH6)
lH
xijkl
Neste modelo, as restries (PH2) asseguram que fixado 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:
J
I
qj
dij
cij
fi
Qi
:
:
:
:
:
:
:
2.18.1
p-Medianas
PP
iI jJ
P
dij xij
xij
(LF1)
j J
(LF2)
yi
= p
i I, j J
(LF3)
(LF4)
i I, j J
i I
(LF5)
(LF6)
iI
xij
P
yi
iI
xij
yi
{0, 1}
{0, 1}
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 y2 = 1 e y4 = 1, indicando
que seriam instaladas facilidades nos locais 2 e 4. Poderamos ter, tambm, por (LF2), que x13 = 1
e x11 = 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
yi = 1 ento xij pode ser 0 ou 1, isto , o cliente j pode ou no ser atendido pela facilidade i. No
entanto, se yi = 0 ento xij 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
O modelo de programao inteira referente a esse problema pode ser formulado como:
min
r
r
P
xij
j J
(LF6)
(LF7)
j J
(LF2)
yi
p
i I, j J
(LF3)
(LF4)
{0, 1}
{0, 1}
i I, j J
i I
(LF5)
(LF6)
dij xij
iI
iI
xij
P
yi
iI
xij
yi
p-Medianas capacitado
Neste caso, associa-se uma capacidade Qi facilidade instalada no local i. Assim, as restries
(LF3) so substitudas por:
P
qj xij Qi yi i I (LF8)
jJ
35
2.19
Uma mineradora recebe uma encomenda para produzir 6000 toneladas de minrio atendendo a
especificao abaixo.
Elemento
qumico
F e (%)
Al2 O3 (%)
P (%)
P P C (%)
He (%)
Teor Mnimo
permitido
44,5
0,27
0,035
2,05
38
Meta
47,0
0,32
0,040
2,35
40
Teor Mximo
permitido
49,5
0,37
0,043
2,65
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
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
Fe
(%)
52,64
39,92
47,19
49,36
43,94
48,97
47,46
46,52
56,09
46,00
49,09
49,77
53,03
52,96
42,09
Al2 O3
(%)
0,52
0,18
0,50
0,22
0,46
0,54
0,20
0,32
0,95
0,26
0,22
0,20
0,24
0,29
0,17
P
(%)
0,084
0,029
0,050
0,039
0,032
0,057
0,047
0,039
0,059
0,031
0,040
0,047
0,047
0,052
0,031
PPC
(%)
4,48
0,65
2,52
1,74
2,36
4,34
5,07
3,51
4,10
2,51
4,20
4,81
4,17
4,81
1,38
He
(%)
45
97
52
78
41
90
9
4
80
21
12
12
1
1
47
Massa
(ton)
1500
2000
1700
1450
1250
1890
1640
1124
1990
900
1540
1630
1320
1245
1859
A tabela a seguir classifica os parmetros de controle em 5 critrios: Irrelevante (-), Importante (I), Muito Importante (MI), Crtico (C) e Muito Crtico (MC), cujos pesos so tambm
apresentados.
Critrio
Peso do Critrio
Parmetro
Critrio
0
Fe
MI
I
1
Al2 O3
-
MI
5
P
MC
C
10
PPC
C
MC
100
He
-
Considere, ainda, os seguintes pesos para comparar os diversos parmetros de controle entre
si:
Parmetro
Peso de comparao
Fe
1
Al2 O3
100
P
1000
PPC
10
He
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 pedido, de forma que as especificaes de qualidade estejam mais prximas das metas especificadas?
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
pilhas
tlj
trj
wdtj
dtnj
dtpj
Qui
nunidreti
tij
p
:
:
:
:
:
:
:
:
:
:
:
: Quantidade
de minrio a ser retirada da pilha i, em toneladas;
1 se a pilha i for usada;
:
0 caso contrrio.
O modelo de programao matemtica para o Exerccio 2.19 :
P
min
(wdtj dtnj + wdtj dtpj )
jparametros
j parametros
j parametros
j parametros
ipilhas
ipilhas
ipilhas
xi
Qui
xi
nunidreti
xi /unidret
i pilhas
ipilhas
i pilhas
yi
xi /Qui
i pilhas | Qui 6= 0
xi
retmin yi
i pilhas
nunidreti
Z+
i pilhas
yi
{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;
38
! A quantidade a ser retomada em cada pilha i deve ser inferior ou igual a Qu(i);
@sum(pilhas(i): x(i)) = p;
! A quantidade x(i) a ser retomada na pilha i deve ser mltipla de unidret;
@for(pilhas(i):
@GIN(nunidret(i));
@BIN(y(i));
);
data:
! Exporta os resultados para Excel;
2.20
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 fixo 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
Mina 1 ($/t)
Mina 2 ($/t)
Mina 3 ($/t)
Mina 4 ($/t)
Quant. req. (t/ms)
10
7
6,5
8,5
10000
8
9
10,8
12,7
15400
13
14
12,4
9,8
13300
Custo
Fixo ($)
50000
40000
30000
25500
-
39
:
:
:
:
:
:
Conjunto de Minas ;
Conjunto de usinas;
Capacidade de produo da mina i;
Custo fixo de utilizao da mina i;
Demanda requerida pela usina j;
Custo de transporte de minrio da mina i para a usina j.
iminas
s.a:
P
xij
capi
i minas
xij
demandaj
j usinas
i minas
jusinas
P
iminas
yi
xij )/capi
jusinas
xij
yi
i minas, j usinas
i minas
{0, 1}
40
Modelo LINGO
Title: Usinas(R).lg4;
sets:
minas/@ole(Usinas(R).xls,minas)/: cap, cfixo, y;
usinas/@ole(Usinas(R).xls,usinas)/: demanda;
matriz(minas,usinas): custo, x;
endsets
data:
! Importa os dados do Excel;
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 dificuldades 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 produo 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:
dit
Rt
ri
cit
hit
T
:
:
:
:
:
:
42
minimizar
|T |
n X
X
(2.1)
i=1 t=1
(2.2)
(2.3)
i=1
Iit Z+ i = 1, 2, , n; t = 1, 2, , |T |
xit Z+ i = 1, 2, , n; t = 1, 2, , |T |
(2.4)
(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 final do perodo t igual ao que se
tinha em estoque no final 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 final 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 definio, Iit . Logo, garante-se o atendimento s demandas impondo-se Iit 0 e
inteiro.
2.22
Planejamento da produo
[Retirado de Arenales et al. (2007). Vide [1]] A seguir, so apresentados alguns modelos importantes 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 finito 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 infinito, a varivel tempo contnua, a demanda 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:
dit
bi
Ct
spi
si
hi
Ii0
n
T
:
:
:
:
:
:
:
:
:
43
2.22.1
[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; I0 o estoque inicial; It o estoque do item no fim
do perodo t; xt a quantidade do item produzida no perodo t e yt = 1 se o item for produzido
no perodo t e 0, caso contrrio. Seu modelo :
min
(s yt + h It+ )
(DL1)
tT
It
xt
It1 + x!t dt
|T |
P
dk yt
t T ,
I0 = I|T | = 0 (DL2)
t T
(DL3)
t T
t T
t T
(DL4)
(DL5)
(DL6)
k=t
xt
It
yt
0
0
{0, 1}
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:
It+
It
Com a introduo destas novas variveis, a formulao anterior modificada para a seguinte:
min
(s yt
h It + It )
It+ It
xt
It1
I!
t1 + xt dt
|T |
P
dk y t
P
tT
(DL7)
t T ,
I0+ = I0 = 0
(DL8)
t T
(DL9)
t T
t T
t T
t T
(DL10)
(DL11)
(DL12)
(DL13)
k=t
xt
It+
It
yt
0
0
0
{0, 1}
A funo objetivo (DL7) minimiza o custo total de preparao, estoque e demanda no atendida. 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
[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:
P P
min
(si yit + hi Iit )
(DL14)
iN tT
Iit
(spi yit + bi xit )
i N, t T , Ii0 = 0
t T
xit
Mit yit
t T
(DL17a)
i N, t T
(DL17b)
i N, t T
i N, t T
i N, t T
(DL18)
(DL19)
(DL20)
(DL15)
(DL16)
iN
Mit
xit
Iit
yit
i
,
min{ Ct sp
bi
|T |
P
dik }
k=t
0
0
{0, 1}
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.
2.23
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 mquinas, 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:
r1 (x1 , x2 , , xn ) b1
r2 (x1 , x2 , , xn ) b2
(2.6)
(2.7)
Neste caso, basta definir 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)
r2 (x1 , x2 , , xn ) b2 + M y
(2.8)
(2.9)
(2.10)
(2.11)
45
As linhas cheias da Figura 3 mostram as retas que geram os semi-espaos definidos 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, inicialmente, a reta base. Seja a reta 4x1 + 2x2 = 80, a qual geradora do semi-espao definido pela
restrio (2.10). Explicitando x2 dessa equao e simplificando, 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 definido pela restrio 2x1 + 5x2 100, eliminando alguns pontos do espao de
solues viveis. Assim, precisamos determinar o valor de M tal que 2x2 = 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:
(2.12)
(2.13)
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 )
r2 (x1 , x2 , , xn ) b2 + M (1 y2 )
..
.
ri (x1 , x2 , , xn ) bi + M (1 yi )
..
.
rm (x1 , x2 , , xn ) bn + M (1 ym )
y1 + y2 + + yi + + ym = 1
yi {0, 1} i = 1, 2, , m
(2.14)
(2.15)
(2.16)
(2.17)
(2.18)
(2.19)
(2.20)
(2.21)
2.24
[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 admitese que a interrupo (preemption) de qualquer tarefa no permitida. Considere os seguintes
parmetros inteiros e no-negativos:
pi
di
M
Ci
Ti
Ei
Li
Cj
Ci
xij
Ci M + (pj + M )xij
0
{0, 1}
i N {0}, j N
i N, C0 = 0
i N {0}, j N {0}
(S3)
(S4)
(S5)
47
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 Cj Ci + pj e se xij = 0, ento Cj Ci M , isto , a restrio (S3) fica
redundante (desativada). As restries (S4) e (S5) indicam o tipo das variveis. Observe que C0
fixado em ZERO.
2.24.1
O tempo de fluxo total corresponde soma dos tempos de trmino das tarefas, isto ,
Ci . O
iN
Ci
iN
(S1) - (S5)
Pode-se demonstrar que a soluo tima deste problema dada pela regra SPT (shortest processing time), em que as tarefas so sequenciadas em ordem no decrescente dos tempos de processamento, 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 fluxo total do problema de sequenciamento a seguir, em que h 7 tarefas
com os seguintes tempos de processamento e datas de entrega.
Tarefas
Tempo de processamento (p)
Data de entrega (d)
1
7
13
2 3 4 5 6 7
4 2 5 6 3 1
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 fictcia 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
d = 0 13 10
M = 1000;
enddata
2
6
5
9
6 3 1;
3 20 4;
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 fluxo 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
O atraso mximo, denotado por Tmax , est associado tarefa com maior diferena entre seu
instante de trmino e data de entrega, isto , Tmax = max Ti . Observe que Ti = max{Ci di , 0}
iN
i N
i N
i N
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
Ti
iN
Ti Ci di
Ti 0
(S1) - (S5)
2.24.4
i N
i N
49
min
(Ti + Ei )
iN
Ti
Ei
Ti
Ei
(S1)
2.24.5
C i di
di Ci
0
0
- (S5)
i N
i N
i N
i N
Ti Ci di
Ti M yi
Ti 0
yi {0, 1}
(S1) - (S5)
i N
i N
i N
i N
Seja Lmax = max Li o lateness mximo. Como a varivel Li livre, isto , pode assumir valores
iN
min
Lmax
Lmax L+
i Li
L+
= C i di
i Li
+
Li 0
L
0
i
(S1) - (S5)
i N
i N
i N
i N
Demonstra-se que a soluo tima deste problema tambm dada pela regra EDD (Earliest
Due Date).
2.24.7
Considere agora que para processar uma tarefa i seja necessrio um tempo de preparao de
mquina dado por si , conhecido como tempo de setup. Se esse tempo for independente da sequncia, basta incorpor-lo ao tempo de execuo dessa tarefa, isto , basta considerar o tempo de
processamento da tarefa i como si + pi . Neste caso, o conjunto de restries (S3) alterado para:
Cj
Ci M + (sj + pj + M )xij
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:
Cj
Ci M + (sij + pj + M )xij
i N {0}, j N
(S7)
50
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
2.24.8
Cmax
Cmax
(S1) - (S2)
Ci
i N
- (S7) - (S4) - (S5)
Apresentamos a seguir uma classe de problemas de sequenciamento em uma mquina com penalidades 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 pi , uma data inicial ei e uma data final ti
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 finalizada, ou seja, no permitido a interrupo de seu processamento.
(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 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.
(f ) permitido tempo ocioso entre a execuo de duas tarefas consecutivas.
(g) As tarefas devem ser finalizadas dentro de uma janela de tempo [ei , ti ], denominada janela de
entrega. Se a tarefa i for finalizada antes de ei ento h um custo de manuteno de estoque.
Caso a tarefa seja finalizada 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 finalizadas 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 fictcias, 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 suficiente 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)
(2.24)
Nesta ltima situao, as restries (2.22) ficam desativadas, pois a equao (2.24) redundante, 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.
n
X
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
(2.28)
Ei 0 i = 1, 2, . . . , n
(2.29)
Ti 0 i = 1, 2, . . . , n
(2.30)
n
X
i=1
i=1
(2.31)
52
Ii : data de incio do processamento da tarefa i;
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;
Ei : tempo de antecipao da tarefa i;
Ti : tempo de atraso da tarefa i;
Assim, o modelo correspondente de Programao Linear Inteira Mista (PLIM) para o PSUMAA 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;
j = 1, 2, . . . , n + 1 e i 6= j
n+1
X
yij = 1
i = 0, 1, . . . , n
j=1, j6=i
n
X
yij = 1
(2.33)
(2.34)
j = 1, 2, . . . , n + 1
(2.35)
i = 1, 2, . . . , n
i = 1, 2, . . . , n
i = 0, 1, . . . , n + 1
i = 1, 2, . . . , n
i = 1, 2, . . . , n
i, j = 0, 1, 2, . . . , n, n + 1
(2.36)
(2.37)
(2.38)
(2.39)
(2.40)
(2.41)
i=0, i6=j
Ii + pi + Ei
Ii + pi Ti
Ii
Ei
Ti
yij
2.25
ei
ti
0
0
0
{0, 1}
Mquinas Paralelas
Existem trs categorias de ambientes de mquinas paralelas: idnticas, uniformes e no relacionadas. 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 processamento no instante zero, sem interrupo de processamento de qualquer tarefa.
Para o problema de minimizao do makespan em mquinas idnticas, seja pi o tempo de
processamento da tarefa i, i = 1, , n.
Sejam as seguintes variveis de deciso:
Cmax : makespan
xik : Varivel binria que assume valor 1 se a tarefa i processada na mquina k e 0, caso
contrrio
53
minimizar
Cmax
m
X
xik = 1
(2.42)
i = 1 = 1, 2, . . . , n
(2.43)
k=1
Cmax
n
X
pi xik k = 1, 2, , m;
(2.44)
i=1
Cmax 0
xik {0, 1}
i = 0, 1, 2, . . . , n; k = 1, 2, , m
(2.45)
(2.46)
pik
sijk
di
M
Cik
xijk
Ti
Ei
A varivel Ti mensura o quanto a tarefa i est atrasada, enquanto Ei 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
X
(Ti + Ei )
(2.47)
i=1
m X
n
X
k=1 i=0
n
X
n
X
xihk
i=0
i6=h
j=1
n
X
xijk = 1
j = 1, 2, . . . , n
x0jk 1
k = 1, , m 1 (2.49)
xhjk = 0
h = 1, 2, , n
(2.48)
(2.50)
j=0
j6=h
Ti
Ei
Ti
Ei
xijk
Ci di
di C i
0
0
{0, 1}
k = 1, 2, , m
i = 0, 1, , n
j = 1, 2, , n
k = 1, 2, , m
i = 1, , n
i = 1, , n
i = 1, 2, . . . , n
i = 1, 2, . . . , n
i, j = 0, 1, 2, . . . , n
k = 1, 2, , m
(2.51)
(2.52)
(2.53)
(2.54)
(2.55)
(2.56)
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 final 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)
fica 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 mquinas. 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 .
2 1 3
5 7 10
1 2 3
9 5 3
5
8
2
O= 3 2 1 P =
2 1 3
2 7 4
3 1 2
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:
pik
maqi
M
Assim, o modelo de programao matemtica relativo ao Job Shop pode ser representado por:
minimizar
n
X
Cim
(2.57)
i=1
Ci,maq1
Ci,maqk+1
Cjk
Cik
Cik
xijk
pi,maq1
Ci,maqk + pi,maqk+1
Cik + pjk M (1 xijk )
Cjk + pik M xijk
0
{0, 1}
i = 1, 2, . . . , n
i = 1, 2, . . . , n; k = 1, , m 1
i, j = 1, 2, , n; k = 1, 2, , m
i, j = 1, 2, , n; k = 1, 2, , m
i, j = 1, 2, . . . , n; k = 1, 2, , m
i, j = 0, 1, 2, . . . , n; k = 1, 2, , m
(2.58)
(2.59)
(2.60)
(2.61)
(2.62)
(2.63)
A funo objetivo (2.57) expressa a minimizao do tempo de fluxo 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.
2.27
56
cada frente. Os caminhes s podem fazer viagens a frentes nos quais h carregadeiras compatveis, porque existem carregadeiras que so pequenas e no tm altura suficiente para carregar
determinados caminhes. A alocao dos caminhes dita dinmica no sentido de que ao descarregar, 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 contrapartida, 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 conhecida como programao por metas (Goal Programming). Para tanto, sejam os seguintes dados de
entrada:
M
:
E
:
F
:
S
:
Carreg:
V
:
Pr
:
Pl
:
Pu
:
:
+
:
tij
:
trj
:
tlj
:
tuj
:
j
:
+
j
:
rem :
Cuk :
capl :
Til
:
txM axl
complk :
: Ritmo
de lavra da frente i (t/h);
1 se o equipamento de carga k for alocado frente i;
yik :
0 caso contrrio.
nil : 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);
+
dmj : 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 ficou 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
j dm
j +
jS
+ +
j+ dm+
j + P + P
(2.64)
jS
j S
(2.65)
j S
(2.66)
+
(tij trj )xi + dm
= 0
j dmj
j S
(2.67)
s.a:
iM
X
iM
X
iM
xi P u
(2.68)
xi P l
(2.69)
xi + P P + = P r
(2.70)
iM
X
iM
X
iM
xi
+
dmj , dm
j
+
P ,P
xi rem
iE
0
0
0
i F
j S
(2.71)
(2.72)
(2.73)
xi 0
(2.74)
iM
yik 1
i F
(2.75)
yik 1
k Carreg
(2.76)
yik {0, 1}
i F, k Carreg
(2.77)
i F
(2.78)
kCarreg
X
iF
xi
Cuk yik 0
kCarreg
nil Til 60
yik 0
i F, l V
(2.79)
l V
(2.80)
iF
xi
nil capl = 0
i F
(2.81)
i F, l V
(2.82)
lV
nil Z+
58
Observa-se que (2.65)-(2.73) so restries que juntamente com a funo objetivo (2.64) formam 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) definem que cada frente deve operar com no mximo um equipamento 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) fixam 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.
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) definem que
cada caminho opere no mximo txM axl % 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
59
min
3x1
x1
- x1
x1
x1
x1
+
+
2x2
x2
x2
x2
x2
x2
+ x3
+
+
9z1
z1
z1
z1
+ x3
x3
x3
z1
4z2
+
+
+
z2
z2
z2
z2
z2
1
0
0
2
0
0
0
{0, 1}
0
60
Branch-and-Bound
4x1
8x1
5x1
x1
x1
+
+
+
+
,
3x2
3x2
6x2
2x2
x2
z
24
30
9
Z+
61
2x1
x1
x1
6x1
x1
+ x2
+ 2x2
+ x2
+ 2x2
, x2
z
7
0
21
Z+
62
4.1
Problema de Transporte
f abricas
armazens
custoij
demandaj
capacidadei
:
:
:
:
:
minimizar
custoij qtdEnviadaij
ifabricas jarmazens
qtdEnviadaij capacidadei
i fabricas
jarmazens
qtdEnviadaij = demandaj
j armazens
ifabricas
qtdEnviadaij Z +
i f abricas j armazens
A ltima restrio, que estabelece o domnio das variveis qtdEnviadaij no conjunto dos inteiros 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:
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 figura a seguir. Nesta planilha
esto definidos 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
65
4.3
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:
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
O LINGO capaz de funcionar como um servidor OLE. Isto significa 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
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 figura
a seguir.
Altere a propriedade caption para um nome adequado, por exemplo, Solve (observe que o
nome anterior e default CommandButton1).
Na figura a seguir, representantiva da planilha Excel que faz interface com o Excel, aparece na
coluna K28 o boto Solve resultante da alterao realizada.
Nome Campo
custo
C6:J11
solucao C21:J26
cTotal I28
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 figura a seguir
exibe o resultado dessa operao na planilha Modelo:
Para que este script seja enviado ao LINGO necessrio que ele esteja definido atravs do
seguinte campo:
Nome
modelo
Campo
A1:A31
72
Isto , o bloco do Excel onde est o cdigo LINGO deve ser marcado e nomeado como modelo
ou outro nome qualquer.
Definidos 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 figura a seguir.
Feche o Editor do Visual Basic e retorne planilha Excel. Para sair do modo de desenvolvimento, 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 configuraes padres do LINGO. Todas as opes configurveis
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
especificado. Alguns dos parmetros acessveis atravs do comando SET so apresentados a seguir.
ndice
Nome
Padro
10
TIMLIM
23
24
33
34
46
51
41
40
18
17
16
Descrio
74
5
5.1
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 n 1 cidades uma nica vez e retornar cidade origem percorrendo a menor distncia
possvel.
Exemplificando, consideremos 6 cidades com as distncias dadas pela tabela a seguir:
Cidade
1
2
3
4
5
6
1 2 3 4 5 6
0 2 1 4 9 1
2 0 5 9 7 2
1 5 0 3 8 6
4 9 3 0 2 5
9 7 8 2 0 2
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
de solues, para n = 20 h 6 1016 solues. Supondo que um computador avalie uma soluo
(rota) em 108 segundos, seriam necessrios 6 108 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
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 6= j}.
Seja dij a distncia da cidade i para a cidade j.
(a) Variveis de deciso:
xij : varivel binria que assume valor 1 se o arco (i, j) for utilizado e 0, caso contrrio
fij : quantidade de fluxo enviada da cidade i para a cidade j
(b) FunoP
objetivo:
P
min
dij xij
iCidades jCidades
(c) Restries:
c.1) cada
P cidade k s chega um arco:
xik = 1 k Cidades
iCidades
75
c.2) DeP
cada cidade k s sai um arco:
xkj = 1 k Cidades
jCidades
c.3) Eliminao
de subciclos:
P
P
fkj = 1 k Cidades | k 6= 1
fik
iCidades
jCidades
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);
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 final produzida por uma heurstica seja a tima.
A figura 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 figura, tmelhor 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 6= ) faa
4
g(tmelhor ) = melhor{g(t) | t C};
5
s s {tmelhor };
6
Atualize o conjunto C de elementos candidatos;
7 fim-enquanto;
8 Retorne s;
fim 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 construo 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 final 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.
Complexidade da Heurstica do Vizinho Mais Prximo:
Iterao
# operaes
1
n1
2
n2
n1
1
Total
1 + 2 + + n 1
Observaes
H n 1 ligaes para serem analisadas
H n 2 ligaes para serem analisadas
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
1+(n1)
a1 +anelem
S=
nelem =
(n 1) = n(n 1)/2
2
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 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).
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 final 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
(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 skij dado pela frmula abaixo seja a menor possvel.
skij = dik + dkj dij
As figuras a seguir ilustram a insero da cidade k entre as cidades i e j.
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, 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.
i
1
1
1
3
3
3
2
2
2
k
4
5
6
4
5
6
4
5
6
j
3
3
3
2
2
2
1
1
1
80
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 i e j da subrota corrente. A tabela a seguir mostra os custos de insero.
i
1
1
3
3
2
2
6
6
k
4
5
4
5
4
5
4
5
j
3
3
2
2
6
6
1
1
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.
i
1
4
3
2
6
k
5
5
5
5
5
j
4
3
2
6
1
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
essa rota : d(s) = d(s)anterior + s514 = 15 + 7 = 22.
5.3.2
Heursticas de Refinamento
81
0
82
5.4
Variantes do PCV
5.4.1
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
dij
n
m
:
:
:
:
dij xij
iCidades jCidades
(c) Restries:
c.1) cada
P cidade k, exceto a origem (cidade de ndice 1), s chega um arco:
xik = 1 k Cidades | k 6= 1
iCidades
c.2) DeP
cada cidade k, exceto a origem (cidade de ndice 1), s sai um arco:
xkj = 1 k Cidades | k 6= 1
jCidades
c.3) DaP
cidade origem saem m arcos:
x1j = m
jCidades
c.4) cidade
origem chegam m arcos:
P
xi1 = m
iCidades
c.5) Exceto para a cidade origem (primeira cidade), o fluxo que chega a uma cidade k menos
o que
igual a 1:
P sai de k P
fik
fkj = 1 k Cidades | k 6= 1
iCidades
jCidades
c.6) O fluxo 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
5.4.2
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
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 suficiente 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 satisfizessem 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
cij
n
pk
k
:
:
:
:
:
cij xij +
iCidades jCidades
k (1 zk )
kCidades
(c) Restries:
c.1) cada
P cidade k visitada s chega um arco:
xik = zk k Cidades
iCidades
c.2) DeP
cada cidade k visitada s sai um arco:
xkj = zk k Cidades
jCidades
c.3) O prmio
mnimo pmin deve ser coletado:
P
pk zk pmin
kCidades
c.4) Exceto para a cidade origem (primeira cidade), o fluxo que chega a uma cidade k menos
o que
igual a 1 se a cidade k for visitada e 0, caso contrrio:
P sai de k P
fik
fkj = zk k Cidades | k 6= 1
iCidades
jCidades
c.5) O fluxo 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
c.6) Integralidade e no-negatividade:
xij {0, 1} i Cidades, j Cidades
fij 0 i Cidades, j Cidades
zk {0, 1} k Cidades
6.1
Definio
6.2
:
:
:
:
(c) Restries:
c.1)
Pcada n k, exceto aquele referente ao depsito 0, s chega um arco:
xik = 1 k V, k 6= 0
iV
c.2) De
P cada n k, exceto aquele referente ao depsito 0, s sai um arco:
xkj = 1 k V, k 6= 0
jV
c.3) No
P depsito
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 fluxo que chega ao n k menos o que sai de k
Pigual demanda
associada ao k-simo n:
P
fik
fkj = qk k V | k 6= 0
iV
jV
c.5) O fluxo 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 apresentada a seguir. Estas restries substituem as de fluxo 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 aludlo 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 fluxo 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]
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
8 16 15 28
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
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 cj 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
Linhas
cj
aij
:
:
:
:
(c) Restries:
c.1) Cada
P linha i coberta por uma nica coluna j:
aij xj = 1 i Linhas
jColunas
rotas.
5
0
0
0
1
0
1
0
1
80
6
0
0
0
0
1
0
1
0
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, conhecido 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:
xj varivel binria que assume valor 1 se a coluna j for utilizada e 0, caso contrrio
(b) FunoP
objetivo:
min
cj x j
jColunas
(c) Restries:
c.1) Cada
P linha i coberta por pelo menos uma coluna j:
aij xj 1 i Linhas
jColunas
6.4
6.4.1
Heursticas Construtivas
1 2 3 4
6 7 8 9
0 3 2 1
3 0 5 3
2 5 0 8
1 3 8 0
4 4 1 5
5
10
4
4
1
5
0
Demanda
0
5
9
6
4
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 (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.
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 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.
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
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.
sij = di0 + d0j dij
A figura 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), realizada aquela combinao que produz a maior economia possvel satisfazendo, naturalmente, as
restries estabelecidas.
Exemplo: Resolva o exemplo anterior pela Heurstica de Clarke e Wright.
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
i j di0 d0j
1 2 6
7
1 3 6
8
1 4 6
9
1 5 6 10
2 3 7
8
2 4 7
9
2 5 7 10
3 4 8
9
3 5 8 10
4 5 9 10
Maior economia
dij
3
2
1
4
5
3
4
8
1
5
Demanda acumulada
14
11
9
12
15
13
16
10
13
11
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 economias 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.
i j di0 d0j dij sij = di0 + d0j dij
Demanda acumulada
1 2 6
7
3 s12 = 6 + 7 - 3 = 10
18
1 3 6
8
2 s13 = 6 + 8 - 2 = 12
22
1 5 6 10 4 s15 = 6 + 10 - 4 = 12
22
2 3 7
8
5 s23 = 7 + 8 - 5 = 10
22
2 4 7
9
3 s24 = 7 + 9 - 3 = 13
18
2 5 7 10 4 s25 = 7 + 10 - 4 = 13
22
3 4 8
9
8 s34 = 8 + 9 - 8 = 9
22
4 5 9 10 5 s45 = 9 + 10 - 5 = 14
22
93
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 1 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 combinaes 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 di0
1 3 6
1 5 6
2 3 7
2 5 7
d0j
8
10
8
10
dij
2
4
5
4
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 final 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 refinamento
[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)
xj
{0, 1}
j = 1, 2, , n
j=1
(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
n
P
cj xj ck xk + ck . Assim, teremos que
mudana de varivel, a nova funo objetivo passa a ser
j=1
j6=k
minimizar z ck =
n
P
j=1
j6=k
Hiptese: cj 0 j = 1, 2, , n
Definimos 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)
n
x {0, 1}
(6)
Uma soluo de (3) ou (6) ser representada por xp = (xp1 xp2 xpn )t , ou tambm pelo
conjunto Jp = {j | xj = 1}.
Exemplo: Para x7 = (0 1 1 1 0 0 1 1)t tem-se J7 = {2, 3, 4, 7, 8}.
Uma soluo xq dita descendente de xp se Jp Jq . Exemplo: a soluo xq = (1 1 1 0 1 1)t
descendente da soluo xp = (0 0 1 0 1 1)t .
Em alguns problemas, certas variveis devem ser fixadas 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.
P
P
Propriedade 1 Se xp uma soluo de (3) ento
cj x j
cj xj para todas as solues xq
jJp
jJq
descendentes de xp .
Demonstrao:
Basta lembrar que cj 0 j = 1, 2, , n e que Jp Jq .
Propriedade 2 Se x0 = (0 0 0)t satisfaz (2), ento x0 uma soluo tima de (P).
Demonstrao:
Como, por hiptese, cj 0 e xj {0, 1} ento z =
n
P
j=1
95
A partir da soluo xp desejamos obter xq descendente de xp tal que |Jq | = |Jp | + 1 ou, equivalentemente, Jq = Jp {l}, onde l o ndice da varivel que assumir valor unitrio. Consideremos
as seguintes hipteses:
p
q
p
(i) Se
Px vivel
P de (P) ento no nos interessa buscar um descendente x de x , pois
cj x j
cj xj (vide Propriedade 1).
jJp
(ii) Se
jJq
jJp
fornecero valores funo objetivo (1) sempre superiores ou iguais a z. Nesse caso, tambm
no nos interessa enumerar os descendentes de xp .
(iii) Se existir
P ndice iPtal que:
mnimo{0, aij } < 0
bi
aij xj
j6Jp
jJp
restrio i.
P
Seja spi = bi
aij xj , isto , spi representa o valor de si quando x = xp .
jJp
cj xj + ck z, k 6 Jp }
jJp
jCp
min{0, spi
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.
Caso dpl = 0 ento a soluo descendente associada a Jq = Jp {l} ser vivel do problema
(P).
No caso de haver mais de um ndice para o qual dpj = 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 verificada, tem-se Cp 6= {}.
Suponhamos, agora, que em xq descendente direto de xp , isto , o ltimo a ser desenvolvido a
partir de xp , o conjunto Cq seja vazio, ou ainda uma das trs condies de parada seja satisfeita.
Teremos, ento, de xq voltar a xp e atualizar Cp de duas maneiras:
(i) Cp = Cp {l}, onde l tal que Jq = Jp {l}.
(ii) Ap poder ser modificado caso z tambm o seja, acarretando outra modificao em Cp .
O retorno de xq a xp denominado backtracking. A enumerao pra completamente quando
C0 = {}. 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 final da enumerao.
Apresentaremos, a seguir, uma maneira de enumerao implcita finita, isto , nunca enumeraremos explicitamente a mesma soluo e, assim, a enumerao termina.
Usaremos uma estrutura de pilha proposta por Glover (1965) e Geoffrion (1967). Essa pilha
representa o conjunto dos ndices associados s variveis fixadas.
Seja a pilha , para a qual p(j) ser sua j-sima componente tal que:
p(j) > 0 se xp(j) = 1
p(j) < 0 se xp(j) = 0
Por exemplo, = [3, 2, 7, 4] representa x3 = 0, x2 = 1, x7 = 0, x4 = 0 com valores fixos e
todos os descendentes xq dessa soluo no podero ter os ndices 3, 7 e 4 pertencendo a Jq .
Algoritmo de Balas:
Fase inicial
= {};
Fase 0 (Inicializao)
= {};
z = ;
Fase 1
Se uma das condies de parada for verificada v para a fase 2. No caso de ser a primeira, isto
, est associada a uma soluo vivel xp do problema (P), ento neste caso se cxp < z far-se-
z = cxp e a melhor soluo at o momento xp ;
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
Implcita de Balas.
min z =
5x1 + 7x2 + 10x3 + 3x4 + x5
s.a:
x1 + 3x2 5x3 x4 + 4x5
2x1 6x2 + 3x3 + 2x4 2x5
x2 2x3 + x4 + x5
x1 ,
x2 ,
x3 ,
x4 ,
x5
Variveis de folga si :
s1 = 2 + x1 3x2 + 5x3 + x4 4x5 0
s2 = 0 2x1 + 6x2 3x3 2x4 + 2x5 0
s3 = 1 + 0x1 x2 + 2x3 x4 x5 0
-2
0
-1
{0,1}
Iterao inicial:
x0 = (0 0 0 0 0)t , J0 = {}, s01 = 2, s02 = 0, s03 = 1. = . Tem-se:
1) x0 invivel pois si < 0, no caso, tem-se s01 = 2 < 0 e s03 = 1 < 0
2) z = , pois no se conhece uma soluo vivel
3) As duas primeiras condies de parada, (i) e (ii), no so verificadas. Vejamos a terceira:
-2 + 1 + 0 + 5 + 1 + 0 = 5 0
0+0+6+0+0+2=80
-1 + 0 + 0 + 2 + 0 + 0 = 1 0
que tambm no verificada. Assim, necessitamos encontrar uma soluo descendente de x0 .
Para isso, definiremos 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).
Calculemos d0j 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=50
-3 + 0 + 6 + 0 + 2 = 5 0
1+0+0+0+0=10
nenhuma das condies de parada foi verificada. 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 fixo. A segunda condio
de parada no verificada; no entanto, a terceira atendida:
3+1+1+0=50
-3 + 0 + 0 + 2 = -1 < 0
1+0+0+0=10
Devemos, portanto, fazer novo backtracking.
Iterao 4: (backtracking)
Com o backtracking, = [3]. A soluo x4 = (0 0 0 0 0)t descendente de x0 , mas com x3 = 0
fixo. 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=80
-1 + 0 + 0 + 0 + 0 = -1 < 0
Como a terceira condio de parada verificada, 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.
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 significado das seguintes restries?
(a) x1 + x2 + x3 + x4 + x5 2
(b) x1 + x2 + x3 + x4 + x5 2
(c) x3 x1
(d) x2 + x3 + x4 x1
(e) x2 + x3 + x4 x1
99
(2) No problema das p-medianas aparecem as duas restries abaixo:
X
xij = 1 j Clientes
iFacilidades
1
1
1
0
0
1
1
0
1
Artigo
2 3 4
0 1 0
0 0 0
1 1 1
1 1 0
0 1 0
0 1 1
1 1 0
0 0 1
5
0
1
1
0
0
0
1
0
(4) No incio de cada perodo letivo, toda instituio de ensino tem que resolver o seguinte problema: Alocar as turmas de disciplinas ao conjunto de salas existentes. Em muitas instituies, 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 estratgia 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 exemplificar o problema de designao envolvido, considere um
conjunto T de turmas e um conjunto S de salas, como o exemplificado 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
Capacidade
Turma
Demanda
Turmas
1
2
3
4
5
1
42
30
11
7
19
1
70
1
28
2
32
20
1
997
9
2
60
3
45
2
40
4
30
3
59
Salas
3
4
17
2
5
990
986 971
982 967
994 979
5
48
4
63
6
50
5
51
5
20
992
989
985
997
6
22
10
991
987
999
(5) A Laminao a Frio Ltda. produz bobinas, rolos e fitas 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 planejamento estabelece os chamados padres de corte. Um padro de corte estabelece como
uma bobina deve ser cortada. Nesse caso especfico, os padres de corte definidos pela rea
de planejamento so cinco, conforme tabela a seguir.
Largura dos rolos
demandados [cm]
19
36
62
25
48
Demanda
10
12
15
31
17
Padres de corte
A B C D E
1 0 0 3 1
1 0 2 1 0
1 1 0 0 0
0 2 0 1 2
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 atividades relacionadas limpeza e conservao do patrimnio pblico. Diferentemente das obras,
limpeza de difcil auditoria e, mais importante do que isso, a investigao tem dificuldades
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, estabeleceu 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, defina qual o custo mnimo da licitao e qual licitante deve ficar 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 seguintes. 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
Nmero requerido
Custo ($)
Qua
13
160
Qui
16
160
Sex
19
160
Sab
14
160
102
minimize
(8.83)
X
sujeito a:
dij xij r
j Clientes
(8.84)
xij = 1
j Clientes
(8.85)
xij yi
i F acilidades, j Clientes
(8.86)
iF acilidades
X
iF acilidades
yi = p
(8.87)
iF acilidades
yi {0, 1} i F acilidades
xij {0, 1} i F acilidades, j Clientes
(8.88)
(8.89)
A
30
40
B
37
52
C
49
49
D
52
64
E
20
26
F
40
30
G
21
47
H I
17 31
63 62
J
52
33
K
51
21
L
42
41
M
31
32
N
5
25
O P
12 36
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 suficientemente grande. A partir
desse objeto, deseja-se gerar uma unidade de vrios itens retangulares de dimenses (hi , wi ),
onde hi o comprimento e wi 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
, h1 h2 hn .
Assim, o Open Dimensional Problem guilhotinado pode ser modelado por:
P
min
hi yi
iItens
P
yj +
xij
j Itens
iItens | i<j
wj xij
(L wi ) yi
i Itens
i Itens
i Itens, j Itens, j < i
jItens | j>i
yi
xij
{0, 1}
{0, 1}
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 definem que as variveis
de deciso so binrias.
Considerando um objeto retangular de largura L = 20 e comprimento suficientemente 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
altura hi
largura wi
A
15
9
B C
14 13
4 10
D E F
11 9 7
3 5 11
G H I J
6 4 2 1
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 j J 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.
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
(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
Arquivo
1
2
3
4
5
Cap. (GB)
1
1
1
0
0
1
30
2
1
0
1
0
1
50
3
0
1
0
1
0
10
4
1
0
0
0
1
20
Disco
5
6
1
0
0
0
1
0
0
1
0
1
10 40
7
0
0
1
0
1
30
8
1
0
0
1
0
10
9
1
0
0
0
1
20
10
0
0
1
0
1
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
pi
di
A
7
13
B C
4 2
10 6
D
5
9
E
6
3
F G
3 1
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 bi segundos, que h
n = 100 propagandas que podem ser inseridas na programao e que cada propaganda j
dura aj segundos e traz um retorno de cij 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 financeiro seja o maior possvel.
(16) Simplifique o problema a seguir, justificando sucintamente.
105
maximize
sujeito a:
(8.90)
(8.91)
(8.92)
(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
sujeito a:
7
9
10
{0, 1} j = 1, 2, . . . , 4
(8.94)
(8.95)
(8.96)
(8.97)
(8.98)
(18) Transforme o problema no-linear 0-1 seguinte em um problema de programao linear inteira
mista (PLIM):
minimize
sujeito a:
4x1 x2 x4
2x1 x3 + x2 + 3x4 4
xj {0, 1} j = 1, 2, 3, 4
(8.99)
(8.100)
(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
sujeito a:
4
5
15
Z+ j = 1, 2, 3
(a) Utilize a variante de Dank para escolher a varivel a ramificar. Em caso de empate nesta
regra, ramifique a varivel de menor ndice;
(b) Faa busca em profundidade;
(c) Escolhida a varivel a ramificar, ramifique 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, 2a edio, Rio de Janeiro, 2005.
[4] G. Lachtermacher. Pesquisa Operacional na tomada de decises. Editora Campus, 2a 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 Complexity. Dover Publications, Inc., New York, 1998.
[7] M. J. F. Souza. Programao de Horrios em Escolas: uma aproximao por metaheursticas. 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, 8a edio, So Paulo, 2008.