Вы находитесь на странице: 1из 106

Otimizao Combinatria, Notas de aula, 2009/2

Departamento de Computao, Universidade Federal de Ouro Preto.

OTIMIZAO COMBINATRIA

Marcone Jamilson Freitas Souza

Departamento de Computao
Instituto de Cincias Exatas e Biolgicas
Universidade Federal de Ouro Preto
Homepage: http://www.decom.ufop.br/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 . . . . . . . . . . . . .

2 Modelagem de Programao Matemtica Inteira

2.1

Alocao de recursos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Problema da Mochila 0-1 (

. . . . . . . . . . . . . . . . . . . .

2.3

Problema da Mochila Inteira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Problema da Mochila 0-1 Mltipla . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.5

Problema da Mochila Inteira Mltipla . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.6

Problema de Corte de Estoque (

. . . . . . . . . . . . . . .

12

2.7

Problema de Corte de Estoque Unidimensional . . . . . . . . . . . . . . . . . . . .

13

2.8

Alocao de pessoal (

. . . . . . . . . . . . . . . . . . . . . . . .

15

2.9

Problema da Fbrica de Prateleiras . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.10 Fluxo Mximo em Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

Knapsack Problem )

Cutting Stock Problem )

Sta Scheduling )

2.11 Caminho Mnimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.12 Programao da produo - exemplo 1

24

. . . . . . . . . . . . . . . . . . . . . . . .

2.13 Sequenciamento em processadores paralelos e idnticos

. . . . . . . . . . . . . . .

2.14 Planejamento da Produo - Problema da Fbrica de Motores

. . . . . . . . . . .

27

. . . . . . . . . . . . . . . . . . . . .

30

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.15 Problema de empacotamento (


2.16

Open Dimensional Problem

Bin Packing )

2.17 Programao de horrios em escolas (


2.18 Localizao
2.18.1
2.18.2
2.18.3

26

School timetabling )

. . . . . . . . . . . . . .

32

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

p-Medianas . . . . . .
p-Centros . . . . . . .
p-Medianas capacitado

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.19 Mistura de Minrios com Metas de Qualidade


2.20 Problema das Usinas

33

. . . . . . . . . . . . . . . . . . . .

35

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.21 Dimensionamento de lotes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

2.22 Planejamento da produo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

2.22.1 Um item sem restrio de capacidade . . . . . . . . . . . . . . . . . . . . .

43

2.22.2 Mltiplos itens e restrio de capacidade . . . . . . . . . . . . . . . . . . .


2.23 Representao de restries disjuntivas

44

. . . . . . . . . . . . . . . . . . . . . . . .

44

2.24 Sequenciamento em uma mquina . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

2.24.1 Minimizao do tempo de uxo total


2.24.2 Minimizao do atraso mximo

. . . . . . . . . . . . . . . . . . . . .

47

. . . . . . . . . . . . . . . . . . . . . . . .

48

2.24.3 Minimizao da soma dos atrasos

. . . . . . . . . . . . . . . . . . . . . . .

48

2.24.4 Minimizao da soma dos atrasos e adiantamentos . . . . . . . . . . . . . .

48

2.24.5 Minimizao do nmero de tarefas atrasadas . . . . . . . . . . . . . . . . .

49

2.24.6 Minimizao do

49

lateness

mximo

. . . . . . . . . . . . . . . . . . . . . . .

2.24.7 Sequenciamento com tempo de preparao de mquina

. . . . . . . . . . .

49

2.24.8 Sequenciamento em uma mquina com penalidades por antecipao e atraso


da produo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

2.25 Mquinas Paralelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

2.26

54

Job Shop

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Modelagem de PPL's

2.27 Planejamento de lavra com Alocao Dinmica de Caminhes

. . . . . . . . . . .

55

2.28 Linearizao do produto de variveis binrias . . . . . . . . . . . . . . . . . . . . .

58

Branch-and-Bound

60

4 Integrao do LINGO em planilhas Excel

62

4.1

Problema de Transporte

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

4.2

Algumas consideraes sobre @OLE . . . . . . . . . . . . . . . . . . . . . . . . . .

64

4.3

Embutindo planilhas do EXCEL no LINGO

. . . . . . . . . . . . . . . . . . . . .

65

4.4

Embutindo Modelos LINGO no EXCEL

. . . . . . . . . . . . . . . . . . . . . . .

67

4.5

Utilizando links OLE automatizados no EXCEL . . . . . . . . . . . . . . . . . . .

69

4.6

Comando SET

73

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 Problema do Caixeiro Viajante

74

5.1

Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

5.2

Modelagem de Programao Matemtica . . . . . . . . . . . . . . . . . . . . . . .

74

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

Problema do Caixeiro Viajante com Coleta Seletiva de Prmios

. . . . . .

6 Problema de Roteamento de Veculos

82
82

84

6.1

Denio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

6.2

Modelagem de Programao Matemtica . . . . . . . . . . . . . . . . . . . . . . .

84

6.3

Gerao de colunas para o PRV . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

6.4

Modelos Heursticos para o PRV . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

6.4.1

Heursticas Construtivas

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

6.4.2

Heursticas de renamento . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

7 Enumerao Implcita em Programao Inteira 0-1

93

8 Exerccios propostos

98

Parte I

Programao Inteira
1

Introduo

1.1 Caractersticas dos modelos lineares de programao inteira


[Retirado de Goldbarg e Luna (2005), vide [3]] Uma confeitaria pode produzir dois tipos de sorvete
em lata: chocolate e creme. Cada lata do sorvete de chocolate vendido com um lucro de $3 e as
latas de creme com um lucro de $1. Contratos com vrias lojas impem que sejam produzidas no
mnimo 10 latas de sorvete de chocolate por dia e que o total de latas fabricadas por dia nunca
seja menor que 20. O mercado s capaz de consumir at 40 latas de sorvete de creme e 60 de
chocolate. As mquinas de preparao do sorvete disponibilizam 180 horas de operao por dia,
sendo que cada lata de sorvete de chocolate consome 2 horas de trabalho e cada lata de creme, 3
horas. Determine o esquema de produo que maximiza os lucros com a venda de latas de sorvete.
Soluo:
(a) Variveis de deciso:

xj = nmero de latas de sorvete do tipo j


e j = 2 (creme)

a serem produzidas por dia, sendo

= 1 (chocolate)

(b) Funo objetivo:

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:

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 gracamente
a regio vivel:

Propriedade de um PPL:

O timo de um problema de programao linear (PPL), se existir,

estar em um vrtice do politopo denido pela regio vivel.

Do Clculo Diferencial e Integral sabemos que a direo


 crescimento de
 e sentido de mximo
f (x)
f (x) f (x)
, x2 , , xn .
uma funo f determinada pelo seu gradiente f (x) =
x1
Sendo a funo

f (x) = 3x1 + x2 ,

resulta que

f (x) = (3, 1).

sentido do gradiente, da origem caminhamos 3 unidades no sentido

Ox2 .

Para conhecermos a direo e

Ox1

e uma unidade no sentido

Pela regra de composio de foras (regra do paralelograma), tem-se o sentido e direo do

gradiente. Traa-se, a seguir, uma reta perpendicular direo do gradiente. Caminhando-se com
essa reta no sentido apontado pelo gradiente at tangenciar a regio vivel tem-se, no ponto de
tangncia, a soluo tima. Logo, o timo do PPL em questo ocorre no vrtice de coordenadas
(60, 20), com valor timo dado por f (x ) = 200, isto , no esquema timo de produo, devem ser
produzidas diariamente 60 latas de sorvete de chocolate e 20 de creme, com um retorno de $ 200.
No exemplo dado, a soluo tima ocorreu em um ponto de coordenadas inteiras. No entanto,
nem sempre isso ocorre, conforme mostra o exemplo a seguir:

max f (x) = x1 + 19x2


x1 + 20x2 50
x1 + x2 20
x1 , x2 Z+

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

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:

x1

x1

f (x)

19

invivel

18

37

19

38

18

invivel

Se essa estratgia fosse correta, concluiramos, de forma EQUIVOCADA, que

x1 = 19 e x2 = 1

a soluo tima do problema, com valor timo dado por f (x) = 38. Na realidade, a soluo

tima : x1 = 10 e x2 = 2, com f (x ) = 48, ou seja, o valor timo difere em 21% do anteriormente


apontado.
Esse exemplo mostra que pode no ser uma boa estratgia arredondar os valores do entorno
de uma soluo tima contnua como uma forma de determinar a soluo tima do problema de
variveis inteiras. Mais frente (Seo 3) mostraremos a tcnica

branch-and-bound,

destinada a

encontrar a soluo tima de um problema de programao inteira.

Modelagem de Programao Matemtica Inteira

2.1 Alocao de recursos


[Retirado de [4]] A Capito Caverna S.A., localizada em Pedra Lascada, aluga 3 tipos de 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

(supercanoa) e

a serem alugadas, sendo

= 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)

= 1 (jangada),

= 2

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 :

Conjunto dos diferentes tipos de embarcao =

{Jangada, Supercanoa,
i
a embarcao do tipo i

Arca}

Lucro proporcionado pelo aluguel da embarcao do tipo


Nmero de capites necessrios para comandar

Nmero de tripulantes necessrios para trabalhar na embarcao do tipo


Nmero disponvel de embarcaes do tipo

Nmero de tripulaes disponveis


Nmero de capites disponveis

Tipo de embarcao

# Tripulantes req.

# Capites req.

# Emb. disp.

Lucro ($)

Jangada

50

Supercanoa

70

Arca

100

Funcionrios disp.

18

10

O modelo genrico relativo ao problema em questo pode ser assim formulado:

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.

2.2 Problema da Mochila 0-1 (Knapsack Problem )


Um excursionista planeja fazer uma viagem acampando. H 5 itens que ele deseja levar consigo,
mas estes, juntos, excedem o limite de 60 quilos que ele supe ser capaz de carregar. Para ajudar
a si prprio no processo de seleo, ele atribui valores, por ordem crescente de importncia a cada
um dos itens conforme a tabela a seguir:

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

for colocado na mochila;

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

{1,

2, 3, 4, 5

Conjunto dos itens =

Capacidade da mochila

Peso relativo ao item

Valor de retorno proporcionado pelo item

j
j

o problema da mochila 0-1 pode ser formulado como:

max

p j xj

jitens
P

w j xj

cap

{0, 1}

jitens

xj

j itens

2.3 Problema da Mochila Inteira


Trata-se de uma extenso do problema anterior, na qual para cada item

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
em que a varivel de deciso

xj

uj
Z+

j itens
j itens

indica o nmero de unidades do item

alocados mochila.

10

2.4 Problema da Mochila 0-1 Mltipla


Neste problema, alm do conjunto de itens, cada qual com peso
conjunto de mochilas, cada qual com capacidade

capi .

wj

e valor de retorno

pj ,

h um

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
em que a varivel de deciso

xij

{0, 1}

assume valor 1 se o item

for alocado mochila

contrrio. O primeiro conjunto de restries assegura que cada mochila

capi

e 0, caso

no comporta mais que

unidades de peso, enquanto o segundo conjunto impede que um mesmo item

seja alocado

a mais de uma mochila.

2.5 Problema da Mochila Inteira Mltipla


Este problema difere do anterior no sentido de que neste problema pode haver mais de uma unidade
de cada item; no caso, h

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
Neste modelo,

xij

Z+

indica a quantidade de itens

i mochilas , j itens
j

alocados mochila

i.

Mostra-se, a seguir,

uma implementao LINGO deste problema.


No arquivo Excel considerado, h a seguinte correspondncia de nomes para os blocos de
clulas:

Bloco de clulas

Nome

D5:M5

Itens

C11:C13
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

recebe 2 unidades do item 4; a mochila

recebe uma unidade do item 3 e uma do item 9, enquanto a mochila

C recebe uma unidade do

item 3, duas unidades do item 5 e duas do item 10. O valor de retorno mximo 61.

12

2.6 Problema de Corte de Estoque (Cutting Stock Problem )


Certa empresa trabalha com a produo de etiquetas autocolantes.

O papel usado para sua

confeco encontra-se em bobinas de mesmo comprimento, todas com largura de 50 cm.

As

encomendas para a prxima semana impem a necessidade de se cortarem 32 bobinas de 15 cm


de largura, 17 bobinas de 17,5 cm de largura e 21 bobinas de 20 cm de largura. poltica da
empresa manter em estoque o excedente ao pedido em quantidade mxima de 10 bobinas cortadas
de acordo com a encomenda. Esta ao evita a imobilizao de capital, uma vez que so incertos
os prximos pedidos.

O departamento tcnico relacionou na tabela abaixo as possveis programaes de cortes, tendo


em vista as encomendas.

Programaes de corte Largura da Faixa Cortada Desperdcio


15cm 17,5cm
20cm
(cm)
1
3
0
0
5
2
2
1
0
2,5
3
1
2
0
0
4
2
0
1
0
5
0
1
1
12,5
6
0
0
2
10
Elabore um modelo de programao inteira que determine a estratgia a ser seguida pela 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

Conjunto de padres de corte;

Conjunto dos tipos de bobinas;

Desperdcio relativo aos cortes realizados de acordo com o padro

Demanda por bobinas do tipo

Quantidade de bobinas do

Estoque mximo de bobinas permitido;

j;
tipo j

produzidas no padro de corte

i;

i;

e as seguintes variveis de deciso:

xi

Nmero de cortes realizados segundo o padro

O modelo de programao matemtica para esse problema de corte de estoque :

13

min

despi xi

ipadroes

aij xi

demandaj

j bobinas

aij xi

demandaj + estmax

j bobinas

ipadroes

P
ipadroes

xi

Z+

i padroes

Nesta formulao, o objetivo minimizar as perdas com os padres de corte.


conjunto de restries assegura o atendimento da demanda por bobinas do tipo
o segundo indica que para cada tipo de bobina

j,

O primeiro

j,

enquanto

no podem ser estocadas mais que

estmax

unidades.

2.7 Problema de Corte de Estoque Unidimensional


Uma serralheria dispe de barras de 7 metros de comprimento que devem ser cortadas para obter
barras menores atendendo a uma encomenda. As seguintes quantidades e tamanhos so 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.

Quant. de barras por tipo

Perda

Padro

2 m.

3 m.

4 m.

(m.)

Modelo de Programao Matemtica:


Sejam os seguintes dados de entrada para o problema:

padroes
barras
perdai
demandaj
aij

Conjunto dos possveis padres de corte;

Conjunto de barras;

Perda com os cortes realizados de acordo com o padro

j;
j

Demanda por barras do tipo

Quantidade de barras do tipo

produzidas no padro de corte

e as seguintes variveis de deciso:

xi

i;

Nmero de cortes realizados segundo o padro

i;

14

Assim, o modelo de programao matemtica :

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 :

!
P

min

perdai xi

ipadroes

dimenbarraj

jbarras

aij xi

aij xi demandaj

ipadroes

demandaj

j barras

ipadroes

xi

Z+

i padroes

!
P

Nesta nova funo objetivo, a componente

aij xi demandaj

indica o excesso de

ipadroes
barras do tipo

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

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');

[fo] min = @sum(padroes(i): perda(i)*x(i)) +


(@sum(barras(j):
dimenbarra(j) * @sum(padroes(i): a(i,j)*x(i)) - demanda(j)));
@for(barras(j): [excbarra] @sum(padroes(i): a(i,j)*x(i)) >= demanda(j));
@for(padroes(i): @GIN(x(i)));
data:
@ole('CorteExcesso.xls','excesso','solucao','ptotal') = excbarra, x, fo;
enddata
Como se observa, na soluo tima devem ser cortadas 59 peas no padro 1, 21 no padro 3
e 30 no padro 5. A perda total de 530 metros, sendo que apenas uma barra de 2 metros foi
cortada em excesso.

2.8 Alocao de pessoal (Sta Scheduling )


Um hospital trabalha com atendimento varivel em demanda durante as 24 horas do dia.
necessidades distribuem-se segundo a tabela:

As

16

Turno

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

O horrio de trabalho de um enfermeiro de 8 horas seguidas e s pode ser iniciado no comeo


de cada turno, isto , s 8 ou 12 ou 16 ou 20 ou 24 ou 04 horas. Elabore um modelo de PLI que
minimize o gasto com a mo-de-obra.

Considere que cada enfermeiro recebe $100 por hora de

trabalho no perodo diurno (08 s 20 h) e $125 no perodo noturno (20 s 08 h).


Soluo:
(a) Variveis de deciso:

xi

= nmero de enfermeiros que iniciam sua jornada no incio do turno

i.

(b) Funo objetivo:

min f (x) = 800x1 + 800x2 + 900x3 + 1000x4 + 1000x5 + 900x6


(c) Restries:
c.1) Nmero de enfermeiros necessrios no turno 1:

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

Conjunto dos turnos de trabalho =

Custo do enfermeiro que inicia sua jornada no turno

Nmero de enfermeiros necessrios durante o turno

O modelo genrico relativo ao problema em questo pode ser assim formulado:

min

ci x i

iturnos

xi + xi1
xi

demandai
Z+

i turnos
i turnos

17

xi + xi1 demandai indicam que em cada turno i trabalham os


sua jornada no turno i, bem como aqueles que comearam sua jornada

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

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)).

LINGO

@wrap.

Ela recebe como argumentos os parmetros

A seguir, a implementao LINGO do problema interfaceando com o Excel.


No arquivo Excel considerado h a seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas

Nome

B3:B8

turnos

E3:E8

custo

D3:D8

demanda

G3:G8

excturno

F3:F8

soluo

E10

fo

sets:
turnos/@ole('enfermeiros.xls','turnos')/:c, !custo;
x, !soluo;
demanda;!demanda;
endsets
data:
c, demanda = @ole('enfermeiros.xls','custo','demanda');
enddata

18

[fo] min = @sum(turnos(i): c(i)*x(i));


@for(turnos(i):
[excturno] x(i) + x(@wrap(i-1,@size(turnos))) >= demanda(i));
@for(turnos(i): @gin(x(i)));
data:
@ole('enfermeiros.xls','soluo','fo','excturno') = x, fo, excturno;
enddata
Como se observa, na soluo tima devem ser contratados: 51 enfermeiros para iniciarem o
trabalho no turno 1, 34 no turno 2, 28 no turno 3, 13 no turno 4, 19 no turno 5 e nenhum no
turno 6. O custo total mnimo com a contratao de enfermeiros de R$125.200,00.
Observao:
Relativamente ao problema anterior, suponha que cada enfermeiro possa fazer hora-extra 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 con-

tratao de mo-de-obra.

Antes de resolver o problema, pense na seguinte questo: A soluo

tima dessa variante poder ter custo menor que a da soluo tima sem a possibilidade de os
enfermeiros fazerem hora-extra? Justique.
Soluo:
(a) Variveis de deciso:

xi

= nmero de enfermeiros que iniciam sua jornada no incio do turno

e no fazem hora-

extra.

yi

= nmero de enfermeiros que iniciam sua jornada no incio do turno

(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

e fazem hora-extra.

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+
phe signica o percentual mximo de
0,20 e que ci o custo sem hora-extra e

Para fazer um modelo genrico desse PPL, considere que


enfermeiros fazendo hora-extra em cada turno, no caso,

di , com hora-extra. Dessa forma, o modelo genrico para este problema pode ser formulado como:
P
min
(ci xi + di yi )
iturnos

xi + xi1 + yi2 + yi + yi1


yi2
xi , yi

demandai
i turnos
phe (xi + xi1 + yi2 + yi + yi1 ) i turnos
Z+
i turnos

A seguir, o modelo LINGO interfaceando com um arquivo Excel referente ao problema em


questo, com a seguinte correspondncia de nomes para os blocos de clulas:
Bloco de clulas

Nome

Bloco de clulas

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.

2.9 Problema da Fbrica de Prateleiras


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

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

= nmero de prateleiras do tipo

normal) e

a serem fabricadas pelo processo i, sendo

i = N (processo

= 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

Conjunto das prateleiras

Conjunto dos tipos de processo

Tempo disponvel para a realizao do processo

Tempo necessrio para a produo de cada prateleira

Tempo necessrio para a montagem de cada prateleira

Tempo total disponvel para a montagem das prateleiras

i
j

no processo

O modelo genrico pode ser formulado da seguinte forma:

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

2.10 Fluxo Mximo em Redes


A gura a seguir representa uma rede de comunicao de dados entre computadores. Os nmeros
representam a capacidade mxima em MBytes por segundo que pode ser transmitido de um
computador para outro. Admita que a transmisso s possvel no sentido especicado pela seta.
Qual o uxo mximo que pode passar entre A e G atravs da rede?

Soluo:
(a) Variveis de deciso:

xij

= quantidade de uxo a ser enviada do n

ao n

j , j 6= i.

(b) Funo objetivo:

max f (x) = xAB + xAC


(c) Restries:
c.1) Equilbrio de uxo 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

(N A)

= 0

(N B)

= 0

(N C)

= 0

(N D)

= 0

(N E)

= 0

(N F)

c.2) Capacidade nos arcos:

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

Cardinalidade do conjunto de ns, isto ,

n = |V |

Assim, o modelo genrico pode ser escrito como:

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

Neste modelo, considera-se que o n 1 o n origem e que o n

o n destino.

2.11 Caminho Mnimo


[Extrado de Lachtermacher (2004), vide [4]] Uma fbrica de artigos de decorao, localizada em
Lambari (MG), deve entregar uma grande quantidade de peas na cidade de Baependi (MG). A
empresa quer saber qual o caminho que seu caminho de entregas deve fazer para minimizar a
distncia total percorrida.

A gura a seguir, extrada de Lachtermacher (2004), representa, na

forma de rede, as ligaes entre as cidades da regio.

Soluo:
(a) Variveis de deciso:


xij =

1,
0,

se o arco

(i, j)

pertencer ao caminho;

caso contrrio.

(b) Funo objetivo:

min f (x) = 41x12 + 44x13 + 50x15 + 37x24 + 27x35 + 45x46 + 4x56


(c) Restries:
c.1) Equilbrio de uxo nos ns:

x12 + x13 + x15


x12 x24
x13 x35
x24 x46
x15 + x35 x56
x46 + x56

= 1

(N 1)

= 0

(N 2)

= 0

(N 3)

= 0

(N 4)

= 0

(N 5)

= 1

(N 6)

24

c.2) Integralidade e no-negatividade:

x12 , x13 , x15 , x24 , x35 , x46 , x56 {0, 1}


Considere os seguintes parmetros de entrada:

V
dij
n

Conjunto dos vrtices (ns)

Distncia do vrtice

Cardinalidade do conjunto de vrtices, isto ,

ao vrtice

Considerando o n 1 como o n origem e

n = |V |

n como o n destino,

pode-se modelar o problema de

caminho mnimo genericamente como:

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

2.12 Programao da produo - exemplo 1


Uma determinada empresa est interessada em maximizar o lucro mensal proveniente de quatro
de seus produtos, designados por I, II, III e IV. Para fabricar esses produtos, ela utiliza dois
tipos de mquinas (M1 e M2) e dois tipos de mo-de-obra (MO1 e MO2), que tm as seguintes
disponibilidades:
Disponibilidade

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

O setor comercial fornece as seguintes informaes:


Potencial de venda

Lucro unitrio

Produtos

(unidades/ms)

(R$/ms)

70

10

II

60

III

40

IV

20

25

Faa o planejamento da produo mensal da empresa objetivando maximizar o lucro.


Soluo:
(a) Variveis de deciso:

xj

= quantidade de produtos do tipo

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

Conjunto dos produtos

Conjunto das mquinas

Conjunto das mos-de-obra

Lucro de uma unidade do produto

Potencial de venda do produto

Tempo gasto para a produo do produto

Tempo requerido para a produo do produto

j,

em unidades monetrias

i,

Tempo disponvel da mquina

Tempo disponvel para a mo-de-obra

na mquina

i,

em horas

pela mo-de-obra

em horas

k,

em horas

Ento, o modelo de programao matemtica que maximiza a produo :

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

2.13 Sequenciamento em processadores paralelos e idnticos


Suponha que seja necessrio executar uma lista de 10
Sabe-se que cada

job

jobs

em um conjunto de 3 processadores.

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:


xij =
Cmax

1,
0,

se o

job j

for executado no processador

i;

caso contrrio.

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:

job 1)
(job 2)
(job 3)
(job 4)
(job 5)
(job 6)
(job 7)
(job 8)
(job 9)
(job 10)

x11 + x21 + x31 = 1


x12 + x22 + x32 = 1
x13 + x23 + x33 = 1
x14 + x24 + x34 = 1
x15 + x25 + x35 = 1
x16 + x26 + x36 = 1
x17 + x27 + x37 = 1
x18 + x28 + x38 = 1
x19 + x29 + x39 = 1
x1,10 + x2,10 + x3,10 = 1

c.2) Tempo de execuo dos


Proc. 1:
Proc. 2:
Proc. 3:

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

c.3) Integralidade e no-negatividade:

xij {0, 1} i = 1, 2, 3

j = 1, 2, ..., 10

Considere as seguintes notaes:

Jobs
Procs
tj

jobs

Conjunto dos

Conjunto dos processadores

Tempo de execuo do

job j

Genericamente, pode-se modelar o problema como:

min

Cmax
P
xij
i
Procs
P
tj xij

j Jobs

Cmax

i Procs

xij

{0, 1}

i Procs

jJobs

j Jobs

27

2.14 Planejamento da Produo - Problema da Fbrica de Motores


[Retirado de Lachtermacher (2004), vide [4]] A LCL Motores recebeu recentemente uma 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

Total (h)

Demanda (unidades)

3000

2500

500

Montagem (h/unidade)

1,1

1,9

0,7

6000

Acabamento (h/unidade)

2,5

0,8

4,0

10000

Custo de produo (R$)

50

90

120

Terceirizado (R$)

65

92

140

Elabore o modelo de programao matemtica que minimiza os custos de produo.


Soluo:
(a) Variveis de deciso:

xi = quantidade de motores do modelo i a ser produzido.


yi = quantidade de motores do modelo i a ser terceirizado.
(b) Funo objetivo:

min f (x, y) = 50x1 + 90x2 + 120x3 + 65y1 + 92y2 + 140y3


(c) Restries:
c.1) Atendimento demanda dos modelos de motores:

x1 + y1 3000
x2 + y2 2500
x3 + y3 500
c.2) Respeito ao tempo disponvel para a montagem:

1, 1x1 + 1, 9x2 + 0, 7x3 6000


c.3) Respeito ao tempo disponvel para o acabamento:

2, 5x1 + 0, 8x2 + 4x3 10000


c.4) Integralidade e no-negatividade:
x1 , x2 , x3 , y1 , y2 , y3 Z+
Considere que:

M odelos
:
cprodj
:
ctercj
:
demandaj
:
T empM ontj
:
T empAcabj
:
T empDispM ont :
T empDispAcab :

Conjunto dos diferentes modelos de motores


Custo de produo do modelo

de motor

j
modelo j

Custo de terceirizao do modelo


Demanda dos motores do

de motor

Tempo necessrio para a montagem do modelo

Tempo necessrio para o acabamento do modelo


Tempo disponvel para a montagem
Tempo disponvel para o acabamento

Genericamente, pode-se modelar o problema da seguinte forma:

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

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.
chamada desse arquivo so lidos todos os dados at o smbolo

til ().

Observe que a cada

Assim, a ordem de chamada

deve ser aquela referente leitura dos dados no modelo. Observe tambm que, no caso de nmeros
decimais, deve-se utilizar o ponto como separador decimal e no a vrgula.

! Modelos;
1 2 3 ~
! Demanda;
3000 2500 500 ~
! Montagem;
1.1 1.9 0.7 ~
! Acabamento;
2.5 0.8 4 ~
! Custo de produo;
50 90 120 ~
! Custo de terceirizao;
65 92 140 ~
! Tempo disponivel para montagem;
6000 ~
! Tempo disponvel para acabamento;
10000
O custo timo de produo neste exemplo de $438.750,00 unidades monetrias, sendo que
na soluo tima devem ser produzidas pela prpria fbrica 3000 unidades do modelo 1, 625 do
modelo 2 e 500 do modelo 3; enquanto que 1875 unidades do modelo 2 devem ser terceirizadas.
Observe que o gargalo do sistema produtivo o setor de acabamento, j que na soluo tima no
h folga nesse setor; j na montagem h 1162,5 horas de folga.

30

2.15 Problema de empacotamento (Bin Packing )


H um conjunto de contineres e outro de itens a serem alocados a esses contineres. Sabe-se que
cada continer

tem capacidade

capi

e que cada item

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
:

Conjunto dos contineres


Conjunto dos itens
Peso do item

Capacidade do continer

e as seguintes variveis de deciso:

yi
xij

Varivel que assume o valor 1 se o continer

Varivel que assume o valor 1 se o item

Ento o

Bin Packing Problem


P

min

usado e 0, caso contrrio

colocado no continer

e 0, caso contrrio

pode ser modelado como:

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

(BP4) e (BP5) estabelecem que as variveis de deciso so binrias.

2.16 Open Dimensional Problem


Considere um objeto retangular de largura

e comprimento sucientemente grande. Considere,

tambm, a necessidade de se obter, a partir desse objeto, um conjunto de itens diversos


de dimenses
O

(hi , wi ),

onde

hi

o comprimento e

wi W ,

i = 1, , n

a largura (Vide Figura 1).

Open Dimensional Problem (ODP) consiste em determinar a melhor forma de cortar o objeto

para atender ao pedido, de modo a minimizar o comprimento do objeto utilizado.


A Figura 2 mostra uma soluo para o exemplo da Figura 1, a qual, naturalmente, no a
melhor. Nesta soluo, o comprimento do objeto dado pela soma das alturas dos itens 5, 1 e 6,
isto , o comprimento utilizado

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

Strip Packing Problem

ou

Two-Dimensional Strip Packing Problem.

Rectangular

Quando os itens retangu-

lares devem ser colocados no objeto de forma ortogonal, o ODP conhecido como

Orthogonal

31

Figura 1: Objeto e itens a serem produzidos

Rectangular Strip Packing Problem.

Figura 2: Exemplo de uma soluo

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
ou

Nesting Problem.

Irregular Strip Packing 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

Assim, sendo

i
n

que a inicializa (primeiro item alocado).


o nmero de faixas formadas para alocar todos os itens demandados, pode-se

denir a seguinte varivel de deciso:


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,

ele no pode ser atribudo novamente a essa faixa. Assim sendo,

denida a seguinte varivel binria:


xij =

j , tal
j , tal

1
0

Se o item

estiver alocado na faixa

Caso contrrio

32

Assim, o

ODP

na forma guilhotinada pode ser modelado por:

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.

2.17 Programao de horrios em escolas (School timetabling )


H um conjunto

de professores, um conjunto

de turmas, um conjunto

(segunda, tera, quarta, quinta, sexta) e um conjunto


de aulas. Suponha que a cada professor

de dias da semana

de horrios dirios para a realizao

est associada uma determinada matria previamente

q = 2 aulas por dia para qualquer turma.


i est associada uma preferncia cikl por dar aula em um
determinado dia k e horrio l , onde cikl {0, 1, 2, , 10} e quanto maior o valor de cikl maior
a preferncia. Seja CHij a carga horria do professor i para a turma j . Elabore um modelo de
alocada e que um professor

no pode dar mais do que

Suponha, tambm, que a cada professor

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 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

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

est disponvel no dia

e horrio dirio

e 0, caso

contrrio. Assim, as restries (PH2) devem ser substitudas por:

dispikl

xijkl

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

Conjunto de ns

Conjunto de locais

que representam os clientes

candidatos localizao de facilidades

j
j

Demanda do cliente

Distncia do cliente

Custo de atender a demanda

Custo xo de instalao de uma facilidade no local

Capacidade da facilidade instalada no local

facilidade localizada em

qj

do cliente

a partir de uma facilidade localizada em

2.18.1 p-Medianas
Este problema envolve a localizao de

facilidades e a designao de clientes a facilidades de

modo a minimizar a soma das distncias de clientes a facilidades e tal que cada cliente seja atendido
por uma nica facilidade.
Variveis de deciso:


xij =

yi =

1,
0,
1,
0,

se o cliente

atendido pela facilidade localizada em

i;

caso contrrio.

se a facilidade aberta no local

i;

caso contrrio.

O modelo genrico relativo ao problema em questo pode ser assim formulado:

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

A funo objetivo (LF1) minimiza a distncia total de designao de clientes a facilidades. As


restries (LF2) garantem que cada cliente
(LF3) asseguram que cada cliente
local

i.

atendido por uma nica facilidade. As restries

s pode ser designado a uma facilidade que esteja aberta no

A restrio (LF4) indica que exatamente

facilidades so abertas. As restries (LF5) e

(LF6) representam o tipo das 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,
importante observar que as restries (LF3) fazem a ligao entre as variveis

o que no correto, pois nenhuma facilidade est instalada (aberta) no local 1.


mostra a necessidade das restries (LF4).

yi = 1

Por elas, dado um cliente

xij pode ser 0 ou 1, isto , o cliente j pode ou no


yi = 0 ento xij s pode ser 0, isto , se no houver
i, ento nenhum cliente j pode ser atendido por i.

ento

entanto, se
no local

Este exemplo

e uma facilidade

i,

se

ser atendido pela facilidade i. No


uma facilidade instalada (aberta)

2.18.2 p-Centros
[Retirado de Arenales

et al.

(2007). Vide [1]] Este problema envolve a localizao de

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:

Distncia mxima de um cliente quando designado a uma facilidade

O modelo de programao inteira referente a esse problema pode ser formulado como:

min

r
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 funo objetivo (LF6) minimiza a distncia mxima de um cliente a uma facilidade.


restrio (LF7) expressa

como um limitante superior da distncia de cada cliente

facilidade. As demais restries so idnticas s do problema das

a uma

p-medianas.

2.18.3 p-Medianas capacitado


Neste caso, associa-se uma capacidade

Qi

facilidade instalada no local

(LF3) so substitudas por:

P
jJ

qj xij

Qi yi

i I

(LF8)

i.

Assim, as restries

35

2.19 Mistura de Minrios com Metas de Qualidade


Uma mineradora recebe uma encomenda para produzir 6000 toneladas de minrio atendendo a
especicao abaixo.

Elemento Teor Mnimo Meta Teor Mximo


qumico
permitido
permitido
F e (%)
44,5
47,0
49,5
Al2 O3 (%)
0,27
0,32
0,37
P (%)
0,035
0,040
0,043
P P C (%)
2,05
2,35
2,65
He (%)
38
40
50
Sabe-se que esta encomenda pode ser atendida a partir de um conjunto de pilhas de minrios,
cuja composio e disponibilidade so relacionadas a seguir.

Pilha
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.

Modelo de Programao Matemtica


Sejam os seguintes dados de entrada para o problema:

parametros
pilhas
tlj
trj
wdtj
dtnj
dtpj
Qui
nunidreti
tij
p

Conjunto de parmetros de controle;

Conjunto de pilhas;

Teor mnimo admissvel para o parmetro

Teor desejvel para o parmetro

Peso do desvio da meta para o parmetro

Desvio negativo da meta para o parmetro

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;

Nmero de unidades de retomada;

na pilha

Teor do parmetro

Produo total requerida, em toneladas.

(%);

(%);

e as seguintes variveis de deciso:

xi

Quantidade de minrio a ser retirada da pilha


yi

1
0

se a pilha

i,

em toneladas;

for usada;

caso contrrio.

O modelo de programao matemtica para o Exerccio 2.19 :

min

(wdtj dtnj + wdtj dtpj )

jparametros

(tij tuj )xi

j parametros

j parametros

j parametros

ipilhas

(tij tlj )xi

ipilhas

((tij trj ) xi ) + dtnj dtpj

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;


tl, tu, tr, t, wdt, Qu, p, retmin, unidret =
@ole('MisturaMetas(R).xls','tl','tu','tr','teor','wdt','Qu','p','retmin','unidret');
enddata

! Minimizar o desvio do teor de cada parmetro j em relao a sua meta de qualidade;


[fo] min = @sum(parametros(j): wdt(j)*dtn(j) + wdt(j)*dtp(j));

! O limite superior de especicao deve ser satisfeito para cada parmetro j;


@for(parametros(j): @sum(pilhas(i): (t(i,j) - tu(j))*x(i))

<=

0);

! O limite inferior de especicao deve ser satisfeito para cada parmetro j;


@for(parametros(j): @sum(pilhas(i): (t(i,j) - tl(j))

x(i))

>=

0);

! A meta de qualidade deve ser buscada para cada parmetro j;


@for(parametros(j): @sum(pilhas(i): (t(i,j) - tr(j))

x(i)) + dtn(j) - dtp(j) = 0);

38

! A quantidade a ser retomada em cada pilha i deve ser inferior ou igual a Qu(i);
@for(pilhas(i): @BND(0, x(i), Qu(i)));

! A produo total deve ser igual a p;


@sum(pilhas(i): x(i)) = p;

! A quantidade x(i) a ser retomada na pilha i deve ser mltipla de unidret;


@for(pilhas(i): nunidret(i) = x(i) / unidret);

! Se for retomada qualquer quantidade na pilha i ento y(i) = 1.


Caso contrario, y(i) assume valor 0;
@for(pilhas(i)

Qu(i) #ne# 0: y(i)

>=

x(i)/Qu(i));

! Se for retomar alguma pilha i a quantidade x(i) a retomar deve ser superior ou
igual a retmin;
@for(pilhas(i): x(i)

>=

retmin*y(i));

! A varivel nunidred(i) inteira e y(i) binria;


@for(pilhas(i):
@GIN(nunidret(i));
@BIN(y(i));
);
data:

! Exporta os resultados para Excel;


@ole('MisturaMetas(R).xls','dtn','dtp','solucao') = dtn, dtp, x;
enddata

2.20 Problema das Usinas


Uma empresa siderrgica possui 3 usinas e cada uma delas requer uma quantidade mensal mnima
de minrio para operar. A empresa adquire minrio de 4 minas diferentes. Cada uma das minas
tem uma capacidade mxima de produo mensal estabelecida.

Por imposies contratuais, o

custo do minrio para a empresa composto por um custo xo mensal para cada mina (este valor
pago em caso de haver produo na mina), mais um custo de transporte ($/t) que varia de
acordo com a distncia entre as minas e usinas (cada par mina/usina tem um custo diferente). Os
dados so mostrados na tabela a seguir:

MINAS
Mina 1 ($/t)
Mina 2 ($/t)
Mina 3 ($/t)
Mina 4 ($/t)
Quant. req. (t/ms)

Usina 1 Usina 2 Usina 3 Cap. mx. das Custo


minas (t/ms) Fixo ($)
10

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

Construir um modelo de otimizao para determinar a quantidade de minrio a ser comprada


de cada mina e levada a cada usina de forma a minimizar o custo total de compra de minrio.

39

Modelo de Programao Matemtica


Sejam os seguintes dados de entrada para o problema:

minas
usinas
capi

Conjunto de Minas ;

Conjunto de usinas;

Capacidade de produo da mina

Custo xo de utilizao da mina

demandaj
custoij

Demanda requerida pela usina

Custo de transporte de minrio da mina

cxoi

i;

i;

j;
i

para a usina

j.

e as seguintes variveis de deciso:

xij

Quantidade de minrio a ser transportado da mina


yi

1
0

se a mina

para a usina

(j),

em toneladas;

for usada;

caso contrrio.

O modelo de programao matemtica para o Exerccio 2.20 :

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:

! Importa os dados do Excel;


cap, cxo, demanda, custo = @ole('Usinas(R).xls','cap','cxo','demanda','custo');
enddata

! Minimiza os custos com transporte entre as minas e o custo xo de utilizao das minas;
[fo] min = @sum(matriz(i,j): custo(i,j)*x(i,j)) + @sum(minas(i): cxo(i)*y(i));

! Total transportado de uma mina para as usinas deve ser menor ou igual
capacidade de produo da mina;
@for(minas(i): @sum(usinas(j): x(i,j))

<=

cap(i));

! A quantidade de minrio que chega a uma usina deve ser igual demanda da mesma,
uma vez que a oferta maior que a demanda ;
@for(usinas(j):@sum(minas(i): x(i,j))

demanda(j));

! Se houver produo na mina i ento y(i) = 1;


@for(minas(i): y(i)

>=

@sum(usinas(j): x(i,j)) / cap(i));

41

! As variveis y(i) so binrias;


@for(minas(i): @BIN(y(i)));
data:

! Exporta os dados para o Excel;


@ole('Usinas(R).xls','solucao','ctotal') = x, fo;
enddata

2.21 Dimensionamento de lotes


Empresas de manufatura fabricam, em geral, diversos tipos de produtos solicitados por diferentes
clientes, muitas vezes em grandes quantidades, os quais devem estar prontos para entrega em
diferentes datas previamente agendadas. Como as fbricas tm capacidade de produo limitada
devido quantidade de mquinas, mo-de-obra etc. disponveis, necessrio planejar a produo,

qu e quanto produzir (em outras palavras, dimensionar os lotes de produo),


quando produzir. A necessidade de antecipao da fabricao de produtos estocados

isto , decidir o
assim como

de um perodo para outro acarreta custos de estocagem e algumas diculdades operacionais. No


planejamento da produo, deseja-se determinar o tamanho dos lotes de produo para atender a
demanda na data solicitada de modo que a soma dos custos de produo e estocagem seja mnima.
Considere uma empresa que fabrica

|T | perodos de tempo.
duo denominado

n produtos e deseja programar sua produo nos prximos

Este conjunto de perodos de tempo para o qual a empresa planeja sua pro-

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

no perodo

demanda do item

disponibilidade de recursos renovveis no perodo

quantidade de recursos necessrios para a produo de uma unidade do item

custo de produzir uma unidade do item

custo de estocar uma unidade do item

conjunto dos perodos do horizonte de planejamento

no perodo

no perodo

e as seguintes variveis de deciso:

xit
Iit

nmero de itens do tipo

nmero de itens do tipo

i
i

produzidos no perodo

em estoque no nal do perodo

Os estoques iniciais do horizonte de planejamento


restries do problema.

Ii0

so dados. A seguir, so detalhadas as

42

minimizar

|T |
n X
X

(cit xit + hit Iit )

(2.1)

i=1 t=1

xi,t + Ii,t1 Iit = di,t i = 1, 2, . . . , n; t = 1, 2, , |T |


n
X
ri xit Rt t = 1, 2, , |T |

(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 nal do perodo

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

no pode superar a capacidade disponvel

xit do
anterior, Ii,t1 ,

da fbrica. As restries (2.4) asseguram o atendimento demanda. De fato, a quantidade


item

t mais a quantidade em estoque no nal do perodo


dit , ou seja, xit + Ii,t1 dit . Nesta ltima expresso, o termo esquerda
denio, Iit . Logo, garante-se o atendimento s demandas impondo-se Iit 0 e

produzida no perodo

deve ser maior ou igual a


representa, por
inteiro.

2.22 Planejamento da produo


[Retirado de Arenales

et al.

(2007). Vide [1]] A seguir, so apresentados alguns modelos impor-

tantes de planejamento da produo, conhecidos na literatura como modelos de dimensionamento

lot sizing ).

de lotes (

Os modelos apresentados possuem as seguintes caractersticas comuns: (a) o

horizonte de planejamento nito e dividido em perodos; (b) a demanda de cada item em cada
perodo dinmica, isto , varia ao longo do horizonte de planejamento; (c) a demanda e outros
parmetros dos modelos so supostos conhecidos, isto , tratam-se de modelos determinsticos.
Existem outros modelos em que o horizonte pode ser innito, a varivel tempo contnua, a 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

tempo para produzir uma unidade do item

capacidade de produo, em horas, de uma mquina ou instalao no perodo

tempo de preparao de mquina para processar o item

custo de preparao do item

custo unitrio de estoque do item

estoque inicial do item

nmero de itens nais

conjunto dos perodos do horizonte de planejamento

i
i

i
i

Considere, tambm, as seguintes variveis de deciso:

xit = quantidade do item i produzida no perodo t


Iit = 
estoque do item i no m do perodo t
1, se o item i produzido no perodo t
yit =
0, caso contrrio.

(tamanho do lote)

43

2.22.1 Um item sem restrio de capacidade


[Retirado de Arenales

et al.

(2007). Vide [1]] O problema mais simples de dimensionamento de

lotes envolve um nico item, sem restrio de capacidade.


estoque;

o custo de preparao do item;

do perodo
no perodo

I0

It
yt =

o estoque inicial;

t; xt a quantidade do item produzida


t e 0, caso contrrio. Seu modelo :

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

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

t limitada superiormente
|T |, e que o tamanho do lote positivo,
t (yt = 1). As restries (DL4), (DL5) e (DL6)

de estoque. As restries (DL3) garantem que a produo no perodo


pela demanda acumulada do perodo
isto ,

xt > 0

ao ltimo perodo

somente se h produo no perodo

indicam o tipo das variveis.


No caso em que a demanda pode ser atendida com atraso, atribui-se uma penalidade
unidade de demanda no atendida no perodo

It+
It

t.

por

Considere as variveis:

estoque no m do perodo

falta (demanda no atendida) no 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.

As restries (DL9) so idnticas s restries (DL3), e as restries

(DL10) a (DL13) indicam o tipo das variveis.


A considerao de demanda no atendida pode ser includa nos modelos a seguir, de acordo
com o exposto anteriormente.

44

2.22.2 Mltiplos itens e restrio de capacidade


[Retirado de Arenales et al. (2007). Vide [1]] Este problema, conhecido
capacitated lot sizing problem, trata de um conjunto N de itens que devem

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 )

Ii,t1 + xit dit


Ct

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

nesse perodo) e a demanda acumulada do perodo

t ao perodo |T |.

yit = 1.

se e somente se

em (DL17b) o mnimo entre a capacidade restante no perodo

(se

produzido

As demais restries indicam

o tipo das variveis de deciso.

2.23 Representao de restries disjuntivas


Em muitos problemas prticos, requer-se que apenas uma dentre vrias restries seja satisfeita.
Esse tipo de situao aparece com frequncia em problemas de programao de tarefas em 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
Neste caso, basta denir uma varivel binria

y=0

ento

r2

tal que se

(2.7)

y = 1

ento

r1

estar ativa e se

quem estar ativa. Matematicamente, podemos representar isto por:

r1 (x1 , x2 , , xn ) b1 + M (1 y)
r2 (x1 , x2 , , xn ) b2 + M y
em que

(2.6)

(2.8)
(2.9)

um nmero sucientemente grande.

Exemplo: Considere as restries:

4x1 + 2x2 80
2x1 + 5x2 100

(2.10)
(2.11)

45

Figura 3: Exemplo de restries disjuntivas

As linhas cheias da Figura 3 mostram as retas que geram os semi-espaos denidos pelas
restries (2.10) e (2.11). J as linhas vermelhas (mais grossas) mostram o quanto essas retas tm
que ser transladadas de forma que elas sejam redundantes, isto , no ativas.
Para encontrar as retas vermelhas (em linhas mais grossas) proceda como segue. Gere, inicialmente, a reta base. Seja a reta
restrio (2.10). Explicitando

x2

4x1 + 2x2 = 80,

a qual geradora do semi-espao denido pela

dessa equao e simplicando, tem-se:

2x2 = 80 4x1 .

Para ser

redundante, essa reta tem que ser transladada, no mnimo, 30 unidades direita do ponto (20,
0), isto , deve passar pelo ponto (50, 0) ou direita dele pois, caso contrrio, ela interceptaria
o semi-espao denido pela restrio

2x1 + 5x2 100,

eliminando alguns pontos do espao de

solues viveis. Assim, precisamos determinar o valor de


pelo ponto (50, 0), isto ,

0 = 80 + M 4 50.

repetindo-se o procedimento para a outra reta, conclui-se que o


direito da segunda restrio

100.

Observe que o menor valor de

2x2 = 80 + M 4x1 passe


M = 120. De forma anloga,
valor M a ser adicionado ao lado

tal que

Resolvendo, tem-se

dado por

max{120, 100} = 120.

Um valor pequeno de

desejvel para acelerar os mtodos de resoluo de problemas de programao inteira.

representao matemtica da disjuno das duas restries apresentadas dada, ento, por:

4x1 + 2x2 80 + 120(1 y)


2x1 + 5x2 100 + 120y

Se tivermos

(2.12)
(2.13)

m restries r1 (x) b1 , r2 (x) b2 , , rm (x) bm e apenas uma delas deve estar


m variveis binrias yi e escrevemos:

ativa ao mesmo tempo, ento criamos

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)

yi = 1 ento ri (x) bi + M (1 yi ) = bi e esta restrio ca ativa e as demais,


inativas. Se yi = 0 ento ri (x) bi + M (1 yi ) = bi + M ca redundante (inativa) e, portanto,
satisfeita para qualquer valor de x, uma vez que M um nmero arbitrariamente grande.
Assim, se

2.24 Sequenciamento em uma mquina


[Retirado de Arenales

et al.

(2007) [1]] Considere um conjunto

de tarefas a serem processadas em

uma mquina. Todas as tarefas esto disponveis para processamento no instante zero e admite-

preemption )

se que a interrupo (

de qualquer tarefa no permitida.

Considere os seguintes

parmetros inteiros e no-negativos:

pi
di
M

tempo de processamento da tarefa

data de entrega da tarefa

nmero arbitrariamente grande

Sejam as seguintes variveis de deciso:

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

isto , a restrio (S3) ca

redundante (desativada). As restries (S4) e (S5) indicam o tipo das variveis. Observe que

C0

xado em ZERO.

2.24.1 Minimizao do tempo de uxo total


O tempo de uxo total corresponde soma dos tempos de trmino das tarefas, isto ,

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

[1], [2], ..., [n], tal que p[1] p[2] p[n]


p[2] o tempo de processamento da

posio. Por exemplo,

tarefa que ocupa a segunda posio na sequncia de produo.


Exerccio:
Determine o tempo de uxo total do problema de sequenciamento a seguir, em que h 7 tarefas
com os seguintes tempos de processamento e datas de entrega.
Tarefas

Data de entrega (d)

13

10

20

1, 2, , 7 e mais a tarefa ctcia 0.

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;

[fo] min = @sum(Tarefas(i) | i #NE# 1: C(i));


@for(Tarefas(j):
@sum(Tarefas(i) | i #NE# j: x(i,j)) = 1);
@for(Tarefas(i):

Tarefas

envolve as tarefas

Assim, quando necessrio referenciar apenas as tarefas

reais, necessrio excluir a tarefa 0 (de ndice 1).

data:
p = 0 7 4
d = 0 13 10
M = 1000;
enddata

Tempo de processamento (p)

Segue o modelo LINGO. Observe, neste modelo, que o conjunto


reais

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))));

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

2.24.2 Minimizao do atraso mximo


O atraso mximo, denotado por

Tmax ,

est associado tarefa com maior diferena entre seu

Observe que Ti = max{Ci di , 0}


iN
0. O problema de minimizao de Tmax pode, ento, ser formulado

instante de trmino e data de entrega, isto ,


implica

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)

Earliest Due Date ),

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:

[1], [2], , [n]

tal que

d[1] d[2] d[n] .

2.24.3 Minimizao da soma dos atrasos


Com este critrio de otimizao, o problema modelado como:

min

Ti

iN

Ti
Ti
(S1)

Ci di
0
-

i N
i N

(S5)

2.24.4 Minimizao da soma dos atrasos e adiantamentos


Este problema modelado como:

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)

2.24.5 Minimizao do nmero de tarefas atrasadas


Sejam as variveis

yi = 1

se a tarefa

est atrasada e

yi = 0 ,

caso contrrio. Ento a formulao

do problema dada por:

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.

2.24.6 Minimizao do lateness mximo


Seja Lmax = max Li o lateness mximo. Como a varivel Li
iN

livre, isto , pode assumir valores

negativos ou nulos ou positivos, denamos Li = Li Li , com Li 0 e Li 0. Desta maneira, o


problema pode ser representado pelo seguinte modelo, onde todas as variveis so no-negativas:

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

2.24.7 Sequenciamento com tempo de preparao de mquina


i seja necessrio um tempo de preparao de
si , conhecido como tempo de setup. Se esse tempo for independente da sequn-

Considere agora que para processar uma tarefa


mquina dado por

cia, basta incorpor-lo ao tempo de execuo dessa tarefa, isto , basta considerar o tempo de
processamento da tarefa

Cj

como

si + pi .

Neste caso, o conjunto de restries (S3) alterado para:

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

indica o tempo de preparao da mquina para processar 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

e pode ser formulado como:

Cmax
Cmax
(S1) - (S2)

i N

Ci

- (S7)

- (S4) - (S5)

2.24.8 Sequenciamento em uma mquina com penalidades por antecipao e atraso


da produo
Apresentamos a seguir uma classe de problemas de sequenciamento em uma mquina com penalidades por antecipao e atraso da produo (PSUMAA), o qual tem as seguintes caractersticas:

(a) Uma mquina deve processar um conjunto de

tarefas (

(b) Cada tarefa possui um tempo de processamento

pi ,

jobs ).

uma data inicial

ei

e uma data nal

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 nalizada, 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 nalizadas dentro de uma janela de tempo
entrega. Se a tarefa

for nalizada antes de

Caso a tarefa seja nalizada aps

ti

ei

[ei , ti ],

denominada janela de

ento h um custo de manuteno de estoque.

ento h associado um custo por atraso (que pode ser

uma multa imposta por contratos de prestao de servio), alm de insatisfao do cliente.
As tarefas que forem nalizadas dentro da janela de entrega no proporcionam nenhum custo
para a empresa.
(h) Os custos por antecipao e atraso da produo so dependentes das tarefas, ou seja, cada
tarefa possui um custo unitrio de antecipao

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

n o nmero de tarefas a serem processadas, pi o tempo de


processamento da tarefa i, Ii a data de incio do processamento da tarefa i (Ii 0) e sij o tempo
de preparao da mquina necessrio para processar a tarefa j imediatamente depois da tarefa i.
Sejam, ainda, 0 (zero) e n+1 duas tarefas ctcias, de tal forma que 0 antecede imediatamente a
primeira tarefa e n+1 sucede imediatamente a ltima tarefa na sequncia de produo. Admite-se
que p0 e pn+1 so iguais a zero e que s0i = 0 e si,n+1 = 0, i = 1, . . . , n.
As restries (2.22) garantem a existncia de um tempo suciente para completar uma tarefa i
antes de comear uma tarefa j , caso uma tarefa j seja processada imediatamente aps uma tarefa
i, sem nenhuma tarefa intermediria.
Para modelar este PSUMAA, sejam

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)

um valor adequadamente grande. A varivel de deciso

denida da seguinte forma:

1,
0,

se a tarefa

sequenciada imediatamente aps a tarefa

i;

caso contrrio.

Assim, quando

yij = 1,

No caso em que

as restries (2.22) tornam-se:

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 )

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

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

a data de trmino do perodo de entrega da tarefa

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)

os custos de antecipao e atraso da produo da tarefa


n
X

i Ei ,

respectivamente. O custo total por antecipao dado por

atraso determinado por

n
X

i por unidade de tempo,

enquanto o custo total por

i=1

i Ti .

A funo objetivo, que consiste em minimizar o somatrio dos

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 :

data de incio do processamento da tarefa

i;

varivel binria que determina a sequncia de produo, se

imediatamente depois da tarefa

yij =1 a tarefa j

processada

e 0 caso contrrio;

Ei :

tempo de antecipao da tarefa

Ti :

tempo de atraso da tarefa

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)

2.25 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

mquinas paralelas e

tarefas disponveis para processa-

mento no instante zero, sem interrupo de processamento de qualquer tarefa.


Para o problema de minimizao do
processamento da tarefa

makespan

em mquinas idnticas, seja

pi

o tempo de

i, i = 1, , n.

Sejam as seguintes variveis de deciso:

Cmax
xik

makespan

Varivel binria que assume valor 1 se a tarefa

processada na mquina

e 0, caso

contrrio

Assim, o modelo de programao matemtica para a minimizao do


paralelas idnticas pode ser representado por:

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

A funo objetivo (2.42) representa a minimizao do


que uma tarefa
que o

makespan

makespan.

(2.46)

As restries (2.43) asseguram

designada a exatamente uma mquina, enquanto as restries (2.44) impem

o maior tempo de processamento entre todas as mquinas. As restries (2.45)

e (2.46) indicam o tipo das variveis.


Apresenta-se, a seguir, um modelo para minimizao da soma dos avanos e atrasos aplicvel
a qualquer dos trs tipos de mquinas anteriormente mencionados. Para tanto, sejam os seguintes
parmetros de entrada:

pik
sijk

Tempo de processamento da tarefa


Tempo de preparao da mquina
imediatamente aps a tarefa

di
M

i na mquina k
k para processar

:
:

a tarefa

Data de entrega da tarefa

Nmero sucientemente grande

e as seguintes variveis de deciso:

Cik
xijk

Instante de trmino do processamento da tarefa

Varivel binria que assume valor 1 se a tarefa


tarefa

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}

mensura o quanto a tarefa

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

(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

Cjk Cik M + (sijk + pjk + M )xijk

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

tem uma nica tarefa predecessora imediata

em uma nica mquina. As restries (2.49) garantem que cada mquina


nica sequncia de processamento.

k,

se usada, tem uma

As restries (2.50) asseguram que cada tarefa

nica tarefa sucessora imediata, com exceo da tarefa

0,

tem uma

que estabelece o incio e o nal da

k . Se xijk = 1, a restrio (2.51) implica que na mquina


xijk = 0, ento Cjk Cik M , isto , a restrio (2.51)

sequncia de processamento na mquina

tem-se

Cjk Cik + sijk + pjk

ca desativada.

e, se

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

tarefa processada nas

tarefas e

mquinas, em que cada

mquinas, de acordo com um roteiro preestabelecido. Considere, por

exemplo, 5 tarefas e 3 mquinas, denotadas por 1, 2 e 3. As matrizes

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

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

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

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

Tempo de processamento da tarefa

i-sima

mquina que processa a

Nmero sucientemente grande

na mquina

tarefa

e as seguintes variveis de deciso:

Cik
xijk

Instante de trmino do processamento da tarefa

Varivel binria que assume valor 1 se a tarefa

na mquina

precede a tarefa

na mquina

0, caso contrrio

Assim, o modelo de programao matemtica relativo ao

minimizar

n
X

Job Shop

pode ser representado por:

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

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)
restries (2.58) garantem que a primeira operao de cada tarefa

so desativadas. As restries (2.62) e (2.63) estabelecem o tipo das variveis.

2.27 Planejamento de lavra com Alocao Dinmica de Caminhes


Nesse problema h um conjunto de frentes de minrio e estril, um conjunto de carregadeiras e
um conjunto de caminhes. O objetivo alocar as carregadeiras s frentes de lavra e determinar
o nmero de viagens que cada caminho deve fazer cada frente de lavra de forma a atender a
produo requerida de minrio e estril, bem como as caractersticas fsicas e qumicas desejadas
para o produto a ser gerado. Normalmente, a produo (ou ritmo de lavra) determinada para
uma hora e replicada enquanto as condies da mina forem as mesmas. A cada carregadeira est
associada uma produtividade mxima, em toneladas/hora e cada caminho tem uma capacidade
mxima de carregamento. So conhecidos os tempos de ciclo, em minutos, de cada caminho
cada frente de lavra, bem como as especicaes dos minrios, ditos parmetros de controle, em

56

cada frente. Os caminhes s podem fazer viagens a frentes nos quais h carregadeiras 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 ).

cida como programao por metas (

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

Conjunto das frentes de minrio;


Conjunto das frentes de estril;
Conjunto das frentes formado por

M E;

Conjunto dos parmetros de controle analisados no minrio;


Conjunto dos equipamentos de carga (carregadeiras);
Conjunto dos equipamentos de transporte (caminhes);
Ritmo de lavra recomendado (t/h);
Ritmo de lavra mnimo (t/h);
Ritmo de lavra mximo (t/h);
Penalidade por desvio negativo da produo;
Penalidade por desvio positivo da produo;

Valor do parmetro

na frente

(%);

Teor recomendado para o parmetro

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

Relao estrio/minrio requerida;


Produo mxima do equipamento de carga
Capacidade do caminho

(t/h);

(min).

(t);

Tempo total de ciclo do caminho

frente

Taxa de utilizao mxima permitida para o caminho


complk :

1
0

se o caminho

(%);

pode ser usado com o equipamento de carga

k;

caso contrrio.

e as seguintes variveis de deciso:

xi

Ritmo de lavra da frente


yik

nil :
dm
j :
+
dmj :
P :
P+ :

1
0

(t/h);

se o equipamento de carga

for alocado frente

i;

caso contrrio.

Nmero de viagens que o caminho

i em uma hora;
j na mistura (t/h);
j na mistura (t/h);

realiza na frente

Desvio negativo de meta relativo ao parmetro


Desvio positivo de meta relativo ao parmetro

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


Desvio positivo do ritmo de lavra em relao ao recomendado (t/h).

Desvio negativo (ou desvio por baixo) de meta do parmetro de controle (respectivamente
ritmo de lavra recomendado) indica o quanto se cou abaixo da meta (respectivamente ritmo de

57

lavra recomendado), enquanto desvio positivo (ou desvio por cima) indica o quanto se ultrapassou
a meta (respectivamente ritmo de lavra recomendado).
O modelo de programao matemtica relativo alocao dinmica de uma frota heterognea
de caminhes e equipamentos de carga, levando-se em considerao metas de produo e qualidade
de minrio, apresentado pelas equaes (2.64)-(2.82).

min

j dm
j +

jS


+ +
j+ dm+
j + P + P

(2.64)

jS

j S

(2.65)

(tij tlj )xi 0

j S

(2.66)

+
(tij trj )xi + dm
= 0
j dmj

j S

(2.67)

s.a:

(tij tuj )xi 0

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)

kCarreg, complk 6=0

nil Til 60 txM axl

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) 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 %

de sessenta minutos. As restries (2.81) fazem com

que o ritmo de lavra de uma frente seja igual produo realizada pelos caminhes alocados a
essa frente. As restries (2.82) asseguram que o nmero de viagens que um caminho faz a uma
frente um valor inteiro positivo.

2.28 Linearizao do produto de variveis binrias


Propriedade:

O produto z = x1 x2 xn com xj {0, 1}


j = 1, 2, , n equivalente
x1 + x2 + + xn z n 1, z xj , xj {0, 1}, j = 1, 2, , n, z 0.

Exemplo: Aplicar esta propriedade ao problema no-linear 0-1 a seguir, transformando-o em um


problema de programao linear inteira mista (PLIM).

min 3x1 + 2x2 + x3 9x1 x2 + 4x1 x2 x3


s.a: xj {0, 1} j = 1, 2, 3
(a) Linearizao do produto

z1 = x1 x2 :

Aplicando a propriedade ao produto das duas variveis binrias, resulta:

x1 + x2 z1 2 1 = 1
z1 x1
z1 x2
z1 0
(b) Linearizao do produto

z2 = x1 x2 x3 :

De forma anloga, obtm-se:

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

Branch-and-Bound um mtodo de busca em rvore que se fundamenta na programao

linear para explorar o espao de busca.

Em cada passso do mtodo as variveis inteiras so

relaxadas e o subproblema resultante resolvido por um mtodo da programao linear.

Se a

soluo desse subproblema tiver todas as variveis inteiras, ento os descendentes do ramo da
rvore analisado esto, naturalmente, implicitamente enumerados. H outro critrio para a

poda

da rvore tambm, mas trataremos disso mais adiante. Havendo variveis no inteiras e falhando
esse outro critrio, feita a escolha de uma varivel a ramicar. Escolhida essa varivel, deve-se,
agora, escolher qual ramo da rvore explorar primeiro, aquele associado ao valor menor ou igual

xj bxj c) ou o ramo associado ao valor maior ou igual ao teto


xj bxj c + 1). Gracamente, isso signica dividir o espao de solues

ao piso da varivel (isto , o ramo


da varivel (isto , o ramo

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

A Figura 4 apresenta a rvore de

4x1
8x1
5x1
x1
x1

3x2
3x2
6x2
2x2
x2

+
+
+
+
,

branching

z
24
30
9

Z+

desse problema de programao inteira, no qual se

aplicou um critrio, conhecido como Variante de Dank, para escolher a varivel a ramicar. Este
critrio consiste em escolher para ramicar a varivel no inteira que esteja mais prxima de um
inteiro (tanto com relao ao piso quanto ao teto).
Considerando como regras busca em profundidade e analisar primeiramente o valor maior da
varivel escolhida para ser ramicada, isto , o ramo

xj bxj c + 1, mostremos quais problemas de

programao linear (PPLs) seriam necessrios resolver aplicando-se a tcnica

branch-and-bound.

Como o PPL 1 no produziu soluo com variveis inteiras, ento escolhida uma varivel
para ramicar; que, no caso do Critrio de Dank, a varivel
ramos tm que ser resolvidos: o ramo no qual

x2

x2 3

x2 .

Como

e o ramo no qual

x2 = 3, 69, ento dois


x2 4. Os valores de

entre 3 e 4 so desprezados porque no conduzem a solues inteiras. Pela regra estabelecida,

devemos resolver primeiro o ramo da rvore associado a

x2 4.

O PPL 3 formado, portanto, pelo PPL 1 relaxado includa a restrio

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 no inteira e dois ramos devem


x1 2. Pela regra estabelecida, o ramo

largura, resolveramos o PPL 2). No caso, apenas a varivel


ser considerados: o associado a

x1 2

x1 1

e o associado a

deve ser resolvido primeiro.

Resolvendo-se o PPL 4, o qual formado pelo PPL 1 includas as restries


obtm-se uma soluo inteira com valor
explorado, podendo-se fazer o

z = 20.

x2 4

x1 2,

Ento esse ramo da rvore est denitivamente

backtracking e resolver o outro ramo imediato da rvore, descendente

do PPL 3.
Resolvendo-se o PPL 5, o qual descendente do PPL 3, encontra-se uma soluo no inteira
de valor

z = 20.

Ora, uma soluo com esse valor j foi encontrada resolvendo-se o PPL 4.

Resolvendo-o encontraramos uma soluo pior, ento a rvore de busca pode ser
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,

Esse ramo deve ser analisado

61

Figura 4: rvore de

Branching

porque sendo descendente do PPL 1, o qual tem valor


de

z = 17, 54,

poderamos encontrar valores

iguais a 18 ou 19 e, portanto, inferiores ao melhor encontrado at o momento, que

Entretanto, resolvendo o PPL 2 encontramos soluo inteira, mas com

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

pior que o melhor valor encontrado at o momento (Bastava a ocorrncia de um desses

motivos para que a

poda

pudesse ser realizada). Fazendo-se o

backtracking

retorna-se ao n raiz,

que o PPL 1. Como os dois ramos da rvore foram analisados, o mtodo encerrado, retornando
x?1 = 2, x?2 = 4, associado a z ? = 20, como soluo tima para o problema de programao linear
inteira dado.
Exerccio:
Resolva o seguinte PLI pelo mtodo

Branch-and-Bound,

apresentando toda a rvore de deciso.

Use a variante de Dank para escolher a varivel a ramicar, sendo que em caso de empate, escolha
a varivel de maior ndice.

Escolhida a varivel a ramicar, opte por analisar primeiro o valor

maior da varivel. Faa busca em profundidade.

max

2x1
x1
x1
6x1
x1

+
+
+
+
,

x2
2x2
x2
2x2
x2

z
7
0
21

Z+

62

Integrao do LINGO em planilhas Excel

Para ilustrar a integrao do LINGO em planilhas do Microsoft Excel, consideremos o Problema


de Transporte denido a seguir.

4.1 Problema de Transporte


Dado um conjunto de fontes de produo (fbricas), um conjunto de mercados consumidores
(armazns), e uma rede de possveis caminhos de transporte (rotas) das fontes de produo para
os mercados, o objetivo da problema determinar o carregamento que minimiza o custo total
de transporte, de modo que as capacidades das fontes produtivas no sejam ultrapassadas e as
demandas dos mercados sejam atendidas. Considere a quantidade ofertada pelas fbricas maior
que a soma das demandas dos armazns.
Para fazer a modelagem de programao matemtica deste problema, sejam os seguintes parmetros de entrada:

f abricas
armazens
custoij
demandaj
capacidadei

Conjunto das fbricas

Conjunto dos armazns

Custo de transporte de uma unidade de produto da fbrica

Demanda por produtos do armazm

Capacidade de produo da fbrica

ao armazm

qtdEnviadaij como sendo a quantidade de produtos a


j , temos o seguinte modelo de programao matemtica:

Considerando as variveis de deciso


serem enviadas da fbrica

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

A ltima restrio, que estabelece o domnio das variveis

qtdEnviadaij

no conjunto dos in-

teiros desnecessria. O Problema de Transporte tem a propriedade de que qualquer soluo do


problema inteira. Assim, esta ltima restrio pode ser substituda apenas por:

qtdEnviadaij 0 i f abricas j armazens


O modelo LINGO do Problema de Transporte apresentado a seguir.

63

MODEL:
TITLE: Problema de Transporte;
SETS:
fabricas / @OLE('Transporte.xlst','fabricas') /: capacidade;
armazens / @OLE('Transporte.xls','armazens') / : demanda;
rotas(fabricas, armazens): custo, qtdEnviada;
ENDSETS
DATA:
capacidade = @OLE('Transporte.xls','capacidade');
demanda = @OLE( 'Transporte.xls','demanda');
custo = @OLE( 'Transporte.xls','custo');
ENDDATA
[FO] MIN = @SUM(rotas(i,j): custo(i,j)*qtdEnviada(i,j));
! As capacidades das fbricas no podem ser ultrapassadas;
@FOR(fabricas(i): @SUM(armazens(j): qtdEnviada(i,j))

<=

capacidade(i));

! As demandas dos armazns devem ser atendidas;


@FOR(armazens(j): @SUM(fabricas(i): qtdEnviada(i,j)) = demanda(j));
@FOR(rotas(i,j): @GIN(qtdEnviada(i,j));
DATA:
@OLE('Transporte.xls','solucao') = qtdEnviada;
@OLE( 'Transporte.xls','cTotal') = FO;
ENDDATA
END

Os dados de entrada para este modelo so apresentados pela gura a seguir. Nesta planilha
esto denidos os seguintes campos:

Nome

Campo

fabricas

B6:B11

armazens

C5:J5

capacidade

K6:K11

demanda

C12:J12

custo

C6:J11

solucao

C21:J26

cTotal

I28

64

4.2 Algumas consideraes sobre @OLE


Ao utilizar a funo @OLE, algumas consideraes devem ser feitas:
1. Para que @OLE funcione corretamente necessrio que o arquivo .xls utilizado esteja
aberto, a no ser quando objetos embutidos so utilizados (objetos embutidos so explicados
na prxima seo);
2. A funo @OLE no trabalha com conjuntos derivados tridimensionais; e
3. @OLE l os campos denidos no Excel, de acordo com a seguinte ordem: da esquerda para
direita e de cima para baixo.

65

4.3 Embutindo planilhas do EXCEL no LINGO


Assim como possvel embutir um modelo LINGO no EXCEL, o processo pode ser invertido de
modo que uma planilha seja embutida no LINGO.
Para embutir um arquivo .xls no LINGO, siga os seguintes passos:

1. selecione o menu Edit|Insert New Object;

2. selecione a opo Criar do Arquivo na caixa de dialogo Inserir Objeto;

3. digite o caminho e o nome do arquivo a ser embutido;

4. marque a caixa Vincular; e

5. clique no boto OK.

Este processo ilustrado com o modelo Problema de Transporte, apresentado na seo 4.1.
Aps inserir o novo objeto contendo o arquivo Transporte.xls, temos:

66

A planilha de dados est agora embutida no LINGO, exibida ao topo do modelo Problema de
Transporte. Para edit-la, basta dar um duplo-clique sobre o objeto.

67

Quando o modelo for resolvido, o LINGO enviar os resultados para o arquivo Transporte.xls
atualizando a planilha embutida, como exibido a seguir.

4.4 Embutindo Modelos LINGO no EXCEL


O LINGO capaz de funcionar como um servidor OLE. Isto signica que um modelo do LINGO
pode ser embutido em qualquer aplicao que funcione como cliente OLE como, por exemplo, o
EXCEL. Embutir um modelo no EXCEL conveniente, pois o modelo estar sempre disponvel
sempre que o arquivo .xls for aberto, no sendo necessrio abrir o otimizador LINGO.
Para embutir um documento do LINGO em um arquivo do EXCEL, siga os seguintes passos:
1. selecione o menu Inserir|Objeto;
2. selecione o objeto LINGO Document na lista Tipo de objeto; e
3. clique no boto OK;

68

Aps concluir os passos citados acima, um documento em branco do LINGO surgir na planilha
corrente.

O modelo pode ser digitado no documento diretamente, ou copiado de uma outra

aplicao (copiar/colar).
Para ilustrar este recurso, ser utilizado o modelo Problema de Transporte descrito na seo
4.1. Embutindo este modelo em um arquivo nomeado como Transporte.xls, teramos:

Ao dar um duplo-clique sobre o objeto contendo o modelo embutido, uma barra de comandos
do LINGO aparecer no canto superior da tela.

Para resolver o modelo, basta clicar no boto

Solve da barra de comandos. Depois de otimizar o modelo, o LINGO enviar os resultados para
o arquivo Transporte.xls, como exibido a seguir.

69

4.5 Utilizando links OLE automatizados no EXCEL


O LINGO disponibiliza um comando
criao de um

link

script,

OLE automatizado. Este

prprio para ser usado pelo EXCEL, que permite a

link

estabelece uma relao cliente-servidor entre o

EXCEL e o LINGO. Com isto, torna-se possvel resolver um modelo escrito na prpria planilha
do EXCEL, sem a necessidade de utilizar o aplicativo do LINGO, de forma transparente para o
usurio.
Para ilustrar esse recurso ser utilizado o modelo Problema de Transporte mostrado na seo
4.1. Esta ilustrao assume que o leitor esteja razoavelmente familiarizado com o uso de macros
do Visual Basic.
Primeiramente, faa um modelo LINGO interfaceando com o Excel na forma usual. A seguir, v
na opo Ferramentas / Personalizar do Excel e ative o box Caixa de Ferramentas de Controle.

70

Ao aparecer a caixa de ferramenta, clique em

Boto de Comando

dessa Caixa e a seguir

clique em uma posio adequada da planilha para inserir esse boto. Ser, ento, criado o boto

CommandButton1.

Dando um duplo clique nele, aparecer a janela de edio do Visual Basic.

Nesse editor, h uma janela esquerda com as propriedades desse boto, conforme ilustra a gura
a seguir.

Altere a propriedade
nome anterior e

default

caption

para um nome adequado, por exemplo,

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

Solve resultante da alterao realizada.

Nesta planilha, intitulada Dados, esto denidos os seguintes campos:

Nome

Campo

Nome Campo

fabricas

B6:B11

custo

C6:J11

armazens

C5:J5

solucao

C21:J26

capacidade

K6:K11

cTotal

I28

demanda

C12:J12

71

Existe ainda uma segunda planilha, chamada Modelo, que foi criada para conter o cdigo

script

referente ao modelo do Problema de Transporte.

Um

script

deve possuir o seguinte

esquema:
SET ECHOIN 1

Outras funes SET


MODEL:

modelo LINGO
END
GO
SET ECHOIN 0
QUIT

MODEL e END. O comando


ativa o terminal do LINGO, permitindo que o script seja lido. J o comando

Observe que o modelo LINGO delimitado pelas palavras-chave


SET ECHOIN 1

GO usado para resolver o modelo, descrito entre as palavras-chave MODEL e END. O comando

QUIT libera a memria usada pela aplicao LINGO.

Os comandos anteriores devem ser adicionados ao modelo LINGO e toda a relao de comandos,
comeando de SET ECHOIN 1 at QUIT deve ser marcada e copiada dentro do ambiente de
modelagem LINGO com o comando

CRTL C, por exemplo.

Agora, posicione o cursor na planilha

Modelo do Excel em uma certa posio, no caso, na clula A1. D

CRTL V. A gura a seguir

exibe o resultado dessa operao na planilha Modelo:

Para que este

script

seja enviado ao LINGO necessrio que ele esteja denido atravs do

seguinte campo:

Nome Campo
modelo

A1:A31

72

Isto , o bloco do Excel onde est o cdigo LINGO deve ser marcado e nomeado como modelo
ou outro nome qualquer.
Denidos os campos e o modelo LINGO, ser necessrio associar ao boto

Solve,

criado na

planilha Dados, o seguinte cdigo:


Private Sub CommandButton1_Click()
Dim iErr As Integer
Dim LINGO As Object
Set LINGO = CreateObject("LINGO.Document.4")
iErr = LINGO.RunScriptRange("modelo")
If (iErr

>

0) Then

MsgBox ("Erro. O modelo no pode ser Resolvido")


End If
End Sub
Se o editor Visual Basic no estiver aberto, este pode ser acionado dando-se um duplo clique no

Name CommandButton1. Caso


ela seja mudada para Solve, ento a primeira linha dever ser Private Sub Solve_Click().
boto

Solve.

Os cdigos anteriores supem que a propriedade

A automao OLE utilizada para chamar o mtodo RunScriptRange, passando o campo

modelo

como parmetro.

A rotina RunScriptRange ento, solicita ao EXCEL que obtenha

o contedo deste campo e, inicia o processo de execuo do

script.

Esse processo continua at

que a palavra-chave QUIT seja encontrada ou no haja mais comando a ser lido. A instruo
RunScriptRange retornar um valor 0 caso o

script

esteja pronto para ser processado.

Voltando planilha Dados, para que o modelo seja resolvido basta apenas que o boto Solve
seja pressionado. Aps uma breve pausa, a soluo encontrada pelo LINGO enviada planilha,
como mostra a gura a seguir.

Feche o Editor do Visual Basic e retorne planilha Excel. Para sair do modo de 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 conguraes padres do LINGO. Todas as opes congurveis
pelo usurio esto disponveis atravs desse comando. Sua sintaxe :
SET nome_do_parametro

ndice_do_parametro [valor_do_parametro]

Caso o valor do parmetro seja omitido, o LINGO utilizar o valor padro para o parmetro
especicado. Alguns dos parmetros acessveis atravs do comando SET so apresentados a seguir.

ndice
10

Nome
TIMLIM

Padro
0

Descrio
Tempo limite de execuo em segundos
(0: sem limite)

23

TERSEO

Omite o relatrio gerado aps a resoluo do modelo


(0: no, 1: sim)

24

STAWIN

Exibe a janela de

status

do processo de busca

(1: sim, 0: no)


33

ECHOIN

Envia comandos

script

para o terminal

(0: no, 1: sim)


34

ERRDLG

Exibe mensagens de erro em uma caixa de dilogo


(1: sim, 0: no)

46

DUALCO

Calcula os valores duais


(0: no calcula, 1: calcula s dual, 2: calcula dual e range)

51

CUTOFF

1 10 9

Qualquer soluo com valor menor ou igual a CUTOFF


considerada como zero

41

SOLVEL

Escolhe o resolvedor dos PPL's


(0: LINGO decide, 1: Primal Simplex
2: Dual Simplex, 3: Barreira)

40

PRBLVL

Em programao inteira mista, realiza a operao

probing,

isto , tenta deduzir um valor mais prximo de um inteiro


para acelerar a busca. Pode surtir o efeito contrrio.
(0: LINGO escolhe, 1: nvel mais baixo, 7: nvel mais alto)
18

IPTOLR

5 108

Esta tolerncia um valor

variando entre 0 e 1, que indica

ao mtodo B & B para somente buscar solues inteiras cujo


valor seja pelo menos

100 r%

melhor que a melhor

soluo inteira encontrada at ento. Acelera a busca, mas


pode no garantir a soluo tima.
17

IPTOLA

8 108

Esta tolerncia um valor

r,

que indica ao mtodo B & B

para somente buscar solues inteiras cujo valor seja pelo


menos

unidades melhores que a melhor soluo inteira

encontrada at ento. Acelera a busca, mas pode no garantir


16

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

Problema do Caixeiro Viajante

5.1 Denio
Dado um conjunto de
Viajante (PCV), ou

n cidades e uma matriz de distncias dij

Traveling Salesman Problem - TSP,

entre elas, o Problema do Caixeiro

consiste em estabelecer uma rota para

um Caixeiro, iniciando seu percurso em uma cidade, chamada cidade origem, passar por todas as
demais

n1

cidades uma nica vez e retornar cidade origem percorrendo a menor distncia

possvel.
Exemplicando, consideremos 6 cidades com as distncias dadas pela tabela a seguir:
Cidade

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
Uma possvel soluo para o exemplo considerado

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.

(n 1)!/2 solues possveis. Para mostrar a magnitude do espao


16
de solues, para n = 20 h 6 10
solues. Supondo que um computador avalie uma soluo
8
8
(rota) em 10
segundos, seriam necessrios 6 10 segundos ou 168951 horas ou 7039 dias ou
cerca de 19 anos para se encontrar a melhor soluo por enumerao completa de todas as possveis
Para o PCV simtrico h

solues.

5.2 Modelagem de Programao Matemtica


Cidades conjunto
arcos ligando duas cidades, isto , A = {(i, j) | i 6= j}.
Seja dij a distncia da cidade i para a cidade j .
Seja o grafo

G = (Cidades, A),

onde

de cidades (clientes) e

o conjunto de

(a) Variveis de deciso:

xij :

varivel binria que assume valor 1 se o arco

fij :

quantidade de uxo enviada da cidade

(b) Funo objetivo:

min

dij xij

iCidades jCidades
(c) Restries:

k s chega um arco:
xik = 1 k Cidades

c.1) cada cidade

P
iCidades

(i, j)

for utilizado e 0, caso contrrio

para a cidade

75

k s sai um arco:
= 1 k Cidades

c.2) De cada cidade

xkj

jCidades
c.3) Eliminao de subciclos:

fik

iCidades

fkj = 1 k Cidades | k 6= 1

jCidades

fij (n 1)xij i Cidades, j Cidades


c.4) Integralidade e no-negatividade:

xij {0, 1} i Cidades, j Cidades


fij 0 i Cidades, j Cidades
Observe que nas restries de eliminao de subciclos, a varivel contnua
um arco.
sai de

indica o uxo em

k menos o que
1). J na segunda, o uxo
n 1, onde n o nmero de

Na primeira delas, impe-se que o uxo que chega a uma cidade

seja igual a 1 (exceto para a cidade origem, cujo ndice

mximo que passa em um arco usado no percurso inferior a


cidades, e quando um arco no usado (xij

= 0)

ento o uxo nulo.

O modelo LINGO completo do PCV apresentado a seguir. Neste modelo,

o conjunto de

cidades e PCV.txt (vide Figura 5) um arquivo texto contendo os dados do PCV, a saber:
relao das cidades (A,

P) e suas coordenadas cartesianas.

! Cidades;
A B C D E F G H I J K L M N O P ~
! Coordenadas x;
30 37 49 52 20 40 21 17 31 52 51 42 31

5 12 36 ~

! Coordenadas y;
40 52 49 64 26 30 47 63 62 33 21 41 32 25 42 16
Figura 5: Arquivo PCV.txt

76

model:
title: Problema do Caixeiro Viajante;
sets:
V / @file('Coordenadas.txt') /: u, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
data:
coord_x = @file('PCV.txt');
coord_y = @file('PCV.txt');
enddata
@for(V(i):
x(i,i) = 0;
@for(V(j):
d(i,j) = ( (coord_x(j) - coord_x(i))^2 +
(coord_y(j) - coord_y(i))^2
)^(0.5)));
[fo] min = @sum(V(i): @sum(V(j): d(i,j) * x(i,j)));
! A cada cidade k s chega um arco;
@for(V(k):
@sum(V(i): x(i,k)) = 1);
! De cada cidade k s sai um arco;
@for(V(k):
@sum(V(j): x(k,j)) = 1);
! Restricoes de eliminacao de subciclos;
@for(V(k) | k #ne# 1:
@sum(V(i): f(i,k)) - @sum(V(j): f(k,j)) = 1);
@for(V(i):
@for(V(j): f(i,j) <= (@size(V) - 1) * x(i,j)));
@for(V(i):
@for(V(j): @bin(x(i,j))));
end
= 219, 45, sendo a rota tima dada por
H I B D C L A.

A soluo tima deste problema tem distncia total fo


A

77

5.3 Modelagem Heurstica


5.3.1 Heursticas Construtivas
Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por elemento. A
forma de escolha de cada elemento a ser inserido a cada passo varia de acordo com a funo de
avaliao adotada, a qual, por sua vez, depende do problema abordado. Nas heursticas clssicas,
os elementos candidatos so geralmente ordenados segundo uma funo gulosa, que estima o
benefcio da insero de cada elemento, e somente o melhor elemento inserido a cada passo.
importante mencionar que no h garantia de que a soluo nal produzida por uma heurstica seja a tima.
A gura a seguir mostra o pseudocdigo para a construo de uma soluo inicial para um
problema de otimizao que utiliza uma funo de avaliao

g(.).

Nesta gura,

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

maior valor de

no caso de o problema ser de minimizao ou o

no caso de o problema ser de maximizao.

procedimento ConstrucaoGulosa(g(.), s);


1

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)

Heurstica do Vizinho Mais Prximo:


Nesta heurstica, parte-se da cidade origem e adiciona-se a cada passo a cidade

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

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.

Ao nal desses 6 passos, teremos produzido a soluo

Complexidade da Heurstica do Vizinho Mais Prximo:

Iterao

1
2

n1
Total

1 + 2

operaes

n1
n2

1
+ + n 1

Observaes
H
H

n1
n2

ligaes para serem analisadas


ligaes para serem analisadas

H apenas uma cidade ainda no visitada


=

n(n 1)/2

operaes

A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo elemento

n 1, a razo igual a 1 e o nmero


de termos n 1.


1+(n1)
a1 +anelem
S=
nelem =
(n 1) = n(n 1)/2
2
2
(b)

A soma dos termos desta PA vale

Heurstica de Bellmore e Nemhauser:


Nesta heurstica, adicionamos rota corrente a cidade
prxima dos extremos da subrota, isto , a cidade

ainda no visitada que esteja mais

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
conectada cidade 1, isto ,

d61 = 1 < d34 = 3, ento a cidade 6


a rota corrente : s = (6 1 3).

a escolhida e deve ser

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

d26 = 2 < d34 = 3, ento a cidade 2 a


conectada cidade 6, isto , a rota corrente : s = (2 6 1 3).
(cidade 3). Como a distncia

escolhida e deve ser


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
conectada cidade 3, isto ,

d34 = 3 < d52 = 7, ento a cidade 4 a escolhida


a rota corrente : s = (2 6 1 3 4).

v) Passo 5: A nica cidade ainda no visitada a cidade 5.

e deve ser

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.

s = (2 6 1 3 4 5). Para esta soluo,


dist = d26 + d61 + d13 + d34 + d45 + d52 = 2 + 1 + 1 + 3 + 2 + 7 = 16.

Ao nal desses 6 passos, teremos produzido a soluo


a distncia total percorrida

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
k
insero sij dado pela frmula abaixo seja a menor possvel.

da subrota cujo custo de

skij = dik + dkj dij


As guras a seguir ilustram a insero da cidade

entre as cidades

(a) Antes da insero

j.

(b) Depois da insero

Observa-se que a subrota inicial pode ser formada por um procedimento construtivo qualquer.
Por exemplo, parta da cidade origem e adicione subrota a cidade mais prxima. A seguir,
considerando as duas extremidades (cidade origem e ltima cidade inserida), adicione a cidade
ainda no visitada cuja soma das distncias s duas extremidades seja a menor.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, constri-se uma
soluo com os seguintes passos:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A cidade
6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 2 a aquela cuja distncia
s cidades extremas 1 e 3 a menor, no caso,

d21 + d32 = 2 + 5 = 7.

Ento, a cidade

2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a subrota corrente :

(1 3 2),

com a cidade 2 ligada cidade 1.

s=

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

da subrota. A tabela a seguir mostra os custos de insero.

skij = dik + dkj dij


s413 = 4 + 3 - 1 = 6
s513 = 9 + 8 - 1 = 16
s613 = 1 + 6 - 1 = 6
s432 = 3 + 9 - 5 = 7
s532 = 8 + 7 - 5 = 10
s632 = 6 + 2 - 5 = 3
s421 = 9 + 4 - 2 = 11
s521 = 7 + 9 - 2 = 14
s621 = 2 + 1 - 2 = 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


d(s) = d(s)anterior + s621 = 8 + 1 =

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

da subrota corrente. A tabela a seguir mostra os custos de insero.

Como o menor custo de insero

s413 ,

skij = dik + dkj dij


s413 = 4 + 3 - 1 = 6
s513 = 9 + 8 - 1 = 16
s432 = 3 + 9 - 5 = 7
s532 = 8 + 7 - 5 = 7
s426 = 9 + 5 - 2 = 12
s526 = 7 + 2 - 2 = 7
s461 = 5 + 4 - 1 = 8
s561 = 2 + 9 - 1 = 10
ento a cidade 4 deve ser inserida entre as cidades

s = (1 4 3 2 6).
d(s) = d(s)anterior + s413 = 9 + 6 = 15.

1 e 3. Logo, a subrota corrente passa a ser:


associada a essa subrota :

A distncia

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.

skij = dik + dkj dij


s514 = 9 + 2 - 4 = 7
s543 = 2 + 8 - 3 = 7
s532 = 8 + 7 - 5 = 10
s526 = 7 + 2 - 2 = 7
s561 = 2 + 9 - 1 = 10

s514 , ento a cidade 5 deve ser inserida entre as cidades


1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A distncia associada a
5
essa rota : d(s) = d(s)anterior + s14 = 15 + 7 = 22.

Como o menor custo de insero

5.3.2 Heursticas de Renamento


Uma heurstica de renamento consiste em promover modicaes em uma soluo de forma
a tentar melhor-la. Elas so baseadas na noo de vizinhana. Mais especicamente, seja
o espao de busca de um problema de otimizao e

a funo objetivo a otimizar (minimizar

N , a qual depende do problema considerado, associa a cada soluo


s S sua vizinhana N (S) S . Cada soluo s0 N (s) chamada de vizinho de s.
0
Denomina-se movimento a modicao m que transforma uma soluo s em outra, s , que
0
esteja em sua vizinhana. Representa-se essa operao por s s m.
ou maximizar). A funo

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 .

m ser a realocao de uma cidade em outra


0
0
s1 = (3 4 1 2)t , s2 = (3 1 4 2)t , s3 = (4 1 3 2)t ,

No caso de o movimento

posio na sequncia, os vizinhos de s sero:


0
0
s4 = (4 1 2 3)t , s5 = (4 3 2 1)t . H outros movimentos mais elaborados, tal como o movimento
Or, que consiste em realocar um bloco contguo de cidades em outra posio da sequncia.
No exemplo considerado, considerando blocos de tamanho 2, teramos os seguintes vizinhos:
0
0
0
s1 = (1 4 3 2)t , s2 = (4 2 3 1)t , s3 = (4 1 2 3)t . Neste exemplo, o primeiro vizinho gerado
pela insero do bloco (4 3) entre as cidades 1 e 2; o segundo vizinho, pela insero do bloco

(3 1) entre as cidades 2 e 4 e,
as cidades 4 e 3.

nalmente, o terceiro vizinho, pela insero do bloco

(1 2) entre

Descent Method ) - no caso


de o problema ser de minimizao - ou Mtodo da Subida (Hill climbing Method )- no caso de
Uma heurstica clssica de renamento o Mtodo da Descida (

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-

Uma variante do mtodo da Descida/Subida o Mtodo de Primeira Melhora (

ment Method ).

Nesse mtodo, interrompe-se a explorao da vizinhana quando um vizinho

melhor encontrado. Desta forma, apenas no pior caso, toda a vizinhana explorada. 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

Random Descent/Uphill Method ).

Randmica (

Ele consiste em analisar um vizinho qualquer e

o aceitar somente se ele for estritamente melhor que a soluo corrente; no o sendo, a soluo
corrente permanece inalterada e outro vizinho gerado. O procedimento interrompido aps
um nmero xo de iteraes sem melhora no valor da melhor soluo obtida at ento. Como
nesse mtodo no feita a explorao de toda a vizinhana da soluo corrente, no h
garantia de que a soluo nal seja um timo local com relao vizinhana adotada.
Na Figura 6 mostra-se o pseudocdigo do Mtodo Randmico de Descida aplicado ao renamento de uma soluo

em um problema de minimizao de uma funo

uma estrutura de vizinhana

N (.).

Nesta gura,

IterMax

procedimento DescidaRandomica(f (.), N (.), IterMax, s);


Iter 0;

enquanto

3
4
5
6
7

{Contador de iteraes sem melhora }

(Iter < IterMax)


Iter Iter + 1;

faa

Selecione aleatoriamente
0
se (f (s ) < f (s)) ento

s0 N (s);

Iter 0;
s s0 ;

m-se;

m-enquanto;

10 Retorne

utilizando

representa o nmero mximo de

iteraes sem melhora no valor da funo de avaliao.

f (.),

s;

m DescidaRandomica;
Figura 6: Mtodo de Descida Randmica

82

5.4 Variantes do PCV


5.4.1 Problema dos m-Caixeiros Viajantes
Nesta variante do PCV h

Caixeiros e se deseja minimizar a distncia total percorrida por

todos eles. Considere os seguintes parmetros de entrada:

Cidades
dij
n
m

Conjunto das cidades

Distncia da cidade

Cardinalidade do conjunto de cidades, isto ,

Nmero de Caixeiros Viajantes

cidade

j
n = |Cidades|

(a) Variveis de deciso:

xij

varivel binria que assume valor 1 se o arco

fij

quantidade de uxo enviada da cidade

(i, j)

for utilizado e 0, caso contrrio

para a cidade

(b) Funo objetivo:

min

dij xij

iCidades jCidades
(c) Restries:

k , exceto a origem (cidade


xik = 1 k Cidades | k 6= 1

c.1) cada cidade

de ndice 1), s chega um arco:

iCidades

k , exceto a origem (cidade


xkj = 1 k Cidades | k 6= 1

c.2) De cada cidade

de ndice 1), s sai um arco:

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

c.6) O uxo mximo que passa em um arco usado no percurso inferior a

n m,

onde

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 Problema do Caixeiro Viajante com Coleta Seletiva de Prmios


O Problema do Caixeiro Viajante com Coleta de Prmios (PCVCP), referido na literatura inglesa
como

Prize Collecting Traveling Salesman Problem

(PCTSP), uma variante do Problema do

83

Caixeiro Viajante. O PCVCP pode ser associado a um caixeiro viajante que coleta um prmio

pk ,

no negativo, em cada cidade

que no visita, com um custo

cij

que ele visita e paga uma penalidade

de deslocamento entre as cidades

j.

para cada cidade

O problema encontra-se

em minimizar o somatrio dos custos da viagem e penalidades, enquanto inclui na sua rota um
nmero suciente de cidades que o permita coletar um prmio mnimo,

pmin ,

pr-estabelecido.

O PCVCP foi formulado inicialmente por Egon Balas [2] como um modelo para a programao
da operao diria de uma fbrica que produzia lminas de ao.

Por razes que tinham a ver

com o desgaste dos rolos e tambm por outros fatores, a sequncia na ordem do processamento
era essencial. A programao consistia na escolha de um nmero de lminas associadas s suas
ordens de execuo, que satiszessem o limite inferior do peso, e que ordenadas numa sequncia
apropriada, minimizasse a funo de sequncia. As tarefas de escolha das lminas e das opes
disponveis para o seu sequenciamento necessitavam ser resolvidas em conjunto.
Para a modelagem de programao matemtica do PCVCP, sejam os seguintes parmetros de
entrada:

Cidades
cij
n
pk
k

Conjunto das cidades

Custo de deslocamento da cidade

cidade

Cardinalidade do conjunto de cidades, isto ,

Prmio coletado por visitar a cidade

Penalidade paga por no visitar a cidade

n = |Cidades|

k
k

(a) Variveis de deciso:

xij

varivel binria que assume valor 1 se o arco

fij

a quantidade de uxo enviada da cidade

zk

(i, j)

for utilizado e 0, caso contrrio

para a cidade

varivel binria que assume valor 1 se a cidade

for visitada e 0, caso contrrio

(b) Funo objetivo:

min

cij xij +

iCidades jCidades

k (1 zk )

kCidades

(c) Restries:

k visitada s chega
xik = zk k Cidades

c.1) cada cidade

um arco:

iCidades
c.2) De cada cidade

visitada s sai um arco:

xkj = zk k Cidades

jCidades
c.3) O prmio mnimo

pmin

deve ser coletado:

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

c.5) O uxo mximo que passa em um arco usado no percurso inferior a


nmero de cidades:

fij (n 1)xij i Cidades, j Cidades

n 1,

sendo

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

Problema de Roteamento de Veculos

6.1 Denio
{1, 2, , n} e uma frota ilimitada
par (i, j) dado o custo de ligao cij .

Seja um conjunto de consumidores

de veculos sediada em

um nico depsito 0. Para cada

No problema bsico de

roteamento de veculos, a frota homognea, isto , os veculos tm a mesma capacidade (cap).


O PRV consiste em encontrar as rotas de custo mnimo para os veculos satisfazendo as seguintes
condies:
i) Toda rota comea e termina no depsito
ii) A demanda

qk

de todos os consumidores deve ser atendida

iii) Em toda rota, a demanda

qk

atendida no pode ultrapassar a capacidade

cap

do veculo

6.2 Modelagem de Programao Matemtica


Considere os seguintes parmetros de entrada:

V
cij
qk
cap

Conjunto dos consumidores e o depsito, isto ,

Custo de ligao entre os elementos

Demanda do consumidor

Capacidade de cada veculo

k.

de

V = {0, 1, 2, , n}

No caso do depsito, tem-se

q0 = 0

(a) Variveis de deciso:

xij

varivel binria que assume valor 1 se o arco

fij

a quantidade de uxo enviada do n

(i, j)

para o n

for utilizado e 0, caso contrrio

(b) Funo objetivo:

min

P P

cij xij

iV jV
(c) Restries:

k , exceto aquele
xik = 1 k V, k 6= 0

c.1) cada n

referente ao depsito 0, s chega um arco:

iV

k , exceto aquele
= 1 k V, k 6= 0

c.2) De cada n

xkj

referente ao depsito 0, s sai um arco:

jV

P 0, o
xi0

c.3) No depsito

P
jV

x0j =

iV

nmero de arcos que saem igual ao nmero de arcos que chegam:

85

c.4) Exceto para o n referente ao depsito, o uxo que chega ao n

k -simo
fkj = qk k V | k =
6 0

igual demanda associada ao

fik

iV

menos o que sai de

n:

jV

c.5) O uxo mximo que passa em um arco usado no percurso inferior a

cap:

fij (cap)xij i V, j V
c.6) Integralidade e no-negatividade:

xij {0, 1} i V, j V
fij 0 i V, j V
Uma formulao de eliminao de subciclos que requer menor quantidade de variveis apresentada a seguir. Estas restries substituem as de uxo apresentadas anteriormente (restries
c.4 e c.5):

uk ui + qk cap + cap (xki + xik ) (qk + qi ) xki k V, k 6= 0, i V, i 6= 0, i 6= k


qk uk cap k V, k 6= 0
uk cap (cap
P qk ) x0k k V, k 6= 0
uk qk +
(qi xik ) k V, k 6= 0
iV | i6=0
Observamos que 0, nessas expresses, representa o depsito. Assim, no LINGO, devemos 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 uxo para eliminar subciclos. J no segundo modelo, pressupe-se
que o depsito a primeira cidade do conjunto

V;

assim, tem ndice 1.

model:
sets:
cidades / @ole('prv.xls','cidades')/: q;
matriz(cidades, cidades): c, ! Matriz de custos;
x, ! x(i, j) = 1 se o arco (i,j) fizer parte da soluo;
f; ! Fluxo de i para j;
endsets
data:
q, cap = @ole('prv.xls','demanda','capVeic');
enddata
[fo]

min = @sum(matriz(i,j): c(i,j)*x(i,j));

! De cada cidade k, exceto o depsito, s sai um nico veculo;


@for(cidades(k) | k #NE# @index(0): @sum(cidades(j): x(k,j)) = 1);
! A cada cidade k, exceto o depsito, s chega um nico veculo;
@for(cidades(k) | k #NE# @index(0): @sum(cidades(i): x(i,k)) = 1);
! O nmero de veculos que saem do depsito deve ser igual
ao nmero de veculos que chegam ao depsito;

86

@sum(cidades(j): x(@index(0), j)) = @sum(cidades(i): x(i, @index(0)));


! Ao passar por uma cidade k, exceto o depsito (0), o veculo deve atender a
demanda dessa cidade, i., deve deixar q(k) unidades de produto na cidade k;
@for(cidades(k) | k #ne# @index(0):
@sum(cidades(i): f(i,k)) - @sum(cidades(j): f(k,j) ) = q(k) );
! O fluxo mximo em cada aresta no pode superar a capacidade do veculo;
@for(matriz(i,j): f(i,j) <= (cap)*x(i,j));
! As variveis x so binrias;
@for(matriz(i,j): @bin(x(i,j)));
! Exporta a soluo para o arquivo prv.xls;
data:
@ole('prv.xls','x','fo') = x, fo;
enddata
end
O segundo modelo requer um menor nmero de variveis e utiliza variveis reais

u0

para

eliminar subciclos. Como dito anteriormente, considera-se que o depsito o primeiro elemento
do conjunto

V.

Alm disso, as distncias entre os elementos de

coordenadas. Nesse modelo, a entrada de dados via arquivo txt.

! Cidades;
Dep A B C D E F G H I J K ~
! Coordenadas x;
30 37 49 52 20 40 21 17 31 52 51 42

! Coordenadas y;
40 52 49 64 26 30 47 63 62 33 21 41

! Demanda dos clientes;


0 14 26 18 26 32 17 27 8 16 15 28

! Capacidade dos veculos;


50
model:
title: Problema de Roteamento de Veculos;
sets:
V / @file('PRV.txt') /: u, q, coord_x, coord_y;
Matriz(V, V): d, x;
endsets
! Leitura dos dados;
data:
coord_x = @file('PRV.txt');

so calculadas a partir de suas

87

coord_y = @file('PRV.txt');
q = @file('PRV.txt');
cap = @file('PRV.txt');
enddata
! Clculo das distncias entre os elementos de V;
@for(V(i):
x(i,i) = 0;
@for(V(j):
d(i,j) = ( (coord_x(j) - coord_x(i))^2 +
(coord_y(j) - coord_y(i))^2 )^(0.5)));
[fo] min = @sum(V(i): @sum(V(j): d(i,j) * x(i,j)));
! A cada cidade k, exceto o depsito, s chega um arco;
@for(V(k) | k #ne# 1:
@sum(V(i): x(i,k)) = 1);
! De cada cidade k, exceto o depsito, s sai um arco;
@for(V(k) | k #ne# 1:
@sum(V(j): x(k,j)) = 1);
! O nmero de veculos que saem do depsito deve ser igual
ao nmero de veculos que chegam ao depsito;
@sum(cidades(j): x(1, j)) = @sum(cidades(i): x(i, 1));
! Restries de eliminao de subciclos;
@for(V(k):
@for(V(i) | i #ne# k #and# i #ne# 1:
u(k) >= u(i) + q(k) - cap + cap*(x(k,i) + x(i,k)) - (q(k) + q(i))*x(k,i)));
@for(V(k) | k #NE# 1:
@bnd(q(k), u(k), cap));
@for(V(k) | k #NE# 1:
u(k) <= cap - (cap - q(k))*x(1,k));
@for(V(k) | k #NE# 1:
u(k) >= q(k) + @sum(V(i) | i #ne# 1: q(i)*x(i,k)));
! As variveis de deciso x so binrias;
@for(V(i):
@for(V(j): @bin(x(i,j))));
end

88

6.3 Gerao de colunas para o PRV


Seja

Colunas = {1, 2, , n} um conjunto de colunas (rotas) para o PRV e Linhas = {1, 2, , m}


cj o custo da coluna j .

um conjunto de clientes a serem visitados (linhas). Seja

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

Conjunto das colunas (rotas)

Conjunto das linhas (clientes a serem visitados)

Custo da coluna

Parmetro que assume o valor 1 se o cliente

j
i

for atendido pela rota

e 0, c.c.

(a) Variveis de deciso:

xj

varivel binria que assume valor 1 se a coluna

for utilizada e 0, caso contrrio

(b) Funo objetivo:

min

cj x j

jColunas
(c) Restries:

i coberta por uma


aij xj = 1 i Linhas

c.1) Cada linha

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

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

for utilizada e 0, caso contrrio

(b) Funo objetivo:

min

cj x j

jColunas
(c) Restries:

i coberta por pelo


aij xj 1 i Linhas

c.1) Cada linha

menos uma coluna

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.

6.4 Modelos Heursticos para o PRV


6.4.1 Heursticas Construtivas
(a)

Adaptao da Heurstica do Vizinho Mais Prximo ao PRV


Nesta heurstica, a ideia comear com um veculo no depsito e ir para o cliente mais prximo
que ainda possa ser visitado sem desrespeitar as restries do problema. Caso o veculo no
possa atender mais clientes, deve-se retornar ao depsito e recomear o procedimento com
outro veculo. O procedimento pra quando todos os clientes forem atendidos.
Exemplo: Considere a matriz de custos a seguir, onde o depsito referenciado pelo nmero
0, e as demandas de cada uma das 5 cidades. Sabendo que os veculos tm 20 unidades de
capacidade, determine as rotas de custo mnimo para os veculos.
Cliente

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.

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.

Ao nal desses 8 passos, teremos produzido as seguintes rotas:


(1)
= (0 1 4 2). Nesta rota, a distncia percorrida pelo primeiro veculo
Rota 1: s
(1)
dist(s ) = d01 + d14 + d42 + d20 = 6 + 1 + 3 + 7 = 17. A carga til do veculo 1 de 18
unidades, ou 90% de sua capacidade.
(2)
Rota 2: s
= (0 3 5). Nesta rota, a distncia percorrida pelo segundo veculo

d03 + d35 + d50 = 8 + 1 + 10 = 19.

A carga til do veculo 2 de 13 unidades, ou

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 =

Heurstica de Clarke e Wright


Este mtodo comea com um veculo atendendo um cliente e retornando ao depsito. A gura
a seguir ilustra essa situao, onde se mostram duas rotas, uma atendendo a cidade
cidade

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

entre todos os pares

(i, j)

de cidades onde

uma cidade da extremidade de uma rota e

uma extremidade de uma outra rota, conforme equao a seguir.

sij = di0 + d0j dij


A gura seguinte ilustra a juno das duas rotas, uma envolvendo a cidade
cidade

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:

Inicialmente, alocamos um veculo para atender cada um dos clientes.

A distncia total

percorrida :

dist = d01 +d10 +d02 +d20 +d03 +d30 +d04 +d40 +d05 +d50 = 6+6+7+7+8+8+9+9+10+10 = 80.
Nmero de veculos = 5.

92

Como

di0

d0j

dij

10

10

10

10

sij = di0 + d0j dij


s12 = 6 + 7 - 3 = 10
s13 = 6 + 8 - 2 = 12
s14 = 6 + 9 - 1 = 14
s15 = 6 + 10 - 4 = 12
s23 = 7 + 8 - 5 = 10
s24 = 7 + 9 - 3 = 13
s25 = 7 + 10 - 4 = 13
s34 = 8 + 9 - 8 = 9
s35 = 8 + 10 - 1 = 17
s45 = 9 + 10 - 5 = 14

Demanda acumulada
14
11
9
12
15
13
16
10

13
11

Maior economia

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.

Como

di0

d0j

dij

10

10

10

sij = di0 + d0j dij


s12 = 6 + 7 - 3 = 10
s13 = 6 + 8 - 2 = 12
s14 = 6 + 9 - 1 = 14
s15 = 6 + 10 - 4 = 12
s23 = 7 + 8 - 5 = 10
s24 = 7 + 9 - 3 = 13
s25 = 7 + 10 - 4 = 13
s34 = 8 + 9 - 8 = 9
s45 = 9 + 10 - 5 = 14

Demanda acumulada
14
18
9
18
22
13
22
17
17

Maior economia

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.

di0

d0j

dij

10

10

10

sij = di0 + d0j dij


s12 = 6 + 7 - 3 = 10
s13 = 6 + 8 - 2 = 12
s15 = 6 + 10 - 4 = 12
s23 = 7 + 8 - 5 = 10
s24 = 7 + 9 - 3 = 13
s25 = 7 + 10 - 4 = 13
s34 = 8 + 9 - 8 = 9
s45 = 9 + 10 - 5 = 14

Demanda acumulada
18
22
22
22
18
22
22
22

93

Como

Maior economia

s24 = max{sij } (i, j)

e a soma das demandas das rotas envolvendo os clientes 2 e 4

no supera a capacidade de um veculo (que de 20 unidades), devemos combinar as rotas


envolvendo os clientes 2 e 4. A distncia total percorrida :

dist = dist s24 = 49 13 = 36.


Nmero de veculos: 2

4a

Iterao:

Atualizemos o quadro anterior com relao s demandas acumuladas, eliminando as combinaes j efetuadas, bem como aquelas que no tm as cidades

nas extremidades das rotas

(no caso, as combinaes envolvendo as cidades 1 e 2, 2 e 4, 3 e 4, e 4 e 5).

di0

d0j

dij

10

10

sij = di0 + d0j dij


s13 = 6 + 8 - 2 = 12
s15 = 6 + 10 - 4 = 12
s23 = 7 + 8 - 5 = 10
s25 = 7 + 10 - 4 = 13

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.

6.4.2 Heursticas de renamento


As heursticas de renamento clssicas do PRV so baseadas em movimentos envolvendo troca

exchange

ou

swap ) e realocao (insertion

ou

shift ) de clientes em uma mesma rota ou em rotas

distintas.
Comentemos o funcionamento dessas heursticas.

Dada uma soluo inicial

s,

obtida por

uma heurstica construtiva, so analisados todos os vizinhos possveis usando-se o movimento de


realocao (ou troca), inicialmente com realocaes (trocas) intra-rotas e depois com realocaes
0
0
(trocas) inter-rotas. Se o melhor vizinho s for melhor que a soluo corrente s ento s passa a
0
ser a nova soluo corrente, isto , s s e o procedimento continua a partir de s ; caso contrrio,
o procedimento retorna

como soluo tima local.

Enumerao Implcita em Programao Inteira 0-1

[Baseado no livro [5], dos professores Nelson Maculan Filho e Mrcia Costa Fampa da UFRJ]
Seja:
(P):

min

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

Sem perda de generalidade, podemos sempre supor


existir

tal que

ck < 0,

basta criar uma varivel

mudana de varivel, a nova funo objetivo passa

j=1
j6=k
minimizar

z ck =

n
P

cj x j ck y k .

Logo, a seguinte hiptese assumida ao longo desta seo:

j=1
j6=k

Hiptese: cj 0 j = 1, 2, , n
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

O problema (P) poder ser escrito tambm da seguinte maneira:


(P):

min

cx
Ax b
x {0, 1}n

(4)
(5)
(6)

xp = (xp1 xp2 xpn )t ,

Uma soluo de (3) ou (6) ser representada por

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:

3x1 + 7x2 + 2x3 + x4 5 implica que x2 = 0.


2x1 + 8x2 + x3 + x4 9 implica que x2 = 1.
No caso em que estas duas restries faam parte de (2), podemos assegurar que o conjunto
de solues viveis vazio.

Propriedade 1

Se

xp

uma soluo de (3) ento

P
jJp

descendentes de

cj x j

cj x j

para todas as solues

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 .

satisfaz (2), ento

x0

uma soluo tima de (P).

Demonstrao:
Como, por hiptese,

cj 0

xj {0, 1}

ento

z=

n
P

cj xj 0.

Logo, o valor mnimo de

z0

j=1

z = 0,

ou seja, o ponto timo (ponto de mnimo) ocorre para

x = 0.

0
Ser apresentado, a seguir, um esquema de enumerao que supe que a soluo inicial x tal
0
t
que J0 = {}, isto , x = (0 0 0) no satisfaz o conjunto de restries (2). Se esse conjunto
0
de restries fosse satisfeito, ento x seria timo do problema (P) pela Propriedade 2.

Esquema de Enumerao:

xp

Suponhamos que estejamos na soluo


encontrada at o momento, isto , existe

soluo vivel de (P)


P z seja a melhor
cj xj e que xq seja vivel de (P). Caso

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 ,

isto quer dizer que todas as solues descendentes de

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.

Nesse caso, tambm

que:

mnimo{0, aij }

<0

j6Jp

jJp

ento nunca haver um descendente de


p
enumerar os descendentes de x .
Denimos (i), (ii) e (iii) como
Quando tivermos parado em

xp

vivel. Assim, tambm no haver interesse em

condies de parada na soluo xp .

enumerado implicita-

por uma das trs condies, teremos


p
todas as solues descendentes de x .
p
Caso em x no tenhamos nenhuma condio de parada satisfeita, teremos que procurar uma
p
q
soluo descendente de x , por exemplo, x , tal que Jq = Jp {l}, onde evidentemente l 6 Jp .
n
P
Consideremos si = bi
aij xj e si 0 i = 1, 2, , m, isto , a varivel si ser de folga da
j=1
restrio i.
P
p
Seja si = bi
aij xj , isto , spi representa o valor de si quando x = xp .
jJp
p
Em x podemos denir os seguintes conjuntos:

mente

1.

Ap = {k |

cj xj + ck z, k 6 Jp }

jJp
2.

Dp = {k | i com spi < 0,

3.

Cp = {1, 2, , n} (Jp Ap Dp )

tem-se

Dito de outra forma, o conjunto

Dp

aik 0, k 6 Jp }

pode ser determinado vericando-se quais so as colunas

dentre aquelas no pertencentes soluo parcial

Jp ,

para as quais tm-se coecientes

ou iguais a zero em toda a coluna. Para formar o conjunto

no pertencentes soluo

Jp

Ap

aik

k,

maiores

necessrio que todas as colunas

resultem em piora (ou manuteno) do valor da melhor soluo

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

encontrada at o momento, no caso,


O conjunto

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

devido a insero da varivel

xj

(com valor igual a 1) na soluo

96

corrente, uma vez que somente os valores negativos de

spi aij xj

interessam.

O somatrio das

inviabilidades de todas as restries devido a insero da varivel que est na coluna

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

escolhido para a soluo descendente ser aquele associado a

cl = min{cj }.
jLp

Obviamente, no caso em que nenhuma condio de parada seja vericada, tem-se Cp 6= {}.
q
p
Suponhamos, agora, que em x descendente direto de x , isto , o ltimo a ser desenvolvido a
p
partir de x , o conjunto Cq seja vazio, ou ainda uma das trs condies de parada seja satisfeita.
q
p
Teremos, ento, de x voltar a x e atualizar Cp de duas maneiras:
(i)
(ii)

Cp = Cp {l},
Ap

tal que

poder ser modicado caso

O retorno de

C0 = {}.

onde

xq

xp

Jq = Jp {l}.

z tambm

denominado

o seja, acarretando outra modicao em

backtracking.

Cp .

A enumerao pra completamente quando

z sempre atualizado ao se encontrar uma soluo vivel melhor


problema (P) seja vazio, z
= no nal da enumerao.

Deve ser observado que

que as anteriores. Caso o

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

componente tal que:

xp(j) = 1
xp(j) = 0

= [3, 2, 7, 4] representa x3 = 0, x2 = 1, x7 = 0, x4 = 0 com valores xos


xq dessa soluo no podero ter os ndices 3, 7 e 4 pertencendo a Jq .

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

pelo critrio aconselhado, ajunte pilha o elemento

e v para a fase 1;

Fase 4
Pare, soluo tima associada a
Se

z = +,

z;

ento o problema (P) no admite soluo vivel;

Exemplo:
Resolva o modelo de programao linear em variveis 0-1 a seguir pelo Mtodo de Enumerao
Implcita de Balas.

min z

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:

x0 = (0 0 0 0 0)t , J0 = {}, s01 = 2, s02 = 0, s03 = 1. = . Tem-se:


0
0
0
1) x invivel pois si < 0, no caso, tem-se s1 = 2 < 0 e s3 = 1 < 0
2) z
= , pois no se conhece uma soluo vivel
3) As duas primeiras condies de parada, (i) e (ii), no so vericadas. Vejamos a terceira:

0
0 + 0 + 6 + 0 + 0 + 2 = 8 0
-1 + 0 + 0 + 2 + 0 + 0 = 1 0
-2 + 1 + 0 + 5 + 1 + 0 = 5

que tambm no vericada. Assim, necessitamos encontrar uma soluo descendente de

x0 .

Para isso, deniremos os seguintes conjuntos:

A0 = {}, pois z =
D0 = {2, 5}. Logo, C0 = {1, 2, 3, 4, 5} (A0 D0 J0 ) = {1, 3, 4},

isto , as variveis

so as candidatas a tomarem o valor 1 (apenas uma entre elas o tomar).


0
Calculemos dj j C0 :
d01 = 1 2 1 = 4; d03 = 0 3 + 0 = 3; d04 = 1 2 2 = 5 e
indicando que l = 3 e a varivel x3 deve assumir o valor 1.

x1 , x3

x4

d03 = max{d01 , d03 , d04 },

Iterao 1:

J1 = J0 {3} = {3}, s11 = 3, s12 = 3, s13 = 1, e x1 = (0 0 1 0 0)t


si < 0, no caso, s12 = 3 < 0. = [3]. Como z = e:
3 + 1 + 0 + 1 + 0 = 5 0
-3 + 0 + 6 + 0 + 2 = 5 0
1 + 0 + 0 + 0 + 0 = 1 0

no vivel de (P), pois

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

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.

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.

As duas ltimas condies de parada sero aplicadas

no considerando a coluna de dados relativa ao ndice 2, pois

x2 = 0

xo. A segunda condio

de parada no vericada; no entanto, a terceira atendida:


3 + 1 + 1 + 0 = 5

0
<0
0

-3 + 0 + 0 + 2 = -1
1 + 0 + 0 + 0 = 1

Devemos, portanto, fazer novo

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

As duas primeiras condies de parada no so satisfeitas. Testemos a terceira:

0
0

-2 + 1 + 0 + 1 + 0 = 0
0 + 0 + 6 + 0 + 2 = 8

-1 + 0 + 0 + 0 + 0 = -1 < 0

Como a terceira condio de parada vericada, ento devemos fazer novo

backtracking.

backtracking )
backtracking, = . Logo, a soluo tima x? = (0 1 1 0 0)t , com valor z = 17.

Iterao Final: (
Com o

Exerccios propostos

(1) Suponha a existncia de cinco diferentes projetos a serem executados e seja


de deciso tal que

xj = 1 se

o projeto

aplicao, qual o signicado das seguintes restries?

(a)

x1 + x2 + x3 + x4 + x5 2

(b)

x1 + x 2 + x3 + x4 + x5 2

(c)

x3 x1

(d)

x2 + x 3 + x4 x1

(e)

x2 + x3 + x4 x1

xj

a varivel binria

for selecionado e 0, caso contrrio. Considerando essa

99

(2) No problema das

p-medianas

aparecem as duas restries abaixo:

X
iFacilidades

xij = 1 j Clientes

xij yi i Facilidades, j Clientes


em que

Facilidades

junto de clientes;

yi

o conjunto de locais candidatos a sedir uma facilidade;

for instalada uma facilidade e 0, caso contrrio; e


1 se o cliente

Clientes

o con-

uma varivel de deciso binria que assume valor unitrio se no local

xij

uma varivel de deciso binria que vale

for atendido pela facilidade instalada no local

e 0, caso contrrio. Qual o

signicado de cada uma dessas restries?


(3) Um editor de uma revista cientca precisa designar um conjunto de artigos cientcos para
serem revisados em uma mesma poca por um conjunto de revisores. Os artigos podem ser
atribudos aos revisores conforme a tabela abaixo, onde uma clula assume valor unitrio
se o revisor considerado um especialista no tema tratado no artigo. Cada artigo deve ser
analisado por, pelo menos, dois revisores. Um revisor, por sua vez, pode analisar um mximo
de 3 artigos. Faa um modelo de programao matemtica para designar os artigos cientcos
aos revisores, de forma que o nmero de revisores necessrios seja mnimo.
Artigo
Revisor

(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

de salas, como o exemplicado nas tabelas a seguir,

que se referem necessidade de salas para as turmas em um dado mdulo. O problema de


designao consiste, ento, em alocar as turmas s salas, satisfazendo s restries de que
cada turma deve ser alocada a uma nica sala e que em cada sala deve haver apenas uma
nica turma. Fazer um modelo de programao matemtica para alocar as turmas s salas
em um dado horrio. Considere como funo objetivo minimizar a folga na sala, sendo esta
dada pela funo custo
sala

cij

para alocar a turma

dada pela tabela abaixo. Nesta funo, quando no h folga na

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

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.

Largura dos rolos

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

O objetivo da empresa reduzir os custos com a contratao de funcionrios. Elabore um


modelo de programao matemtica que minimize os custos com a contratao de funcionrios.
Implemente este modelo em um otimizador e determine quantos funcionrios contratar em
cada dia da semana, bem como o custo total da contratao semanal.
(9) No problema de

p-centros,

o objetivo localizar

facilidades e designar clientes a facilidades

de modo a minimizar a distncia mxima de clientes a facilidades. Este problema pode ser
formulado como:

102

minimize

(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)

Clientes representa o conjunto de vrtices representando a localizao dos clientes,


Facilidades representa o conjunto de vrtices representando os locais candidatos instalao
em que

de uma facilidade,

dij

a distncia da facilidade instalada no local

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

considerando que todos os locais so candidatos instalao de uma facilidade.


Local

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.

(10) dado um objeto retangular de largura

e comprimento sucientemente grande. A partir

desse objeto, deseja-se gerar uma unidade de vrios itens retangulares de dimenses
onde

hi

o comprimento e

wi L,

a largura.

(hi , wi ),

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


P

min

guilhotinado pode ser modelado por:

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

esteja alocado faixa

yi

uma varivel binria que vale 1 se o item

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

L = 20 e comprimento sucientemente grande,

e os itens da tabela a seguir, determinar o comprimento mnimo da soma das faixas, quais
itens inicializam cada faixa, bem como os itens alocados a cada faixa.

Item

hi
largura wi

15

14

13

11

10

11

10

altura

(11) H um conjunto

de agentes, cada qual com capacidade

tarefas. Cada tarefa

aij

jJ

bi

para processar um conjunto

s pode ser processada por um nico agente

unidades de recurso. Sabe-se que o custo de alocar o agente

i,

tarefa

de

demandando dele

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
um agente

executar uma tarefa

j,

bem como a capacidade

aij

bi

de recursos requeridos para

de cada agente.

Tabela 1: Quantidade de recursos demandados pelas tarefas e Capacidade dos agentes


Tarefas
Agente

Capacidade

13

17

16

13

15

15

12

11

18

19

30

11

16

14

13

12

25

A Tabela 2 mostra o custo

cij

de alocao de um agente

a uma tarefa

j.

Tabela 2: Custo de alocao de agentes a tarefas


Tarefas
Agente

(12) Uma serralheria dispe de barras de 10 m de comprimento que devem ser convenientemente
cortadas em barras menores, nos seguintes tamanhos e quantidades: (a) 30 barras de 3 m; (b)
35 barras de 4 m; (c) 58 barras de 5 m; (d) 51 barras de 6 m; (e) 73 barras de 7 m. Pede-se o
esquema de corte que minimiza a perda total, bem como o excesso de barras menores cortadas.

104

(13) Um analista de sistemas deseja acessar cinco diferentes arquivos espalhados em dez diferentes
discos, como mostrado na Tabela 3. Nesta tabela, cada clula (i, j ) com valor 1 indica que o
arquivo

i encontra-se no disco j .

Por exemplo: no disco 2 podem ser encontrados os arquivos 1,

3 e 5. A capacidade de armazenamento de cada um dos discos, em GB, tambm apresentada


na tabela. Deseja-se determinar o conjunto de discos que contenham todos os arquivos, sem
repetio, de sorte que a capacidade total seja a menor possvel.

Tabela 3: Arquivos por disco e capacidade dos discos


Disco
Arquivo

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 (

de entrega, ou seja, processando as tarefas na sequncia


a

i-sima

tarefa e

d[i]

d[1] d[2] d[n], onde [i] indica

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
intervalos ao longo do dia, que cada intervalo

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:

5x1 + 3x2 + x3 + 2x4


x1 + 8x2 + 4x3 + 2x4 6
x1 + 3x2 + x3 + 7x4 8
xj {0, 1} j = 1, 2, . . . , 4

(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:

4x1 + 3x2 + x3 + 2x4


x1 + 3x2 + 5x3 + 2x4
2x1 + 5x2 + x3 + 3x4
x1 + 2x2 + 3x3 + x4
xj

(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:

(19) Resolva pelo mtodo

4x1 x2 x4
2x1 x3 + x2 + 3x4 4
xj {0, 1} j = 1, 2, 3, 4

branch-and-bound,

com as regras (a)

(d), o PLI a seguir.

(8.99)
(8.100)
(8.101)

Faa a

rvore de busca e enumere a sequncia de busca.

max
sujeito a:

4x1 + 5x2 + 4x3


x1 + x2
x2 + 2x3
2x1 + 2x2 + 4x3
xj

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.

Pesquisa Operacional para cursos

Editora Campus, Rio de Janeiro, 2007.

[2] E. Balas. The prize collecting traveling salesman problem.

Networks, 19:621636, 1989.

Otimizao Combinatria e Programao

[3] Marco Cesar Goldbarg and Henrique Pacca L. Luna.


a
. Editora Campus, 2 edio, Rio de Janeiro, 2005.

Linear: modelos e algoritmos

[4] G. Lachtermacher.

Pesquisa Operacional na tomada de decises.

Editora Campus, 2

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.

xity.

[7] M.

Combinatorial Optimization: Algorithms and Comple-

Dover Publications, Inc., New York, 1998.


J.

F.

Souza.

taheursticas.

Programao de Horrios em Escolas: uma aproximao por me-

Tese de doutorado, Programa de Engenharia de Sistemas e Computao,

COPPE, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2000.

Disponvel em

www.decom.ufop.br/prof/marcone/Publicacoes/tesemarcone.ps.
[8] Hamdy A. Taha.

Pesquisa Operacional.

Editora Pearson, 8

edio, So Paulo, 2008.

Вам также может понравиться