You are on page 1of 98

Notas em Matematica Aplicada

e-ISSN 2236-5915

Volume 18, 2012

Editado por
Eliana X.L. de Andrade
Universidade Estadual Paulista - UNESP
So Jos do Rio Preto, SP, Brasil
a
e

Rubens Sampaio
Pontif Universidade Catlica do Rio de Janeiro cia
o
Rio de Janeiro, RJ, Brasil

Geraldo N. Silva
Universidade Estadual Paulista - UNESP
So Jos do Rio Preto, SP, Brasil
a
e

Sociedade Brasileira de Matemtica Aplicada e Computacional


a

2012

A Sociedade Brasileira de Matemtica Aplicada e Computacional


a
- SBMAC publica, desde as primeiras edioes do evento, monograas
c
dos cursos que so ministrados nos CNMAC.
a
Para a comemoraao dos 25 anos da SBMAC, que ocorreu durante
c
o XXVI CNMAC em 2003, foi criada a srie Notas em Matemtica
e
a
Aplicada para publicar as monograas dos minicursos ministrados
nos CNMAC, o que permaneceu at o XXXIII CNMAC em 2010.
e
A partir de 2011, a srie passa a publicar, tambm, livros nas reas
e
e
a
de interesse da SBMAC. Os autores que submeterem textos a srie
` e
Notas em Matemtica Aplicada devem estar cientes de que podero
a
a
ser convidados a ministrarem minicursos nos eventos patrocinados pela
SBMAC, em especial nos CNMAC, sobre assunto a que se refere o
texto.
O livro deve ser preparado em Latex (compat
vel com o Miktex verso 2.7), as guras em eps e deve ter entre 80 e 150
a
pginas. O texto deve ser redigido de forma clara, acompanhado de
a
uma excelente reviso bibliogrca e de exerc
a
a
cios de vericao
ca
de aprendizagem ao nal de cada cap
tulo.

Veja todos os t
tulos publicados nesta srie na pgina
e
a
http://www.sbmac.org.br/notas.php

Sociedade Brasileira de Matemtica Aplicada e Computacional


a

2012

Introduo ` Construo de Modelos de


ca a
ca
Otimizao Linear e Inteira
ca

Socorro Rangel - UNESP


socorro@ibilce.unesp.br

Sociedade Brasileira de Matemtica Aplicada e Computacional


a

So Carlos - SP, Brasil


a
2012

Coordenaao Editorial: Vra Lucia da Rocha Lopes


c
e
Coordenaao Editorial da Srie: Geraldo Nunes Silva
c
e
Editora: SBMAC
Capa: Matheus Botossi Trindade
Patroc
nio: SBMAC
Copyright c 2012 by Socorro Rangel. Direitos reservados, 2012 pela
SBMAC. A publicaao nesta srie no impede o autor de publicar
c
e
a
parte ou a totalidade da obra por outra editora, em qualquer meio,
desde que faa citao ` ediao original.
c
ca a
c
Catalogao elaborada pela Biblioteca do IBILCE/UNESP
ca
Bibliotecria: Maria Luiza Fernandes Jardim Froner
a
Rangel, Socorro.
Introduao ` Construao de Modelos de Otimizao Linear e
c a
c
ca
Inteira - So Carlos, SP : SBMAC, 2012, 82 p., 20.5 cm
a
- (Notas em Matemtica
a
Aplicada; v. 18)
e-ISBN 978-85-86883-84-2
1. Otimizaao Linear Inteira. 2. Aplicaoes. 3. Sistemas Algbricos.
c
c
e
de Modelagem.
I. Rangel, Socorro. V. T
tulo. VI. Srie.
e
CDD - 51

Esta uma republicao em formato de e-book do livro original do


e
ca
mesmo t
tulo publicado em 2005 nesta mesma srie pela SBMAC.
e

Ao Elso pelo carinho e compreenso.

Prefcio
A otimizao est presente no nosso dia a dia. Sempre que queremos ou precisamos
tomar uma deciso, procuramos escolher entre as vrias alternativas aquela que,
naquele momento, nos d maior satisfao.
Na matemtica, a rea que estuda problemas de otimizao classicamente chamada de Programao Matemtica . Esta denominao identica uma ampla classe
de problemas. O nome programao foi empregado porque os militares se referem ao
planejamento de atividades como "programa". Boa parte dos acontecimentos que
culminaram com a criao desta importante rea da matemtica, se deram durante
a Segunda Guerra Mundial. De fato, George B. Dantzig usou o termo Programao
Linear (mais especicamente Programming in a linear Structure, mais tarde resumido para Linear Programming e generalizado como Mathematical Programming)
para analisar um problema de planejamento para a fora area americana. Com
a disseminao do uso do computador, programao passou a ser entendido como
a codicao de um algoritmo em uma determinada linguagem (e.g. FORTRAN,
C, C++) e s vezes a Programao Matemtica confundida com programao de
computadores. Linguagens de programao e computadores so muito usados no
estudo de problemas de otimizao, mas a Programao Matemtica muito mais
do que a codicao de um algoritmo.
O termo Otimizao empregado s vezes em referncia a uma classe especca
de problemas de Programao Matemtica: problemas de Programao no-linear.
No entanto, Otimizao pode ser usado para designar Programao Matemtica de
forma a tornar o signicado do termo mais compreensvel. Neste sentido, optamos
por usar Otimizao Linear, Otimizao Inteira, Otimizao no-linear para nomear
os problemas classicamente conhecidos como programao linear, programao inteira, e programao no linear, respectivamente.
Neste texto desenvolvemos a metodologia bsica de construo de modelos de
otimizao linear e linear inteira, apresentando ferramentas computacionais que
podem auxiliar no desenvolvimento de modelos ecientes e realistas. A modelagem
de problemas um importante tpico que tem sido pouco explorado nos livros textos
e/ou disciplinas de otimizao linear e linear inteira. A nfase, em geral, dada ao
desenvolvimento de mtodos de soluo.
Considerada por alguns como uma "arte", talvez com o intuito de evitar o tema,
a modelagem matemtica pode e deve ser sistematizada. Naturalmente, como em
outras reas do conhecimento, quanto maior a experincia, maior a facilidade de
construir modelos que representem matematicamente situaes do nosso dia-a-dia.
vii

viii
A partir de modelos clssicos possvel aprender o processo de modelagem e desenvolver habilidades para a criao de bons modelos matemticos. Ferramentas
computacionais (e.g. linguagens algbricas de modelagem e sistemas de resoluo)
permitem experimentar diversos mtodos de soluo, avaliar as solues obtidas e
validar um modelo. Explorando as limitaes dos recursos computacionais disponveis somos motivados a pesquisar e desenvolver novos mtodos de soluo e novas
ferramentas computacionais.

So Jos do Rio Preto, agosto de 2005.

Agradecimentos
- aos alunos e alunas que cursaram as disciplinas de graduao Mtodos de
Otimizao I e II, Programao Linear e Programao Matemtica entre 2000
e 2005 que de uma forma ou de outra incentivaram a redao deste texto;
- ao apoio nanceiro do CNPq (Proc. no 473001/2004-7);
- ao apoio institucional da UNESP;
- Ana Paula Ximenes Flores e aos pareceristas AD HOC pela leitura cuidadosa
do texto.

ix

Contedo
1 Modelos de Otimizao

2 Um primeiro modelo de otimizao linear: o problema da dieta


2.1

Axiomas: proporcionalidade, aditividade, divisibilidade . . . . . . . .

Ferramentas Computacionais

3.1

Linguagens algbricas de modelagem . . . . . . .


3.1.1 A linguagem MPL . . . . . . . . . . . . .
3.1.2 As linguagem XPRESS-MOSEL e AMPL
3.2 Sistemas de resoluo . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Aplicaes de Otimizao Linear

4.1

13
13
16
26
33

34

Planejamento da produo . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 Planejamento Multi-perodo . . . . . . . . . . . . . . . . . . . 37
4.1.2 Modelo na sintaxe do MPL . . . . . . . . . . . . . . . . . . . 42

Aplicaes de Otimizao Linear Inteira

47

5.1
5.2

O problema da mochila . . . . . . . . . . . . . . . . . . . . . . . . .
O Problema do Caixeiro Viajante . . . . . . . . . . . . . . . . . . . .
5.2.1 Formulao de Miller, Tucker e Zemlin . . . . . . . . . . . . .
5.2.2 Formulao de Dantzig, Fulkerson e Johnson . . . . . . . . .
5.3 Dimensionamento de lotes com tempos de preparo . . . . . . . . . .
5.3.1 A linha de produo de uma Fbrica de Refrigerantes . . . .
5.3.2 Um modelo de otimizao inteira mista . . . . . . . . . . . .
5.4 Problema do Escalonamento de Tarefas . . . . . . . . . . . . . . . .
5.4.1 Classicao do Problema - ( | | ) . . . . . . . . . . . . . .
5.4.2 Modelo com restries disjuntas . . . . . . . . . . . . . . . . .
5.4.3 Modelo Indexado pelo tempo . . . . . . . . . . . . . . . . . .

48
50
54
58
61
62
63
70
71
71
73

Bibliograa

78

Captulo 1

Modelos de Otimizao
"Existem duas maneiras de aumentar a ecincia de uma loja, empresa, ou indstria. Uma delas requer a melhoria tecnolgica, isto ,
atualizao dos equipamentos, mudana no processo tecnolgico, descoberta de novos e melhores tipos de matria prima. A outra maneira, at
hoje muito menos utilizada, envolve melhorias na organizao do planejamento e da produo. Isto , melhorias no processo de distribuio do
trabalho entre as mquinas da empresa, distribuio de matria prima,
combustvel, entre outros fatores."1

Diversas situaes podem ser estudadas de forma mais abrangente se representadas atravs de modelos que capturem seus principais elementos. Um modelo
matemtico de otimizao envolve a representao de um problema ou situao
atravs de um conjunto de relaes matemticas tais como: equaes, inequaes,
dependncias lgicas, e funes. So vrias as razes para a construo de modelos de otimizao, entre elas podemos destacar: aumentar o grau de entendimento
da situao estudada; analisar a situao e propor solues que no sejam aparentes; experimentar diversos cenrios que de outra forma no seria possvel, ou
recomendvel [56]. Taube [52] destaca outras razes sob o ponto de vista da gesto
empresarial. Modelos de otimizao linear e otimizao linear inteira podem ser
teis na resoluo de um grande nmero de problemas em diversas reas. Neste
texto iremos discutir algumas destas aplicaes.
Para construir um modelo de otimizao linear que represente um determinado
problema necessrio identicar inicialmente quais so os elementos conhecidos
geralmente associados ao que sabemos sobre o problema, e quais so os elementos
desconhecidos associados ao que queremos determinar ao solucionar o problema.
Esta fase inicial em geral realizada de forma conjunta atravs de reunies com o
pessoal envolvido na resoluo do problema, e envolve o conhecimento da situao
1 Traduzido de (Kantarovich (1939) in Dantzig [12]-pg 22)

CAPTULO 1. MODELOS DE OTIMIZAO

estudada. Nem sempre a identicao destes elementos imediata. A facilidade de


obteno destas informaes depende diretamente do grau de organizao do setor
em estudo. Para encontr-las, algumas simplicaes iniciais da situao estudada
so necessrias. Estes elementos sero importantes para a construo do modelo
matemtico, atravs deles que sero denidos os objetos matemticos: constantes,
incgnitas e funes que representem o problema.
Os elementos desconhecidos, em geral associados deciso a ser tomada atravs
da soluo do problema, so modelados em termos de incgnitas, que chamaremos de
variveis de deciso . Em geral, um grande nmero de valores podem ser associados
a estas variveis e conseqentemente necessrio denir um critrio, ou objetivo,
para seleo da melhor alternativa. Este critrio ser traduzido atravs de uma
funo linear das variveis de deciso que ser chamada de funo-objetivo . Neste
ponto surge a questo: "Quais so os impedimentos que restringem a tomada de
decises?". Estes impedimentos do origem s equaes e inequaes lineares que
formam o conjunto de restries do modelo. Os elementos conhecidos, chamados de
dados, fornecero os coecientes das variveis e os termos constantes nas restries
e na funo-objetivo. Os principais elementos de um modelo de otimizao esto
resumidos na Figura 1.1 a seguir.

Figura 1.1: Principais Elementos de um modelo de otimizao


importante ressaltar que o processo de construo do modelo iterativo e
pode ser dividido em trs fases: modelagem, validao e implementao . Na fase de
modelagem, um conjunto de variveis de deciso so denidas, uma funo-objetivo

CAPTULO 1. MODELOS DE OTIMIZAO

e um conjunto de restries so inicialmente propostos. possvel que durante


a denio da funo-objetivo e das restries, novas variveis sejam necessrias,
outras restries sejam identicadas, e/ou novos termos devam ser considerados na
funo-objetivo. Ou seja a fase de modelagem deve ser repetida at que se obtenha
um modelo bem representativo da situao estudada.
Uma vez obtido um modelo inicial, comea a fase de validao do modelo. O
modelo inicial resolvido e a soluo obtida deve ser analisada para vericar se ela
aceitvel para a situao em estudo. Os dados utilizados nesta fase podem ser
colhidos junto aos responsveis pelo problema, ou gerados aleatoriamente. Neste
ltimo caso, necessrio um certo cuidado para que os nmeros gerados reitam
grandezas prximas dos dados reais. Esta uma fase importantssima, pois nela
que acharemos os principais problemas do modelo proposto. muito improvvel
que o primeiro modelo construdo reita de forma satisfatria o problema. Novas
rodadas de reunies e depurao do modelo inicial com a incluso e/ou remoo de
variveis, constantes e restries so necessrias para a obteno de um modelo mais
prximo da realidade estudada. As fases de modelagem e validao so repetidas
at que as partes envolvidas estejam satisfeitas com o modelo resultante.
A terceira e ltima fase, implementao, se inicia quando o modelo matemtico
construdo usado como ferramenta em um sistema de apoio decises (SADE).
Para tanto, necessrio que uma interface seja construda entre o modelo matemtico, o sistema de resoluo e o usurio nal. Esta interface pode ser construda de
diversas maneiras, neste texto estaremos dando nfase ao uso dos sistemas algbricos de modelagem (SAM) para facilitar a documentao, utilizao e manuteno
dos modelos de otimizao que iremos construir. Atravs desta interface, os dados
referentes a uma situao particular so recuperados e transferidos para o modelo
matemtico. Um exemplar do problema assim obtido e ento traduzido para um
formato especial que ser lido pelo sistema de resoluo. Uma vez obtida a soluo
deste exemplar, a interface dever recuper-la e traduzi-la para um formato apropriado. nesta fase que a soluo matemtica obtida dever ser analisada, avaliada
de acordo com critrios polticos, econmicos, cientcos e possivelmente utilizada
na prtica. Mudanas na realidade podem requerer que o modelo seja reavaliado,
entramos ento na fase de manuteno. O processo de construo de um modelo
de otimizao pode ser resumido e representado atravs da Figura 1.2 a seguir.
Os modelos matemticos usados em otimizao seguem em geral um padro
composto por uma funo-objetivo, um critrio de otimizao, minimizar (min) ou
maximizar (max), o termo sujeito a (s.a) que indica que os valores aceitos para
otimizar a funo-objetivo devem satisfazer um conjunto de restries, a descrio
matemtica das restries na forma de equaes ou inequaes, e a denio do tipo
das variveis. O formato geral dado pela Expresso (1.1) a seguir.
min (ou max)
sujeito a

funo-objetivo
restries principais: equaes ou inequaes
tipo das variveis

(1.-1)

CAPTULO 1. MODELOS DE OTIMIZAO

Figura 1.2: Processo de construo de um modelo de otimizao

A forma matemtica que a funo-objetivo a ser minimizada (ou maximizada) ir


tomar, bem como as restries e o tipo de varivel, iro denir os diversos modelos
de otimizao. Se a funo-objetivo e as restries forem lineares, e as variveis
puderem assumir valores reais, isto x , temos um modelo de otimizao linear
contnuo no formato padro (Modelo 1.-1).
min
z = cx
sujeito a
Ax = b
(1.-3)
x 0, x n
onde A uma matriz m x n, x e c so vetores n-dimensionais e b um vetor
m-dimensional. Se no Modelo (1.-1) restringirmos as variveis de forma que s
possam assumir valores inteiros, x Z, teremos um modelo de otimizao linear
inteira (Modelo 1.-3).
min
z = cx
sujeito a
(1.-5)
Ax = b
n
x 0, x Z
Em determinadas circunstncias interessa que apenas um subconjunto de variveis
esteja restrito a assumir valores inteiros. Neste caso, temos um modelo de otimizao

CAPTULO 1. MODELOS DE OTIMIZAO

inteira mista (modelo 1.-5).


min
sujeito a

z = cx
Ax = b

(1.-7)

x 0, xj Z, j = 1, . . . , p; xj , j = p + 1, . . . , n.

Note que no Modelo (1.-5) xj indica a j -sima componente do vetor x. Para facilitar
a referncia a estes modelos usaremos a abreviao (OL), (OI), (OIM) respectivamente. Modelos tais que a funo-objetivo no linear e/ou o conjunto de restries
formado por equaes ou inequaes no lineares so chamados de modelos de otimizao no-lineares (ONL). Situaes que envolvam modelos no-lineares e que no
possam ser representadas por modelos lineares fogem do escopo deste texto e no
sero discutidas. O leitor interessado nesta classe de modelos poder consultar por
exemplo as seguintes obras: [56], [26], [31], [17].
Antes de prosseguirmos explorando os modelos descritos acima, gostaramos de
chamar ateno para algumas confuses existentes a respeito da validade e uso de
modelos matemticos. Uma das crticas apontadas diz respeito a quanticao de
parte dos dados usados no modelo, por exemplo como atribuir um custo a um valor
social, outra est associada preciso dos dados utilizados. Williams [56] responde
a estas crticas considerando que uma srie de decises associadas a conceitos "noquanticveis"precisam ser tomadas, e so baseadas numa caracterizao implcita
que no pode ser evitada. Incorporar esta deciso explicitamente num modelo matemtico parece ser uma forma cientca e honesta de lidar com a questo. A preciso
dos dados deve ser considerada em relao a cada modelo especicamente. Apesar
de uma parcela dos coecientes de um modelo no serem precisos, ainda assim
possvel que o modelo matemtico produza uma boa soluo para o problema. De
qualquer forma importante ter claro que o modelo matemtico deve ser usado
como uma de diversas ferramentas disponveis para a tomada de deciso. A qualidades das respostas que um modelo produz depende da preciso e da estrutura dos
dados do modelo. No caso dos modelos de otimizao a denio da funo-objetivo
tambm afeta fortemente a resposta do modelo.
Williams [56] observa ainda que a resposta fornecida por um modelo matemtico
deve ser analisada cuidadosamente. Se ela representa uma deciso que no pode
ser tomada, as razes para a no aceitao desta soluo devem ser analisadas e
possivelmente incorporadas num novo modelo atravs da modicao do conjunto de
restries e/ou da funo-objetivo. Se a resposta for aceitvel, pode ser sbio tomla apenas como uma opinio. Modicar a funo-objetivo (e conseqentemente o
modelo) pode resultar em uma outra opo. Questionando as respostas fornecidas
pelo modelo e modicando-o de forma adequada pode tornar mais visvel as diversas
possibilidades existentes e aumentar o grau de entendimento do problema.
Nos prximos captulos desenvolvemos a metodologia bsica de construo de
modelos de otimizao linear e linear inteira, apresentamos ferramentas computacionais que podem auxiliar no desenvolvimento de modelos ecientes e discutimos
alguns problemas clssicos que servem de ponto de partida para a soluo de diversos problemas no nosso dia a dia.

Captulo 2

Um primeiro modelo de
otimizao linear: o problema
da dieta
O problema da dieta consiste em, dado um conjunto de alimentos, escolher quais e
quanto usar de cada um para compor uma dieta alimentar que atenda quantidades
pr-determinadas de nutrientes, de acordo com algum critrio. Esse um enunciado
muito geral, no entanto serve de base para apresentarmos um problema que possui
uma importncia especial. Num excelente histrico sobre o problema da dieta,
Namem e Bornstein [40] destacam que este foi um dos primeiros problemas a ser
usado para testar o mtodo simplex (e.g. [13], [21], [6]) desenvolvido por George B.
Dantzig em 1947 para resolver problemas de otimizao linear. Alm disso, o modelo
original apresentado por Stigler em 1945, apesar de nem sempre resultar em uma
resposta satisfatria, simples e ilustra muito bem o processo de construo de um
modelo discutido no Captulo 1 e as principais suposies (ou axiomas) necessrias
para se obter um modelo de otimizao linear.

2.1 Axiomas: proporcionalidade, aditividade, divisibilidade


Vamos ilustrar a construo de um modelo de otimizao linear considerando a seguinte adaptao do problema da dieta proposto por Stigler (uma verso do enunciado original que envolvia 77 alimentos pode ser encontrada em [40]).

Exemplo 2.1 Paula deseja balancear os alimentos que consume de forma a obter

uma dieta alimentar que fornea diariamente toda a energia, protena e clcio que
necessita. Seu mdico recomendou que ela se alimente de forma a obter diariamente
no mnimo 2000 kcal de energia, 65g de protena e 800 mg de clcio. O Valor

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

nutritivo e o preo (por poro) de cada alimento a ser considerado na dieta dado
na Tabela 2.1. Quanto de cada alimento Paula deve consumir para obter uma dieta
que atenda a recomendao mdica e que tenha o menor custo possivel?

Tabela 2.1: Composio nutricional e custo dos alimentos


Tipo de
tamanho energia Protena clcio
preo
alimento da poro (kcal)
(g)
(mg) p/ poro (centavos)
arroz
100g
170
3
12
14
ovos
2un
160
13
54
13
leite
237ml
160
8
285
9
feijo
260g
337
22
86
19
Para iniciar a construo do modelo matemtico que represente o problema da
Paula, precisamos distinguir os elementos conhecidos e os desconhecidos conforme
a discusso que zemos no Captulo 1 (ver Figura 1.1). Analisando o enunciado do
Exemplo 2.1 temos:

Elementos conhecidos
- alimentos a serem considerados na elaborao da dieta;
- composio nutricional dos alimentos;
- quantidade mnima de nutrientes que a dieta deve satisfazer diariamente;
- custo dos alimentos (por poro);
Elementos desconhecidos
- nmero de pores de cada alimento a ser usado na dieta.
De acordo com os dados da Tabela 2.1 podemos vericar que existem diversas combinaes dos alimentos que fornecem os nveis recomendados de nutrientes. Tambm
possvel calcular o custo associado a cada uma delas. Precisamos ento denir
um critrio para a seleo do melhor combinao possvel. Antes necessrio esclarecer o que consideramos como a melhor combinao possvel. Dentro do presente
contexto, a questo do custo associado combinao dos alimentos parece ser um
item importante para a Paula. Assim podemos dizer:

Objetivo
- obter uma dieta com o menor custo possvel.
O menor custo possvel na presente situao custo zero, mas claro que esta soluo no atende a recomendao mdica. Uma soluo do problema deve satisfazer
algumas restries e portanto para completar a denio dos elementos principais
do modelo necessrio denir:

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

Restries
- a dieta deve fornecer uma quantidade mnima dos nutrientes pr-especicados.
Uma vez entendido o problema, podemos iniciar a construo do modelo de
otimizao traduzindo para a matemtica os elementos acima. Vamos usar um
modelo de otimizao linear (OL). O modelo denido no Captulo 1 pela Expresso
(1.-1) tambm pode ser escrito no seguinte formato:
min

z=

n
j=1

cj xj

(2.1)

sujeito a
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.

(2.-1)

am1 x1 + am2 x2 + . . . + amn xn bm


xj 0, xj

(2.-1)

onde o smbolo pode ser substitudo por " ", " ", ou "=". Qualquer problema
de otimizao linear pode ser escrito no formato padro apresentado no Captulo 1
(e.g. [13], [21]).
importante neste momento detalharmos um pouco mais a denio de um
modelo de otimizao linear. A funo-objetivo (2.1) e as restries (2.-1) do modelo
acima so lineares pois no apresentam produtos de variveis, xy , potncias de
variveis, xn , n > 1, ou ainda combinaes de variveis do tipo (x + logy ). De uma
maneira geral, uma forma linear pode ser caracterizada por certas propriedades
multiplicativas e aditivas [25]. No contexto do Exemplo 2.1 se Paula incluir na
dieta uma poro de arroz ela obtm 170 kcal de energia, se incluir duas ir obter
o dobro de energia. A quantidade de energia obtida na dieta referentes ao arroz
proporcional ao nmero de pores includas. De maneira similar, para calcular
o custo da dieta, podemos supor que se uma poro de arroz custa 14 centavos,
duas pores custaro 28 centavos. Assim, um modelo linear pressupe que o custo
total da compra de um determinado item proporcional ao nmero de unidades
compradas.
A propriedade aditiva pode ser ilustrada considerando que se Paula incluir na
dieta uma poro de arroz e uma de feijo a energia total obtida ser igual soma
das quantidades individuais fornecidas por cada alimento, isto 507 kcal, e o custo
total igual soma dos custos individuais, 33 centavos. Usando as propriedades
de aditividade e proprocionalidade, podemos concluir que dobrando o consumo de
arroz e triplicando o consumo de feijo, teremos uma dieta de 1351 kcal a um custo
de 85 centavos.
No modelo (OL) que vamos construir para representar o problema da Paula, a
letra j ser usada para indexar os elementos do conjunto de alimentos que podero
ser usados para compor a dieta. No Exemplo 2.1 temos quatro alimentos, o ndice

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

j poder ento assumir valores inteiros entre 1 e 4 para representar cada um deles.
De forma similar deniremos um segundo indice, i, para indexar os nutrientes que
devem ser obtidos pela dieta. Assim temos:

ndices
j = 1, . . . , 4 representa respectivamente os alimentos: arroz, ovos, leite e feijo;
i = 1, . . . , 3 representa respectivamente os nutrientes: energia, proteina e clcio.

Vericamos acima que um elemento desconhecido importante no problema enunciado no Exemplo 2.1 : quantas pores de cada alimento devem fazer parte da
dieta. Assim podemos denir:

Variveis de deciso
xj : nmero de pores do alimento j a ser includo na dieta.

Note aqui que os elementos conhecidos do problema esto fornecendo os dados do


modelo. At aqui o nmero e o tipo de alimentos e nutrientes.
Enunciamos acima que o critrio de escolha dos alimentos obter a dieta de
menor custo possvel. O preo de cada alimento conhecido e assim usando as
propriedades de proporcionalidade e aditividade podemos escrever matemticamente
o critrio de escolha dos alimentos. Considerando que se comprarmosx1 pores de
arroz iremos gastar 14x1 centavos e que se comprarmos x2 pores de ovos iremos
gastar 13x2 centavos, temos que o custo total da compra de x1 pores de arroz e
x2 pores de ovos 14x1 + 13x2 . Usando o mesmo raciocnio e considerando os
demais ingredientes, temos que o custo total da dieta dado por:
z = 14x1 + 13x2 + 9x3 + 19x4 .

Como queremos obter a dieta de menor custo possvel, temos:

Funo-objetivo
min z = 14x1 + 13x2 + 9x3 + 19x4 .
As propriedades de aditividade e proporcionalidade tambm sero teis para
expressar matematicamente as restries do modelo. A dieta precisa satisfazer
nveis mnimo de cada um dos nutrientes. Em relao energia temos que:
quantidade total de energia da dieta 2000 kcal.
A quantidade total de energia pode ser calculada de forma similar ao clculo do
custo total. Considerando que se for consumido x1 pores de arroz teremos 170x1
kcal e x2 pores de ovos teremos 160x2 kcal, temos um total de 170x1 + 160x2 kcal.
Se chamarmos de aij a quantidade de nutriente i no alimento j , a quantidade total
do nutriente i obtida pelo consumo de xj pores do alimento j igual a aij xj .
Considerando o consumo dos quatro alimentos temos que a quantidade total do
nutriente i igual a ai1 x1 + ai2 x2 + ai3 x3 + ai4 x4 . Usando os dados da Tabela 2.1
podemos explicitar o conjunto de restries:

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

10

Restries
energia: 170x1 + 160x2 + 160x3 + 337x4 2000
protena: 3x1 + 13x2 + 8x3 + 22x4 65
clcio: 12x1 + 54x2 + 285x3 + 86x4 800.
Para completar o nosso primeiro modelo, temos ainda que considerar os valores
que as variveis de deciso podem assumir. Naturalmente, nesta situao estamos
interessados apenas em valores no-negativos que satisfaam os nveis mnimos de
nutrientes. Podemos tambm considerar que a varivel xj pode receber qualquer
valor real. Esta a terceira propriedade que caracteriza um modelo de otimizao
linear: divisibilidade. Se impormos como restrio adicional, por exemplo, que
as variveis assumam apenas valores inteiros no teremos mais um problema de
otimizao linear, mas sim um problema de otimizao inteiro. Algumas situaes
reais so melhor representadas se estas restries forem impostas, o que discutiremos
com mais detalhes no Captulo 5. No presente caso:

Tipo das Variveis


xj 0, xj

O Modelo de otimizao que representa o Problema da Dieta do Exemplo 2.1


ento dado pelo problema de otimizao linear (2.-1) abaixo.
min
z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
xj 0, j = 1 . . . , 4

(2.-4)

Note que a denio do tipo das variveis fornece um conjunto de restries adicionais ao modelo. Este conjunto descrito de forma separada porque estas informaes so em geral tratadas de forma implcita. A condio xj considerada
implicitamente nos modelos de otimizao linear e por isso foi omitida do problema
(2.-1).
Uma vez obtido o modelo de otimizao linear que represente, pelo menos a
princpio, a situao estudada precisamos vericar se as respostas obtidas so satisfatrias. Isto , iniciamos a fase de validao do modelo. Esta uma fase que pode
demandar bastante esforo da equipe envolvida. Ferramentas computacionais tais
como linguagens de programao, linguagens de modelagem, bem como sistemas
computacionais desenvolvidos para a resoluo de problemas de otimizao podem
facilitar o trabalho desta fase. No Captulo 3 apresentaremos algumas ferramentas
computacionais que esto disponveis para esta tarefa. Neste momento, vamos supor que dispomos de um aplicativo, chamado c_otim, que ir receber um problema

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

11

de otimizao linear, resolv-lo e retornar a soluo ou informar que a mesma no


existe. A soluo de um problema de otimizao, simplesmente soluo tima,
uma atribuio de valores para as variveis de deciso de forma que o conjunto de
restries satisfeito e o valor da funo-objetivo otimizado, no presente caso,
minimizado. Qualquer outra atribuio de valores s variveis de deciso tal que o
conjunto de restries seja satisfeito chamada de soluo vivel.
Resolvendo o problema de otimizao linear (2.-1) pelo sistema c_otim obtemos
a seguinte soluo:
z = 112, 5, x1 = 0, x2 = 0, x3 = 12, 5, x4 = 0.

(2.-5)

que "traduzida"quer dizer que a dieta dever ser composta por 12,5 pores de leite
correspondendo a aproximadamente 2,96 litros de leite ( 3 representa o nmero de
x
pores do alimento leite e uma poro de leite igual a 237ml) a um custo de 112,5
centavos.
O que dizer desta soluo? Apesar de ser a de menor custo, a dieta sugerida composta por apenas um alimento em uma quantidade que no adequada.
Quando tomou conhecimento desta sugesto, a nossa personagem Paula imediatamente disse: "Eu no consigo tomar esta quantidade de leite!". Uma pergunta
natural para fazer a Paula : "Quantas pores de leite voce tomaria?". Este dilogo
ctcio ilustra bem a necessidade de se avaliar as respostas que um modelo produz.
Se lembrarmos do processo de construo de um modelo discutido no Captulo 1,
a fase de validao pode resultar em uma reviso do modelo proposto. A resposta
da Paula pergunta acima implica em impor um limite para o nmero de pores
de leite a serem includas na dieta. Isto , novos elementos conhecidos passam a
fazer parte do nosso modelo: nmero mximo de pores do leite. Podemos prever
que limitar apenas o consumo do leite pode gerar novas solues que sugiram um
consumo igualmente inaceitvel dos demais alimentos. Assim, para obter um modelo que reita melhor a situao precisamos conhecer os limites mximos aceitveis
para o consumo de cada um dos alimentos. Obtendo estes dados da Paula, podemos
representar matematicamente esta nova restrio impondo um limite superior para
o valor das variveis no Modelo (2.-1). Considerando que o limite mximo para o
consumo de arroz, ovos, leite e feijo so 1,2,2,3 respectivamente, temos:

Reformulao do modelo: novas restries


x1 1, x2 2, x3 3, x4 3.

Este novo conjunto de restries includo no modelo na seo Tipo de Varivel


(ver Modelo (1.1)). O modelo continua sendo linear, pois apesar de restritas, as
varveis continuam podendo receber qualquer valor real dentro de um determinado

2.1. AXIOMAS: PROPORCIONALIDADE, ADITIVIDADE, DIVISIBILIDADE

12

intervalo. O novo modelo ento:


min
z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
x1 1, x2 2, x3 3, x4 3, xj 0, j = 1 . . . , 4.

(2.-7)

Diversas outras consideraes poderiam ser feitas a respeito da validade da nova


soluo, no apenas dentro do contexto sugerido pelo Exemplo 2.1 mas tambm
em relao ao problema da dieta de forma mais geral. Sugerimos ao leitor o texto
de Namem e Bornstein [40] para aprofundar a discusso especicamente sobre a
modelagem do problema da dieta. Nos demais captulos voltaremos a usar este
problema para ilustrar outros aspectos associados construo e soluo de modelos
de otimizao.

Captulo 3

Ferramentas Computacionais
O problema da dieta foi uma das primeiras aplicaes da otimizao linear a ser
resolvida pelo mtodo simplex. Em 1947, uma verso do problema contendo 9
restries e 77 variveis, considerado um problema de grande porte para a poca,
foi resolvida usando calculadoras de mesa em 120 dias de trabalho [13]. Hoje,
os sistemas computacionais so capazes de manipular problemas com milhares de
variveis em poucos segundos. De fato, o porte dos problemas a serem resolvidos
por um determinado sistema depende principalmente da disponibilidade de memria
da mquina onde o sistema est instalado. No entanto, manipular as informaes
associadas a um modelo de otimizao de grande porte, nos padres de hoje, no
uma tarefa trivial. E isso diz respeito ao armazenamento e manipulao dos dados
do problema, bem como gerao e documentao das variveis e das restries
do modelo associado, alm de outros fatores como fornecer e obter informaes dos
sistemas computacionais de resoluo.
Diversas ferramentas computacionais de carter geral e especco podem auxiliar no processo de construo, manuteno e soluo de modelos de otimizao.
Podemos dividir a discusso deste tpico em dois blocos: ferramentas de modelagem
e ferramentas de resoluo. No primeiro bloco esto as linguagens de programao
(e.g. C, C++, Fortran), as planilhas de clculo (e.g. EXCEL, Lotus 123) e as
linguagens algbricas de modelagem (LAM). No bloco das ferramentas de resoluo
entram novamente as linguagens de programao, usadas para a implementao de
algoritmos e os os sistemas de resoluo comerciais e de pesquisa. Em [28] a planilha
de clculo EXCEL usada para modelar e resolver problemas. Nas prximas sees
faremos uma breve discusso sobre linguagens de modelagens (Seo 3.1) e sistemas
de resoluo (Seo 3.2).

3.1 Linguagens algbricas de modelagem


Em geral, estamos interessados em usar um determinado modelo matemtico para
simular diversas possibilidades ou cenrios antes de tomar uma deciso. No caso

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

14

do problema da dieta discutido no Captulo 2, construmos um modelo de otimizao linear para representar especicamente a situao descrita no Exemplo 2.1.
No entanto, possvel descrever o Modelo (2.-1) em um formato mais geral. Se
considerarmos que temos:

- n alimentos;
- m nutrientes;
- cj , j = 1, . . . , n: o custo do alimento j ;
- bi , i = 1, . . . , m: o nvel mnimo do nutriente i;
- aij , i = 1, . . . , m, j = 1, . . . , n: quantidade do nutriente i presente no alimento j ;
o modelo (2.-1) pode ser generalizado como:
min
sujeito a

z = c1 x1 + c2 x2 + . . . + cn xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.
am1 x1 + am2 x2 + . . . + amn xn bm
xj 0, xj .

(3.-3)

Quando denimos n = 4 e m = 3, e usamos os dados da Tabela 2.1 particularizamos


o Modelo (3.1) acima e obtemos o Problema 2.-1. Neste caso dizemos que (2.-1)
um exemplar do problema da dieta. O Modelo (3.1) pode ser usado para simular
o problema da dieta em diversos cenrios, para isto basta atribuirmos diferentes
valores para os elementos conhecidos do problema. Por exemplo, podemos vericar
qual a sugesto de dieta se ao invs de arroz, ovos, leite e feijo, quisssemos
compor uma dieta usando macarro, brcolis, cenoura, ervilha e ovos.
Neste ponto conveniente distinguir entre um modelo matemtico e um exemplar do mesmo. Um modelo uma representao algbrica abstrata do problema e
um exemplar a descrio explcita ou uma atribuio de valores para os dados abstratos de um modelo. Assim, no caso do problema da dieta podemos dizer que (3.1)
um modelo para o problema da dieta e que (2.-1) um exemplar. Assim quando
dizemos que queremos resolver um modelo de otimizao estamos nos referindo a
resoluo de um exemplar do mesmo.
O objetivo inicial para o desenvolvimento das linguagens algbricas de modelagem foi o de facilitar o processo de comunicao de dados entre o usurio e os
sistemas de resoluo. A evoluo das linguagens ampliaram estes objetivos e podemos dizer que o seu uso facilita a construo e a documentao de um modelo de
otimizao e serve de interface com sistemas de resoluo, no apenas para fornecer
dados e receber a soluo do exemplar resolvido, mas tambm para interagir do
ponto de vista algoritmico com o sistema.

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

15

Existem disponveis hoje uma grande variedade de linguagens de modelagem com


diferentes habilidades (e.g. [19], [49], [36]). Nosso objetivo aqui no fazer uma
descrio comparativa entre elas, ou mesmo fornecer um manual de uso. Queremos
sim, fazer uma breve introduo e mostrar como estas linguagens podem auxiliar o
processo de construo e validao de modelos de otimizao. Para tanto, vamos
utilizar trs linguagens: MPL [34], AMPL [18] e XPRESS-MOSEL [11] que juntas
ilustram bem as possibilidades de uso das linguagens de modelagem em geral.
Estas trs linguagens foram escolhidas por vrias razes. Atualmente, todas
elas esto disponveis gratuitamente para download (em verses resumidas), o que
permite que voce leitor, possa utiliz-las para construir seus prprios modelos. Em
geral, um sistema de resoluo (tambm em verso resumida) acompanha a verso
disponibilizada para download. A linguagem MPL bastante didtica e indicada
para um primeiro curso de modelagem. As linguagens XPRESS-MOSEL e AMPL
permitem uma boa manipulao de conjuntos e ndices, e fornecem um conjunto
de comandos para interao algoritmica entre o modelo e os sistemas de resoluo.
Os comandos disponveis para denio do modelo tambm podem ser usados para
escrever relatrios da soluo de um exemplar. Duas linguagens de modelagem nocomerciais (ZIMPL e GMPL) disponveis via www possuem sintaxe similar linguagem AMPL [30]. Licena gratuita para a verso completa do XPRESS-MOSEL
pode ser obtida atravs do Academic Partner Program mantido por seus proprietrios.
O processo de descrio de um modelo de otimizao atravs de uma linguagem
de modelagem segue, na maioria dos casos, um padro similar ao que usamos para
construir o modelo da dieta discutido no Captulo 2. A estrutura geral pode ser
resumida pela denio dos seguintes itens:

- conjuntos e ndices
locais: {Rio, SP, Goinia}
cdigos: {A11, B45}
i : 1 . . . 4;

- dados, parmetros, tabelas


podem ser fornecidos diretamente no modelo, lidos em arquivos livres de formato
(tipo .txt), ou retirados de planilhas de clculo ou banco de dados;

- variveis de deciso
podem ser do tipo inteiras, binrias ou contnuas, e denidas ou no para todos os
elementos de um conjunto;

- funo-objetivo
linear ou no linear;

- restries

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

16

podem ser agrupadas por tipo para expanso a posteriori, e denidas para subconjuntos de ndices.
Nas prximas sees, vamos usar o problema da dieta enunciado no Captulo 2
(Exemplo 2.1) para ilustrar a estrutura e algumas das facilidades das trs linguagens
mencionadas acima.

3.1.1 A linguagem MPL


1
Faremos aqui uma breve apresentao da linguagem MPL (Mathematical Programming System)[34]. Para facilitar o entendimento a exposio esta dividida em trs
partes discutidas a seguir: Operao do Sistema, Sintaxe do MPL e Recursos do
Sistema.

Operao do Sistema
Por ser tratar de um aplicativo para o sistema operacional Windows, sua operao
bsica segue o padro de outros aplicativos para este sistema operacional, como
por exemplo WORD, EXCEL. A barra de ferramentas principal do aplicativo, a
barra de menus (ver Figura 3.1), composta de comandos usuais de aplicativos
para Windows: FILE (e.g. abrir, fechar, salvar), EDIT (e.g. cortar, copiar, colar);
e comandos especcos do sistema: RUN e GRAPH que sero descritos a medida
que forem sendo usados. Na barra principal tambm esto dispostos uma srie de
cones que facilitam o acesso aos diversos comandos do sistema.

Figura 3.1: Menu principal do MPL

Sintaxe do MPL
Os principais comandos usados para descrever um modelo de otimizao atravs do
MPL so: TITLE, INDEX, DATA, VARIABLES, MODEL, SUBJECT TO, END.
Cada um destes comandos so usado para denir uma seo do modelo, exceto
os comandos TITLE e END que so usados para iniciar e encerrar a descrio do
modelo respectivamente. Estes comando so passados para o sistema atravs de
um arquivo tipo texto que ser lido e interpretado pelo MPL. O sistema possui
1 uma verso resumida do sistema (Free Student/Trial version) pode ser obtida gratuitamente
no endereo http://www.maximal-usa.com/download/ juntamente com as instrues para instalao (ltima visita em 13/08/2005).

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

17

um editor de texto prprio, mas qualquer editor capaz de gerar arquivo livre de
formatao (e.g. EDIT, PICO, NOTEPAD) pode ser usado. Usando o editor do
MPL vamos criar um arquivo para denir o nosso modelo (no menu principal escolha
FILE seguido de NEW e uma janela se abrir para receber o texto). Usaremos
letras maisculas para indicar palavras que so reservadas para a linguagem, isto ,
quando usadas so interpretadas como comandos pelo MPL.
O comando TITLE usado para dar um ttulo e indicar o incio da descrio
do modelo. Para o Exemplo 2.1 vamos usar o nome dieta. Veja a seguir o primeiro
comando do nosso arquivo.
TITLE dieta
Como zemos na modelagem descrita no Captulo 1, vamos agora denir os ndices
que sero usados para gerar as variveis, restries e estruturas de dados (vetores,
matrizes) para armazenar os valores necessrios para gerar um exemplar do modelo.
Isto ser feito atravs do comando INDEX. Quando denimos os ndices do Modelo
(2.-1) usamos as letras i e j e nmeros inteiros para denir os valores que estes ndices
poderiam receber. Precisamos exercitar um pouco nossa memria para lembrar que
a letra i representa os nutrientes, a letra j representa os alimentos, e que quando
fazemos j = 3 estamos nos referindo ao alimento leite. Seria muito mais natural
usar diretamente as palavras alimento e nutriente como ndices, da mesma forma
que usar os nomes dos alimentos ao invs de nmeros para denir as atribuies aos
ndices. Esta forma mais natural de fazer referncia aos elementos de um modelo
uma das vantagens de se usar uma linguagem de modelagem. Podemos ento
acrescentar o comando INDEX ao nosso arquivo, substituindo os ndicesi e j pelas
palavras nutriente e alimento, respectivamente.
TITLE dieta
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
importante observar a necessidade de se incluir comentrios na descrio do modelo, pois eles ajudaro a document-lo e torn-lo auto-explicativo. Os comentrios,
isto , partes do texto que sero ignorados pelo aplicativo, podem ser adicionados
no MPL de duas formas: texto entre chaves e texto precedido de um ponto de exclamao. As chaves so, em geral, usadas no caso de comentrios longos, de mais
de uma linha, e o ponto de exclamao usado no caso de comentrios de uma
nica linha. Vamos ento incluir comentrios na descrio do modelo da dieta.
{ Arquivo: dieta.mpl
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
TITLE dieta

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

18

INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
Podemos iniciar agora a denio dos elementos conhecidos do modelo, ou seja a
seo DATA. neste ponto que sero denidas as estruturas que iro armazenar os
dados do exemplar que iremos gerar posteriormente. Na generalizao do Modelo
2.-1 denimos cj , bi , aij para representar o custo do alimento j , o nvel do nutriente
i e a quantidade do nutriente i presente no alimento j , respectivamente. Estes
elementos podem ser pensados como componentes dos vetores c,b e da matriz A.
Este mesmo recurso ser usado agora denindo os nomes custo, nivel e quant no
lugar de c, b e A. necessrio deixar claro a dimenso destas estruturas, e isto
feito associado a cada uma delas um ou mais dos ndices denidos na seo INDEX.
O comando VARIABLES abre a seo de denio das variveis de deciso do
modelo. Vamos usar o nome comprar no lugar de x para representar o nmero de
pores de cada alimento a ser includo na dieta.
J inclumos muitas informaes na descrio do modelo, e podemos ter cometido alguns erros de sintaxe, isto comandos que o sistema MPL no capaz de
interpretar. Assim, antes de prosseguir, conveniente vericar se a descrio do
modelo feita at o momento est de acordo com os requisitos da linguagem. Para
tanto acionamos na barra do menu principal o comando RUN seguido do comando
CHECK SYNTAX (ver Figura 3.2).

Figura 3.2: Vericando erros de sintaxe

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

19

Como o arquivo ainda no foi salvo, antes de proceder a anlise da sintaxe, o


sistema automaticamente aciona os comando FILE, seguido de SAVE AS do menu
principal, sugerindo que a extenso do arquivo a ser salvo seja (.mpl). Aps salvar
o arquivo com o nome indicado pelo usurio, no nosso caso dieta.mpl, a sintaxe do
modelo vericada. Ao transcrever o trecho de modelo acima para o sistema cometemos um pequeno erro. Uma nova janela aberta com uma descrio aproximada
do erro cometido e uma indicao da posio do erro (ver Figura 3.3). Neste caso,

Figura 3.3: Erro de sintaxe


a mensagem do sistema indica que no fornecemos todos os dados necessrios para
compor a matriz quant. A matrix quant foi indexada por nutriente e alimento, portanto devem ser forncecidos 3 x 4 valores. Fornecemos apenas 9. Apesar de no se
tratar de uma linguagem de programao de uso geral, a linguagem de modelagem
pode ser tratada como tal pois possui uma estrutura especca a ser seguida. Boas
prticas de programao e codicao podem e devem ser usadas. conveniente
observar que o MPL verica a sintaxe do modelo linha por linha. No processa uma
nova linha se for encontrado algum erro na linha anterior. Esta forma de vericao
de sintaxe muda de uma linguagem de modelagem para outra.
Incluindo o comando MODEL iniciamos a descrio do modelo de otimizao
propriamente dito: denio da funo-objetivo e das restries. Uma representao
mais compacta e simples para o Modelo (3.1) pode ser obtida se usarmos o smbolo
para representar as somas. Isto , podemos reescrever o modelo para o problema

20

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

da dieta como (3.-4) abaixo.


n

min

z=

cj xj
j=1

sujeito a
n

aij xj bi ,

i = 1, . . . , m

(3.-6)

j=1

xj 0, xj

exatamente este tipo de construo compacta que iremos reproduzir na descrio


do modelo usando o MPL. O sistema ir, uma vez acionado o comando apropriado,
expandir os ndices para gerar o Exemplar (2.-1). O smbolo de soma
representado na linguagem MPL atravs do comando SUM, e os ndices usados para a
expanso bem como a expresso a ser expandida so denidos entre parnteses. A
funo-objetivo identicada atravs dos comandos MAX ou MIN, que j indicam
tambm o critrio de otimizao. Assim de acordo com a sintaxe da linguagem
MPL precisamos acrescentar as linhas a seguir ao arquivo.
MODEL
MIN Custo_total = SUM(alimento: preco*comprar)
As restries so precedidas do comando SUBJECT TO. Para garantir que o sistema
entenda a necessidade de expanso das restries necessrio den-las usando um
dos ndices da seo INDEX. Por exemplo, se escrevermos simplesmente as linhas:
SUBJECT TO
SUM(alimento: quant*comprar) > nivel[nutriente]
obteremos uma mensagem de erro pois o sistema no entende que ser necessrio
criar uma restrio deste tipo para cada um dos elementos do ndice nutriente.
Para corrigir basta nomear as restries e indexar por nutriente. Assim a descrio
das restries de acordo com a sintaxe do MPL feita atravs do comandos a seguir.
SUBJECT TO
N_[nutriente] : SUM(alimento: quant*comprar) > nivel[nutriente]
No h necessidade de indicar a no-negatividade das variveis. Esta restrio
assumida implicitamente pelo MPL. Caso as variveis sejam livres ou no-positivas,
a sim necessrio explicitar o tipo. Para nalizar a descrio do modelo inclumos
o comando END. O modelo completo dado na Figura 3.4 a seguir.

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

{ Arquivo: dieta.mpl
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
TITLE dieta
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
DATA
! Custo de cada alimento a ser considerado na dieta
preco[alimento] = (14 13 9 19)
! Quantidade mnima total de cada nutriente na dieta;
nivel[nutriente] = ( 2000 65 800 )
! Quantidade de nutrientes presente em cada tipo de alimento
quant[alimento,nutriente] = (170 3 12
160 13 54
160 8 285
337 22 86)
VARIABLES
! Nmero de pores de cada alimento que ira compor a dieta
comprar[alimento]
MODEL
! Obter a dieta de menor custo possvel
MIN Custo_total = SUM(alimento: preco*comprar)
SUBJECT TO
! A dieta deve satisfazer nveis minimos de cada nutriente
N_[nutriente] :SUM(alimento: quant*comprar) > nivel[nutriente]
END
Figura 3.4: Problema da Dieta na Sintaxe MPL

21

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

22

Recursos da Linguagem
Um vez denido um modelo, diversas aes podem ser executadas: anlise da estrutura do modelo, resoluo de um exemplar entre outras. Apesar do MPL facilitar
a interao entre um modelo e um sistema de resoluo, o MPL uma linguagem
para descrever, documentar e analisar um modelo de otimizao, no um sistema
para resolver problemas de otimizao. Na Seo 3.2 iremos descrever brevemente
alguns sistemas de resoluo que podem ser acionados via MPL.

Formatos mps e lp
Se a sintaxe do modelo estiver correta, possvel gerar o exemplar do modelo
associado aos dados denidos na seao DATA em diversos formatos: mps, lp, cplex,
lindo, entre outros. Este recurso importante, pois, alm de permitir que o exemplar
possa ser usado como dado de entrada em diversos sistemas de otimizao, permite
tambm que seja lido e entendido sem um conhecimento prvio da sintaxe de uma
determinada linguagem. A maioria das linguagens de modelagem possuem este
recurso. Para gerar o exemplar acione o comando RUN no menu principal, seguido
de GENERATE FILE, e escolha o formato desejado. As Figuras 3.5 e 3.6 mostram
o Exemplar (2.-1) nos formatos mps e lp.

23

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

NAME
ROWS
N
G
G
G
COLUMNS
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_FEIJAO
COMPRAR_FEIJAO
COMPRAR_FEIJAO
COMPRAR_FEIJAO
RHS
RHS1
RHS1
RHS1
ENDATA

DIETA

(MIN)

CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA

14
170
3
12
13
160
13
54
9
160
8
285
19
337
22
86

N_ENERGIA
N_PROTEINA
N_CALORIA

2000
65
800

Figura 3.5: Problema da dieta no formato mps

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

24

MINIMIZE Custo_total =
14 comprar_arroz + 13 comprar_ovos + 9 comprar_leite + 19 comprar_feijao
SUBJECT TO
N_energia:
170 comprar_arroz + 160 (comprar_ovos + comprar_leite)
+ 337 comprar_feijao >= 2000
N_proteina:
3 comprar_arroz + 13 comprar_ovos + 8 comprar_leite
+ 22 comprar_feijao >= 65
N_Caloria:
12 comprar_arroz + 54 comprar_ovos + 285 comprar_leite +
86 comprar_feijao >= 800
Figura 3.6: Problema da dieta no formato lp

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

25

O formato mps o formato mais usado para representar um exemplar de um


problema. Foi criado para unicar a comunicao de dados entre os diversos tipos
de sistemas de resoluo e facilitar a comunicao de dados na comunidade cientca. Possui um formato simples, mas tem algumas desvantagens: no possvel
identicar a estrutura do modelo e possui informaes redundantes. Dada a proliferao, nos ltimos anos, de linguagens de modelagem e sistemas de resoluo, o
formato mps perdeu um pouco do seu status de `formato padro' devido a pequenas diferenas nos arquivos mps gerados e manipulados pelos diversos sistemas [19].
Ainda assim, um formato bastante usado nas bibliotecas de problemas disponibilizadas na www. O formato lp o mais prximo da estrutura algbrica que usamos
normalmente para denir um problema de otimizao e tem sido usado por vrios
sistemas de modelagem.

Acionando o sistema de resoluo


Um outro recurso importante dos sistemas de modelagem a interface com sistemas
de resoluo. A maioria dos sistemas de modelagem esto acoplados a sistemas de
resoluo e/ou permitem que este acoplamento seja feito. O sistema MPL pode
ser acoplado a diversos sistemas de otimizao, por exemplo: Canopt, CPLEX,
FortMP [48]. Para fazer a conexo, acesse o comando OPTION no menu principal
seguido de SOLVER MENU e escolha o sistema desejado ou disponvel. Apenas
um sistema pode ser denido de cada vez. Se algum sistema de otimizao estiver
acoplado ao MPL, o exemplar pode ento ser resolvido atravs do comando RUN
seguido do SOLVE. Note que quando um sistema de resoluo est acoplado ao
sistema de modelagem no h necessidade de gerar o exemplar no formato mps ou
lp. O exemplar passado internamente para o sistema de resoluo no formato
adequado. Recentemente Fourer [19] fez uma proposta de padronizao da forma
de comunicao de dados entre os sistemas de modelagem e os sistemas de resoluo
que pode facilitar a deciso de adquirir um sistema ou mesmo o processo de desenvolvimento de ferramentas computacionais para otimizao (sistema de modelagem
e/ou resoluo).

Relatrio da soluo
Uma vez acionado o sistema de otimizao, o sistema MPL abre uma janela para
mostrar o andamento do processo de soluo. Isto detalhes sobre o exemplar
(nmero de linhas, colunas, elementos diferentes de zero, nmero de iteraes, entre
outros). Quando o processo de soluo se encerra possvel ver a soluo, caso haja,
atravs do comando VIEW. A apresentao da soluo pr-denida e o usurio
tem pouco controle sobre o formato do relatrio. A linguagem MPL possui diversos
outros comando e recursos que iremos apresentar medida que sejam necessrios.
Um tutorial sobre o uso da linguagem, mantido pelos proprietrios, est disponvel
em [34].

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

26

3.1.2 As linguagem XPRESS-MOSEL e AMPL


Nesta seo faremos uma breve introduo s linguagens de modelagem XPRESSMOSEL e AMPL. A sintaxe destas duas linguagens, apesar de bem distintas, possuem uma estrutura prxima das linguagens de programao estruturadas (C, PASCAL, FORTRAN90). Ambas permitem a insero de algoritmos que manipulam
as estruturas denidas para descrever o modelo, o que pode ser muito til quando
modelamos algumas classes de problemas de otimizao linear inteira (e.g. corte de
estoque, roteamento, dimensionamento de lotes). Possuem dois modos de uso, via
interface grca ou atravs de linhas de comando, e esto disponveis para vrias
plataformas. A linguagem XPRESS-MOSEL permite ainda que o modelo seja manipulado dentro de um cdigo escrito na linguagem C ou FORTRAN. Nesta seo
damos nfase sintaxe da linguagem para a descrio de um modelo.

Estrutura da linguagem XPRESS-MOSEL


A linguagem XPRESS-MOSEL2 pode ser vista como uma linguagem de modelagem
e como uma linguagem de programao pois possui comandos que facilitam a declarao e manipulao de um modelo matemtico (denio de variveis e restries)
bem como comandos para controle (seleo e loops) que permitem a codicao de
algoritmos e manipulao de sistemas de resoluo [11]. uma linguagem `procedural' e no declarativa, isto os comandos so compilados ao invs de interpretados.
Possui uma interface grca, XPRESS-IVE, com diversos recursos interessantes que
facilitam a utilizao do sistema XPRESS. Neste texto iremos nos ater na descrio da sintaxe da linguagem. Maiores informaes sobre o XPRESS-IVE pode ser
obtido em [11].
A estrutura da linguagem XPRESS-MOSEL resumida a seguir.
MODEL nome do modelo
Instrues para compilao
Denio de parmetros
Denio do modelo e/ou algoritmos
END-MODEL
O comando MODEL usado para nomear o modelo e determinar o incio da descrio do programa, o m do mesmo indicado atravs do comando END-MODEL. As
instrues para o compilador so fornecidas atravs do comando USES e OPTIONS,
e so optativos. A denio das estruturas para o armazenamento de dados e denio das variveis so iniciadas e nalizadas com os comandos DECLARATION
e END-DECLARATION, respectivamente. Estas denies so opcionais e podem
ser feitas em qualquer parte do cdigo. A denio do modelo e/ou algoritmo
2 Para fazer o Download da verso resumida (Free student version)ou licena academica gratuita
use o endereo http://www.dashoptimization.com (ltima vista em 13/06/2005).

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

27

feita atravs de comandos similares aos usados em linguagens de programao, com


algumas palavras chaves reservadas para manipulaes algbricas. Comentrios,
isto , trechos de texto a serem ignorados pelo compilador, so precedidos do ponto
de exclamao, !, ou escritos entre os smbolos (! !). Qualquer editor de texto que
gere arquivos livres de formatao (tipo .txt) pode ser usado para criar o arquivo.
O modelo da dieta (3.1) na sintaxe do XPRESS-MOSEL pode ser lido nas Figuras 3.7 e 3.8 a seguir. Todas as palavras reservadas para a linguagem, (e.g. ARRAY,
FORALL, SUM) esto escritas em letras maisculas.
{ Arquivo: dieta.mos
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
MODEL dieta
USES "mmxprs"! dene o sistema mmxprs para resolver o exemplar
DECLARATIONS
! denio dos ndices
alimento = {"arroz", "ovos", "leite", "feijao"};
nutriente = {"energia", "proteina", "Caloria"};
! denio das estruturas para receber dados do exemplar
! Custo de cada alimento a ser considerado na dieta
preco: ARRAY (alimento) OF REAL;
! Quantidade mnima total de cada nutriente na dieta;
nivel: ARRAY (nutriente) OF REAL;
(! Quantidade de nutrientes presente em cada tipo de alimento
considerado na dieta !)
quant: ARRAY (alimento,nutriente) OF REAL;
! denio das variveis de deciso
! Nmero de pores de cada alimento que ira compor a dieta
comprar: ARRAY (alimento) OF MPVAR;
END-DECLARATION
Figura 3.7: Problema da Dieta na Sintaxe XPRESS-MOSEL

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

28

! continuao do arquivo dieta.mos


! dados do exemplar
! Custo de cada alimento a ser considerado na dieta
preco := [14, 13, 9, 19];
! Quantidade mnima total de cada nutriente na dieta;
nivel := [ 2000, 65, 800];
( ! Quantidade de nutrientes presente em cada tipo de alimento considerado
na dieta ! )
quant := (170, 3, 12,
160, 13, 54,
160, 8, 285,
337, 22, 86)
! denio da funo-objetivo
Custo_total := SUM(j in alimento) preco(j)*comprar(j);
! denio das restries
! A dieta deve satisfazer nveis minimos de cada nutriente
FORALL(i in nutriente)
SUM(j in alimento) quant(j,i)*comprar(j) >= nivel(i);
! resolve o exemplar e critrio de otimizao
MINIMIZE (Custo_total)
! relatrio da soluo
WRITELN("Custo_total: ", GETOBJVAL)
WRITELN("Numero de pores a ser includa na dieta: ")
FORALL(j in alimento) WRITELN(j, ": ", GETSOL(comprar(j)))
END-MODEL
Figura 3.8: Problema da Dieta na Sintaxe XPRESS-MOSEL (cont. da Figura 3.7)

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

29

Note que apesar de manter a mesma estrutura que o MPL, a descrio do modelo
na sintaxe do XPRESS-MOSEL muito diferente. A denio das estruturas para
armazenamento de dados e variveis, precedidas do comando DECLARATIONS,
segue o padro das linguagens de programao. Os vetores e matrizes so denidos
pelo comando ARRAY seguido da denio do tipo que pode ser: real ( valor real
entre -1.7e+308 e 1.7e+308, integer (valor inteiro entre -214783648 e 2147483647)
e boolean (verdadeiro ou falso: resultado de uma expresso boleana ou lgica) e
MPVAR para denir as variveis do modelo. O comando END-DECLARATIONS
naliza esta seo do cdigo.
A descrio da funo-objetivo e das restries mais livre do que no MPL
e pode ser feita em qualquer local do cdigo. A funo-objetivo s identicada
como tal atravs do comando MINIMIZE (ou MAXIMIZE) que possui duas funes:
invocar o sistema de resoluo, denido atravs do comando USES, e denir o
critrio de otimizao. O comando FORALL foi usado para expandir o conjunto
de restries. Observe que a sintaxe para denio das restries bem diferente
da sintaxe do MPL. Alm do comando FORALL, necessrio denir para que
ndices a restrio ser expandida. No nosso exemplo para todo valor i do ndice
nutriente. Note tambm o uso do smbolo SUM. Na linguagem XPRESS-MOSEL o
usurio possui diversas formas de gerar o relatrio da soluo. Atravs dos comandos
GETOBJVAL e GETSOL possvel recuperar a soluo e escrev-la no formato
desejado atravs do comando WRITELN. A linguagem XPRESS-MOSEL possui
diversos outros comandos e recursos que iremos apresentar medida que sejam
necessrios. Uma descrio completa desta linguagem pode ser lida em [11].

Estrutura da linguagem AMPL


A linguagem AMPL3 possui uma sintaxe bem prxima da descrio algbrica dos
modelos de otimizao que estamos habituados a usar. Como o XPRESS-MOSEL,
o AMPL tambm uma linguagem procedural, isto os comandos so compilados
ao invs de interpretados. Possui uma interface grca para ambiente Windows,
porm com menos recursos do que as interfaces do MPL e do XPRESS-MOSEL.
O modelo criado em um arquivo tipo texto escrito de acordo com a sintaxe do
AMPL (nomemodelo.mod). Os dados do exemplar a ser resolvido so fornecidos
em um outro arquivo tipo texto (dadosmodelo.dat). O aplicativo AMPL ento
executado criando um ambiente prprio para receber comandos associados com a
compilao e resoluo do modelo. A forma de manipulao desta linguagem bem
prxima da forma de manipulao das linguagens de programao em geral, e pode
variar de um sistema operacional para outro. Ao invocar o aplicativo noprompt do
sistema operacional, o ambiente AMPL criado para receber os comandos necessrios. A seguir os comandos MODEL e DATA podem ser usados para compilar o
modelo e acessar os dados de um exemplar. Veja abaixo.

ampl: model nomemodelo.mod;


3 Uma
verso
resumida
pode
ser
obtida
gratuitamente
no
http://www.ampl.com/DOWNLOADS/index.html (ltima visita em 13/08/2005)

endereo

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

30

ampl: data dadosmodelo.dat;


ampl: option solver nome do sistema de resoluo;
ampl: show;
ampl: solve;
ampl: display nomevariavel ;
O comando option solver dene o sistema de resoluo que ser usado para resolver
o exemplar do modelo especicado em dadosmodelo.dat. O comando show exibe
as principais estruturas do modelo. Os comandos solve e display so usados para
resolver o exemplar e mostrar a soluo do mesmo, respectivamente.
O arquivo nomemodelo.mod contendo a descrio do modelo na sintaxe do
AMPL deve seguir a estrutura geral da linguagem composta dos comandos SET,
PARAM, VAR, MINIMIZE (ou MAXIMIZE) e SUBJECT TO. Diferente da sintaxe
do MPL, cada ndice, vetor, varivel ou restrio deve ser precedido do comando
que o dene. No MPL estes comandos abrem uma seo no cdigo onde todos as
denies so feitas. A estrutura geral para a descrio de um modelo dada a
seguir.

- SET
dene um ndice;

- PARAM
dene uma estrutura (vetor ou matriz) que ir armazenar os elementos conhecidos
do exemplar, fornecidos no arquivo nomemodelo.dat;

- VAR
dene variveis de deciso;

- MINIMIZE (ou MAXIMIZA)


dene a funo-objetivo e o critrio de otimizao;

- SUBJECT TO
dene um conjunto de restries.
O contedo do arquivo dieta.mod contendo o problema da dieta (3.1) na sintaxe
do AMPL mostrado na Figura 3.9 a seguir. Os comentrios so precedidos do
smbolo #, e todos os comandos devem nalizar com ponto e vrgula (;). Os dados
necessrios para gerar um exemplar (dieta.dat) pode ser visto na Figura 3.10.
A linguagem AMPL possui diversos outros comandos e recursos que sero apresentados a medida que forem necessrios. Mais detalhes sobre a sintaxe e recursos
desta linguagem podem ser obtidos em [18]. Na prxima seo iremos discutir
alguns sistemas de resoluo que podem ser acoplados s linguagens de modelagem.

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

#
#
#
#
#

#
#
#
#

Arquivo: dieta.mod
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes
Denio dos ndices
SET alimento;
SET nutriente;
Denio das estruturas para receber dados do exemplar
PARAM preco { alimento }
PARAM nivel { nutriente };
PARAM quant {nutriente, alimento };
Denio das variveis de deciso
VAR comprar { j in alimento } >=0;
denio da funo-objetivo
minimize custo_total: SUM { j in alimento } preco[j] * comprar[j];
A dieta deve satisfazer nveis minimos de cada nutriente
SUBJECT TO N_ { i in nutriente }:
SUM { j in alimento } quant[i,j] * comprar[j] >= nivel[i];
m arquivo dieta.mod
Figura 3.9: Problema da Dieta na Sintaxe AMPL

31

3.1. LINGUAGENS ALGBRICAS DE MODELAGEM

#
#
#
#

Arquivo: dieta.dat
Problema da Dieta:
Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes

# ndices
SET alimento := arroz ovos leite feijao;
SET nutriente := energia proteina caloria;
# Dados: Custo dos alimento
PARAM preco :=
arroz 14
ovos 13
leite 9
feijao 19;
# Dados: Nvel mnimo de nutrientes na dieta
PARAM nivel :=
energia 2000
proteina 65
caloria 800;
# Quantidade de nutirente presente em cada alimento
PARAM quant:
arroz ovos leite feijao :=
energia
170 80 130 100
proteina
3 6 6.1 6
caloria
12 25 232 28;
# m arquivo dieta.dat
Figura 3.10: Dados para o Problema da Dieta na Sintaxe AMPL

32

3.2. SISTEMAS DE RESOLUO

33

3.2 Sistemas de resoluo


Para validar um modelo de otimizao necessrio analisar se a soluo obtida
fornece uma resposta adequada. Existem diversos sistemas computacionais comerciais e de pesquisa desenvolvidos para este m. Uma reviso sobre sistemas nocomerciais pode ser encontrada em [30], e sistemas comerciais em [5] e [48]. Neste
texto iremos utilizar dois sistemas: CPLEX [27] e o XPRESS-MP [11] . Estes dois
sistemas esto disponveis (em verses resumidas) via www, e podem ser acoplados
s linguagens de modelagem descritas na Seo 3.1.
Alm da verso standalone, os dois sistemas possuem biblioteca de subrotinas de
apoio (entradas de dados, manipulao de dados, otimizao, etc.) que permitem
ao usurio desenvolver tcnicas de resoluo sem a necessidade de codicar uma
grande quantidade de subrotinas, tornando o processo de testar novos algoritmos
mais gil e robusto. Estes dois sistemas tem sido usados na literatura como padro
de referncia para a anlise comparativa de novas tcnicas de soluo de problemas
de otimizao linear e linear inteira.
Os dois sistemas contm implementaes dos principais algoritmos de soluo
para problemas de otimizao linear: mtodo simplex revisado (e.g. [21] e [6]) e
mtodos de ponto interior (e.g. [57] e [22]); e problemas de otimizao linear inteira:
planos de corte, branch and bound e branch and cut (e.g. [58], [45], [21]). Apesar
de apresentarem desempenhos distintos, possuem recursos que permitem ajustar o
desempenho dos algoritmos de acordo com o tipo do problema.
Neste texto, usaremos estes sistemas mantendo os parmetros padres sugeridos
pelos proprietrios. No entanto, chamamos a ateno de que nem sempre esses so
os mais adequados. Uma vez concludo o processo de validao de um modelo de otimizao, necessrio testar as diversas alternativas que os sistemas disponibilizam
para determinar o conjunto de parmetros que melhor se comportam na resoluo
do problema. Esta sugesto particularmente til quando o modelo de otimizao
inclui variveis inteiras ou binrias. Alm disso, quando o modelo construdo possui
uma estrutura especial (e.g. problema do transporte, da designao, de dimensionamento de lotes, da mochila, do caixeiro viajante, sequenciamento de tarefas [21],
[58]) recomendvel desenvolver e implementar algoritmos que explorem esta estrutura. Nestes casos a soluo fornecida pelos modelos de otimizao servem de
parmetro para avaliar a qualidade das solues obtidas por outros mtodos.
No nos preocupamos aqui em explicar a forma de operao dos aplicativos
CPLEX e XPRESS-MP pois eles sero acionados e controlados atravs das linguagens de modelagem. Mais informaes sobre estes sistemas e os mtodos de soluo
que empregam podem ser obtidas nas referncias citadas ao longo desta seo.

Captulo 4

Aplicaes de Otimizao
Linear
vasto o campo de aplicaes da otimizao linear. Esta classe de modelos tm
sido usada para representar problemas em reas to distintas quanto nanas [51] e
medicina ([39],[32]). Williams [56] apresenta uma descrio resumida de um amplo
espectro de aplicaes com estudos de casos que incluem, entre outros, problemas na
indstria petrolfera, problemas de distribuio e de manufatura. Caixeta-Filho [9]
apresenta algumas aplicaes no setor agroindustrial. Uma bibliograa comentada
de artigos sobre formulaes de modelos de otimizao linear que cobre o perodo
entre 1939 e 1979 pode ser encontrada em [38]. um banco de dados em construo (mantido online ) e artigos mais recentes esto sendo includos gradativamente.
Murphy [39] observa que atravs destas aplicaes possvel analisar a evoluo das
estruturas usadas para representar determinadas situaes prticas. Sistematizando
o processo de construo de modelos usado por estes autores possvel estabelecer alguns princpios que permitem o desenvolvimento de modelos ecientes. Neste
captulo ilustramos alguns destes princpios atravs da discusso de modelos para
problemas clssicos que podem ser usados isoladamente, mas que tambm aparecem
como sub-modelos na representao de situaes mais complexas.

4.1 Planejamento da produo


Considere um consrcio de empresas do ramo madeireiro. Este consrcio opera,
entre outros negcios, reservas orestais para extrao de madeira ecolgica, serrarias, fbricas de mveis e de papel, e grcas. A operao destas empresas envolve
decises de natureza muito variada: contratao de pessoal, distribuio da madeira extrada nas reservas para as serrarias, novos investimentos, planejamento da
produo, entre outras. Englobar todas estas decises em nico modelo pode se
tornar uma tarefa rdua e ineciente. Ao invs disto, vamos simplicar o problema,
modelando separadamente algumas decises a serem tomadas pelos administradores

4.1. PLANEJAMENTO DA PRODUO

35

do consrcio.
Vamos iniciar nosso estudo modelando um problema muito simples adaptado de
um execcio proposto em [55].

Exemplo 4.1 O Presidente, Antnio Castor, da Companhia Ramos de Carvalho

quer utilizar do melhor modo possvel os recursos de madeira em uma de suas reservas orestais. Dentro desta regio, h uma serraria e uma fbrica de compensados,
isto , as toras podem ser convertidas em madeira beneciada ou compensado. Produzir uma mistura de produto beneciado requer 1 metro cbico de pinho e 4 metros
cbicos de canela. Produzir 100 metros quadrados de madeira compensada requer 2
metros cbicos de pinho e 4 metros cbicos de canela. Esta regio tem disponvel no
momento 32 metros cbicos de pinho e 72 metros cbicos de canela. Compromissos
de venda exigem que sejam produzidos pelo menos 5 metros cbicos de madeira beneciada e 1200 metros quadrados de madeira compensada. As contribuies ao lucro
so 45 u.m. (unidades monetrias) por 1 metro cbico de produtos beneciados e
60 u.m. por 100 metros quadrados de compensado.
Seguindo a estrutura usada para obter o modelo para o problema da dieta no
Captulo 2 vamos identicar no enunciado do Exemplo 4.1 os elementos conhecidos,
os elementos desconhecidos, o objetivo e as restries do problema.

Elementos conhecidos
- lucro associado aos produtos;
- quantidade necessria de cada tipo de insumo para a produo de cada item
- quantidade de insumo disponvel.
Elementos desconhecidos
- quanto produzir de cada item.
Objetivo a ser alcanado
- obter o maior lucro possvel.
Restries
- quantidade de insumos limitada
- compromissos de venda.
O modelo de otimizao linear pode ser construdo denindo os ndices j para representar o tipo de produto (madeira beneciada, compensado) ei para representar
o tipo de insumo (canela, pinho). Estes ndices sero usados para denir os demais
elementos do modelo.

ndices

36

4.1. PLANEJAMENTO DA PRODUO

j = 1, . . . , 2 representa respectivamente os produtos: madeira beneciada, compensado;


i = 1, . . . , 2 representa respectivamente os insumos: canela, pinho.

Variveis de deciso
Precisamos decidir quanto produzir de cada item.
x1 : quantidade de madeira beneciada produzida (em m3 )
x2 : quantidade de compensado produzido em (100m2 )

Note que necessrio denir uma unidade de medida para cada uma das variveis
j que os produtos so medidos em unidades diferentes.
O critrio para a tomada de deciso maximizar o lucro obtido com a venda dos
produtos. O retorno associado a cada produto conhecido. Assim, se vendermos
1 m3 de madeira beneciada teremos um lucro de 45. Supondo vlido o axioma
de proporcionalidade temos que se a venda for duplicada, o lucro dobra. De uma
maneira geral, se vendermos x1 m3 , o lucro associado ser de 45x1 . Similarmente,
o lucro associado a venda de compensado pode ser calculado como: 60x2 . Usando o
axioma de aditividade temos que o lucro total associado venda dos dois produtos
45x1 + 60x2 . Como queremos obter o maior lucro possvel, temos:

funo-objetivo
Maximizar o lucro total:
max z = 45x1 + 60x2
A quantidade de recursos limitada. Sabemos que a quantidade total de pinho
utilizada para a produo dos dois items no pode exceder os 32 m3 disponveis.
Lendo o enunciado do Exemplo 4.1 temos que so necessrios 1 3 de pinho para
m
a produo de 1m3 de madeira beneciada e 2 m3 para produo de 100m2 de
compensado. Usando os axiomas de proporcionalidade e aditividade e estendendo
o raciocnio para o uso de canela temos o seguinte conjunto de restries:

Restries relativas disponibilidade de insumos


- Pinho:
x1 + 2x2 32

(4.0)

4x1 + 4x2 72.

(4.0)

- Canela:

Compromissos de venda determinam uma quantidade mnima a ser produzida de


cada um dos items. Temos ento um segundo conjunto de restries.

4.1. PLANEJAMENTO DA PRODUO

37

Restries relativas produo mnima


- Madeira beneciada:
x1 5

- Compensado:
x2 12

Observe que a varivel x2 foi denida em 100m2 , por isso usamos um limite inferior de 12 para a produo de compensado. O modelo de otimizao linear que
representa o problema pode ser resumido na Expresso 4.1 abaixo.
min
z = 45x1 + 60x2
sujeito a
x1 + 2x2 32
4x1 + 4x2 72
x1 5, x2 12.

(4.-2)

O Modelo (4.1) envolve apenas duas variveis e pode ser resolvido facilmente pelo
mtodo grco ou manualmente pelo mtodo simplex (e.g. [21], [6]). Note que
sua estrutura muito similar ao modelo do problema da dieta (2.-1). De fato se
considerarmos que temos n produtos, m insumos, o Modelo 4.1 pode ser generalizado
e escrito como:
max
sujeito a

z = c1 x1 + c2 x2 + . . . + cn xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.

(4.-6)

am1 x1 + am2 x2 + . . . + amn xn bm


xj uj

onde: aij representa a quantidade de insumo i usada na produo do item j , cj


e uj so o lucro e a demanda mnima do item j , e bi a quantidade de insumo i
disponvel.

4.1.1 Planejamento Multi-perodo


A resposta do Modelo 4.1 fornece uma sugesto para o planejamento considerando
um nico perodo. Seria interessante analisar como seria a produo se o planejamento for feito considerando um horizonte maior, por exemplo planejar a produo
para os meses de janeiro, fevereiro, maro e abril. Neste caso vamos supor que
conhecida uma previso para a venda dos produtos e para a disponibilidade de

4.1. PLANEJAMENTO DA PRODUO

38

insumos em cada um desses meses (ver Tabelas 4.1 e 4.2). possvel fazer estoque
de um ms para o outro e, ento, a demanda do ms de maro pode ser atendida,
por exemplo, com produtos fabricados anteriormente (em janeiro ou fevereiro). O
custo mensal para manter cada um dos produtos em estoque de 4 u.m. para cada
m3 de madeira beneciada e 3.5 u.m. para cada 100 m2 de compensado.
Tabela 4.1: Previso de Vendas Mensal
Produto
Ms
Janeiro Fevereiro Maro Abril
M. beneciada
43
0
100
53
Compensado
45
100
0
72

Tabela 4.2: Disponibilidade de insumos mensal


Insumo
Ms
Janeiro Fevereiro Maro Abril
Pinho
32
32
20
32
Canela
72
80
40
72
Para adaptar o Modelo (4.1) de forma a reetir esta nova situao vamos precisar de novas classes de restries que tambm podero ser teis em outros contextos. Observe inicialmente que temos um novo conjunto de decises a tomar. No
queremos apenas decidir quanto produzir de cada item. Precisamos denir tambm
quando produzir. Assim de duas passamos a ter oito variveis (dois produtos x quatro perodos). Poderamos simplesmente ampliar o ndice j = 1, 2 para j = 1, . . . , 8
e por exemplo denir x3 como sendo o nmero de m3 de madeira beneciada produzida em fevereiro. No entanto mais natural se mantivermos o ndice j como
denido anteriormente e criamos um novo ndice para representar o perodo. Assim
temos:

Novo ndice
t = 1, . . . , 4 representa os respectivamente os meses: Janeiro, Fevereiro, Maro e
Abril.

Redenio da varivel produo


- quanto e quando produzir de cada item em cada ms
xjt : quantidade do item j produzida no ms t.

O critrio de otimizao tambm precisa ser reavaliado. Na denio anterior consideramos que tudo o que estava sendo produzido seria vendido. Esta suposio no
adequada pois parte da produo em um perodo pode ser armazenada e vendida
no perodo seguinte. Precisamos de dois novos conjuntos de variveis.

Novas variveis de deciso

39

4.1. PLANEJAMENTO DA PRODUO

- Quanto e quando estocar de cada item em cada ms:


yjt : quantidade do item j em estoque no nal do ms t;

- Quanto e quando vender de cada item em cada ms:


sjt : quantidade do item j vendido no ms t.

o lucro associado venda dos produtos ser dado pela diferena entre o valor total
obtido com a venda dos produtos e o custo total de armazenamento.

Redenio da funo-objetivo
- Retorno total associado venda dos produtos:
2

T otalvendas =

pj sjt

j=1 t=1

- Custo total associado ao armazenamento dos produtos


2

T otalestoque =

cj yjt

j=1 t=1

- Objetivo: maximizar Lucro total


max Lucro = T otalvendas T otalestoque

onde pj e cj so o preo de venda e o custo de estoque do produto j respectivamente.


Note que estamos supondo que estes valores no mudam ao longo do horizonte de
planejamento. O conjunto de restries tambm precisa ser redenido. A disponibilidade de insumos varia de ms a ms. Fazendo bit a disponibilidade do insumo i
no ms t as Restries (4.1) e (4.1) podem ser redenidas como:

Redenio das restries relativas disponibilidade de insumo


- Pinho:
x1 + 2x2 b1t ,

t = 1, . . . , 4

(4.-11)

4x1 + 4x2 b2t ,

t = 1, . . . , 4

(4.-11)

- Canela:

40

4.1. PLANEJAMENTO DA PRODUO

Note que as restries em (4.1.1) representam o conjunto das quatro restries, uma
para cada valor de t, relativas disponibilidade de pinho em cada ms. Juntas as
Restries (4.1.1) e (4.1.1) representam oito restries. Esta forma compacta de
representao muito til, pois facilita a leitura e compreenso do modelo matemtico. Antes de prosseguirmos, vamos avaliar o modelo que construmos at agora.
Resumindo as informaes acima temos:
2

min

Lucro =

pj sjt
j=1 t=1

cj yjt
j=1 t=1

sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
xjt 0, sjt 0, yjt 0, j = 1, 2; t = 1, . . . , 4.

(4.-13)

De acordo com a funo-objetivo do Modelo (4.-10) queremos obter o maior valor


possvel para a diferena entre o retorno das vendas e o custo do armazenamento. O
conjunto de restries est nos dizendo apenas que as variveis de venda e estoque
devem ser no-negativas. Ora, o lucro mximo ser obtido atribuindo valor zero
(limite inferior das variveis) para as variveis de estoque, yjt , e valor innito para
as variveis de venda sjt . Mas obter lucro innito no realista. De fato, se
tentarmos resolver o modelo acima obteremos a resposta que o lucro ser tanto
maior quanto for o valor atribudo s variveis de venda, isto o Problema (4.-10)
ilimitado. Em geral, apesar de matematicamente correto, encontrar a resposta de
que um problema de otimizao ilimitado (ou mesmo invivel), em geral, indica
um modelo mal formulado [56]. No nosso caso, necessrio analisar que:
1. no h limite para as vendas;
2. as variveis de produo, venda e estoque no esto relacionadas, faltam restries de acoplamento entre as variveis.
Estas duas observaes sugerem que precisamos rever o conjunto de restries. Na
Tabela 4.1 foi fornecida uma previso para as vendas de cada produto em cada ms.
Podemos pensar nestes valores como limite superior para as variveissjt . Este novo
conjunto de restries torna o problema limitado, e a soluo tima ser obtida atribuindo o limite superior para as variveis de venda. Por exemplo, no ms de janeiro
sero vendidos 43m3 de madeira beneciada e 45m2 de compensado. Mas note que
no temos insumo suciente (pinho) para produzir esta quantidade de produtos. Ou
seja, as vendas esto limitadas pela capacidade de produo, no podemos vender
mais do que podemos produzir1 . Observe na Tabela 4.1 que a previso de vendas,
djt , indica que no h demanda por madeira beneciada no ms de fevereiro, mas
ela alta no ms de maro. Talvez seja interessante produzir madeira beneciada
em fevereiro, armazenar e vender em maro. O mesmo raciocnio pode ser estendido
1 Em algumas situaes pode-se supor que pedidos em atraso (
backorders), venda de produtos
produzidos em perodos posteriores ao considerado, so viveis [16].

41

4.1. PLANEJAMENTO DA PRODUO

para os demais perodos. Assim, a quantidade produzida em um perodo t somado


quantidade em estoque no nal do perodo anterior ( 1) deve ser menor ou
t
igual quantidade de produto vendido. O que sobrar no nal do perodo t ser
armazenado. Lembrando que y1t a quantidade de produtos em estoque no nal
do perodo t podemos representar a restrio de balanceamento relativa madeira
beneciada como:

Novas restries: balanceamento


- Madeira Beneciada
y1t1 + x1t = s1t + y1t ,

t = 1, . . . , 4

(4.-14)

y2t1 + x2t = s2t + y2t ,

t = 1, . . . , 4

(4.-14)

Similarmente, temos:

- Compensado

Este conjunto de restries bastante comum em planejamento multi-perodo e


aparece com freqncia na modelagem de diversos problemas. So chamadas de
restries de balanceamento entre produo e estoque, ou simplesmente restries de
balanceamento.
Naturalmente, surge a dvida sobre o signicado da varivel y1t1 quando o
ms de janeiro, t = 1, considerado. Apesar de denida implicitamente, a varivel y1,0 representa a quantidade de madeira beneciada em estoque no perodo
imediatamente anterior ao incio do perodo considerado no planejamento. Em geral necessrio atribuir um valor para esta varivel. Isto , ela considerada um
elemento conhecido do problema. O modelo para o planejamento multi-perodo
ento dado por:
2

min

Lucro =

pj sjt
j=1 t=1

cj yjt
j=1 t=1

sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
yjt1 + xjt = sjt + yjt ,
j = 1, 2; t = 1, . . . , 4
xjt 0, sjt djt , yjt 0.

(4.-16)

O Modelo (4.-13) possui trs tipos de variveis (produo, venda e estoque ) e dois
tipos de restries (capacidade e balanceamento) totalizando 24 variveis e 16 restries (desconsiderando o limite superior para as variveis de venda). Este nmero

4.1. PLANEJAMENTO DA PRODUO

42

de variveis e restries sugere o uso de uma linguagem algbrica de modelagem


para facilitar o trabalho de avaliao deste modelo. Vamos apresentar a seguir o
processo de descrio do modelo na sintaxe do MPL (ver Seo 3.1.1) e mostrar um
pouco mais dos recursos que esta linguagem oferece.

4.1.2 Modelo na sintaxe do MPL


Exceto pelas restries de balanceamento, o Modelo (4.-13) similar ao modelo
do problema da dieta. Naturalmente os nomes atribudos aos ndices, vetores e
matrizes devem ser diferentes para reetir que temos uma nova aplicao. Vamos
utilizar novos recursos da linguagem. O primeiro a abreviao dos nomes usados
para os ndices, variveis e restries. Isto feito da seguinte forma:
INDEX
produto := (Madeira_Beneciada, Compensado) > (MB MC)
assim, usamos no modelo o nome estendido, mas ao gerar o exemplar em um formato
especco, o comando > far com que o sistema use os nomes abreviados, MB
no lugar de Madeira_Beneciada e MC no lugar de Compensado. Isto pode ser
til porque alguns sistemas de resoluo limitam o nmero de caracteres usados no
nome de uma varivel.
Outro recurso til a possibilidade de ler os dados do problema em um arquivo
de dados, ao invs de digita-los diretamente no arquivo do modelo. O uso destes
arquivos facilita a resoluo do problema para diversos cenrios. A leitura dos dados
em arquivo externo ser feita atravs do comando DATAFILE. Veja na Figura 4.1
a descrio do Modelo (4.-13) na sintaxe do MPL. Observe a incluso da seo
BOUNDS para denir o limite superior para a varivel sjt . O uso do comando
MACROS permite manipular os dados no clculo de expresses matemticas. Note
que a denio de Totalvendas e Totalestoque na seo MACROS permite uma
denio mais clara da funo-objetivo. Esta denio permite que junto com a
soluo tenhamos tambm o valor total arrecadado com as vendas e o valor gasto
com os produtos mantidos em estoque.

4.1. PLANEJAMENTO DA PRODUO

43

{ Arquivo: Plan_mad_mult.mpl Planejamento da produo multi-periodo }


TITLE Mad_mult;
INDEX
produto := (Madeira_Beneciada, Compensado) -> (MB MC)
mes := (janeiro, fevereiro, maro, abril) -> (jan fev mar abr)
insumo := (pinho, canela) -> (pin ca)
DATA
!Preo de venda de cada produto
Preo[produto]:= DATAFILE (preco_mad.dat);
!Previso de venda de cada produto em cada mes
Demanda[produto,mes] := DATAFILE (max_mad.dat);
!quantidade de insumo necessaria para produzir cada tipo de madeira
recurso[produto, insumo] := DATAFILE(recurs_mad.dat)
!disponibilidade de insumo
Disp[insumo,mes] := DATAFILE (dispon_mad_mult.dat);
!custo de armazenamento
Custoest[produto] := DATAFILE (cest_mad.dat);
VARIABLES
x[produto,mes] ; ! quantidade produzida
s[produto,mes] ; !quantidade vendida
y[produto,mes] ; !quantidade estocada
MACROS
Totalvendas := SUM(produto,mes: Preo * s);
Totalestoque := SUM(produto,mes: Custoest * y);
MODEL
!Maximizar o lucro total
MAX Lucro = Totalvendas - Totalestoque;
SUBJECT TO
!restries de capacidade
Cap[insumo,mes] : Sum(produto: recurso*x) <= Disp;
!restries de capacidade
Bal[produto, mes] : y[mes-1] + x = s + y;
BOUNDS
s <= Demanda; !Limite mximo para as vendas
END
Figura 4.1: Planejamento da produo muti-perodo - Sintaxe MPL

4.1. PLANEJAMENTO DA PRODUO

44

Para resolver o exemplar denido na seo DATA, acione o aplicativo CPLEX


(Seo 3.2) atravs dos comandos RUN, Solve CPLEX do menu principal do MPL.
Na Figura 4.2 temos o relatrio parcial da soluo com estatsticas do modelo e do
processo de soluo. So fornecidas informaes sobre o tempo usado para processar
o modelo e envi-lo ao CPLEX (parsing time), tempo de resoluo e o numero de
iteraes para obter a soluo tima. O valor da funo-objetivo e das variveis so
mostrados na Figura 4.3.
MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.

MODEL STATISTICS
Problem name: Mad_mult
Filename: Plan_mad_mult.mpl Date: May 26, 2005 Time: 21:58
Parsing time: 0.05 sec
Solver: CPLEX Objective value: 3653.00000000
Iterations: 8 Solution time: 0.05 sec
Constraints: 16 Variables: 24 Nonzeros: 46
Density: 12
Figura 4.2: Relatrio da soluo

45

4.1. PLANEJAMENTO DA PRODUO

SOLUTION RESULT
Optimal solution found
MAX Lucro =
MACROS
Macro Name

Totalvendas
Totalestoque


Values

3720.0000
67.0000


DECISION VARIABLES
VARIABLE x[produto,mes] :
produto
Madeira_Beneciada
Madeira_Beneciada
Madeira_Beneciada
Compensado
Compensado
Compensado
Compensado


mes

janeiro
fevereiro
abril
janeiro
fevereiro
maro
abril
-

Activity

4.0000
8.0000
4.0000
14.0000
12.0000
10.0000
14.0000


VARIABLE s[produto,mes] :
produto

Madeira_Beneciada
Madeira_Beneciada
Madeira_Beneciada
Compensado
Compensado
Compensado


mes
janeiro
maro
abril
janeiro
fevereiro
abril
-

Activity

4.0000
8.0000
4.0000
14.0000
12.0000
24.0000


VARIABLE y[produto,mes] :
produto

Madeira_Beneciada
Compensado


mes

fevereiro
maro
-

Activity
8.0000
10.0000


3653.0000

Figura 4.3: Relatrio da soluo (cont. da Figura 4.2)

4.1. PLANEJAMENTO DA PRODUO

46

As informaes contidas nas Figuras 4.2 e 4.3 constam de um nico arquivo


(Plan_mad_mult.sol) gerado automaticamente pelo aplicativo MPL. Observe que
de fato, para um melhor aproveitamento dos recursos visando o lucro, a sugesto
produzir e estocar madeira beneciada em fevereiro, quando a previso de vendas
zero, para venda no perodo seguinte, quando a demanda alta e a disponibilidade
de insumos insuciente.
Na manufatura de alguns tipos de produtos, muitas vezes as mquinas precisam
de algum tipo de preparo antes que alguns items sejam produzidos. A este preparo
pode estar associados um custo e um tempo de preparao. Em alguns setores,
o tempo e o custo de preparo so dependentes da sequncia em que os items so
produzidos. Para controlar a produo nestes casos necessrio o uso de variveis
binrias , tema do prximo captulo.

Captulo 5

Aplicaes de Otimizao
Linear Inteira
Enquanto problemas de otimizao linear contnuo com algumas centenas de variveis e restries podem ser resolvidos facilmente, a resoluo de algumas classes de
problemas de otimizao linear inteira no possuem este comportamento. Existe a
possibilidade de construir um modelo de otimizao linear inteira (ou inteira mista)
e descobrir rapidamente o grau de diculdade da sua resoluo. De fato, uma `boa'
formulao do problema pode ser de crucial importncia para a ecincia do processo de soluo [41]. Contrastando com os problemas de otimizao linear contnuo,
no se sabe se existem ou no algoritmos polinomiais para resolver muitas classes
de problemas de otimizao linear inteira. Quando se usa esta classe de modelos
importante se ter em mente o grau de diculdade associado sua soluo. Um
estudo detalhado sobre a classicao de problemas de otimizao inteira quanto ao
grau de diculdade de sua soluo (complexidade computacional) pode ser visto em
[20] e [10]. Saber que um problema classicado como NP-difcil (
NP-Hard [20])
importante porque permite ao usurio entender que a resoluo de alguns exemplares ser difcil independentemente do algoritmo usado. No entanto, isto no quer
dizer que exemplares de grande porte no possam ser resolvidos em um tempo computacional aceitvel. Mesmo que a soluo tima no seja encontrada, possvel
obter boas solues viveis e mostrar quo prximo da soluo tima podem estar.
Algoritmos ecientes para a soluo de problemas envolvendo variveis inteiras
so baseados em tcnicas de enumerao implcita e combinam vrios mtodos de
soluo. A maioria dos algoritmos empregam a tcnica de relaxao e clculo de
limitantes ([41], [45]) . Considere o problema de otimizao inteira (1.-3) denido
no Captulo 1. A idia substituir o problema inteiro por um problema mais fcil
(relaxao) que pode ser usado para obter um limite inferior (limite dual [58]) para
o valor timo da funo objetivo. Se a soluo associada for vivel, o problema
original esta resolvido. Caso contrrio a relaxao renada iterativamente para
obter limites melhores. Solues viveis fornecem limites superiores (limite primal

48

5.1. O PROBLEMA DA MOCHILA

[58]) para o valor timo da funo objetivo. Bons limites superiores podem ser
obtidos, por exemplo, atravs de algoritmos heursticos [10].
Um problema inteiro pode ser relaxado de vrias formas [58]. A relaxao linear,
obtida substituindo a restrio xj Z por xj , conveniente para a maioria das
aplicaes e a base dos algoritmos implementados nos sistemas de resoluo de uso
geral (ver Seo 3.2). Neste texto, iremos considerar que um modelo de otimizao
inteira uma `boa' formulao para uma aplicao se o limite inferior fornecido pela
relaxao linear associada for bom. Isto , se RLP1 e RLP2 representam o limite
inferior de duas relaxaes diferentes e tivermos que:
RLP1 RLP2 Z

diremos que a formulao associada a RLP2 a melhor das duas. Um modelo


de otimizao inteira pode ser reformulado de forma a fornecer bons limitantes
inferiores atravs da incluso de inequaes vlidas (planos de corte). Uma excelente
discusso sobre a reformulao automtica de modelos de otimizao inteira e outros
mtodos de soluo pode ser encontrada em [58] e [47]. Este e outros mtodos de
soluo para problemas de otimizao inteira tambm so apresentados em [21],
[45], [41].

5.1 O problema da mochila


Vamos continuar discutindo as diversas decises associadas administrao do consrcio de empresas do ramo madeireiro apresentado na Seo 4.1 e ver como estas
decises podem ser estudadas atravs de modelos de otimizao para problemas
clssicos.

Exemplo 5.1 Seleo de Projetos - A companhia Ramos de Carvalho esta plane-

jando seus investimento para o prximo ano. Existem 3 projetos prioritrios, e o


capital disponvel de 10 milhes de u.m.. O investimento necessrio e retorno
associado a cada projeto esta descrito na Tabela 5.1 abaixo. No possvel fazer
investimento parcial em um dado projeto. Em que projetos deve ser investido o
capital disponvel?
Projeto
Investimento
retorno

P1
3
40

P2
5
10

P3
4
10

Tabela 5.1: Investimento e Retorno (em milhes de u.m.)


O enunciado deste problema muito simples e podemos denir rapidamente qual
a deciso a ser tomada. Considerando que o investimento no pode ser parcial, a
deciso a ser tomada se investimos ou no em um determinado projeto. Decises
do tipo sim ou no so facilmente modeladas se introduzirmos variveis binrias no
modelo. Isto , variveis que podem assumir apenas dois valores: 0 ou 1. Denindo:

49

5.1. O PROBLEMA DA MOCHILA

ndice
j = 1, 2, 3 para representar respectivamente os projetos P1, P2 e P3;

podemos representar a deciso a ser tomada como:

Varivel de deciso
xj =

1, se o projeto j for selecionado


0, caso contrrio;

neste caso, deixamos de lado o axioma de divisibilidade usado nos captulos anteriores para construir modelos de otimizao linear. O modelo que iremos construir
ser um modelo de otimizao linear inteira, mais especicamente um modelo de
otimizao 0/1, ou otimizao binria. Os demais axiomas proporcionalidade e
aditividade sero usados para obtermos modelos lineares.
O critrio para a tomada de deciso maximizar o retorno total obtido com o
investimento. Usando o axioma da aditividade e os dados da Tabela 5.1 podemos
construir a seguinte funo objetivo:

Funo Objetivo
max z= 40x1 + 10x2 + 10x3 .
Naturalmente, se investirmos em todos os projetos teremos um lucro maior que
se investirmos apenas em alguns. O capital disponvel para os investimentos no
suciente para investir em todos os projetos. Temos uma nica restrio de
capacidade, o valor total investido deve ser menor ou igual ao capital disponvel.
Obtemos assim o seguinte modelo de otimizao binrio para o problema de seleo
de projetos:
max
z = 40x1 + 10x2 + 10x3
sujeito a
3x1 + 5x2 + 4x3 10
xj = 0 ou 1

(5.-2)

Este exemplar pode ser facilmente resolvido se avaliarmos o valor de z para cada
uma dos oito possveis valores para o vetor x. No entanto, se aumentarmos a dimenso do exemplar e considerarmos que existem n projetos , teremos 2n possveis
solues. Este nmero cresce exponencialmente quando o valor de n cresce, e portanto mtodos mais ecientes so necessrios para resolv-lo.
O modelo usado para representar a situao descrita no Exemplo 5.1 tambm
utilizado para representar um problema de otimizao combinatria conhecido como
O Problema da Mochila (Knapsack Problem). O enunciado clssico supe que
existem n items, cada um com peso, aj , e valor, pj , conhecidos. Deseja-se selecionar
um subconjunto destes items para colocar em uma mochila que suporta um peso
mximo, C , de forma que a soma dos valores dos items selecionados seja a maior

50

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

possvel. O modelo matemtico que descreve este problema e que generaliza o


Modelo (5.0) :
n

max z =

pj xj
j=1

sujeito a
n

aj xj C

(5.-4)

j=1

xj = 0 ou 1.

Em (5.-2) consideramos que no existem dois items com o mesmo par de valor e
peso. Se existem vrios items do mesmo tipo, temos a deciso de quantos de cada
tipo devem ser includos na mochila. A varivel de deciso passa a ser xj Z e
obtemos o Problema da mochila Inteiro.
Este problema possui um relacionamento muito grande com diversos outros problemas de otimizao inteira . Sua importncia se deve fortemente ao fato que alm
de modelar diversas situaes, aparece como subproblema na formulao e soluo
de diversos outros problemas, por exemplo problemas de corte e empacotamento [3],
e na gerao de planos de corte (inequaes de cobertura [58] e [45]). Sua estrutura
especial permite que diversas classes de algoritmos sejam explorados na busca de
um processo eciente para resolv-lo. Maiores detalhes sobre a modelagem e soluo
do problema da mochila e problemas relacionados podem ser encontrados em [33] e
[21] entre outros.

5.2 O Problema do Caixeiro Viajante


O problema do Caixeiro Viajante talvez um dos problemas de otimizao combinatria mais estudados na literatura. Possui um enunciado muito simples, mas, um
processo de soluo complexo. Vejamos como este problema pode estar relacionado
s decises do consrcio de empresas que estamos estudando.

Exemplo 5.2 O Presidente, Antnio Castor, da Companhia Ramos de Carvalho

quer fazer uma visita s reservas orestais situadas nos estados do Amazonas e
Par, aos depsitos situados nos estados de So Paulo, Bahia, Minas Gerais e Rio
de Janeiro. possvel determinar um roteiro de viagem tal que cada reserva e
cada depsito sejam visitados exatamente uma vez, saindo e retornando sede da
empresa no Rio de Janeiro, e que minimize a distncia total percorrida?
A situao do Exemplo 5.2 pode ser representada atravs de um grafo valorado [50]
G(V, A) onde o conjunto de vrtices, V , representa as capitais dos estados onde
esto situadas as reservas e os depsitos, e o conjunto de arestas, A, representa a
possibilidade de se viajar de uma cidade a outra (ver Figura5.1). O peso de uma
aresta entre duas cidades igual ao custo da viagem entre elas. Em termos de

51

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

Figura 5.1: Cidades a serem visitadas

1
Teoria dos Grafos, a soluo deste problema consiste em determinar o circuito que
inclua todos os vrtices do grafo, um circuito hamiltoniano, de menor custo. O
custo de um circuito igual soma dos pesos das aresta includas. Para modelar o
problema vamos denir:

ndice
i, j = 1, . . . , 6 para representar as cidades Rio de Janeiro , So Paulo, Goinia,
Manaus, Belm e Salvador respectivamente.

Note que os ndices i e j representam o mesmo conjunto de cidades. Vamos usar


uma varivel binria para denir se a cidade i precede ou no a cidade j no roteiro.
Isto :

Varivel de deciso
xij =

1, se a cidade i visitada antes da cidade j


0, caso contrrio;

A varivel xii no tem nenhum signicado nesta aplicao, portanto s h variveis


quando i = j . O critrio para a tomada de decises est claramente denido, obter
o circuito hamiltoniano de menor custo. Seja cij o custo da viagem entre a cidade
i e a cidade j . A funo objetivo pode ento ser denida como:

Funo Objetivo
6

min z =

cij xij .
i=1 j=i

1 Um circuito uma seqencia de vrtices e arestas onde no h repetio de vrtices, exceto

pelo primeiro.

52

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

A restrio principal que temos que cada cidade deve ser includa exatamente uma
vez no circuito. Vamos considerar, por exemplo, a cidade de So Paulo. Podemos
chegar at ela vindo de qualquer uma das outras cinco cidades. Se zermosx12 = 1
inclumos So Paulo imediatamente aps o Rio de Janeiro no roteiro. Como cada
cidade s pode aparecer uma vez no roteiro as demais variveis que representam a
chegada a So Paulo, xi2 , devem assumir valor zero. Como as variveis de deciso
so binrias, esta situao (x12 = 1 ou x32 = 1 ou . . . x62 = 1) pode ser representada
atravs da seguinte equao:
x12 + x32 + x42 + x52 + x62 = 1.

(5.-5)

Pela Restrio (5.2) exatamente uma das variveis xi2 (i = 1 . . . 6, i = 2) ter valor
igual a 1, garantindo assim a chegada a So Paulo apenas uma vez. Naturalmente,
saindo de So Paulo queremos ir at uma das outras cidades. Da mesma forma que
chegamos apenas uma vez em So Paulo, iremos partir de l uma nica vez. Temos
ento que a equao:
x21 + x23 + x24 + x25 + x26 = 1

garante que sairemos de So Paulo uma nica vez. O mesmo raciocnio vale para
as demais cidades, assim temos o seguinte conjunto de restries:

Restries
Sada da cidade i:
xi1 + . . . + xi6 = 1,

i = 1...6

(5.-5)

x1j + . . . + x6j = 1,

j = 1 . . . 6.

(5.-5)

e Chegada cidade j :

Resumindo o modelo construdo at agora temos:


6

min z =

cij xij
i=1 j=1

sujeito a
xi1 + . . . + xi6 = 1,

i = 1...6

(5.-7)
x1j + . . . + x6j = 1,
j = 1 . . . 6.
xij = 0 ou 1; i, j = 1 . . . 6, i = j .

As Restries (5.2) e (5.2) so as restries associadas ao problema da Designao


(ver por exemplo [21]). A matriz associada possui estrutura e propriedades que
permitem:

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

53

que a restrio xij = 0 ou 1 possam ser relaxadas para 0 xij e a soluo


tima ser inteira.
desenvolvimento de algoritmos especiais (e.g. algoritmo hngaro [21], [6]).

Vamos vericar ento se este modelo tambm apropriado para o Exemplo 5.2.
Na Figura 5.2 temos a Modelo (5.-4) escrito na sintaxe do MPL. Observe o uso
dos comandos EXCELRANGE e EXPORT TO EXCELRANGE usados para ler os
dados e enviar a soluo para o arquivo da planilha de clculo EXCEL "caixeiro.xls".
Note tambm a criao da varivel Custo_Total para permitir que o valor timo
da soluo pudesse ser enviado junto com a soluo para o arquivo do EXCEL.
{Problema do caixeiro viajante}
TITLE Roteiro;
INDEX
!cidades a serem includas no roteiro
no =(Rio, SP, Go, Ma, Be, Sal);
origem = no;
destino = no;
DATA
!Leitura do custo da viagem entre as cidades na planilha caixeiro.xls
custo[origem, destino] := EXCELRANGE ("caixeiro", "custo");
VARIABLES
! Soluo do problema enviada para a planilha caixeiro.xls
x[origem, destino]
EXPORT TO EXCELRANGE("caixeiro","roteiro");
Custo_Total
EXPORT TO EXCELRANGE("caixeiro","Custo_Total");
MODEL
MIN Custo_Total ;
SUBJECT TO
Custo_Total = SUM(origem, destino: custo * x);
saida [no] : SUM(origem=no, destino: x) =1;
chegada[no] : SUM(origem, destino=no: x) =1;
END
Figura 5.2: Formulao Inicial : Problema da Designao - Sintaxe MPL

54

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

Acionando o CPLEX (Seo 3.2), atravs do MPL, para resolver um exemplar


do problema obtemos a soluo mostrada na Figura 5.3. Note que todas as cidades
MPL Modeling System - Copyright (c) 1988-2001,
SOLUTION RESULT
Optimal solution found
MIN Z = 170.0000
DECISION VARIABLES
VARIABLE x[origem,destino] :
origem
destino
Rio
SP
SP
Go
Go
Rio
Ma
Be
Be
Sal
Sal
Ma
PLAIN VARIABLES

Variable Name
Custo_Total

Maximal Software, Inc.

Activity
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
Activity
170.0000

Figura 5.3: Soluo do problema da designao - Modelo (5.-4) Formato MPL


foram includas no roteiro, mas no passamos por todas as cidades uma nica vez
pois o roteiro sair do Rio de Janeiro ir para So Paulo e depois Goinia. A prxima
cidade novamente o Rio de Janeiro (como queramos, mas as demais cidades no
foram visitadas ainda). O fato do modelo da designao permitir solues que
conduzem a sub-rotas (veja a Figura 5.4) mostra que ele no apropriado para
representar o problema que queremos resolver. Precisamos acrescentar restries
ao problema que tornem as solues associadas a sub-rotas inviveis. Existem na
literatura diversas propostas de restries para a eliminao de subrotas. Vamos
apresentar a seguir duas delas.

5.2.1 Formulao de Miller, Tucker e Zemlin


A formulao proposta em 1960 por Miller, Tucker e Zemlin (vide e.g. [29] e [21])
resulta em um modelo de otimizao inteira mista. Considere um novo conjunto de
variveis contnuas, isto :

Novas variveis
uj , j = 2 . . . 6

A incluso do seguinte conjunto de restries ao Modelo 5.-4 elimina a possibilidade


de sub-rotas:

55

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

Figura 5.4: Soluo do modelo da designao 5.-4: Subrotas

Novas Restries
ui uj + 6xij 5,

i, j = 2 . . . 6; i = j .

A demonstrao de que este conjunto de restries suciente para eliminar as


sub-rotas pode ser visto em [29] e [24]. O novo modelo para representar o Exemplo
5.2 dado por:
6

min z =

cij xij
i=1 j=i

sujeito a
xi1 + . . . + xi6 = 1,
i = 1...6
x1j + . . . + x6j = 1,
j = 1...6
ui uj + 6xij 5, i, j = 2 . . . 6; i = j
xij = 0 ou 1; i, j = 1 . . . 6, i = j
ui 0; i = 2 . . . 6.

(5.-11)

A modelagem de 5.-8 na sintaxe do MPL vai exigir novos recursos. Veja na Figura
5.5 o novo modelo. Observe que agora necessrio denir a varivelx como binria,
2
pois a matriz de restries no mais totalmente unimodular .

2 Uma matriz A totalmente unimodular se o determinante de qualquer submatriz quadrada


de A 0, 1, ou -1 [41].

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

56

{Problema do caixeiro viajante} TITLE Roteiro;


INDEX
no = EXCELRANGE ("caixeiro", "cidades");
origem = no;
destino = no;
DATA
custo[origem, destino] := EXCELRANGE ("caixeiro", "custo");
nc := EXCELRANGE ("caixeiro", "nc"); !nmero de cidades
VARIABLES
x[origem , destino]
EXPORT TO EXCELRANGE("caixeiro","roteiro");
Custo_Total
EXPORT TO EXCELRANGE("caixeiro","Custo_Total");
u[no > Rio];
MODEL
MIN Custo_Total ;
SUBJECT TO
Custo_Total = SUM(origem, destino: custo * x);
saida [no] : SUM(origem=no, destino: x) =1;
chegada[no] : SUM(origem, destino=no: x) =1;
!restries para eliminao de sub-rotas
sub[origem,destino > Rio] where (origem <> destino):
u[no:=origem] - u[no:=destino] + nc*x[origem,destino]<= nc-1;
BINARY
x
BOUNDS
u >=2
END
Figura 5.5: Caixeiro Viajante : Formulao de Miller, Tucker e Zemlin - Sintaxe
MPL
Todos os dados necessrios, incluindo o nmero de cidades, so lidos na planilha
do EXCEL "caixeiro.xls". A varivel uj ser gerada apenas para os ndices denidos
no Modelo 5.-8. Da mesma forma, o comando WHERE gera o conjunto de restries de sub-rotas apenas quando i = j . Acionando mais uma vez o CPLEX para
resolver o exemplar obtemos a soluo mostrada na Figura 5.6. Na seo MODEL
STATISTICS, alm do nmero de restries e variveis do exemplar, o relatrio do
MPL fornece tambm informaes sobre o processo de soluo do problema. Para
resolver este exemplar foi necessrio examinar 12 ns na rvore de enumerao implcita associada ao algoritmo branch and bound (ver Seo 3.2). interessante
observar que as variveis uj apesar de denidas como contnuas receberam valores

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

57

inteiros. O limite inferior igual a dois denido para elas na seo BOUNDS permite
interpretar seu valor como sendo a ordem em que a cidade j visitada, isto : So
Paulo, Goinia, Manaus, Belm e Salvador. mera coincidncia esta ordem ser a
mesma em que os ndices foram denidos.
MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.
MODEL STATISTICS
Solver: CPLEX
Iterations: 98
Integer nodes: 12
Constraints: 38
Variables: 42
Integers:36
Nonzeros: 179
Density: 11%
SOLUTION RESULT
Optimal integer solution found
MIN Z = 200.0000
DECISION VARIABLES
VARIABLE x[origem,destino] :
origem
destino
Activity
Rio
SP
1.0000
SP
Go
1.0000
Go
Ma
1.0000
Ma
Be
1.0000
Be
Sal
1.0000
Sal
Rio
1.0000
VARIABLE u[no=SP..Sal] :
no
SP
Go
Ma
Be
Sal

Activity
2.0000
3.0000
4.0000
5.0000
6.0000

Figura 5.6: Soluo do modelo de de Miller, Tucker e Zemlin - Formato MPL


O modelo mostrado na Figura 5.5 representa tanto o Exemplar (5.-8) como um
problema mais geral (5.-13) que pode ser enunciado como: encontre o roteiro de
menor custo que passe por n cidades exatamente uma vez e retorne cidade de

58

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

origem.
n

min z =

cij xij
i=1 j=i

sujeito a
n

xij = 1,

i = 1...n

j=1
6

xij = 1,

j = 1...n

(5.-16)

i=1

ui uj + nxij n 1,
xij = 0 ou 1;

i, j = 2 . . . n; i = j
i, j = 1 . . . n, i = j
ui 0; i = 2 . . . n.

Classicamente conhecido como O Problema do Caixeiro Viajante, este problema


possui diversas aplicaes no nosso dia-a-dia. muito comum que empresas de
diversos setores, por exemplo de bebidas, se deparem com a necessidade de determinar o melhor roteiro para a entrega da mercadoria em pontos de revenda (bares,
armazns, supermercados). Naturalmente, mais econmico um roteiro que inclua
cada ponto de revenda uma nica vez. A coleta de leite em stios e fazendas um
outro exemplo onde desejvel encontrar um roteiro que saia da fbrica de laticnios, passe em cada ponto de coleta apenas uma vez e retorne ao ponto de partida.
Mas, no apenas no setor de distribuio que temos exemplos de aplicao deste
importante problema de Otimizao Combinatria. Aplicaes mais sutis podem
ser encontradas na indstria de manufatura onde a seqncia em que um determinado conjunto de tarefas realizada pode contribuir para diminuir os custos da
produo [29]. Indo um pouco mais alm, podemos encontrar exemplos na biologia
computacional, onde denir um circuito hamiltoniano esta associado ao problema
de desvendar os mistrios do DNA [23].
O Modelo (5.-13) possui (n 1)2 restries para eliminao de sub-rotas. Esta
uma formulao bastante compacta e pode ser usada para modelar situaes
onde a cidade de origem pode ser visitada diversas vezes e nenhuma sub-rota pode
conter mais do que p cidades [21]. Uma formulao contendo um nmero maior de
restries, porm com uma relaxao linear melhor ser apresentada na prxima
seo.

5.2.2 Formulao de Dantzig, Fulkerson e Johnson


Dantzig, Fulkerson e Johnson (1954)( vide e.g. [29] e [21]) propuseram duas maneiras de eliminar as sub-rotas permitidas no Modelo da designao (5.-4). Uma delas
consiste em limitar o nmero de variveis associadas a um subconjunto de cidades
S que pode receber valor diferente de zero. Considerando o roteiro mostrado na
Figura 5.4 e o subconjunto S = {M a, Be, Sal}, se impormos a restrio:

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

59

xM a,Be + xM a,Sal + xBe,M a + xBe,Sal + xSal,M a + xSal,Be 2.

a soluo mostrada na Figura 5.3 deixar de ser vivel. De fato, acrescentar esta
nica restrio ao exemplar 5.-4 suciente para obter a soluo tima do problema.
Veja este novo modelo escrito na sintaxe do XPRESS-MOSEL (Seo 3.1.2) na
Figura 5.7 a seguir.

5.2. O PROBLEMA DO CAIXEIRO VIAJANTE

60

(! Problema do Caixeiro Viajante: Formulao de Dantzig,


Fulkerson e Johnson (1954)!)
MODEL "Roteiro"
USES "mmxprs"
DECLARATIONS
no : set of string;
custo: array(no,no) of integer
END-DECLARATIONS
! Leitura de dados em arquivo
INITIALIZATIONS FROM 'custo.dat'
custo;
END-INITIALIZATIONS
DECLARATIONS
x: ARRAY(no,no) of MPVAR ! 1 se a cidade i antecede a viagem j
END-DECLARATIONS
! Objetivo: encontrar roteiro de menor custo
Custo_Total:= SUM(i,j in no | i<>j) custo(i,j)*x(i,j)
! Visitar cada cidade exatamente uma vez
FORALL (i in no) chegada(i):= SUM (j IN no | i<>j) x(i,j) = 1
FORALL (j in no) saida(j):= SUM (i IN no | i<>j) x(i,j) = 1
FORALL (i,j IN no | i<>j) x(i,j) IS_BINARY
!Gerar inequaes para eliminar subrotas
DECLARATIONS
subrota= {"Ma", "Be", "Sal"}
END-DECLARATIONS
sb(1):= SUM (i,j in subrota | i<>j) x(i,j) <= 3-1
! Resolva o problema
minimize(Custo_Total)
!Relatrio da Soluo
writeln ("Custo_Total= ", getobjval)
FORALL(i in no) do
FORALL (j in no) do
if getsol(x(i,j)) > 0
THEN writeln ('viaje de: ', i, ' para: ', j, ' com custo: ',custo(i,j))
END-IF
END-DO
END-DO
!gera o mps
exportprob(EP_MPS,"caix.mps",Custo_Total)
END-MODEL
Figura 5.7: Caixeiro Viajante - Formulao de Dantzig, Fulkerson e Johnson Sintaxe XPRESS-MOSEL

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

61

No caso geral o modelo dado por:


n

min z =

cij xij
i=1 j=i

sujeito a
n

xij = 1,

i = 1...n

xij = 1,

j = 1...n

j=1
6

(5.-21)

i=1

xij |S| 1,

S {1 . . . n}

iS jS

xij = 0 ou 1;

i, j = 1 . . . n, i = j .

A formulao (5.-18) possui (2n 2) restries de eliminao de sub-rotas e 2n


restries de designao. Este nmero de restries cresce exponencialmente quando
o valor de n cresce. Por isso, as inequaes de sub-rotas so geradas a medida
que vo sendo necessrias. Inicialmente resolve-se a relaxao do Problema (5.18) obtida eliminando-se a restrio de sub-rotas e as restries de integralidade. A
soluo do problema da designao resultante ento analisada para ver se forma um
circuito hamiltoniano. Caso forme, esta a soluo tima do problema. Seno uma
restrio de sub-rota no satisfeita pela soluo atual includa e o novo problema
resolvido. Esta tcnica aplicada iterativamente e combinada com mtodo branch
and bound , mtodo conhecido hoje como branch and cut (ver Seo 3.2), foi proposta
em 1954 por Dantzig, Fulkerson e Johnson para resolver com sucesso um problema
com 49 cidades. Mais recentemente, Padberg e Rinaldi (1991) [42] usaram esta
tcnica combinada com mtodos de pr-processamento e outras classes de inequaes
para resolver exemplares com at 2392 cidades. Em um artigo publicado em 2003,
Applegate et al. [1] relatam a soluo de exemplares com um milho de cidades ou
mais.
Boa parte do sucesso na resoluo de exemplares de grande porte do problema
do caixeiro viajante se deve integrao de diversas metodologias. De fato, um dos
objetivos dos autores em [1] foi explorar a ecincia e os limites destas tcnicas. As
linguagens de modelagem XPRESS-MOSEL e AMPL possuem recursos que permitem implementar o mtodo cut and branch: incluso iterativa das restries de
sub-rotas (planos de corte) para obter bons limites duais, seguido do mtodobranch
and bound (ver Seo 3.2 e referncias citadas).

5.3 Dimensionamento de lotes com tempos de preparo


Vamos explorar um pouco mais o modelo de planejamento multiperodo apresentado na Seo 4.1 discutindo uma aplicao na indstria de bebidas. O modelo

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

62

apresentado a seguir baseado no modelo clssico de dimensionamento de lotes e


foi usado por Rangel e Ferreira [46] para estudar o setor de produo de uma fbrica de refrigerantes de mdio porte situada na regio de So Jos do Rio Preto-SP.
A empresa organizada em trs setores: produo, armazenamento e transporte.
Considerando a complexidade de otimizar simultaneamente as operaes dos trs
setores, foi abordado inicialmente o setor de produo, levando em considerao a
existncia de um espao limitado para armazenamento dos produtos.

5.3.1 A linha de produo de uma Fbrica de Refrigerantes


A empresa produz refrigerantes em 12 sabores que so embalados em diferentes
tipos de vasilhames. So utilizadas garrafas de plstico descartveis e garrafas de
vidro que precisam ser esterilizadas antes de receberem o lquido. Existem no total
10 tipos diferentes de tamanhos entre as embalagens de plstico e as de vidro. Os
insumos necessrios para a produo so: xarope de diversos sabores, vasilhames
descartveis e vasilhames reciclveis, rtulos variados, tampas e gua gaseicada.
A produo dos refrigerantes realizada em trs etapas: preparo do lquido,
ajuste das mquinas e nalizao do produto. Os xaropes so preparados em quantidades pr determinadas (1310 litros), chamadas de tachadas, com capacidade para
produzir 7860 litros de refrigerante. O xarope utilizado na produo dos refrigerantes armazenado em tanques que so ligados atravs de mangueiras especiais s
linhas de produo. A fbrica possui trs tanques pequenos e quatro tanques grandes. Os tanques devem trabalhar com uma quantidade mnima de lquido suciente
para cobrir a hlice que mistura os ingredientes e assim garantir a homogeneidade
do xarope. Na linha de produo, um proporcionador mistura o xarope composto
com gua tratada. Esta mistura recebe gs carbnico e se torna a bebida que vai
para a mquina que enche os vasilhames.
As mquinas so ajustadas inicialmente para produzir refrigerantes de um determinado sabor em um determinado tamanho. Se for necessrio fabricar outro tipo
de refrigerante preciso parar a linha de produo e fazer ajustes nas mquinas
para produzir um item de outro sabor e/ou tamanho.
Toda a produo da fbrica realizada por trs linhas de produo. Uma linha
de produo constituda por uma esteira rolante e diversas mquinas alinhadas em
srie. As mquinas so utilizadas para esterilizar os vasilhames, encher as garrafas
com o lquido, fechar, rotular, codicar e empacotar os refrigerantes. Ao nal do
processo, os pacotes de refrigerantes so colocados nos paletes e estocados. Existe
apenas uma entrada e uma sada de vasilhames. Um esquema do setor de produo
da fbrica est ilustrado na Figura 5.8.
O gargalo de uma linha de produo a mquina que enche os vasilhames (enchedora), pois a sua capacidade que determina a produo. A mquina enchedora
possui vrias vlvulas, o que possibilita o enchimento de mais de uma garrafa quase
que simultaneamente. A enchedora das linhas de produo 1 e 2 possuem 42 vlvulas e da linha 3 possui 64 vlvulas. A parte ps-enchedora (fechar, rotular, codicar,
empacotar) deve ter capacidade maior que a da enchedora, assim como a parte prenchedora (lavagem, preparo do lquido), pois se a enchedora estiver trabalhando

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

63

bem o restante da linha de produo deve acompanh-la.


Os pedidos de refrigerantes so recebidos diariamente. O gerente da produo
anota os pedidos do dia anterior no incio do 1o turno de cada dia, verica a parcela
do pedido que pode ser atendida usando produtos em estoque e determina o que
ser produzido. O espao para o armazenamento dos refrigerantes restrito.
O problema determinar quanto produzir em cada dia de forma a satisfazer a
demanda e minimizar os custos de produo e armazenamento.

Figura 5.8: Esquema do setor de Produo da Fbrica de Refrigerantes [46]

5.3.2 Um modelo de otimizao inteira mista


Para construir o modelo, vamos simplicar mais uma vez o problema e considerar
o planejamento para uma nica linha de produo. O planejamento consiste em
determinar a quantidade de refrigerante que ser produzida de forma a satisfazer a
demanda do mercado, no ultrapassando as capacidades da fbrica e com objetivo
de minimizar os custos de produo, armazenamento e preparo de mquinas.
Pela descrio do problema na Seo 5.3.1 podemos identicar:

Elementos conhecidos
- tipo de sabores e tamanhos de vasilhames;
- horizonte de planejamento;
- nmero necessrio de litros de xarope para a produo de uma caixa (pacote) de
refrigerantes;

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

64

- tempo de produo de uma caixa de refrigerantes;


- tempo de preparao da mquina: troca de sabor;
- tempo de preparao da mquina: troca de tamanho;
- tempo disponvel para produo em cada perodo;
- custo de produo de uma caixa de refrigerante;
- custo de armazenamento de uma caixa de refrigerante;
- custo de preparao da mquina: troca de sabor;
- custo de preparao da mquina: troca de tamanho;
- previso de demanda de cada tipo (sabor, tamanho) de refrigerante em cada
perodo;

- capacidade de produo em nmero de tachadas ;


- quantidade mnima (mxima) de xarope no tanque;
- capacidade do estoque;
- espao ocupado por uma caixa de refrigerante no estoque;
Elementos desconhecidos
- nmero de caixas de refrigerante de cada tipo (sabor e tamanho) a serem produzidas em cada perodo;

- nmero de tachadas de xarope de cada sabor usados em cada perodo;


- nmero de caixas de refrigerantes de cada sabor e tamanho em estoque ao nal
de cada perodo;

Objetivo a ser alcanado


- minimizar o custo total de produo, preparo e armazenamento.
Restries
- capacidade de produo: tempo e insumos disponveis
- capacidade do estoque
- homogeneidade do xarope
Considerando que a fbrica produz s sabores de refrigerantes em q tamanhos e
que o planejamento ser feito para n perodos, podemos denir o seguinte conjunto
de ndices:

65

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

ndices
- i = 1, ..., s representa o sabor do refrigerante;
- j = 1, ..., q representa o tamanho da embalagem;
- t = 1, ..., n representa os perodos considerados no horizonte de planejamento.
Vamos considerar inicialmente o seguinte conjunto de variveis:

Variveis de deciso
- xijt = nmero de caixas de refrigerante do sabor i, de tamanho j , produzidas no
perodo t;

- yit = nmero de tachadas de xarope do sabor i usado no perodo t;


- eijt = nmero de caixas de refrigerantes do sabor i, de tamanho j , em estoque ao
nal do perodo t.

Para descrever a funo-objetivo vamos desconsiderar no momento os custos de


preparo:

funo-objetivo
- Custo de produo
s

cp xijt
ijt
i=1 j=1 t=1

- Custo de estoque
s

ca xijt
ijt
i=1 j=1 t=1

- Minimizar custo de produo e armazenamento


s

(cp xijt + ca xijt )


ijt
ijt

min Custo_T otal =

(5.-23)

i=1 j=1 t=1

onde cp e ca so respectivamente o custo de produo e o custo de estoque.


ijt
ijt
Podemos iniciar a descrio do conjunto de restries. A demanda no perodot
pode ser atendida por refrigerantes produzidos neste perodo ou por produtos em
estoque. O que sobrar poder ser usado no perodo seguinte. Esta exatamente
a situao que modelamos na Seo 4.1.1 atravs das restries de balanceamento.
Assim, considerando que dijt a previso de demanda de refrigerantes de cada tipo
(sabor i, tamanho j ) no perodo t, temos um primeiro conjunto de restries:

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

66

Restries de balanceamento
eijt1 + xijt = dijt + eijt ,

i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.

(5.-23)

Precisamos considerar tambm a disponibilidade de xarope e o o espao disponvel


para armazenamento. Trs novos conjuntos de restries so descritos a seguir.

Restries de espao para armazenamento de produtos


s

aj eijt L,

t = 1...n

(5.-23)

i=1 j=1

onde aj o espao ocupado por uma caixa de refrigerantes do tamanho j e L a


capacidade do armazm.
A disponibilidade de xarope ser tratada atravs de dois conjuntos de restries.
Inicialmente precisamos considerar a capacidade de produo ( t ) em termos do
c
nmero de tachadas de xarope que a linha de produo consegue engarrafar em
cada perodo. Esta restrio ir ser usada para denir o nmero detachadas (yit ) de
cada sabor de xarope que devero ser preparados em cada perodo. Naturalmente,
no poder ser usado mais do que 1310yit litros de xarope.

Restries de disponibilidade de xarope


- Capacidade de produo
s

yit ct ,

t = 1 . . . n.

(5.-23)

i = 1 . . . s; t = 1 . . . n

(5.-23)

i=1

- Quantidade de xarope usada na produo


q

bij xijt = 1310yit ,


j=1

onde bij a quantidade de xarope do sabor i para a produo do tamanho j .


Precisamos considerar ainda o tempo disponvel para a produo. Seja kj o
tempo necessrio para produzir uma caixa de refrigerante do tamanho j . O tempo
total para a produo dos refrigerantes no perodo t deve ser menor ou igual ao
tempo disponvel para a produo. Temos ento a seguinte restrio de capacidade.

Restries de capacidade de tempo de produo


s

i=1 j=1

kj xijt ht , t = 1, ..., n.

(5.-23)

67

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

Note no entanto, que na Restrio (5.3.2) no foram considerados os tempos para


preparao da linha de produo para receber um novo tamanho e/ou sabor. Se este
tempo no for considerado, a sugesto de produo obtida com o modelo formado
pelas restries apresentadas at aqui pode no ser realizvel [54]. Precisamos ento
considerar dois novos fatores no modelo:
s pode haver produo de refrigerante de um determinado tipo se a linha de
produo estiver preparada;
o tempo de troca restringe a capacidade de produo.

Para considerar estes elementos no modelo vamos precisar introduzir novas variveis
que iro controlar se a linha de produo esta preparada ou no para produzir
refrigerantes de uma determinada combinao de sabor/tamanho. Ao modelar o
problema da mochila na Seo 5.0 vimos que decises do tipo sim ou no podem ser
modeladas usando variveis binrias. Precisamos do seguinte conjunto de variveis:

Variveis de troca
- Sabor:

1, se a mquina estiver ajustada para a produo do sabor i


no perodo t
zit =

0, caso contrrio;

- Tamanho:
wjt

1, se a mquina estiver ajustada para a produo do tamanho j


no perodo t
=

0, caso contrrio.

Precisamos garantir que s pode haver produo de um refrigerante do sabori = 2,


x2jt > 0 se a linha de produo estiver ajustada para tal, z2t = 1. Caso contrrio,
se z2t = 0, temos que ter x2jt = 0. Esta condio pode ser satisfeita se incluirmos
o seguinte conjunto de restries, para i = 1 . . . s; j = 1 . . . q e t = 1 . . . n:

Restries de preparo
Sabor:
Tamanho:

xijt

M zit

(5.-22)

xijt

M wjt

(5.-21)

A constante M representa um valor conhecido para o limite superior da produo


de um dado item. Desta forma, se zit = 0 as restries (5.-22) impem xijt = 0,
garantindo que no haver produo de refrigerante do sabor i. Quando zit = 1
as restries (5.-22) se tornam redundantes, xijt M , e poder haver produo de
refrigerante do sabor i. As restries (5.-21) controlam de forma similar a produo

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

68

de refrigerante do tamanho j . Este tipo de restrio tambm pode ser til em outros
contextos, e recebe o nome de restries VUB (do ingls: Variable Upper Bound,
limite superior varivel[41]).
As variveis zit e wjt so conhecidas na literatura como variveis de preparao
das mquinas (set-up variables [54]). Neste modelo se considera que o tempo de
ajuste da mquina para um determinado sabor (tamanho) independente do sabor
(tamanho) usado anteriormente, de acordo com a prtica da empresa estudada.
Elas sero usadas para controlar de forma mais realista a capacidade de produo
da fbrica. Considerando oi e fj como sendo o tempo de troca de sabor e o tempo de
troca do tamanho, respectivamente, podemos reformular as restries de capacidade
(5.3.2) como:

Restries de capacidade com tempo de produo e preparo


s

i=1 j=1

kij xijt +

s
i=1

oi zit +

j=1

fj wjt ht , t = 1, ..., n.

(5.-21)

Para garantir a homogeneidade deve ser mantida uma quantidade mnima de xarope
nos tanques. Isto , se houver produo do sabor i no perodo t necessrio que a
quantidade de xarope yit seja maior ou igual que uma quantidade pr-especicada
(qmin ). Naturalmente, a capacidade do tanque, qmax , tambm deve ser respeitada.
Assim se zit = 1 devemos ter qmin yit qmax ; caso contrrio no h necessidade
de preparar o xarope i no perodo t. Assim temos mais um conjunto de restries:

Restries de homogeneidade do xarope


qmin zij yit qmax zij ,

i = 1, ..., s; t = 1, ..., n.

Finalmente, podemos redenir a Funo-objetivo (5.3.2) para considerar tambm


os custos de preparo. Assim temos mais dois fatores para incluir na expresso do
Custo_Total:

Reformulao da funo-objetivo
- Custo de troca de sabor
s

csab zit
i
i=1 t=1

- Custo de troca de tamanho


q

ctam wjt
j
j=1 t=1

5.3. DIMENSIONAMENTO DE LOTES COM TEMPOS DE PREPARO

69

- Minimizar custo total de produo, armazenamento e preparo


q

(cp xijt + ca xijt + csab zit + ctam zjt ) (5.-21)


ijt
i
j
ijt

min Custo_T otal =


i=1 j=1 t=1

onde csab e ctam so respectivamente os custos de troca de sabor e de tamanho.


i
j
Podemos resumir as expresses acima no seguinte modelo de otimizao inteira
mista cujo objetivo denir um programa para a produo dos refrigerantes que
minimize os custos de produo, armazenamento, e preparo das mquinas (FR):
s

min
Sujeito a:

i=1 j=1 t=1


q

j=1

bij xijt = 1310y it ,

s
q

i=1 j=1

kij xijt +

i = 1, ..., s; t = 1, ..., n.

yit ct ,

t = 1, ..., n.

i=1
s

cp xijt +ca eijt +csab zit +ctam wjt


j
i
j
ij

i=1

oi zit +

j=1

fj wjt ht , t = 1, ..., n.

xijt M zit ,

i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.

xijt M wjt ,

i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.

eijt1 + xijt = dijt + eijt ,

i=1 j=1

i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.

aj eijt L,

qmin zij yit qmax zij ,

t = 1, ..., n.

i = 1, ..., s; t = 1, ..., n.

xijt 0, yit 0, eijt 0, zit = 0 ou 1, wjt = 0 ou 1,


i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.

Considerando apenas os conjuntos de restries (5.3.2), (5.-22), (5.-21) e (5.3.2)


obtemos um modelo que conhecido na literatura como modelo de planejamento da
produo multi-item capacitado com tempos e custos de preparo (PMC) (
Multi-item
Production Planning with set-up [54] e [2]).
Observe que o modelo (FR) permite a produo de refrigerantes de sabores e
tamanhos diferentes em um mesmo perodo. Uma importante questo que surge
como fazer o sequenciamento dos itens diferentes que so produzidos em um
mesmo perodo. No presente trabalho, estamos supondo que o planejamento ser
feito em dois estgios. Um estgio determina o dimensionamento dos lotes (estgio
A), e outro estgio (estgio B), feito antes ou depois do estgio A, determina a

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

70

sequncia em que os itens sero produzidos. O modelo (FR) usado no estgio A. Na


prxima seo apresentamos modelos para o problema de sequenciamento de itens,
estgio B. Modelos de planejamento da produo que incluem o sequenciamento e
o dimensionamento dos lotes simultaneamente podem ser vistos em [14], [16] e [53].

5.4 Problema do Escalonamento de Tarefas


Problemas de seqenciamento desempenham um papel importante tanto em indstrias de manufatura como em empresas de servio. Empresas devem entregar seus
produtos ou servios dentro de um prazo pr-determinado, ou mesmo escalonar as
tarefas para usar de forma eciente os recursos disponveis [43]. Do ponto de vista
matemtico, construir modelos de otimizao que representem de forma adequada
o problema continua sendo um desao. Nesta seo apresentaremos dois modelos
diferentes: modelo com restries disjuntas [47] e o modelo indexado por tempo
[4]. Sendo que este ltimo pode servir de base para a considerao de restries de
tempo de preparo das mquinas (ver Seo 5.3.1).
Vamos comear por um pequeno problema estudado por Bezerra e Rangel [7].

Exemplo 5.3 Uma fbrica produz panelas de metal de cinco modelos diferentes em

uma nica mquina. Cada panela confeccionada da seguinte maneira: primeiro


so cortados elementos circulares e em seguida cada um deles modelado na forma
da panela desejada. As etapas do processo no podem ser interrompidas, ou seja,
depois de iniciada a fabricao de um lote de determinado modelo de panelas, este
deve ser totalmente concludo. A fbrica realiza um expediente de at 22h, devendo
produzir diariamente um lote de cada modelo. Cada lote possui horrios de entrega
pr-denidos pelos compradores. Caso a fbrica entregue algum lote depois do prazo
dever pagar uma multa, por cada hora de atraso, ao cliente prejudicado. Os dados
referentes ao tempo necessrio para a produo de cada lote, horrio de entrega e
multas esto resumidos na Tabela 5.2 abaixo. O gerente de produo precisa denir
a seqncia em que ele ir produzir os lotes de forma a minimizar a demora na
entrega dos lotes e as respectivas multas.
Tabela 5.2: Fbrica de Panelas: Tempo de produo, horrio de entrega e multa
Modelo
P1 P2 P3 P4 P5
Tempo de Produo (horas) 6
5
4
3
2
Horrio de Entrega
10 11 15
5
5
Multa (u.m./hora)
1
2
3
6
1
Uma deciso importante na fabricao dos lotes de panelas a escolha da seqncia em que estes devem ser produzidos. Problemas deste tipo so chamados Problemas de Sequenciamento (ou escalonamento) de tarefas [43].

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

71

5.4.1 Classicao do Problema - ( | | )


Existe uma nomenclatura prpria para descrever Problemas de Sequenciamento,
formada a partir do preenchimento de trs campos ( | | ). O campo representa

as caractersticas de quem executa as atividades, denominado por conveno como


mquina(s). O campo descreve as atividades e como estas esto relacionadas. O
ltimo campo, , se refere ao tipo de objetivo utilizado para determinar a seqncia
de produo.
Vamos avaliar as caractersticas do problema das panelas do Exemplo 5.3. Existe
apenas uma mquina na fbrica, neste caso utiliza-se a denominao problema de
mquina nica ( = 1). A mquina deve produzir cinco lotes diferentes, assim, ao
utilizar a palavra atividade estaremos nos referindo a produo de um lote de um
determinado modelo de panela. Alm disso, sabemos que no deve haver preempo,
ou seja, o processo de produo no pode ser interrompido. Tambm no h relao
de precedncia entre as atividades, nenhum dos modelos deve obrigatoriamente ser
produzido antes de outro ( = ). Levando em considerao todos os dados do
problema, o objetivo do gerente de produo minimizar as multas relacionadas
demora na entrega de cada um dos lotes ( = wT max, onde: T max = max {0,
atraso na entrega do lote i}). Um valor estritamente negativo para T max quer dizer
que a atividade foi concluda antes da data de entrega. Segundo a nomenclatura
apresentada em [37] e [43], este problema ento classicado como 1| | wT max.

5.4.2 Modelo com restries disjuntas


Para construir o modelo de otimizao vamos identicar no enunciado do Exemplo
5.3 os principais elementos do problema.

Elementos conhecidos - Dados de um exemplar


- n : nmero de atividades
- pi : tempo de processamento da atividade i, i = 1 . . . n
- di : data de entrega da atividade i, i = 1 . . . n
- wi : multa (peso) associado atividade i, i = 1 . . . n
Variveis de deciso: tempo de incio
- xi : incio do processamento da atividade i, i = 1 . . . n
O gerente de produo deseja minimizar as multas relacionadas demora na entrega
de cada um dos lotes. A demora ponderada da atividade i pode ser calculada como:
Demora Ponderada

max {0, wi (xi + pi di )}

e o critrio de otimizao minimizar a demora. Isto :

72

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

funo-objetivo linear por partes


min max{0, wi (xi + pi di )}

(5.-21)

A funo-objetivo denida acima linear por partes, mas pode ser linearizada se
criarmos uma nova varivel, ti , tal que:

Restries para linearizao da Funo-objetivo


ti xi + pi di ,

ti 0,

i = 1 . . . n;

e substituirmos a expresso 5.4.2 por:

Funo-objetivo Linear

minz =

wi ti

(5.-21)

i=1

Outros critrios de otimizao podem levar a sequenciamentos equivalentes. Maiores detalhes sobre a equivalncia entre critrios de otimizao para problemas de
sequenciamento pode ser encontrados em [43] e [7].
Precisamos garantir que a mquina produzir apenas um lote de cada vez. Isto
, se a mquina estiver executando a atividade 1, ela s poder iniciar uma outra
atividade j quando a tiver terminado, isto x1 + p1 xj . De uma maneira mais
geral, vamos considerar as atividade i e j . Para garantir que a mquina processe
apenas uma delas de cada vez devemos ter:

Restries disjuntas

(5.-21)

xj + pj xi .

ou

xi + pi xj

(5.-21)

Isto , apenas uma das duas restries acima deve estar ativa, a outra deve ser
redundante. Mais uma vez variveis binrias sero teis para fazer este controle.
Vamos denir:

Varivel de deciso: controle de execuo


yij =

1, se a atividade i comea antes da atividade j


0, caso contrrio;

Se yij = 1 temos que a atividade i comea antes da j e portanto a restrio (5.4.2)


associada deve estar ativa para garantir que a atividade j comece depois que a
atividade i estiver completa, a outra restrio deve ser redundante. Similarmente
se yij = 0 a restrio (5.4.2) deve ser satisfeita. Assim, podemos escrever:

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

73

Restries: controle de atividades na mquina


xi + pi xj + M (1 yij )

(5.-21)

xj + pj xi + M (yij ).

(5.-21)

onde M uma constante real de valor sucientemente grande. Note que se yij = 1
a restrio (5.4.2) ca ativa e a restrio (5.4.2) apenas fornece um limite superior
para xj .
Resumindo as informaes obtidas at agora temos um modelo com restries
disjuntas para representar o problema de sequenciamento:
n

minz =

wi ti
i=1

sujeito a
ti xi + pi di ,
i = 1...n
xi + pi xj + M (1 yij ),
i = 1 . . . n, j = 1 . . . n
xj + pj xi + M (yij )
i = 1 . . . n, j = 1 . . . n
xi 0, ti 0, i = 1 . . . n
yij = 0 ou 1, i = 1 . . . n, i = 1 . . . n.

(5.-24)

Se a atividade j a ltima a ser executada, temos que xi + pi xj + pj para todo


i = 1 . . . n, i = j . Portanto se T T otal representa o tempo total necessrio para a
execuo de todas as atividades:
n

T T otal =

pi ;

(5.-29)

i=1

qualquer valor maior ou igual a T T otal conveniente para a constante M . De


fato a qualidade da relaxao linear associada ao Modelo (5.-20) depende do valor
atribudo M .

5.4.3 Modelo Indexado pelo tempo


Outra forma de modelar problemas de sequenciamento utilizando o tempo em que
cada atividade inicia como ndice das variveis. Esta estrutura permite construir
modelos que incluam restries adicionais ao problema, por exemplo: restries de
Tempo de Preparo das mquinas (ver Seo 5.3.2) que surgem quando necessrio
preparar a mquina antes de comear a executar cada atividade.
Para construir o modelo vamos precisar calcular o tempo total necessrio para
o processamento de todas as tarefas. Este valor ser usado para denir o tamanho

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

74

Figura 5.9: Horizonte de planejamento

do horizonte de planejamento T , isto T perodos de tempo (ver Figura 5.9). Um


perodo pode ser denido em horas, turno de trabalho, dias ou outra unidade de
tempo de acordo com a aplicao estudada. No caso do Exemplo 5.3 o perodo de
tempo ser medido em horas. Se tomarmos (T ) como sendo exatamente o valor
calculado na Expresso (5.4.2) no ser permitido tempo ocioso na mquina, um
valor menor, no permite a execuo de todas as tarefas.
Temos n atividades que podem comear em qualquer um dos perodos de 0 a
T . A deciso a ser tomada ento se a atividade i comea ou no no perodo de
tempo t. Assim temos:

Varivel de deciso indexada pelo tempo


xit =

1, se a atividade i comea no perodo t


0, caso contrrio;

Precisamos garantir que cada atividade seja executada exatamente uma vez.
Usando restries similares s restrio de designao usadas para modelar o problema do caixeiro viajante (ver Seo 5.2) temos:

Restries: Todas as atividades devem ser executadas


T

xit = 1

i = 1 . . . n.

(5.-29)

t=1

Mas, considere por exemplo, que a atividade 3, que tem tempo de processamento
igual a 4 (ver Tabela 5.2), comece a ser executada no perodo t = 18 (x3,18 = 1).
No ser possvel conclu-la pois ela s terminar de ser executada no perodo t =
18 + 4 1 = 21, fora do horizonte de planejamento (T = 20). Para evitar este fato,
a atividade 3 dever comear em um tempo anterior ou igual a T p3 + 1. Assim o
limite superior da soma em (5.4.3) deve ser T pi + 1, para garantir que cada uma
das atividades seja concluda dentro do horizonte de planejamento.

75

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

Reformulao: Todas as atividades devem ser executadas e concludas


T pi +1

xit = 1

i = 1 . . . n.

(5.-29)

t=1

Precisamos tambm garantir que no mximo uma atividade esteja sendo executada em cada perodo de tempo t:

Restries de capacidade: No mximo uma tarefa em cada perodo


n

xit 1,

t = 1...T.

(5.-29)

i=1

A soluo x23 = 1 e x34 = 1, isto a atividade 2 comea no perodo 3 e a atividade


3 comea no perodo 4, satisfazem o conjunto de restrio denidos acima (5.4.3 e
5.4.3). No entanto, de acordo com os tempos de execuo dados na Tabela 5.2, no
perodo t = 7 a mquina ainda estar ocupada com a atividade 2, esta atividade
s estar completa no nal deste perodo (t = 3 + p2 1 = 7). Portanto apenas
uma destas duas variveis pode assumir valor 1. De fato, necessrio garantir que
nenhuma ativividade comece enquanto a mquina estiver ocupada. Por exemplo, a
restrio mostrada na Figura 5.10 garante que se a atividade 2 comear no perodo
3, nenhuma outra atividade pode comear antes do nal do perodo 7. Estendendo

Figura 5.10: Restrio de capacidade associada ao perodo t = 7


este raciocnio para os demais perodos, as restries (5.4.3) devem ser reformuladas
como:

76

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

Restries de capacidade: Reformulao


n

i=1

s=tpi +1

t = 1...T.

xit 1,

(5.-29)

O critrio de otimizao que vamos usar minimizar os custos relativos demora


na entrega, isto , minimizar as multas pelo atraso na entrega das atividades. Uma
atividade i est atrasada se t + pi 1 > di , onde t o perodo quando ela comea a
ser executada. Assim a matriz de custos associada aos dados apresentados na Seo
5.4.2 pode ser calculada como:

Clculo do custo de atraso


wi ((t + pi 1) di ), se t + pi 1 > di
0 caso contrrio;

cm =
it

A funo objetivo pode ser escrita como:

Funo-objetivo

T pi +1

cm xit .
it

minz =
i=1

(5.-29)

t=1

Reunindo as informaes acima chegamos ao modelo Indexado por Tempo para o


Problema de sequenciamento:
n

T pi +1

cm xit
it

min z =
i=1

t=1

sujeito a
T pi +1

xit = 1

i = 1...n

t=1
n

i=1

s=tpi +1

xit 1,

t = 1...T

(5.-31)

xit = 0 ou 1, i = 1 . . . n, t = 1 . . . T .

Para um exemplar com n atividades, esta formulao fornece um modelo com


aproximadamente nT variveis e (n + T ) restries. No modelo com restries
disjuntas (5.-20) temos (n2 + 2n) variveis e (2n2 + n) restries. O exemplar
denido pelos dados mostrados na tabela 5.2 tem 100 variveis e 25 restries para o
modelo indexado por tempo e 35 variveis e 55 restries para o modelo de restries
disjuntas. Uma grande vantagem da formulao indexada por tempo (5.-28) que
a Relaxao Linear associada fornece bons limitantes para o problema inteiro, de
fato os resultados de um estudo computacional comparando estes dois modelos
apresentado em [7] demonstrou sua superioridade sobre o Modelo (5.-20). O alto

5.4. PROBLEMA DO ESCALONAMENTO DE TAREFAS

77

nmero de variveis presentes no Modelo (5.-28), dependente do nmero de perodos


considerado no horizonte de planejamento, sugere o mtodo de gerao de colunas
para resolv-lo (e.g. [4], [44]).
Devido complexidade computacional dos Problemas de sequenciamento, os
principais mtodos de soluo descrito na literatura so baseados em algoritmos
heursticos que fornecem solues aproximadas para o problema (e.g. [35], [37] e
[43]. A vantagem da utilizao de modelos de otimizao inteira poder resolv-los
usando sistemas gerais de otimizao. Estes sistemas tem alcanado um alto grau de
sosticao, o que tem permitido a soluo de exemplares de grande porte em tempo
vivel (e.g. [4]). Alm disto, estes modelos podem fornecer bons limitantes para o
valor timo, que servem de parmetros para avaliao das solues heursticas.

Bibliograa
[1] Applegate, D., Bixby, R., Chvatal, V., e Cook, W., Implementing the DantzigFulkerson-Johnson algorithm for large traveling salesman problems,Mathematical Programming, Ser. B, 97, 91-153, 2003.
[2] Arajo, S.A. e Arenales,M.N., Problema de dimensionamento de lotes monoestgio com restrio de capacidade: modelagem, mtodo de resoluo e
resultados computacionais, Pesquisa Operacional - SOBRAPO, 20, No. 2,
287-306, 2000.
[3] Arenales, M.N., Morabito, R. e Yanasse, H., Problemas de Corte e Empacotamento, Anais Do XXXVI Simpsio Brasileiro De Pesquisa Operacional
,
SOBRAPO, 2004.
[4] van den Akker, J. M, Hurkens, C.A.J. e Salvelsbergh, M.W.P., Time-Indexed
Formulations for Machine Scheduling Problems: Column Generation,Informs
Journal on Computing, 12(2), pg. 111-124, 2000.
[5] Atamturk, A. e Savelsbergh, M.W.P., Integer Programming Software Systems, Research Report BCOL.03.01, IEOR, University of California at Berkeley, 2004. A ser publicado em Annals of Operations Research.
[6] Bazaraa, M.J. e Jarvis, J.J., Linear Programming and Network Flows, J.
Wiley & Sons, N.Y., 2a edio, 1990.
[7] Bezerra, S. e Rangel S., Problemas De Sequenciamento: Modelos e Mtodos
de Resoluo, Anais do CIC - Congresso de Iniciaa Cientca da UNESP
,
Ilha Solteira, 2004.
[8] Boaventura, P. O., Grafos : teoria, modelos, algoritmos, Edgard Blucher,
2001.
[9] Caixeta-Filho, J.V., Pesquisa Operacional: Tcnicas de Otimizao Aplicadas
a sistemas Agroindustriais, Editora Atlas, 2001.
[10] Campelo, R.E e Maculan,N., Algoritmos e Heursticas , Editora da Universidade Federal Fluminense, 1994.

Bibliograa

79

[11] Dash Optimization, Applications Of Optimization With XpressMP, Traduo


para o ingls de Programmation Linaire de C. Guret, C. Prins E M. Sevaux,
Dash Optimization Ltda, 2000.
[12] Dantzig, G. B., Linear Programming and Extensions, Princeton Universty
Press, 1963.
[13] Dantzig, G. B. e Thappa,M.N., Linear Programming 1: Introduction, Springer, 1997.
[14] Drexl, A. e Kimms, A., Lot sizing and scheduling - survey and extensions,
European Journal of Operational Research, 99, 1997, 221-235.
[15] Ferris, M.C, e Zhang, Y. Foreword: Special issue on mathematical programming in biology and medicine, Mathematical Programming, 101(2), 297-299,
2004.
[16] Ferreira, D.; Rangel, S.; Morabito, R. Um Modelo Integrado De Dimensionamento E Sequenciamento De Lotes Para A Produo De Bebidas, Anais Do
XXXVI Simpsio Brasileiro De Pesquisa Operacional SOBRAPO, 2335-2335,
,
2004.
[17] Friedlander, A., Elementos de programao no-linear,Editora da UNICAMP,
1994.
[18] Fourer, R., D.M. Gay, B.W. Kernighan, AMPL: A Modeling Language for
Mathematical Programming, Duxbury Press / Brooks/Cole Publishing Company, 2002.
[19] Fourer, R., Lopes,L., Martin, K. LPFML: A W3C XML Schema for Linear
Programming, Relatrio Tcnico, Department of Industrial Engineering and
Management Sciences, McCormick School of Engineering and Applied Science,
Northwestern University, USA, 2004.
[20] Garey, M. R. e Johnson D.S., Computer Intractability - A Guide to the Theory
of NPCompleteness, W.H. Freeman Company, 1979.
[21] Goldbarg, M.C. E Luna, H.P.L., Otimizao Combinatria e Programao
Linear, Editora Campus, 2000.
[22] Gonzaga, C. C., Algoritmos de Pontos Interiores para Proigramao Linear
,
IMPA, 1989.
[23] Gonnet G.H., Korostensky C., Benner S., Evaluation measures of multiple
sequence alignments Journal of Comupational Biology, 7, (1-2), 261-276, 2000.
[24] Gurreiro, J., Magalhes, A. e Ramalho, M., Programao Linear, Vol II, Mac
Graw Hill.
[25] Hadley, G., Programao Linear, Ed. Guanabara Dois, 1982.

80

Bibliograa

[26] Hilllier, F.S. E Lieberman, G.J., Introduo Pesquisa Operacional, Ed. Campus, 1988.
[27] Ilog, ILOG CPLEX 7.1: Getting Started, ILOG, 2001.
[28] Lachtermacher, G., Pesquisa Operacional na Tomada de Decises, Ed. Campus, 2002.
[29] Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G. e Shmoys, D.B. (ed.), The
Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization
Problems, Wiley, 1990.
[30] Linderoth,J. T. e Ralphs, T. K., Noncommercial Software for Mixed-Integer
Linear Programming December, Relatrio Tcnico, Department of Industrial
and Systems Engineering, Lehigh University, Bethlehem, PA 18015, 2005.
[31] Luenberger, D.G., Linear and nonlinear programming,Addison-Wesley, 1984.
[32] Mangasarian OL, Street WN, Wolberg WH, Breast-Cancer Diagnosis And
Prognosis Via Linear-Programming Operations Research 43 (4): 570-577 JulAug 1995.
[33] Martello, S. e Toth, P., Knapsack problems, John Wiley, 1990.
[34] Maximal
Software,
MPL Modeling
(http://www.Maximal-Usa.Com)

System,

v.

4.2,

2002.

[35] Morton , E. T. e Pentico, D. W., Heuristic Scheduling Systems, WileyInterscience Publication, 1993.
[36] Moody, S., Methods and Tools for Modelling Linear and Integer Programming
Problems, Ph.D. Thesis, Department of Mathematics and Statistics, Brunel
University, Uxbridge, UK, March, 141p, 1994.
[37] Muller, F. M. Introduo aos Problemas de Sequenciamento, Minicurso, Congresso Nacional de Matemtica Aplicada e Computacional - Setembro/2002.
[38] Murphy,
F.H.,
Annotated Bibliography on Linear Programming Models,
Interactive Transactions of ORMS, v.1,
n.4.
http://catt.bus.okstate.edu/itorms/volumes/vol1/papers/murphy/ (ltima
consulta: 25/05/2005)
[39] Murphy, F.H., Understanding Linear Programming Modeling Through an
Examination of Early Papers on Model Formulations, Operations Research,
45, 3, 341-356, 1997.
[40] Namem, A.A.A. e Bornstein, C., Uma Ferramenta para Avaliao de Resultados de Diversos Modelos de Otimizao de Dietas, Pesquisa Operacional,
v.24, n.3, p.445-465, 2004

Bibliograa

81

[41] Nemhauser, G.L. e Wolsey, L., Integer and Combinatorial Otimization, Wiley,
1988.
[42] Padberg, M. e Rinaldi, G., A Branch and Cut Algorithm for the Resolution
of Large-scale Symmetric Traveling Salesman Problems, SIAM Review, 33(1),
66-100, 1991.
[43] Pinedo, M., Scheduling - Theory, Algorithms and Systems, Prentice Hall,
1995.
[44] Rangel, S., Estratgias de decomposio aplicadas ao problema de sequenciamento de tarefas para mquina nica, Resumos do XXVII CNMAC, Porto
Alegre, SBMAC, p. 450-450, 2004.
[45] Rangel, S., Solving Integer Programming Problems using Preprocessing and
Cutting Planes: Theory and Implementation of Branch and Cut Tese de
,
doutorado, Brunel University, Uxbridge, Inglaterra, 1995.
[46] Rangel, S., Ferreira, D., Um modelo de dimensionamento de lotes para uma
fbrica de refrigerantes, Tema - Tndencias Em Matemtica Aplicada e Computacional, SBMAC, v. 4, n. 2, p.237-246, 2003.
[47] Rardin, R.L., Optimization in Operations Research, Prentice Hall, 1998.
[48] Saltzman, M.J., Broad Review of Software Packages available,OR/MS Today,
ORSA/TIMS, pg. 42-51, 1994.
[49] Sharda, R. e Rampal. G., Algebraic Modeling Languages on PCs, OR/MS
Today, 22(3), 58-63, 1995.
[50] Szwarcter, J.L., Grafos e algoritmos computacionais, Ed. Campos, 1988.
[51] Sodhi, M.S., LP modeling for asset-liability management: A survey of choices
and simplications, Operations Research, 53 (2), 181-196, 2005.
[52] Taube, M., Matemtica Para Produtividade, Com Cincia - Revista Eletrnica, SBPC/LBJOR, 2002.
[53] Toledo,C.F.M., Frana, P. e Morabito, R., Proposta de um modelo conjunto
de programao da produo e dimensionamento de lotes aplicado a uma
indstria de bebidas, em Anais do XXII ENEGEP, Curitiba, PR, outubro,
2002.
[54] Trigeiro,W.W., Thomas, L.J. e Mcclain,J.O. , Capacitated lot sizing with
setup times, Management Science, 35, No. 3 , 353-366, 1989.
[55] Wagner, H., Pesquisa Operacional, Prentice Hall do Brasil, 1986.
[56] Williams, H.P., Model Bulding In Mathematical Programming, John Wiley &
Sons, 1990.

Bibliograa

[57] Wright, S.J., Primal-Dual Interior-Point Mthods, SIAM, 1997.


[58] Wolsey, L., Integer Programming, Ed. John Wiley & Sons, 1998.

82

ndice
NP-hard, 47
Variable Upper Bound, 68
branch and bound, 33, 61
branch and cut, 33, 61
cut and branch, 61
knapsack problem, 49
set-up variables, 68
aditividade, 8
algoritmos heuristicos, 77
AMPL, 15, 26, 29
biblioteca de subrotinas, 33
cenrios, 14
circuito hamiltoniano, 51
complexidade computacional, 47
conjunto de restries, 2
construo de modelo, 2
CPLEX, 33
critrio de otimizao, 3

funo-objetivo, 2, 5
funo-objetivo linear, 8
gerar exemplar, 22
implementao, 3
indstria de bebidas, 61
inequaes de cobertura, 50
inequaes vlidas, 48
interface, 14, 25
invivel, 40
limitantes, 47
limite dual, 47, 61
limite primal, 48
linear por partes, 72
linguagem algbrica de modelagem, 13
lp, formato, 25

manuteno, 3
maximizar, 3
minimizar, 3
dados do modelo, 9
modelagem, 2
divisibilidade, 10
modelagem matemtica, vii
documentao, 14
modelo de otimizao, 2, 3
modelo de otimizao binrio, 49
elementos conhecidos, 2, 9
modelo de otimizao linear, 8
elementos desconhecidos, 2
modelo de planejamento multi-perodo,
estrutura das linguagens de modelagem,
41
15
modelo matemtico, 14
exemplar, 14
modelos de otimizao, 1
MOSEL, 15
ferramentas de modelagem, 13
MPL, 15, 16, 42, 53
ferramentas de resoluo, 13
mps, formato, 25
formato lp, 22, 25
mtodo simplex, 33
formato mps, 22, 25
mtodos de ponto interior, 33
formato padro, 4, 8

84

NDICE

NP-difcil, 47

sujeito a, 3

otimizao, 3
otimizao 0/1, 49
otimizao binria, 49
otimizao combinatria, 50, 58
otimizao inteira, 1, 49
otimizao inteira mista, 5, 54, 69
otimizao linear, 1, 6, 34
otimizao linear contnua, 4
otimizao linear inteira, 4
otimizao no-linear, 5

Teoria dos Grafos, 51


tipo de varivel, 11
totalmente unimodular, 55

pedidos em atraso, 40
planos de corte, 33, 48
problema da designao, 52
problema da dieta, 6, 10
problema da mochila, 49
problema de seleo de projetos, 49
problema de seqenciamento, 70
problema do caixeiro viajante, 58
problema ilimitado, 40
problemas de otimizao, vii
produo de refrigerantes, 62
programao inteira, vii
programao linear, vii
programao matemtica, vii
programao no-linear, vii
proporcionalidade, 8
reformulao automtica, 48
relaxao, 47
relaxao linear, 48
restrio de balanceamento, 41, 65
restries lineares, 4, 8
restries VUB, 68
s.a, 3
SADE, 3
SAM, 3
simulao, 13
sistemas de otimizao, 25
sistemas de resoluo, 25, 48
soluo vivel, 11
soluo tima, 11
sub-rotas, 54, 55, 58

validao de um modelo, 3, 10
variveis binrias, 46, 48, 67
variveis de deciso, 2
variveis de preparao, 68
varivel de deciso, 2, 9
XPRESS-IVE, 26
XPRESS-MOSEL, 15, 26, 59
XPRESS-MP, 33

Notas em Matemtica Aplicada

1. Restaurao de Imagens com Aplicaes em Biologia e Engenharia


Geraldo Cidade, Antnio Silva Neto e Nilson Costa Roberty
2. Fundamentos, Potencialidades e Aplicaes de Algoritmos Evolutivos
Leandro dos Santos Coelho
3. Modelos Matemticos e Mtodos Numricos em guas Subterrneas
Edson Wendlander
4. Mtodos Numricos para Equaes Diferenciais Parciais
Maria Cristina de Castro Cunha e Maria Amlia Novais Schleicher
5. Modelagem em Biomatematica
Joyce da Silva Bevilacqua, Marat Rakov e Cludia de Lello Courtouke
Guedes
6. Mtodos de Otimizao Randmica: algoritmos genticos e simulated
annealing
Sezimria F. Pereira Saramago
7. Matemtica Aplicada Fisiologia e Epidemiologia
H.M. Yang, R. Sampaio e A. Sri Ranga

8. Uma Introduo Computao Quntica


Renato Portugal, Carlile Campos Lavor, Luiz Mariano Carvalho e
Nelson Maculan
9. Aplicaes de Anlise Fatorial de Correspondncias para Anlise de Dados
Dr. Homero Chaib Filho, Embrapa
10. Modelos Matemticos baseados em autmatos celulares para
Geoprocessamento
Marilton Sanchotene de Aguiar, Fbia Amorim da Costa, Graaliz
Pereira Dimuro e Antnio Carlos da Rocha Costa
11. Computabilidade: os limites da Computao
Regivan H. N. Santiago e Benjamn R. C. Bedregal
12. Modelagem Multiescala em Materiais e Estruturas
Fernando Rochinha e Alexandre Madureira
13. Modelagem em Biomatemtica
1 - Modelagem matemtica do comportamento eltrico de neurnios e
algumas aplicaes
2 - Redes complexas e aplicaes nas Cincias
3 - Possveis nveis de complexidade na modelagem de sistemas biolgicos
Coraci Malta, 1 - Reynaldo D. Pinto, 2 - Jos Carlos M. Mombach e 3 Henrique L. Lenzi, Waldemiro de Souza Romanha e Marcelo Pelajo-Machado
14. A lgica na construo dos argumentos
Angela Cruz e Jos Eduardo de Almeida Moura

You might also like