Академический Документы
Профессиональный Документы
Культура Документы
OTIMIZAO COMBINATRIA
Departamento de Computao
Instituto de Cincias Exatas e Biolgicas
Universidade Federal de Ouro Preto
Homepage: http://www.decom.ufop.br/prof/marcone
E-mail: marcone.freitas@yahoo.com.br
Otimizao Combinatria
Sumrio
I Programao Inteira
1 Introduo
1.1
2.1
Alocao de recursos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
. . . . . . . . . . . . . . . . . . . .
2.3
2.4
10
2.5
10
2.6
. . . . . . . . . . . . . . .
12
2.7
13
2.8
Alocao de pessoal (
. . . . . . . . . . . . . . . . . . . . . . . .
15
2.9
20
22
Knapsack Problem )
Sta Scheduling )
23
24
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . .
27
. . . . . . . . . . . . . . . . . . . . .
30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Bin Packing )
26
School timetabling )
. . . . . . . . . . . . . .
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
p-Medianas . . . . . .
p-Centros . . . . . . .
p-Medianas capacitado
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
33
. . . . . . . . . . . . . . . . . . . .
35
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
42
43
44
. . . . . . . . . . . . . . . . . . . . . . . .
44
46
. . . . . . . . . . . . . . . . . . . . .
47
. . . . . . . . . . . . . . . . . . . . . . . .
48
. . . . . . . . . . . . . . . . . . . . . . .
48
48
49
2.24.6 Minimizao do
49
lateness
mximo
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
49
50
52
2.26
54
Job Shop
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelagem de PPL's
. . . . . . . . . . .
55
58
Branch-and-Bound
60
62
4.1
Problema de Transporte
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.2
64
4.3
. . . . . . . . . . . . . . . . . . . . .
65
4.4
. . . . . . . . . . . . . . . . . . . . . . .
67
4.5
69
4.6
Comando SET
73
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.1
Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.2
74
Modelagem Heurstica
77
5.3
5.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1
Heursticas Construtivas
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.2
Heursticas de Renamento
77
. . . . . . . . . . . . . . . . . . . . . . . . . .
80
Variantes do PCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
m-Caixeiros
5.4.1
Problema dos
Viajantes
. . . . . . . . . . . . . . . . . . . . .
5.4.2
. . . . . .
82
82
84
6.1
Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
6.2
84
6.3
88
6.4
89
6.4.1
Heursticas Construtivas
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
6.4.2
Heursticas de renamento . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
93
8 Exerccios propostos
98
Parte I
Programao Inteira
1
Introduo
= 1 (chocolate)
max f (x) =
3
|{z}
$
(lata de chocolate)
x1
|{z}
(latas de chocolate)
1
|{z}
$
(lata de creme)
x2
|{z}
(latas de creme)
(c) Restries:
x1 60
x2 40
(No h demanda para mais do que 40 latas de sorvete de creme por dia)
x1 10
x1 + x2 20
Para resolver esse Problema de Programao Linear Inteira (PLI), construamos gracamente
a regio vivel:
Propriedade de um PPL:
f (x) = 3x1 + x2 ,
resulta que
Ox2 .
Ox1
gradiente. Traa-se, a seguir, uma reta perpendicular direo do gradiente. Caminhando-se com
essa reta no sentido apontado pelo gradiente at tangenciar a regio vivel tem-se, no ponto de
tangncia, a soluo tima. Logo, o timo do PPL em questo ocorre no vrtice de coordenadas
(60, 20), com valor timo dado por f (x ) = 200, isto , no esquema timo de produo, devem ser
produzidas diariamente 60 latas de sorvete de chocolate e 20 de creme, com um retorno de $ 200.
No exemplo dado, a soluo tima ocorreu em um ponto de coordenadas inteiras. No entanto,
nem sempre isso ocorre, conforme mostra o exemplo a seguir:
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
x2 0),
a soluo
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:
x1
x1
f (x)
19
invivel
18
37
19
38
18
invivel
x1 = 19 e x2 = 1
a soluo tima do problema, com valor timo dado por f (x) = 38. Na realidade, a soluo
branch-and-bound,
destinada a
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
(supercanoa) e
x1 + x2 + x3 10
(H somente 10 capites)
x1 + 2x2 + 3x3 18
(H somente 18 tripulantes)
x1 4
x2 8
(H apenas 8 supercanoas)
x3 3
= 1 (jangada),
= 2
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 :
{Jangada, Supercanoa,
i
a embarcao do tipo i
Arca}
Tipo de embarcao
# Tripulantes req.
# Capites req.
# Emb. disp.
Lucro ($)
Jangada
50
Supercanoa
70
Arca
100
Funcionrios disp.
18
10
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
Nome
embarcacoes
B2:B4
capitaes
C2:C4
tripulacoes
D2:D4
disponibilidade
E2:E4
lucro
B5
ncapitaes
C5
ntrips
F2:F4
F7
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.
Item
52
23
35
15
100
60
70
15
Peso (Kg)
Valor
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:
xj =
1,
0,
se o item
caso contrrio.
c.2) Integralidade:
x1 , x2 , x3 , x4 , x5 {0, 1}
Considerando a notao a seguir:
itens
cap
wj
pj
{1,
2, 3, 4, 5
Capacidade da mochila
j
j
max
p j xj
jitens
P
w j xj
cap
{0, 1}
jitens
xj
j itens
existem
uj
unidades
max
P
jitens
P
p j xj
w j xj
cap
jitens
xj
xj
em que a varivel de deciso
xj
uj
Z+
j itens
j itens
alocados mochila.
10
capi .
wj
e valor de retorno
pj ,
h um
max
pj xij
imochilas
P jitens
wj xij
jitens
P
xij
capi
i mochilas
j itens
i mochilas , j itens
imochilas
xij
em que a varivel de deciso
xij
{0, 1}
capi
e 0, caso
seja alocado
uj
j.
max
pj xij
imochilas
P jitens
wj xij
jitens
P
xij
capi
i mochilas
uj
j itens
imochilas
xij
Neste modelo,
xij
Z+
i mochilas , j itens
j
alocados mochila
i.
Mostra-se, a seguir,
Bloco de clulas
Nome
D5:M5
Itens
C11:C13
D6:M6
D7:M7
D11:D13
Mochilas
peso
benecio
capacidade
D8:M8
D20:M22
O26
fo
11
sets:
Itens /@ole('MochilaInteiraMultipla(R).xls','Itens')/: w, p, u;
Mochilas/@ole('MochilaInteiraMultipla(R).xls','mochilas')/: cap;
matriz(Mochilas, Itens): x;
endsets
data:
w, p, cap, u = @ole('MochilaInteiraMultipla(R).xls',
'peso','beneficio','capacidade','u');
enddata
! Maximizar o benefcio pelo uso dos Itens;
[fo] max = @sum(Mochilas(i): @sum(Itens(j): p(j)*x(i,j)));
! A capacidade da mochila no pode ser superada;
@for(Mochilas(i): @sum(Itens(j): w(j)*x(i,j)) <= cap(i));
! Existem uj unidades de cada item j;
@for(Itens(j): @sum(Mochilas(i): x(i,j)) <= u(j));
! permitido levar um nmero inteiro de Itens;
@for(Mochilas(i): @for(Itens(j): @gin(x(i,j))));
data:
@ole('MochilaInteiraMultipla(R).xls','x','fo') = x, fo;
enddata
Na soluo tima deste problema, a mochila
item 3, duas unidades do item 5 e duas do item 10. O valor de retorno mximo 61.
12
As
padroes
bobinas
despi
demandaj
aij
estmax
Quantidade de bobinas do
j;
tipo j
i;
i;
xi
13
min
despi xi
ipadroes
aij xi
demandaj
j bobinas
aij xi
demandaj + estmax
j bobinas
ipadroes
P
ipadroes
xi
Z+
i padroes
j,
O primeiro
j,
enquanto
estmax
unidades.
Perda
Padro
2 m.
3 m.
4 m.
(m.)
padroes
barras
perdai
demandaj
aij
Conjunto de barras;
j;
j
xi
i;
i;
14
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
j , em metros,
!
P
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
dimenbarraj
Bloco de clulas
B10:B14
Nome
padroes
C9:E9
barras
C8:E8
dimenbarra
F10:F14
perda
C10:E14
C15:E15
demanda
J16:L16
excesso
M10:M14
solucao
M19
ptotal
15
sets:
padroes/@ole('CorteExcesso.xls','padroes')/: perda, x;
barras/@ole('CorteExcesso.xls','barras')/: demanda, dimenbarra;
matriz(padroes,barras): a;
endsets
data:
perda
demanda
a
dimenbarra
enddata
=
=
=
=
@ole('CorteExcesso.xls','perda');
@ole('CorteExcesso.xls','demanda');
@ole('CorteExcesso.xls','a');
@ole('CorteExcesso.xls','dimenbarra');
As
16
Turno
Horrio
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
i.
x1 + x6 51
c.2) Nmero de enfermeiros necessrios no turno 2:
x2 + x1 58
c.3) Nmero de enfermeiros necessrios no turno 3:
x3 + x2 62
c.4) Nmero de enfermeiros necessrios no turno 4:
x4 + x3 41
c.5) Nmero de enfermeiros necessrios no turno 5:
x5 + x4 32
c.6) Nmero de enfermeiros necessrios no turno 6:
x6 + x5 19
c.7) Integralidade e no-negatividade:
x1 , x2 , x3 , x4 , x5 , x6 Z+
Para fazer um modelo genrico deste PPLI, utilizemos as seguintes notaes:
turnos
ci
demandai
{1,
2, 3, 4, 5, 6
min
ci x i
iturnos
xi + xi1
xi
demandai
Z+
i turnos
i turnos
17
As restries
que iniciaram
enfermeiros
de trabalho
no turno anterior.
Em princpio, essas restries no podem ser utilizadas diretamente, uma vez que quando
i = 1,
xi1 no est denida. 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 varivel
a cardinalidade do conjunto
turnos.
No LINGO, uma soluo para esta situao usar uma lista circular. A funo que faz isso no
LINGO
@wrap.
Nome
B3:B8
turnos
E3:E8
custo
D3:D8
demanda
G3:G8
excturno
F3:F8
soluo
E10
fo
sets:
turnos/@ole('enfermeiros.xls','turnos')/:c, !custo;
x, !soluo;
demanda;!demanda;
endsets
data:
c, demanda = @ole('enfermeiros.xls','custo','demanda');
enddata
18
Suponha que a hora-extra seja remunerada em 50% a mais que a hora normal.
Considere, tambm, que em cada turno no mais de 20% dos enfermeiros possam estar fazendo
hora-extra.
Faa um modelo de programao linear inteira que minimize os gastos com a con-
tratao de mo-de-obra.
tima dessa variante poder ter custo menor que a da soluo tima sem a possibilidade de os
enfermeiros fazerem hora-extra? Justique.
Soluo:
(a) Variveis de deciso:
xi
e no fazem hora-
extra.
yi
min f (x, y)
(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
e fazem hora-extra.
19
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+
phe signica o percentual mximo de
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
Bloco de clulas
A2:A7
turnos
I9
D2:D7
custoshe
I2:I7
Nome
phe
folga
E2:E7
custoche
F2:F7
C2:C7
demanda
G2:G7
H2:H7
excturno
D9
fo
20
sets:
turnos/@ole('enfhe.xls','turnos')/:c, !custo sem hora-extra;
d, !custo com hora-extra;
x, !enfermeiros sem hora-extra;
y, !enfermeiros com hora-extra;
demanda;!demanda;
endsets
data:
c, d, demanda = @ole('enfhe.xls','custoshe','custoche','demanda');
phe = @ole('enfhe.xls','phe');
enddata
[fo] min = @sum(turnos(i): c(i)*x(i) + d(i)*y(i));
@for(turnos(i):
[excturno] x(i) + x(@wrap(i-1,@size(turnos))) +
y(i) + y(@wrap(i-1,@size(turnos))) +
y(@wrap(i-2,@size(turnos))) >= demanda(i));
@for(turnos(i):
[folga] y(@wrap(i-2,@size(turnos))) <= phe*
(x(i) + x(@wrap(i-1,@size(turnos))) +
y(i) + y(@wrap(i-1,@size(turnos))) +
y(@wrap(i-2,@size(turnos)))));
@for(turnos(i):
@gin(x(i));
@gin(y(i)));
data:
@ole('enfhe.xls','x','fo','excturno') = x, fo, excturno;
@ole('enfhe.xls','y','folga') = y, folga;
enddata
Como se observa, na soluo tima devem ser contratados: 20 enfermeiros para iniciarem o
trabalho no turno 1 sem fazer hora-extra, 26 no turno 2, 19 no turno 3, 17 no turno 4, nenhum no
turno 5 e 9 no turno 6. Por outro lado, devem ser contratados 12 enfermeiros no turno 1 fazendo
hora-extra, 5 no turno 3 e 10 no turno 5. O custo total mnimo com a contratao de enfermeiros
de R$120.050,00.
21
Prateleiras
p1
p2
p3
p4
p5
Lucro (R$/unidade)
570
575
555
550
560
Processo Normal
12
16
19
Processo Acelerado
10
16
A montagem nal de cada prateleira requer 16 h de mo-de-obra por unidade. A fbrica possui
3 mquinas para o processo normal e 2 para o processo acelerado. As mquinas trabalham em 2
turnos de 8 horas por dia em um regime de 6 dias por semana. Uma equipe de 8 pessoas trabalha
em turno nico de 8 horas durante 6 dias na montagem das prateleiras.
Determine o melhor
esquema de produo.
Soluo:
(a) Variveis de deciso:
xij
normal) e
i = N (processo
= A (processo acelerado).
P rat
P roc
tpi
tij
tmj
T otaltm
i
j
no processo
max
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
Soluo:
(a) Variveis de deciso:
xij
ao n
j , j 6= i.
= 0
(N A)
= 0
(N B)
= 0
(N C)
= 0
(N D)
= 0
(N E)
= 0
(N F)
xAB 6
xAC 7
xBC 1
xBD 3
xBE 4
xCD 2
xCF 3
xDE 3
xDF 2
xEG 2
xF E 2
xF G 4
c.3) Integralidade e no-negatividade:
xAB , xAC , xBC , xBD , xBE , xCD , xCF , xDE , xDF , xEG , xF E , xF G Z+
Para formular o problema de forma genrica, considere as seguintes notaes:
23
V
capij
n
Conjunto de ns
(i, j)
Capacidade do arco
n = |V |
max
x1j
P
xij
xji
jV
jV
P
P
x1j
xin
jV
jV
i V, i 6= 1
i 6= n
iV
xij
xij
capij
Z+
i, j V
i, j V
o n destino.
Soluo:
(a) Variveis de deciso:
xij =
1,
0,
se o arco
(i, j)
pertencer ao caminho;
caso contrrio.
= 1
(N 1)
= 0
(N 2)
= 0
(N 3)
= 0
(N 4)
= 0
(N 5)
= 1
(N 6)
24
V
dij
n
Distncia do vrtice
ao vrtice
n = |V |
n como o n destino,
P P
min
dij xij
P
xij
xji
jV
P
x1j
jV
P
xin
iV jV
P
jV
i V, i 6= 1
{0, 1}
i 6= n
iV
xij
i, j V
Disponibilidade
Mquina
(mquina-hora/ms)
Mo-de-obra
(homem-hora/ms)
M1
70
MO1
120
M2
20
MO2
160
O setor tcnico da empresa fornece os seguintes coecientes, que especicam o total de horas
de mquina e horas de mo-de-obra necessrias para a produo de uma unidade de cada produto:
Produtos
Produtos
Mquinas
II
III
IV
Mo-de-obra
II
III
IV
M1
MO1
M2
MO2
Lucro unitrio
Produtos
(unidades/ms)
(R$/ms)
70
10
II
60
III
40
IV
20
25
xj
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
j,
em unidades monetrias
i,
na mquina
i,
em horas
pela mo-de-obra
em horas
k,
em horas
max
P
j
PProd
jP
Prod
jProd
lj xj
mij xj
tmi
i Maq
okj xj
tok
k MO
pj
Z+
j Prod
j Prod
xj
xj
k,
em horas
26
job
jobs
em um conjunto de 3 processadores.
tempo de processamento independente do processador. O tempo (em minutos) gasto para execuo de cada
job
jobs.
Soluo:
(a) Variveis de deciso:
xij =
Cmax
1,
0,
se o
job j
i;
caso contrrio.
makespan
min Cmax
(c) Restries:
c.1) Cada
job
job 1)
(job 2)
(job 3)
(job 4)
(job 5)
(job 6)
(job 7)
(job 8)
(job 9)
(job 10)
jobs
em cada processador:
6x11 + 4x12 + 5x13 + 4x14 + 3x15 + 7x16 + 8x17 + 5x18 + 3x19 + 3x1,10 Cmax
6x21 + 4x22 + 5x23 + 4x24 + 3x25 + 7x26 + 8x27 + 5x28 + 3x29 + 3x2,10 Cmax
6x31 + 4x32 + 5x33 + 4x34 + 3x35 + 7x36 + 8x37 + 5x38 + 3x39 + 3x3,10 Cmax
xij {0, 1} i = 1, 2, 3
j = 1, 2, ..., 10
Jobs
Procs
tj
jobs
Conjunto dos
Tempo de execuo do
job j
min
Cmax
P
xij
i
Procs
P
tj xij
j Jobs
Cmax
i Procs
xij
{0, 1}
i Procs
jJobs
j Jobs
27
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
Total (h)
Demanda (unidades)
3000
2500
500
Montagem (h/unidade)
1,1
1,9
0,7
6000
Acabamento (h/unidade)
2,5
0,8
4,0
10000
50
90
120
Terceirizado (R$)
65
92
140
x1 + y1 3000
x2 + y2 2500
x3 + y3 500
c.2) Respeito ao tempo disponvel para a montagem:
M odelos
:
cprodj
:
ctercj
:
demandaj
:
T empM ontj
:
T empAcabj
:
T empDispM ont :
T empDispAcab :
de motor
j
modelo j
de motor
de motor
de motor
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));
[folgaMont] @sum(Modelos(j): TempMont(j)*x(j)) <= TempDispMont;
[folgaAcab] @sum(Modelos(j): TempAcab(j)*x(j)) <= TempDispAcab;
@for(Modelos(j):
[Estoque] x(j) + y(j) >= demanda(j));
@for(Modelos(j):
@gin(x(j));
@gin(y(j)));
! Exportar para arquivo texto;
data:
@text('Producao.txt') = x;
@text('Terceirizado.txt') = y;
enddata
29
til ().
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
tem capacidade
capi
tem um peso
wj .
Determine o nmero
Conteineres:
Itens
:
wj
:
capi
:
Capacidade do continer
yi
xij
Ento o
min
colocado no continer
e 0, caso contrrio
yi
iConteineres
P
(BP1)
xij
j Itens
(BP2)
wj xij
capi yi
i Conteineres
(BP3)
xij
yi
{0, 1}
{0, 1}
i Conteineres, j Itens
i Conteineres
(BP4)
iConteineres
P
jItens
(BP5)
Neste modelo, a expresso (BP1) indica que o objetivo minimizar o nmero de contineres.
As restries (BP2) asseguram que cada item alocado a um nico continer.
restries (BP3) impede que a capacidade de cada continer seja ultrapassada.
O conjunto de
As restries
(hi , wi ),
onde
hi
o comprimento e
wi W ,
i = 1, , n
Open Dimensional Problem (ODP) consiste em determinar a melhor forma de cortar o objeto
h5 + h1 + h6 .
Este problema aparece na literatura com uma srie de nomes diferentes, dependendo do tipo
de variao sofrida. No caso de os itens serem retngulos, o ODP recebe os nomes de
ou
Rectangular
lares devem ser colocados no objeto de forma ortogonal, o ODP conhecido como
Orthogonal
31
Ele denominado
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
ou
Nesting Problem.
h1 h2 hn
Como consequencia da terceira considerao, tem-se que a altura de cada faixa corresponde
altura
hi
do item
Assim, sendo
i
n
yi =
1
0
Se o item
inicializa a faixa
Caso contrrio
Deve-se ressaltar, ainda, que, devido primeira e terceira considerao, somente os itens
que
que
j > i,
j = i,
podem ser alocados na faixa. Essa condio se deve ao fato de que, se um item
inicializa a faixa
i,
xij =
j , tal
j , tal
1
0
Se o item
Caso contrrio
32
Assim, o
ODP
n
P
min
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.
segundo conjunto de restries assegura que o somatrio da largura dos itens alocados em cada
faixa no ultrapassar a largura do objeto. As demais restries denem as variveis de deciso
como binrias.
de professores, um conjunto
de turmas, um conjunto
de dias da semana
programao inteira que faa a alocao dos professores s turmas maximizando a preferncia dos
professores com relao aos dias e horrios das aulas.
Soluo:
O problema de programao de horrios em escolas pode ser modelado da seguinte forma:
max
PP P P
cikl xijkl
iP jT kD lH P
jT
P
P iP
P
kD lH
P
(PH1)
xijkl
i P, k D, l H
(PH2)
xijkl
j T, k D, l H
(PH3)
xijkl
= CHij
i P, j T
(PH4)
xijkl
i P, j T, k D
(PH5)
xijkl
{0, 1}
i P, j T, k D, l H
(PH6)
lH
Neste modelo, as restries (PH2) asseguram que xado um dia e um horrio dirio, um
professor no d aula para mais de uma turma ao mesmo tempo. As restries (PH3) impedem
que uma turma tenha aula com mais de um professor ao mesmo tempo.
As restries (PH4)
garantem que a carga horria de cada professor para cada turma cumprida.
restries (PH5) impede que uma turma tenha mais de
O conjunto de
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
e horrio dirio
e 0, caso
dispikl
xijkl
i P, k D, l H
(PH7)
jT
2.18 Localizao
[Retirado de Arenales
et al.
J
I
qj
dij
cij
fi
Qi
Conjunto de ns
Conjunto de locais
j
j
Demanda do cliente
Distncia do cliente
facilidade localizada em
qj
do cliente
2.18.1 p-Medianas
Este problema envolve a localizao de
modo a minimizar a soma das distncias de clientes a facilidades e tal que cada cliente seja atendido
por uma nica facilidade.
Variveis de deciso:
xij =
yi =
1,
0,
1,
0,
se o cliente
i;
caso contrrio.
i;
caso contrrio.
min
PP
iI jJ
P
dij xij
xij
(LF1)
j J
(LF2)
yi
= p
i I, j J
(LF3)
i I, j J
i I
iI
xij
P
yi
(LF4)
iI
xij
yi
{0, 1}
{0, 1}
(LF5)
(LF6)
34
i.
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,
importante observar que as restries (LF3) fazem a ligao entre as variveis
yi = 1
ento
entanto, se
no local
Este exemplo
e uma facilidade
i,
se
2.18.2 p-Centros
[Retirado de Arenales
et al.
facilidades
O problema de p-centros-ns
p-medianas
e a seguinte
varivel adicional:
O modelo de programao inteira referente a esse problema pode ser formulado como:
min
r
r
P
xij
(LF6)
dij xij
j J
(LF7)
iI
j J
(LF2)
yi
p
i I, j J
(LF3)
{0, 1}
{0, 1}
i I, j J
i I
iI
xij
P
yi
(LF4)
iI
xij
yi
(LF5)
(LF6)
a uma
p-medianas.
Qi
P
jJ
qj xij
Qi yi
i I
(LF8)
i.
Assim, as restries
35
Pilha
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
Fe
Al2 O3
(%)
(%)
PPC
(%)
(%)
Massa
(ton)
52,64
0,52
0,084
4,48
45
1500
39,92
0,18
0,029
0,65
97
2000
47,19
0,50
0,050
2,52
52
1700
49,36
0,22
0,039
1,74
78
1450
43,94
0,46
0,032
2,36
41
1250
48,97
0,54
0,057
4,34
90
1890
47,46
0,20
0,047
5,07
1640
46,52
0,32
0,039
3,51
1124
56,09
0,95
0,059
4,10
80
1990
46,00
0,26
0,031
2,51
21
900
49,09
0,22
0,040
4,20
12
1540
49,77
0,20
0,047
4,81
12
1630
53,03
0,24
0,047
4,17
1320
52,96
0,29
0,052
4,81
1245
42,09
0,17
0,031
1,38
47
1859
(%)
He
A tabela a seguir classica 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
I
MI C MC
Peso do Critrio 0
1
5
10
100
Parmetro
F e Al2 O3 P
P P C He
Critrio
MI
MC
C
Considere, ainda, os seguintes pesos para comparar os diversos parmetros de controle entre
si:
Parmetro
F e Al2 O3
Peso de comparao 1
100
PPC
He
1000
10
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 especicaes de qualidade estejam mais prximas das metas especicadas?
Observao: considere que a penalidade pelo desvio de atendimento meta igual ao produto do
peso de comparao pelo correspondente peso do critrio.
parametros
pilhas
tlj
trj
wdtj
dtnj
dtpj
Qui
nunidreti
tij
p
Conjunto de pilhas;
no produto nal
no produto nal
(%);
j;
j , em toneladas;
Desvio positivo da meta para o parmetro j , em toneladas;
Quantidade mxima disponvel na pilha i, em toneladas;
na pilha
Teor do parmetro
(%);
(%);
xi
yi
1
0
se a pilha
i,
em toneladas;
for usada;
caso contrrio.
min
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
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:
<=
0);
x(i))
>=
0);
38
! A quantidade a ser retomada em cada pilha i deve ser inferior ou igual a Qu(i);
@for(pilhas(i): @BND(0, x(i), Qu(i)));
>=
x(i)/Qu(i));
! Se for retomar alguma pilha i a quantidade x(i) a retomar deve ser superior ou
igual a retmin;
@for(pilhas(i): x(i)
>=
retmin*y(i));
custo do minrio para a empresa composto por um custo xo mensal para cada mina (este valor
pago em caso de haver produo na mina), mais um custo de transporte ($/t) que varia de
acordo com a distncia entre as minas e usinas (cada par mina/usina tem um custo diferente). Os
dados so mostrados na tabela a seguir:
MINAS
Mina 1 ($/t)
Mina 2 ($/t)
Mina 3 ($/t)
Mina 4 ($/t)
Quant. req. (t/ms)
13
11500
50000
14
14500
40000
6,5
10,8
12,4
13000
30000
8,5
12,7
9,8
12300
25500
10000
15400
13300
39
minas
usinas
capi
Conjunto de Minas ;
Conjunto de usinas;
demandaj
custoij
cxoi
i;
i;
j;
i
para a usina
j.
xij
yi
1
0
se a mina
para a usina
(j),
em toneladas;
for usada;
caso contrrio.
min
(custoij xij )
iminas jusinas
iminas
(cxoi yi )
s.a:
xij
capi
i minas
xij
demandaj
j usinas
i minas
jusinas
P
iminas
yi
xij )/capi
jusinas
xij
i minas, j usinas
yi
{0, 1}
i minas
40
Modelo LINGO
Title: Usinas(R).lg4;
sets:
minas/@ole('Usinas(R).xls','minas')/: cap, cxo, y;
usinas/@ole('Usinas(R).xls','usinas')/: demanda;
matriz(minas,usinas): custo, x;
endsets
data:
! Minimiza os custos com transporte entre as minas e o custo xo de utilizao das minas;
[fo] min = @sum(matriz(i,j): custo(i,j)*x(i,j)) + @sum(minas(i): cxo(i)*y(i));
! Total transportado de uma mina para as usinas deve ser menor ou igual
capacidade de produo da mina;
@for(minas(i): @sum(usinas(j): x(i,j))
<=
cap(i));
! A quantidade de minrio que chega a uma usina deve ser igual demanda da mesma,
uma vez que a oferta maior que a demanda ;
@for(usinas(j):@sum(minas(i): x(i,j))
demanda(j));
>=
41
isto , decidir o
assim como
|T | perodos de tempo.
duo denominado
Este conjunto de perodos de tempo para o qual a empresa planeja sua pro-
horizonte de planejamento.
Exemplos de
dit
Rt
ri
cit
hit
T
no perodo
demanda do item
no perodo
no perodo
xit
Iit
i
i
produzidos no perodo
Ii0
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,
igual ao que se
tinha em estoque no nal do perodo anterior (t 1), adicionado ao montante que foi produzido no
perodo t, menos o que foi demandado no perodo t. As restries (2.3) asseguram que a capacidade
requerida para a produo dos itens em cada perodo
xit do
anterior, Ii,t1 ,
produzida no perodo
et al.
lot sizing ).
de lotes (
horizonte de planejamento nito e dividido em perodos; (b) a demanda de cada item em cada
perodo dinmica, isto , varia ao longo do horizonte de planejamento; (c) a demanda e outros
parmetros dos modelos so supostos conhecidos, isto , tratam-se de modelos determinsticos.
Existem outros modelos em que o horizonte pode ser innito, a varivel tempo contnua, a 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
no perodo
demanda do item
i
i
i
i
(tamanho do lote)
43
et al.
do perodo
no perodo
I0
It
yt =
o estoque inicial;
min
Neste caso,
no perodo
o custo unitrio de
o estoque do item no m
1 se o item for produzido
(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)
k=t
xt
It
yt
0
0
{0, 1}
(DL5)
(DL6)
A funo objetivo (DL1) minimiza o custo total de preparao e estoque. As restries (DL2)
representam equaes de balanceamento de estoque em cada perodo t. Se
inicial para abater demandas no horizonte; portanto, pode-se assumir, sem perda de generalidade,
que
I0 = 0.
I|T | = 0
t limitada superiormente
|T |, e que o tamanho do lote positivo,
t (yt = 1). As restries (DL4), (DL5) e (DL6)
xt > 0
ao ltimo perodo
It+
It
t.
por
Considere as variveis:
estoque no m do perodo
Com a introduo destas novas variveis, a formulao anterior modicada 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)
k=t
xt
It+
It
yt
0
0
0
{0, 1}
(DL11)
(DL12)
(DL13)
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.
44
na literatura como
ser processados em
uma nica mquina ou facilidade, com restries de capacidade, e pode ser modelado como:
P P
(si yit
hi Iit )
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)
min
(DL14)
iN tT
(DL15)
(DL16)
iN
Mit
xit
Iit
yit
i
,
min{ Ct sp
bi
|T |
P
dik }
k=t
0
0
{0, 1}
(DL19)
(DL20)
A funo objetivo (DL14) minimiza o custo total de preparao e estoque. As restries (DL15)
correspondem ao balanceamento de estoque de cada item
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
limitante
Mit
xit > 0
t ao perodo |T |.
yit = 1.
se e somente se
(se
produzido
r1 (x1 , x2 , , xn ) b1
r2 (x1 , x2 , , xn ) b2
Neste caso, basta denir uma varivel binria
y=0
ento
r2
tal que se
(2.7)
y = 1
ento
r1
estar ativa e se
r1 (x1 , x2 , , xn ) b1 + M (1 y)
r2 (x1 , x2 , , xn ) b2 + M y
em que
(2.6)
(2.8)
(2.9)
4x1 + 2x2 80
2x1 + 5x2 100
(2.10)
(2.11)
45
As linhas cheias da Figura 3 mostram as retas que geram os semi-espaos denidos pelas
restries (2.10) e (2.11). J as linhas vermelhas (mais grossas) mostram o quanto essas retas tm
que ser transladadas de forma que elas sejam redundantes, isto , no ativas.
Para encontrar as retas vermelhas (em linhas mais grossas) proceda como segue. Gere, inicialmente, a reta base. Seja a reta
restrio (2.10). Explicitando
x2
2x2 = 80 4x1 .
Para ser
redundante, essa reta tem que ser transladada, no mnimo, 30 unidades direita do ponto (20,
0), isto , deve passar pelo ponto (50, 0) ou direita dele pois, caso contrrio, ela interceptaria
o semi-espao denido pela restrio
0 = 80 + M 4 50.
100.
tal que
Resolvendo, tem-se
dado por
Um valor pequeno de
representao matemtica da disjuno das duas restries apresentadas dada, ento, por:
Se tivermos
(2.12)
(2.13)
46
r1 (x1 , x2 , , xn ) b1 + M (1 y1 )
r2 (x1 , x2 , , xn ) b2 + M (1 y2 )
(2.14)
(2.15)
.
.
.
(2.16)
ri (x1 , x2 , , xn ) bi + M (1 yi )
(2.17)
.
.
.
(2.18)
rm (x1 , x2 , , xn ) bn + M (1 ym )
y1 + y2 + + yi + + ym = 1
yi {0, 1} i = 1, 2, , m
(2.19)
(2.20)
(2.21)
et al.
uma mquina. Todas as tarefas esto disponveis para processamento no instante zero e admite-
preemption )
se que a interrupo (
Considere os seguintes
pi
di
M
Ci
Ti
Ei
Li
i
= atraso da tarefa i, dado por Ti = max{Ci di , 0}
= adiantamento ou avano da tarefa i, dado por Ei = max{di Ci , 0}
= lateness da tarefa i, isto , Li = Ci di
1, se a tarefa i precede imediatamente a tarefa j
xij =
0, caso contrrio.
= instante de trmino do processamento da tarefa
Observe que o
lateness
mede o grau de atraso, o qual pode ser negativo. Neste ltimo caso, o
valor negativo indica que a tarefa no est atrasada e, sim, adiantada em relao sua data de
entrega.
Seja zero (0) uma tarefa ctcia que precede imediatamente a primeira tarefa e sucede imediatamente a ltima tarefa de uma sequncia de tarefas. A partir desses parmetros e variveis,
possvel formular problemas com critrios distintos de otimizao. As seguintes restries so
comuns a todos os problemas:
xij
j N {0}
(S1)
xij
i N {0}
(S2)
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)
iN {0},i6=j
P
jN {0},j6=i
(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
(S3) implica que
C j C i + pj
e se
xij = 0,
Cj Ci M ,
ento
xij = 1
a restrio
redundante (desativada). As restries (S4) e (S5) indicam o tipo das variveis. Observe que
C0
xado em ZERO.
Ci .
iN
problema, ento, consiste em:
min
Ci
iN
(S1) - (S5)
Pode-se demonstrar que a soluo tima deste problema dada pela regra SPT (
shortest pro-
cessing time ), em que as tarefas so sequenciadas em ordem no decrescente dos tempos de processamento, isto , as tarefas so processadas na sequncia
e
[i]
corresponde tarefa da
i-sima
13
10
20
sets:
Tarefas / 0 1 2 3 4 5 6 7/: p, d, C;
Matriz(Tarefas, Tarefas): x;
endsets
2
6
5
9
6 3 1;
3 20 4;
Tarefas
envolve as tarefas
data:
p = 0 7 4
d = 0 13 10
M = 1000;
enddata
48
7362
C(1) = 28, C(2) = 10, C(3) = 3, C(4) = 15, C(5) = 21,
O uxo total timo deste exemplo 84, sendo a sequncia tima dada por
4 5 1. As datas
C(6) = 6 e C(7) = 1.
de trmino so
Tmax ,
Ti Ci di
Ti
Tmax = max Ti .
como:
min Tmax
Tmax
Ti
Ti
(S1)
Ti
C i di
0
i N
i N
i N
(S5)
Demonstra-se que a soluo tima deste problema dada pela regra EDD (
que consiste em sequenciar as tarefas em ordem no decrescente das datas de entrega, isto , as
tarefas so processadas na sequncia:
tal que
min
Ti
iN
Ti
Ti
(S1)
Ci di
0
-
i N
i N
(S5)
49
min
(Ti + Ei )
iN
Ti
Ei
Ti
Ei
(S1)
C i di
di Ci
0
0
i N
i N
i N
i N
(S5)
yi = 1
se a tarefa
est atrasada e
yi = 0 ,
min
yi
iN
Ti
Ti
Ti
yi
(S1)
Note que se
Ti > 0
ento
C i di
M yi
0
{0, 1}
i N
i N
i N
i N
(S5)
yi = 1.
min
Lmax
Lmax
+
Li L
i
L+
i
L
i
(S1)
L+
i Li
C i di
0
0
i N
i N
i N
i N
(S5)
Demonstra-se que a soluo tima deste problema tambm dada pela regra EDD (
Due Date ).
Earliest
cia, basta incorpor-lo ao tempo de execuo dessa tarefa, isto , basta considerar o tempo de
processamento da tarefa
Cj
como
si + pi .
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
a tarefa
imediatamente aps
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
iN
min
Cmax
Cmax
(S1) - (S2)
i N
Ci
- (S7)
- (S4) - (S5)
tarefas (
pi ,
jobs ).
ei
ti
ti
ei
[ei , ti ],
denominada janela de
uma multa imposta por contratos de prestao de servio), alm de insatisfao do cliente.
As tarefas que forem nalizadas dentro da janela de entrega no proporcionam nenhum custo
para a empresa.
(h) Os custos por antecipao e atraso da produo so dependentes das tarefas, ou seja, cada
tarefa possui um custo unitrio de antecipao
i .
(i) O objetivo a ser alcanado com a resoluo deste problema a minimizao do somatrio dos
custos de antecipao e atraso da produo.
51
Ij Ii + yij (M + sij ) + pi M
No conjunto de restries (2.22),
yij {0, 1}
yij =
i = 0, 1, . . . , n , j = 1, 2, . . . , n + 1
M
i 6= j
(2.22)
1,
0,
se a tarefa
i;
caso contrrio.
Assim, quando
yij = 1,
No caso em que
yij = 0,
Ij Ii + pi + sij
(2.23)
Ij Ii + pi M
(2.24)
tem-se:
Nesta ltima situao, as restries (2.22) cam desativadas, pois a equao (2.24) redundante, uma vez que a parcela
(Ij Ii pi )
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
ei
yij = 1 i = 0, 1, . . . , n
(2.26)
j=1, j6=i
a data de incio do perodo de entrega da tarefa
i, Ei o tempo de antecipao da
e Ti o tempo de atraso da tarefa
i. As restries (2.27) a (2.30) garantem que o tempo de antecipao Ei seja o mximo entre 0 e
ei pi Ii e que o tempo de atraso Ti seja o mximo entre 0 e Ii + pi ti .
Ii + pi + Ei ei i = 1, 2, . . . , n
(2.27)
Sejam
tarefa
i , ti
Sejam
Ii + pi Ti ti i = 1, 2, . . . , n
(2.28)
Ei 0 i = 1, 2, . . . , n
(2.29)
Ti 0 i = 1, 2, . . . , n
(2.30)
i Ei ,
n
X
i=1
i Ti .
i=1
custos totais de antecipao e atraso da produo, dado pela equao (2.31).
n
X
min z =
(i Ei + i Ti )
i=1
Resumindo, as variveis de deciso do modelo relativo ao PSUMAA estudado so:
(2.31)
52
Ii :
yij :
i;
yij =1 a tarefa j
processada
e 0 caso contrrio;
Ei :
Ti :
i;
i;
Assim, o modelo correspondente de Programao Linear Inteira Mista (PLIM) para o PSUMAA dado :
minimizar
z=
n
X
(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)
i=0, i6=j
Ii + pi + Ei
Ii + pi Ti
Ii
Ei
Ti
yij
ei
ti
0
0
0
{0, 1}
(2.37)
(2.38)
(2.39)
(2.40)
(2.41)
mquinas paralelas e
makespan
pi
o tempo de
i, i = 1, , n.
Cmax
xik
makespan
processada na mquina
e 0, caso
contrrio
makespan
em mquinas
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}
(2.45)
i = 0, 1, 2, . . . , n; k = 1, 2, , m
makespan
makespan.
(2.46)
pik
sijk
di
M
i na mquina k
k para processar
:
:
a tarefa
Cik
xijk
Ti
Ei
na mquina
Atraso da tarefa
Avano da tarefa
A varivel
Ti
na mquina
precede imediatamente a
e 0, caso contrrio
i, isto , max{Ci di , 0}
i, isto , max{di Ci , 0}
Ei
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
(2.48)
x0jk 1
k = 1, , m 1
(2.49)
xhjk = 0
h = 1, 2, , n
(2.50)
j=0
j6=h
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
Ti
Ei
Ti
Ei
xijk
Ci di
di C i
0
0
{0, 1}
(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
k,
0,
tem uma
tem-se
ca desativada.
e, se
Job Shop
tarefas e
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
2 1 3
1 2 3
O=
3 2 1
2 1 3
3 1 2
5 7 10
9 5 3
5
8
2
P =
2 7 4
8 8 8
P.
55
Admita que as
pik
maqi
M
i-sima
na mquina
tarefa
Cik
xijk
na mquina
precede a tarefa
na mquina
0, caso contrrio
minimizar
n
X
Job Shop
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 uxo total das tarefas.
As
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 suciente 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 conhe-
Goal Programming ).
entrada:
M
:
E
:
F
:
S
:
Carreg :
V
:
Pr
:
Pl
:
Pu
:
:
+
:
tij
:
trj
:
tlj
:
tuj
:
j
:
+
j
:
rem :
Cuk :
capl :
Til
:
txM axl
M E;
Valor do parmetro
na frente
(%);
na mistura (%);
j na mistura (%);
Teor mximo admissvel para o parmetro j na mistura (%);
Penalidade por desvio negativo para o parmetro j na mistura;
Penalidade por desvio positivo para o parmetro j na mistura;
Teor mnimo admissvel para o parmetro
(t/h);
(min).
(t);
frente
complk :
1
0
se o caminho
(%);
k;
caso contrrio.
xi
yik
nil :
dm
j :
+
dmj :
P :
P+ :
1
0
(t/h);
se o equipamento de carga
i;
caso contrrio.
i em uma hora;
j na mistura (t/h);
j na mistura (t/h);
realiza na frente
Desvio negativo (ou desvio por baixo) de meta do parmetro de controle (respectivamente
ritmo de lavra recomendado) indica o quanto se cou abaixo da meta (respectivamente ritmo de
57
lavra recomendado), enquanto desvio positivo (ou desvio por cima) indica o quanto se ultrapassou
a meta (respectivamente ritmo de lavra recomendado).
O modelo de programao matemtica relativo alocao dinmica de uma frota heterognea
de caminhes e equipamentos de carga, levando-se em considerao metas de produo e qualidade
de minrio, apresentado pelas equaes (2.64)-(2.82).
min
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
kCarreg
X
iF
xi
Cuk yik 0
(2.77)
i F
(2.78)
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.
alocao de equipamentos de carga e a faixa de produtividade que torna vivel a utilizao desses
equipamentos. As restries (2.75) denem que cada frente deve operar com no mximo um 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) xam as variveis
yik
como binrias.
As restries (2.78) limitam o ritmo de lavra mximo em cada frente em funo da produtividade
da carregadeira a ela alocada.
O segundo grupo de restries est relacionado ao transporte de material na mina e alocao
dos caminhes. As restries (2.79) fazem com que cada caminho somente realize viagens uma
frente onde esteja alocado um equipamento de carga compatvel. As restries (2.80) denem que
cada caminho opere no mximo
txM axl %
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.
z1 = x1 x2 :
x1 + x2 z1 2 1 = 1
z1 x1
z1 x2
z1 0
(b) Linearizao do produto
z2 = x1 x2 x3 :
x1 + x2 + x3 z2 3 1 = 2
z2 x1
z2 x2
z2 x3
z2 0
Levando os resultados obtidos em (a) e (b) no modelo no-linear, obtem-se o seguinte problema
de programao linear inteira mista equivalente:
59
min
-
3x1
x1
x1
+
+
+
-
x2
+
+
9z1
z1
z1
z1
x3
+
,
z2
x2
x3
x3
z1
4z2
z2
z2
z2
z2
x1
x3
x2
x2
x1
x1
2x2
x2
1
0
0
2
0
0
0
{0, 1}
0
60
Branch-and-Bound
O mtodo
Se a
soluo desse subproblema tiver todas as variveis inteiras, ento os descendentes do ramo da
rvore analisado esto, naturalmente, implicitamente enumerados. H outro critrio para a
poda
da rvore tambm, mas trataremos disso mais adiante. Havendo variveis no inteiras e falhando
esse outro critrio, feita a escolha de uma varivel a ramicar. Escolhida essa varivel, deve-se,
agora, escolher qual ramo da rvore explorar primeiro, aquele associado ao valor menor ou igual
em dois subconjuntos tendo como elementos separadores o piso e o teto da varivel ramicada. A
regio do espao de busca entre o piso e o teto pode ser excluda, pois desprovida de solues
inteiras.
Para ilustrar o mtodo seja o seguinte problema de programao linear inteira.
min
4x1
8x1
5x1
x1
x1
3x2
3x2
6x2
2x2
x2
+
+
+
+
,
branching
z
24
30
9
Z+
aplicou um critrio, conhecido como Variante de Dank, para escolher a varivel a ramicar. Este
critrio consiste em escolher para ramicar a varivel no inteira que esteja mais prxima de um
inteiro (tanto com relao ao piso quanto ao teto).
Considerando como regras busca em profundidade e analisar primeiramente o valor maior da
varivel escolhida para ser ramicada, isto , o ramo
branch-and-bound.
Como o PPL 1 no produziu soluo com variveis inteiras, ento escolhida uma varivel
para ramicar; que, no caso do Critrio de Dank, a varivel
ramos tm que ser resolvidos: o ramo no qual
x2
x2 3
x2 .
Como
e o ramo no qual
x2 4.
x2 4.
Resolvendo
o PPL 3 encontramos uma soluo que tambm no inteira. Supondo busca em profundidade,
deve-se, portanto, ramicar uma das variveis no inteiras do PPL 3 (No caso de busca em
x1 2
x1 1
e o associado a
z = 20.
x2 4
x1 2,
do PPL 3.
Resolvendo-se o PPL 5, o qual descendente do PPL 3, encontra-se uma soluo no inteira
de valor
z = 20.
Ora, uma soluo com esse valor j foi encontrada resolvendo-se o PPL 4.
Resolvendo-o encontraramos uma soluo pior, ento a rvore de busca pode ser
em questo. Como todos os ramos descendentes do PPL 1 associados
ainda que implicitamente, resta analisar o ramo associado a
x2 3.
podada
no n
x2 4 j foram analisados,
61
Figura 4: rvore de
Branching
z = 17, 54,
poda
z = 21.
z = 20.
Nesse ponto, h a
por dois motivos: primeiro, porque foi encontrada uma soluo inteira e, segundo, porque o
valor de
poda
backtracking
retorna-se ao n raiz,
que o PPL 1. Como os dois ramos da rvore foram analisados, o mtodo encerrado, retornando
x?1 = 2, x?2 = 4, associado a z ? = 20, como soluo tima para o problema de programao linear
inteira dado.
Exerccio:
Resolva o seguinte PLI pelo mtodo
Branch-and-Bound,
Use a variante de Dank para escolher a varivel a ramicar, sendo que em caso de empate, escolha
a varivel de maior ndice.
max
2x1
x1
x1
6x1
x1
+
+
+
+
,
x2
2x2
x2
2x2
x2
z
7
0
21
Z+
62
f abricas
armazens
custoij
demandaj
capacidadei
ao armazm
minimizar
ao armazm
ifabricas jarmazens
X
jarmazens
custoij qtdEnviadaij
i fabricas
qtdEnviadaij capacidadei
j armazens
qtdEnviadaij = demandaj
ifabricas
qtdEnviadaij Z +
i f abricas j armazens
qtdEnviadaij
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));
Os dados de entrada para este modelo so apresentados pela gura a seguir. Nesta planilha
esto denidos os seguintes campos:
Nome
Campo
fabricas
B6:B11
armazens
C5:J5
capacidade
K6:K11
demanda
C12:J12
custo
C6:J11
solucao
C21:J26
cTotal
I28
64
65
Este processo ilustrado com o modelo Problema de Transporte, apresentado na seo 4.1.
Aps inserir o novo objeto contendo o arquivo Transporte.xls, temos:
66
A planilha de dados est agora embutida no LINGO, exibida ao topo do modelo Problema de
Transporte. Para edit-la, basta dar um duplo-clique sobre o objeto.
67
Quando o modelo for resolvido, o LINGO enviar os resultados para o arquivo Transporte.xls
atualizando a planilha embutida, como exibido a seguir.
68
Aps concluir os passos citados acima, um documento em branco do LINGO surgir na planilha
corrente.
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.
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
link
script,
link
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
Boto de Comando
clique em uma posio adequada da planilha para inserir esse boto. Ser, ento, criado o boto
CommandButton1.
Nesse editor, h uma janela esquerda com as propriedades desse boto, conforme ilustra a gura
a seguir.
Altere a propriedade
nome anterior e
default
caption
Solve
(observe que o
CommandButton1).
Na gura a seguir, representantiva da planilha Excel que faz interface com o Excel, aparece na
coluna K28 o boto
Nome
Campo
Nome Campo
fabricas
B6:B11
custo
C6:J11
armazens
C5:J5
solucao
C21:J26
capacidade
K6:K11
cTotal
I28
demanda
C12:J12
71
Existe ainda uma segunda planilha, chamada Modelo, que foi criada para conter o cdigo
script
Um
script
esquema:
SET ECHOIN 1
modelo LINGO
END
GO
SET ECHOIN 0
QUIT
GO usado para resolver o modelo, descrito entre as palavras-chave MODEL e END. O comando
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
script
seguinte campo:
Nome Campo
modelo
A1:A31
72
Isto , o bloco do Excel onde est o cdigo LINGO deve ser marcado e nomeado como modelo
ou outro nome qualquer.
Denidos os campos e o modelo LINGO, ser necessrio associar ao boto
Solve,
criado na
>
0) Then
Solve.
modelo
como parmetro.
script.
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
Voltando planilha Dados, para que o modelo seja resolvido basta apenas que o boto Solve
seja pressionado. Aps uma breve pausa, a soluo encontrada pelo LINGO enviada planilha,
como mostra a gura a seguir.
Feche o Editor do Visual Basic e retorne planilha Excel. Para sair do modo de desenvolvimento, clique no boto
73
Pronto, o boto
planilha automaticamente.
ndice_do_parametro [valor_do_parametro]
Caso o valor do parmetro seja omitido, o LINGO utilizar o valor padro para o parmetro
especicado. Alguns dos parmetros acessveis atravs do comando SET so apresentados a seguir.
ndice
10
Nome
TIMLIM
Padro
0
Descrio
Tempo limite de execuo em segundos
(0: sem limite)
23
TERSEO
24
STAWIN
Exibe a janela de
status
do processo de busca
ECHOIN
Envia comandos
script
para o terminal
ERRDLG
46
DUALCO
51
CUTOFF
1 10 9
41
SOLVEL
40
PRBLVL
probing,
IPTOLR
5 108
100 r%
IPTOLA
8 108
r,
HURDLE
none
a soluo tima.
Valor de uma soluo, normalmente encontrado via uma
heurstica. Com esse valor, o mtodo B & B no explora
solues piores que ele. Assim, serve para acelerar a busca.
74
5.1 Denio
Dado um conjunto de
Viajante (PCV), ou
um Caixeiro, iniciando seu percurso em uma cidade, chamada cidade origem, passar por todas as
demais
n1
cidades uma nica vez e retornar cidade origem percorrendo a menor distncia
possvel.
Exemplicando, consideremos 6 cidades com as distncias dadas pela tabela a seguir:
Cidade
queremos , dentre todas as possveis permutaes (solues), determinar aquela cuja distncia
total percorrida a menor possvel.
Se
dij = dji
solues.
G = (Cidades, A),
onde
de cidades (clientes) e
o conjunto de
xij :
fij :
min
dij xij
iCidades jCidades
(c) Restries:
k s chega um arco:
xik = 1 k Cidades
P
iCidades
(i, j)
para a cidade
75
k s sai um arco:
= 1 k Cidades
xkj
jCidades
c.3) Eliminao de subciclos:
fik
iCidades
fkj = 1 k Cidades | k 6= 1
jCidades
indica o uxo em
k menos o que
1). J na segunda, o uxo
n 1, onde n o nmero de
= 0)
o conjunto de
cidades e PCV.txt (vide Figura 5) um arquivo texto contendo os dados do PCV, a saber:
relao das cidades (A,
! Cidades;
A B C D E F G H I J K L M N O P ~
! Coordenadas x;
30 37 49 52 20 40 21 17 31 52 51 42 31
5 12 36 ~
! Coordenadas y;
40 52 49 64 26 30 47 63 62 33 21 41 32 25 42 16
Figura 5: Arquivo PCV.txt
76
model:
title: Problema do Caixeiro Viajante;
sets:
V / @file('Coordenadas.txt') /: u, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
data:
coord_x = @file('PCV.txt');
coord_y = @file('PCV.txt');
enddata
@for(V(i):
x(i,i) = 0;
@for(V(j):
d(i,j) = ( (coord_x(j) - coord_x(i))^2 +
(coord_y(j) - coord_y(i))^2
)^(0.5)));
[fo] min = @sum(V(i): @sum(V(j): d(i,j) * x(i,j)));
! A cada cidade k s chega um arco;
@for(V(k):
@sum(V(i): x(i,k)) = 1);
! De cada cidade k s sai um arco;
@for(V(k):
@sum(V(j): x(k,j)) = 1);
! Restricoes de eliminacao de subciclos;
@for(V(k) | k #ne# 1:
@sum(V(i): f(i,k)) - @sum(V(j): f(k,j)) = 1);
@for(V(i):
@for(V(j): f(i,j) <= (@size(V) - 1) * x(i,j)));
@for(V(i):
@for(V(j): @bin(x(i,j))));
end
= 219, 45, sendo a rota tima dada por
H I B D C L A.
77
g(.).
Nesta gura,
tmelhor
indica o
membro do conjunto de elementos candidatos com o valor mais favorvel da funo de avaliao
g,
maior valor de
s ;
Inicialize o conjunto
enquanto
de elementos candidatos;
(C 6= ) faa
g(tmelhor ) = melhor{g(t) | t C};
s s {tmelhor };
Atualize o conjunto C de elementos
4
5
6
7
m-enquanto;
Retorne
m
candidatos;
s;
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)
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
Iterao
1
2
n1
Total
1 + 2
operaes
n1
n2
1
+ + n 1
Observaes
H
H
n1
n2
n(n 1)/2
operaes
A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo elemento
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
conectada cidade 1, isto ,
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
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
conectada cidade 3, isto ,
e deve ser
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.
79
(c)
entre as cidades
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
(1 3 2),
s=
construo de uma subrota inicial envolvendo trs cidades. A distncia total percorrida
:
iii) Passo 3: Das cidades ainda no visitadas (4, 5 e 6), calculemos o custo de insero entre
todas as cidades
80
s621 ,
a essa subrota :
3 2 6).
9.
A distncia associada
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero entre
todas as cidades
iej
s413 ,
s = (1 4 3 2 6).
d(s) = d(s)anterior + s413 = 9 + 6 = 15.
A distncia
Em linhas gerais, nesta classe de heursticas parte-se de uma soluo inicial qualquer (a qual
pode ser obtida por uma heurstica construtiva ou ento gerada aleatoriamente) e caminha-se,
a cada iterao, de vizinho para vizinho de acordo com a denio de vizinhana adotada.
No caso do PCV, um movimento m pode ser a troca entre duas posies no vetor s. Assim,
t
se s = (4 3 1 2) , ento, com este tipo de movimento, so seus vizinhos as seguintes solues:
0
0
0
0
0
s1 = (3 4 1 2)t , s2 = (1 3 4 2)t , s3 = (2 3 1 4)t , s4 = (4 1 3 2)t , s5 = (4 2 1 3)t
81
s6 = (4 3 2 1)t .
No caso de o movimento
(3 1) entre as cidades 2 e 4 e,
as cidades 4 e 3.
(1 2) entre
o problema ser de maximizao. Nesse mtodo parte-se de uma soluo inicial qualquer e a
cada passo so analisados todos os seus possveis vizinhos, movendo-se somente para aquele
que representar uma melhora no valor atual da funo de avaliao. Desta forma, o mtodo
pra quando um timo local, com relao vizinhana utilizada, encontrado.
First Improve-
ment Method ).
melhor encontrado. Desta forma, apenas no pior caso, toda a vizinhana explorada. Entretanto, tal como no mtodo da descida/subida, este mtodo tambm ca preso no primeiro
timo local encontrado.
Outro mtodo alternativo, que evita essa pesquisa exaustiva o Mtodo de Descida/Subida
Randmica (
o aceitar somente se ele for estritamente melhor que a soluo corrente; no o sendo, a soluo
corrente permanece inalterada e outro vizinho gerado. O procedimento interrompido aps
um nmero xo de iteraes sem melhora no valor da melhor soluo obtida at ento. Como
nesse mtodo no feita a explorao de toda a vizinhana da soluo corrente, no h
garantia de que a soluo nal seja um timo local com relao vizinhana adotada.
Na Figura 6 mostra-se o pseudocdigo do Mtodo Randmico de Descida aplicado ao renamento de uma soluo
N (.).
Nesta gura,
IterMax
enquanto
3
4
5
6
7
faa
Selecione aleatoriamente
0
se (f (s ) < f (s)) ento
s0 N (s);
Iter 0;
s s0 ;
m-se;
m-enquanto;
10 Retorne
utilizando
f (.),
s;
m DescidaRandomica;
Figura 6: Mtodo de Descida Randmica
82
Cidades
dij
n
m
Distncia da cidade
cidade
j
n = |Cidades|
xij
fij
(i, j)
para a cidade
min
dij xij
iCidades jCidades
(c) Restries:
iCidades
jCidades
c.3) Da cidade origem saem
arcos:
x1j = m
jCidades
c.4) cidade origem chegam
arcos:
xi1 = m
iCidades
c.5) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade
k
fik
o que sai de
P
iCidades
menos
igual a 1:
fkj = 1 k Cidades | k 6= 1
jCidades
n m,
onde
83
Caixeiro Viajante. O PCVCP pode ser associado a um caixeiro viajante que coleta um prmio
pk ,
cij
j.
O problema encontra-se
em minimizar o somatrio dos custos da viagem e penalidades, enquanto inclui na sua rota um
nmero suciente de cidades que o permita coletar um prmio mnimo,
pmin ,
pr-estabelecido.
O PCVCP foi formulado inicialmente por Egon Balas [2] como um modelo para a programao
da operao diria de uma fbrica que produzia lminas de ao.
com o desgaste dos rolos e tambm por outros fatores, a sequncia na ordem do processamento
era essencial. A programao consistia na escolha de um nmero de lminas associadas s suas
ordens de execuo, que satiszessem o limite inferior do peso, e que ordenadas numa sequncia
apropriada, minimizasse a funo de sequncia. As tarefas de escolha das lminas e das opes
disponveis para o seu sequenciamento necessitavam ser resolvidas em conjunto.
Para a modelagem de programao matemtica do PCVCP, sejam os seguintes parmetros de
entrada:
Cidades
cij
n
pk
k
cidade
n = |Cidades|
k
k
xij
fij
zk
(i, j)
para a cidade
min
cij xij +
iCidades jCidades
k (1 zk )
kCidades
(c) Restries:
k visitada s chega
xik = zk k Cidades
um arco:
iCidades
c.2) De cada cidade
xkj = zk k Cidades
jCidades
c.3) O prmio mnimo
pmin
pk zk pmin
kCidades
c.4) Exceto para a cidade origem (primeira cidade), o uxo que chega a uma cidade
k
fik
o que sai de
P
iCidades
k for visitada e
= zk k Cidades | k 6= 1
igual a 1 se a cidade
fkj
menos
0, caso contrrio:
jCidades
n 1,
sendo
84
6.1 Denio
{1, 2, , n} e uma frota ilimitada
par (i, j) dado o custo de ligao cij .
de veculos sediada em
No problema bsico de
qk
qk
cap
do veculo
V
cij
qk
cap
Demanda do consumidor
k.
de
V = {0, 1, 2, , n}
q0 = 0
xij
fij
(i, j)
para o n
min
P P
cij xij
iV jV
(c) Restries:
k , exceto aquele
xik = 1 k V, k 6= 0
c.1) cada n
iV
k , exceto aquele
= 1 k V, k 6= 0
c.2) De cada n
xkj
jV
P 0, o
xi0
c.3) No depsito
P
jV
x0j =
iV
85
k -simo
fkj = qk k V | k =
6 0
fik
iV
n:
jV
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 uxo apresentadas anteriormente (restries
c.4 e c.5):
@index(0)
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
(0) e so usadas variveis de uxo para eliminar subciclos. J no segundo modelo, pressupe-se
que o depsito a primeira cidade do conjunto
V;
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
u0
para
eliminar subciclos. Como dito anteriormente, considera-se que o depsito o primeiro elemento
do conjunto
V.
! 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
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
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
Custo da coluna
j
i
e 0, c.c.
xj
min
cj x j
jColunas
(c) Restries:
nica coluna
j:
jColunas
c.2) Integralidade e no-negatividade:
xj {0, 1} j Colunas
Segue um pequeno exemplo com 8 clientes e 6 possveis rotas.
Rotas
Clientes
Custo
100
50
70
60
80
40
Nesse exemplo, a rota 1 atende aos clientes 1, 2 e 3 ao custo de 100 unidades monetrias. J
a rota 2 atende aos clientes 4 e 5 ao custo de 50 u.m.
Observe que na soluo de particionamento de conjuntos, cada linha deve ser coberta por uma
nica coluna. Assim, por exemplo, o cliente 4 no pode ser atendido conjuntamente pelas rotas 2
e 4.
(1)
Uma soluo para esse exemplo : x
= (1 1 1 1 0 0)t , cujo custo f (x(1) ) = 100 + 50 + 70 +
60 = 280. Nesse vetor x(1) fazem parte da soluo as colunas 1, 2, 3 e 4. Outra possvel soluo :
x(2) = (1 0 0 0 1 1)t , cujo custo f (x(2) ) = 100 + 80 + 40 = 220. Essa segunda soluo composta
pelas colunas 1, 5 e 6. O que se deseja determinar quais colunas fazem parte da soluo tima.
89
O PRV tambm pode ser modelado como um problema de recobrimento de conjuntos, conhecido na literatura inglesa como
por pelo menos uma rota (coluna). O modelo de programao matemtica correspondente :
xj
min
cj x j
jColunas
(c) Restries:
j:
jColunas
c.2) Integralidade e no-negatividade:
xj {0, 1} j Colunas
Nesta ltima modelagem, se um cliente porventura for visitado (coberto) por mais de uma
rota, ento, na soluo nal, deve-se escolher sua ocorrncia em apenas uma das rotas e elimin-lo
das demais.
Demanda
10
10
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.
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 )
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
dist(s(2) ) =
65% de sua
capacidade.
O nmero de veculos utilizados , portanto, 2 e a distncia total percorrida por eles
dist(s(1) ) + dist(s(2) ) = 17 + 19 = 36 unidades de distncia.
(b)
dist =
j.
i e a outra
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
(i, j)
de cidades onde
e a outra, a
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:
A distncia total
percorrida :
dist = d01 +d10 +d02 +d20 +d03 +d30 +d04 +d40 +d05 +d50 = 6+6+7+7+8+8+9+9+10+10 = 80.
Nmero de veculos = 5.
92
Como
di0
d0j
dij
10
10
10
10
Demanda acumulada
14
11
9
12
15
13
16
10
13
11
Maior economia
no supera a capacidade de um veculo, devemos combinar essas duas rotas. A distncia total
percorrida :
2a
Iterao:
Atualizemos o quadro anterior apenas com relao s demandas acumuladas, j que as economias sero as mesmas.
Como
di0
d0j
dij
10
10
10
Demanda acumulada
14
18
9
18
22
13
22
17
17
Maior economia
3a
Iterao:
di0
d0j
dij
10
10
10
Demanda acumulada
18
22
22
22
18
22
22
22
93
Como
Maior economia
4a
Iterao:
Atualizemos o quadro anterior com relao s demandas acumuladas, eliminando as combinaes j efetuadas, bem como aquelas que no tm as cidades
di0
d0j
dij
10
10
Demanda acumulada
31
31
31
31
Como todas as combinaes de duas rotas resulta em uma rota invivel, pois a demanda
acumulada supera a capacidade de um veculo, o mtodo pra e retorna como soluo nal as
rotas:
Rota 1:
Rota 2:
01420
0350
Distncia total = 36
Nmero de veculos utilizados: 2
Tal como anteriormente, podem ser calculadas as taxas de utilizao de cada veculo, as quais,
no caso, so as mesmas da soluo gerada pela Heurstica do Vizinho Mais Prximo.
exchange
ou
ou
distintas.
Comentemos o funcionamento dessas heursticas.
s,
obtida por
[Baseado no livro [5], dos professores Nelson Maculan Filho e Mrcia Costa Fampa da UFRJ]
Seja:
(P):
min
n
P
cj xj
j=1
n
P
(1)
aij xj
bi
i = 1, 2, , m
(2)
xj
{0, 1}
j = 1, 2, , n
(3)
j=1
94
onde
cj , aij , bi R
cj 0 j = 1, 2, , n, pois no caso de
yk {0, 1} tal que xk = 1 yk . Com essa
n
P
cj xj ck xk + ck . Assim, teremos que
a ser
tal que
ck < 0,
j=1
j6=k
minimizar
z ck =
n
P
cj x j ck y k .
j=1
j6=k
Hiptese: cj 0 j = 1, 2, , n
c = (c1 c2 cn ), bt = (b1 b2 bm ), xt = (x1 x2 xn )
m linhas e n colunas.
Denimos tambm
uma matriz com
A = (aij )mn
min
cx
Ax b
x {0, 1}n
(4)
(5)
(6)
Jp = {j | xj = 1}.
7
t
Exemplo: Para x = (0 1 1 1 0 0 1 1) tem-se J7 = {2, 3, 4, 7, 8}.
q
p
Uma soluo x dita descendente de x se Jp Jq . Exemplo: a
p
t
descendente da soluo x = (0 0 1 0 1 1) .
ou tambm pelo
conjunto
soluo
xq = (1 1 1 0 1 1)t
Em alguns problemas, certas variveis devem ser xadas a priori para que possamos satisfazer
as desigualdades de (2). Exemplos:
Propriedade 1
Se
xp
P
jJp
descendentes de
cj x j
cj x j
xq
jJq
xp .
Demonstrao:
Basta lembrar que
Propriedade 2
cj 0 j = 1, 2, , n
Se
x0 = (0 0 0)t
e que
Jp Jq .
x0
Demonstrao:
Como, por hiptese,
cj 0
xj {0, 1}
ento
z=
n
P
cj xj 0.
z0
j=1
z = 0,
x = 0.
0
Ser apresentado, a seguir, um esquema de enumerao que supe que a soluo inicial x tal
0
t
que J0 = {}, isto , x = (0 0 0) no satisfaz o conjunto de restries (2). Se esse conjunto
0
de restries fosse satisfeito, ento x seria timo do problema (P) pela Propriedade 2.
Esquema de Enumerao:
xp
de (3) e que
tal que
z =
jJq
no tenhamos ainda encontrado uma soluo vivel, colocamos
z = +.
95
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
A partir da soluo
as seguintes hipteses:
Px vivel
P de (P) ento no nos interessa
cj x j
cj xj (vide Propriedade 1).
(i) Se
jJp
(ii) Se
buscar um descendente
xq
de
xp ,
pois
jJq
cj xj + cl z l 6 Jp ,
xp
jJp
fornecero valores funo objetivo (1) sempre superiores ou iguais a
p
no nos interessa enumerar os descendentes de x .
(iii) Se existir ndice
bi
aij xj
iPtal
z.
que:
mnimo{0, aij }
<0
j6Jp
jJp
xp
enumerado implicita-
mente
1.
Ap = {k |
cj xj + ck z, k 6 Jp }
jJp
2.
3.
Cp = {1, 2, , n} (Jp Ap Dp )
tem-se
Dp
aik 0, k 6 Jp }
Jp ,
no pertencentes soluo
Jp
Ap
aik
k,
maiores
z.
Cp fornecer os ndices das variveis candidatas a tomarem valor igual a 1, isto ,
q
p
os ndices l Cp para formar uma soluo x descendente de x na forma Jq = Jp {l}. Observe
que o conjunto Ap fornece os ndices das variveis que pioram (ou mantm) o valor da soluo
corrente caso entrem na soluo. J Dp rene os ndices das variveis cuja entrada produzir
descendentes inviveis. Assim, tanto Ap quanto Dp reunem ndices para os quais no vale a pena
incorpor-los soluo.
m
P
p
min{0, spi aij xj }, j Cp e dpl = max{dpj }, isto , dpl a menor soma das
Seja dj =
jCp
i=1
p
inviabilidades. Em outras palavras, cada parcela min{0, si aij xj } representa o nvel de inviabilidade existente na restrio
xj
96
spi aij xj
interessam.
O somatrio das
mede o
nvel de inviabilidade devido a esta varivel. Quando se utiliza o mximo dos somatrios, o que
se deseja saber qual a coluna que consegue reduzir a inviabilidade ao menor nvel.
p
Caso dl = 0 ento a soluo descendente associada a Jq = Jp {l} ser vivel do problema
(P).
p
No caso de haver mais de um ndice para o qual dj = 0, isto ,
Lp = {j Cp | dpj = 0}
ento o ndice
cl = min{cj }.
jLp
Obviamente, no caso em que nenhuma condio de parada seja vericada, tem-se Cp 6= {}.
q
p
Suponhamos, agora, que em x descendente direto de x , isto , o ltimo a ser desenvolvido a
p
partir de x , o conjunto Cq seja vazio, ou ainda uma das trs condies de parada seja satisfeita.
q
p
Teremos, ento, de x voltar a x e atualizar Cp de duas maneiras:
(i)
(ii)
Cp = Cp {l},
Ap
tal que
O retorno de
C0 = {}.
onde
xq
xp
Jq = Jp {l}.
z tambm
denominado
backtracking.
Cp .
Apresentaremos, a seguir, uma maneira de enumerao implcita nita, isto , nunca enumeraremos explicitamente a mesma soluo e, assim, a enumerao termina.
Usaremos uma estrutura de pilha proposta por Glover (1965) e Georion (1967). Essa pilha
representa o conjunto dos ndices associados s variveis xadas.
Seja a pilha
para a qual
p(j)
ser sua
j -sima
p(j) > 0
p(j) < 0
Por exemplo,
se
se
xp(j) = 1
xp(j) = 0
todos os descendentes
Algoritmo de Balas:
Fase inicial
= {};
Fase 0 (Inicializao)
= {};
z = ;
Fase 1
Se uma das condies de parada for vericada v para a fase 2. No caso de ser a primeira, isto
p
p
, est associada a uma soluo vivel x do problema (P), ento neste caso se cx < z
far-se-
p
p
z = cx e a melhor soluo at o momento x ;
Caso contrrio, v para a fase 3;
97
Fase 2
Enquanto o ltimo elemento da pilha for negativo, remov-lo da pilha;
Se a pilha estiver vazia v para a fase 4;
Caso o ltimo elemento da pilha seja positivo, troque seu sinal e v para a fase 1;
Fase 3
Escolha uma varivel
xl
e v para a fase 1;
Fase 4
Pare, soluo tima associada a
Se
z = +,
z;
Exemplo:
Resolva o modelo de programao linear em variveis 0-1 a seguir pelo Mtodo de Enumerao
Implcita de Balas.
min z
s.a:
5x1
x1
2x1
x1
+ 7x2
+ 3x2
6x2
x2
,
x2
+ 10x3
5x3
+ 3x3
2x3
,
x3
+ 3x4
x4
+ 2x4
+ x4
,
x4
+ x5
+ 4x5
2x5
+ x5
,
x5
-2
0
-1
{0,1}
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
Variveis de folga
Iterao inicial:
0
0 + 0 + 6 + 0 + 0 + 2 = 8 0
-1 + 0 + 0 + 2 + 0 + 0 = 1 0
-2 + 1 + 0 + 5 + 1 + 0 = 5
x0 .
A0 = {}, pois z =
D0 = {2, 5}. Logo, C0 = {1, 2, 3, 4, 5} (A0 D0 J0 ) = {1, 3, 4},
isto , as variveis
x1 , x3
x4
Iterao 1:
nenhuma das condies de parada foi vericada. Passaremos, ento, a procurar uma soluo des-
98
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.
cendente de
Logo,
l=2
x2
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.
backtracking )
backtracking, a varivel x2 assume agora o valor ZERO. Assim = [3, 2]. x3 = (0 0 1 0 0)t
Iterao 3: (
Com o
descendente de
x1
e no vivel.
z = 17.
x2 = 0
0
<0
0
-3 + 0 + 0 + 2 = -1
1 + 0 + 0 + 0 = 1
backtracking )
backtracking, = [3].
backtracking.
Iterao 4: (
Com o
xo.
z = 17.
A soluo
x4 = (0 0 0 0 0)t
descendente de
x0 ,
mas com
x3 = 0
0
0
-2 + 1 + 0 + 1 + 0 = 0
0 + 0 + 6 + 0 + 2 = 8
-1 + 0 + 0 + 0 + 0 = -1 < 0
backtracking.
backtracking )
backtracking, = . Logo, a soluo tima x? = (0 1 1 0 0)t , com valor z = 17.
Iterao Final: (
Com o
Exerccios propostos
xj = 1 se
o projeto
(a)
x1 + x2 + x3 + x4 + x5 2
(b)
x1 + x 2 + x3 + x4 + x5 2
(c)
x3 x1
(d)
x2 + x 3 + x4 x1
(e)
x2 + x3 + x4 x1
xj
a varivel binria
99
p-medianas
X
iFacilidades
xij = 1 j Clientes
Facilidades
junto de clientes;
yi
Clientes
o con-
xij
(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 exemplicar o problema de designao envolvido, considere um
conjunto
de turmas e um conjunto
cij
i,
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
70
60
45
30
48
50
Turma
Demanda
28
40
59
63
51
Salas
Turmas
42
32
17
20
22
30
20
990
992
10
11
986
971
989
991
997
982
967
985
987
19
994
979
997
999
(5) A Laminao a Frio Ltda. produz bobinas, rolos e tas de ao para estamparia. A empresa
produz bobinas de 1,20 metros de largura e com diversas espessuras, que so armazenadas no
estoque. Quando seus clientes fazem pedidos, as bobinas so retiradas do estoque e cortadas
nas dimenses solicitadas. Conhecendo os pedidos e usando sua experincia, a rea de planejamento estabelece os chamados padres de corte. Um padro de corte estabelece como
uma bobina deve ser cortada. Nesse caso especco, os padres de corte denidos pela rea
de planejamento so cinco, conforme tabela a seguir.
Padres de corte
demandados [cm]
Demanda
19
10
36
12
62
15
25
31
48
17
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 diculdades
de avaliar o servio realizado meses atrs (as obras, por outro lado, podem ser reavaliadas
dcadas depois de terem sido construdas). Para melhorar a situao, a prefeitura da cidade
de So Paulo elaborou uma licitao relativa atividade de limpeza. A licitao subdividiu
o municpio em vrias regies e, para aumentar a transparncia e diminuir a corrupo, 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
Butanta
11
12
13
13
13
Itaquera
20
21
24
22
23
Lapa
10
11
12
SantoAmaro
Centro
13
14
16
Para a amostra, dena qual o custo mnimo da licitao e qual licitante deve car com qual
regio de modo que o custo da prefeitura seja mnimo.
(7) Foi feita uma licitao para a construo de 4 trechos de uma rodovia. Participaram dessa
licitao as empresas A, B, C e D, cujos preos esto listados na tabela a seguir, por trecho.
Considerando que cada trecho deve ser feito por uma nica construtora e que cada construtora
no pode participar da construo de mais de dois trechos, faa um modelo de programao
matemtica para que se gaste a menor quantidade possvel de recursos na construo desses
trechos de rodovia.
Trecho
Construtora
500
700
300
200
450
1000
450
250
650
800
500
320
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
Dom
Seg
Ter
Qua
Qui
Sex
Sab
Nmero requerido
12
20
16
13
16
19
14
Custo ($)
135
100
125
160
160
160
160
p-centros,
o objetivo localizar
de modo a minimizar a distncia mxima de clientes a facilidades. Este problema pode ser
formulado como:
102
minimize
(8.83)
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)
de uma facilidade,
dij
ao cliente localizado em
j , yi uma varivel binria que assume valor unitrio se uma facilidade for instalada no local
i, xij uma varivel binria que tem valor unitrio se a facilidade instalada no local i atender
ao cliente do local j .
Dada a tabela a seguir, onde so dadas as coordenadas cartesianas dos locais A,
, (coordx, coordy), determine pelo modelo anterior, a localizao tima de
p=2
P, isto
facilidades
coordx
30
37
49
52
20
40
21
17
31
52
51
42
31
12
36
coordy
40
52
49
64
26
30
47
63
62
33
21
41
32
25
42
16
Mostre, tambm, quais os clientes atendidos por cada facilidade, bem como o menor valor que
assume.
desse objeto, deseja-se gerar uma unidade de vrios itens retangulares de dimenses
onde
hi
o comprimento e
wi L,
a largura.
(hi , wi ),
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
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
yi
inicializa a faixa
O primeiro conjunto de restries garante que cada item ser alocado uma nica vez.
i.
O
segundo conjunto de restries assegura que o somatrio da largura dos itens alocados em
cada faixa no ultrapassar a largura do objeto. As demais restries denem que as variveis
de deciso so binrias.
Considerando um objeto retangular de largura
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
hi
largura wi
15
14
13
11
10
11
10
altura
(11) H um conjunto
aij
jJ
bi
i,
tarefa
de
demandando dele
cij .
Faa um
j,
aij
bi
de cada agente.
Capacidade
13
17
16
13
15
15
12
11
18
19
30
11
16
14
13
12
25
cij
de alocao de um agente
a uma tarefa
j.
(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 .
10
Cap. (GB)
30
50
10
20
10
40
30
10
20
20
(14) Uma empresa precisa programar sua produo para o prximo ms. Sabe-se que ela dispe
de uma nica mquina para processar todas as encomendas e que estas podem ser executadas
em qualquer ordem e no h necessidade de preparar a mquina. Determine o atraso mximo,
conhecendo-se o tempo de processamento de cada encomenda (pi ), em dias, e as datas de
entrega (di ) no ms, conforme tabela a seguir.
Tarefa
pi
di
13
10
20
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
Earliest Due Date ), isto , sequenciando as tarefas em ordem no-decrescente das datas
EDD (
i-sima
tarefa e
d[i]
i,
com
i = 1, , 50,
dura
bi
m = 50
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 nanceiro seja o maior possvel.
(16) Simplique o problema a seguir, justicando 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:
(8.94)
7
9
10
{0, 1} j = 1, 2, . . . , 4
(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
branch-and-bound,
(8.99)
(8.100)
(8.101)
Faa a
max
sujeito a:
4
5
15
Z+ j = 1, 2, 3
(a) Utilize a variante de Dank para escolher a varivel a ramicar. Em caso de empate nesta
regra, ramique a varivel de menor ndice;
(b) Faa busca em profundidade;
(c) Escolhida a varivel a ramicar, ramique primeiro o valor menor da varivel;
106
Referncias
[1] M. Arenales, V. Armentano, R. Morabito, and H. Yanasse.
de Engenharia.
[4] G. Lachtermacher.
Editora Campus, 2
edio,
Braslia, 2006.
[6] C. H. Papadimitriou and K. Steiglitz.
xity.
[7] M.
F.
Souza.
taheursticas.
Disponvel em
www.decom.ufop.br/prof/marcone/Publicacoes/tesemarcone.ps.
[8] Hamdy A. Taha.
Pesquisa Operacional.
Editora Pearson, 8