Escolar Documentos
Profissional Documentos
Cultura Documentos
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 identifica 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 du-
rante a Segunda Guerra Mundial. De fato, George B. Dantzig usou o termo Programao Linear (mais
especificamente Programming in a linear Structure, mais tarde resumido para Linear Programming e gen-
eralizado 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 codificao 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 codificao de um algoritmo.
O termo Otimizao empregado s vezes em referncia a uma classe especfica de problemas de Progra-
mao Matemtica: problemas de Programao no-linear. No entanto, Otimizao pode ser usado para
designar Programao Matemtica de forma a tornar o significado 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
eficientes 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. A partir de modelos clssicos possvel aprender o processo de modelagem e desenvolver ha-
bilidades 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.
Nota
O presente texto uma reproduo autorizada do minicurso "Introduo Construo de Modelos de
Otimizao Linear e Inteira"de minha autoria apresentado no XXVIII CNMAC realizado de 12 a 15 de
setembro de 2005 na cidade de So Paulo - SP, publicado pela SBMAC na srie Notas em Matemtica
Aplicada, vol 18.
So Jos do Rio Preto, outubro de 2006.
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 financeiro 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.
ii
Sumrio
1. Modelos de Otimizao 1
2. Um primeiro modelo de otimizao linear: o problema da dieta 7
2.1. Axiomas: proporcionalidade, aditividade, divisibilidade 7
3. Ferramentas Computacionais 14
3.1. Linguagens algbricas de modelagem 14
3.2. A linguagem MPL 17
3.3. As linguagem XPRESS-MOSEL e AMPL 28
3.4. Sistemas de resoluo 36
4. Aplicaes de Otimizao Linear 38
4.1. Planejamento da produo 38
4.1.1. Planejamento Multi-perodo 41
4.1.2. Modelo na sintaxe do MPL 46
5. Aplicaes de Otimizao Linear Inteira 51
5.1. O problema da mochila 52
5.2. O Problema do Caixeiro Viajante 54
5.2.1. Formulao de Miller, Tucker e Zemlin 59
5.2.2. Formulao de Dantzig, Fulkerson e Johnson 64
5.3. Dimensionamento de lotes com tempos de preparo 67
5.3.1. A linha de produo de uma Fbrica de Refrigerantes 67
5.3.2. Um modelo de otimizao inteira mista 68
5.4. Problema do Escalonamento de Tarefas 76
5.4.1. Classificao do Problema - ( | |) 77
5.4.2. Modelo com restries disjuntas 77
5.4.3. Modelo Indexado pelo tempo 80
Referncias 83
Bibliografia 83
ndice Remissivo 88
1
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO
LINEAR CONTNUA E INTEIRA
SOCORRO RANGEL
1. Modelos de Otimizao
"Existem duas maneiras de aumentar a eficincia 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
identificar 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 estudada. Nem sempre a iden-
tificao destes elementos imediata. A facilidade de obteno destas informaes depende diretamente
do grau de organizao do setor em estudo. Para encontr-las, algumas simplificaes iniciais da situao
estudada so necessrias. Estes elementos sero importantes para a construo do modelo matemtico,
atravs deles que sero definidos 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 definir 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 coeficientes 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 a
seguir.
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 definidas, uma funo-objetivo e um conjunto de restries so inicialmente propostos. possvel que
durante a definio da funo-objetivo e das restries, novas variveis sejam necessrias, outras restries
1Traduzido de (Kantarovich (1939) in Dantzig [12]-pg 22)
2 SOCORRO RANGEL
sejam identificadas, 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 verificar 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 reflitam 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 reflita 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 final. 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, cientficos
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 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 definio do tipo das variveis.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 3
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 quantificao 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 "no-quantificveis"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 cientfica e honesta de lidar com a
questo. A preciso dos dados deve ser considerada em relao a cada modelo especificamente. Apesar
de uma parcela dos coeficientes 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 definio 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 modificao
do conjunto de restries e/ou da funo-objetivo. Se a resposta for aceitvel, pode ser sbio tom-la apenas
como uma opinio. Modificar a funo-objetivo (e conseqentemente o modelo) pode resultar em uma
outra opo. Questionando as respostas fornecidas pelo modelo e modificando-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 eficientes e discutimos alguns problemas clssicos que servem de ponto de partida para a
soluo de diversos problemas no nosso dia a dia.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 5
Para iniciar a construo do modelo matemtico que represente o problema da Paula, precisamos dis-
tinguir os elementos conhecidos e os desconhecidos conforme a discusso que fizemos no Captulo 1 (ver
Figura 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 1 podemos verificar 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 definir 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.
6 SOCORRO RANGEL
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 definio dos elementos principais do modelo necessrio definir:
Restries
- a dieta deve fornecer uma quantidade mnima dos nutrientes pr - especificados.
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 definido
no Captulo 1 pela Expresso (2) tambm pode ser escrito no seguinte formato:
n
(5) min
P
z= c j xj
j=1
sujeito a
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
..
(6) .
am1 x1 + am2 x2 + . . . + amn xn bm
(7) xj 0, xj <
onde o smbolo pode ser substitudo por "5", "=", 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 definio de um modelo de otimizao linear.
A funo-objetivo (5) e as restries (6) 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 j poder ento assumir valores inteiros entre 1 e 4 para representar
cada um deles. De forma similar definiremos 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.
Verificamos 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 definir:
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.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 7
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 comprarmos
x1 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 1 podemos explicitar o conjunto de restries:
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 (8) abaixo.
min z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
(8) 3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
xj 0, j = 1 . . . , 4
Note que a definio 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 (8).
8 SOCORRO RANGEL
Uma vez obtido o modelo de otimizao linear que represente, pelo menos a princpio, a situao
estudada precisamos verificar 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 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 (8) pelo sistema c_otim obtemos a seguinte soluo:
(9) z = 112, 5, x1 = 0, x2 = 0, x3 = 12, 5, x4 = 0.
que "traduzida"quer dizer que a dieta dever ser composta por 12,5 pores de leite correspondendo a
aproximadamente 2,96 litros de leite (x3 representa o nmero de 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 fictcio 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 reflita 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 (8). 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)). O
modelo continua sendo linear, pois apesar de restritas, as varveis continuam podendo receber qualquer
valor real dentro de um determinado intervalo. O novo modelo ento:
min z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
(10) 3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
x1 1, x2 2, x3 3, x4 3, xj 0, j = 1 . . . , 4.
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 especificamente
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.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 9
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 especfico podem auxiliar no processo de con-
struo, 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.4).
dizer que (11) um modelo para o problema da dieta e que (8) 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.
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 gra-
tuitamente 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) acom-
panha 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 definio do modelo tambm podem ser usados para
escrever relatrios da soluo de um exemplar. Duas linguagens de modelagem no-comerciais (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 definio 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 definidas ou no para todos os elementos de um
conjunto;
- funo-objetivo
linear ou no linear;
- restries
podem ser agrupadas por tipo para expanso a posteriori, e definidas 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.2. A linguagem MPL. Faremos aqui uma breve apresentao da linguagem MPL2 (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.
2umaverso 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).
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 11
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), composta
de comandos usuais de aplicativos para Windows: FILE (e.g. abrir, fechar, salvar), EDIT (e.g. cortar,
copiar, colar); e comandos especficos 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.
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 definir 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 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 definir 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 fizemos na modelagem descrita no Captulo 1, vamos agora definir 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
definimos os ndices do Modelo (8) usamos as letras i e j e nmeros inteiros para definir 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 definir 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 ndices i 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.
12 SOCORRO RANGEL
{ 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)
Podemos iniciar agora a definio dos elementos conhecidos do modelo, ou seja a seo DATA. neste ponto
que sero definidas as estruturas que iro armazenar os dados do exemplar que iremos gerar posteriormente.
Na generalizao do Modelo 8 definimos 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
definindo 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 definidos na seo INDEX. O
comando VARIABLES abre a seo de definio 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
verificar 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 4).
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 verificada. 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 5).
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 13
Neste caso, 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 especfica a ser
seguida. Boas prticas de programao e codificao podem e devem ser usadas. conveniente observar
que o MPL verifica a sintaxe do modelo linha por linha. No processa uma nova linha se for encontrado
algum erro na linha anterior. Esta forma de verificao de sintaxe muda de uma linguagem de modelagem
para outra.
Incluindo o comando MODEL iniciamos a descrio do modelo de otimizao propriamente dito: definio
da funo-objetivo e das restries.
P Uma representao mais compacta e simples para o Modelo (11) pode
ser obtida se usarmos o smbolo para representar as somas. Isto , podemos reescrever o modelo para
o problema da dieta como (12) abaixo.
n
X
min z= c j xj
j=1
sujeito a
Xn
(12) aij xj bi , i = 1, . . . , m
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
14 SOCORRO RANGEL
(8). O smbolo de soma representado na linguagem MPL atravs do comando SUM, e os ndices usados
P
para a expanso bem como a expresso a ser expandida so definidos entre parnteses. A funo-objetivo
identificada 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 defin-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
finalizar a descrio do modelo inclumos o comando END. O modelo completo dado na Figura 6 dada
anteriormente.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 15
{ 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
Recursos da Linguagem. Um vez definido 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.4 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 definidos 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 7 e 8 mostram o Exemplar (8) nos formatos mps e lp.
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
O formato mps o formato mais usado para representar um exemplar de um problema. Foi criado para
unificar a comunicao de dados entre os diversos tipos de sistemas de resoluo e facilitar a comunicao
de dados na comunidade cientfica. Possui um formato simples, mas tem algumas desvantagens: no
possvel identificar 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 definir 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 definido 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-definida
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.3. As linguagem XPRESS-MOSEL e AMPL.
Nesta seo faremos uma breve introduo s linguagens de modelagem XPRESS-MOSEL 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 definidas 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, dimension-
amento de lotes). Possuem dois modos de uso, via interface grfica 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-MOSEL3 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 (definio de variveis e restries) bem como
comandos para controle (seleo e loops) que permitem a codificao 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 grfica, 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.
3Para
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).
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 19
{ Arquivo: dieta.mos
Problema da Dieta: Determinar uma combinao de alimentos que
fornea
uma quantidade mnima de nutrientes }
MODEL dieta
USES "mmxprs"! define o sistema mmxprs para resolver o
exemplar
DECLARATIONS
! definio dos ndices
alimento = {"arroz", "ovos", "leite", "feijao"};
nutriente = {"energia", "proteina", "Caloria"};
! definio da funo-objetivo
Custo_total := SUM(j in alimento) preco(j)*comprar(j);
! relatrio da soluo
WRITELN("Custo_total: ", GETOBJVAL)
WRITELN("Numero de pores a ser includa na dieta: ")
FORALL(j in alimento) WRITELN(j, ": ", GET-
SOL(comprar(j)))
END-MODEL
Note que apesar de manter a mesma estrutura que o MPL, a descrio do modelo na sintaxe do
XPRESS-MOSEL muito diferente. A definio das estruturas para armazenamento de dados e var-
iveis, precedidas do comando DECLARATIONS, segue o padro das linguagens de programao. Os
vetores e matrizes so definidos pelo comando ARRAY seguido da definio 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 definir as variveis
do modelo. O comando END-DECLARATIONS finaliza 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 identificada como tal atravs do comando MINIMIZE (ou MAX-
IMIZE) que possui duas funes: invocar o sistema de resoluo, definido atravs do comando USES, e
definir o critrio de otimizao. O comando FORALL foi usado para expandir o conjunto de restries.
Observe que a sintaxe para definio das restries bem diferente da sintaxe do MPL. Alm do comando
FORALL, necessrio definir 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 AMPL4 possui uma sintaxe bem prxima da descrio al-
gbrica 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 grfica 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 (nomemod-
elo.mod). Os dados do exemplar a ser resolvido so fornecidos em um outro arquivo tipo texto (dados-
modelo.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 no prompt 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 ;
ampl: data dadosmodelo.dat;
ampl: option solver nome do sistema de resoluo;
ampl: show;
ampl: solve;
ampl: display nomevariavel ;
O comando option solver define o sistema de resoluo que ser usado para resolver o exemplar do modelo
especificado 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 estru-
tura 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 define. No MPL estes comandos abrem uma seo no cdigo onde todos as definies
so feitas. A estrutura geral para a descrio de um modelo dada a seguir.
- SET
define um ndice;
- PARAM
4Uma verso resumida pode ser obtida gratuitamente no endereo http://www.ampl.com/DOWNLOADS/index.html
(ltima visita em 13/08/2005)
22 SOCORRO RANGEL
define uma estrutura (vetor ou matriz) que ir armazenar os elementos conhecidos do exemplar,
fornecidos no arquivo nomemodelo.dat;
- VAR
define variveis de deciso;
- MINIMIZE (ou MAXIMIZA)
define a funo-objetivo e o critrio de otimizao;
- SUBJECT TO
define um conjunto de restries.
O contedo do arquivo dieta.mod contendo o problema da dieta (11) na sintaxe do AMPL mostrado
na Figura 11 a seguir. Os comentrios so precedidos do smbolo #, e todos os comandos devem finalizar
com ponto e vrgula (;). Os dados necessrios para gerar um exemplar (dieta.dat) pode ser visto na Figura
12.
# Arquivo: dieta.mod
# Problema da Dieta: Determinar uma combinao de alimentos
que fornea
# uma quantidade mnima de nutrientes
# Definio dos ndices
SET alimento;
SET nutriente;
# Definio das estruturas para receber dados do exemplar
PARAM preco { alimento }
PARAM nivel { nutriente };
PARAM quant {nutriente, alimento };
# Definio das variveis de deciso
VAR comprar { j in alimento } >=0;
# definio da funo-objetivo
minimize custo_total: SUM { j in alimento } preco[j] * com-
prar[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];
# fim arquivo dieta.mod
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.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 23
# 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;
O modelo de otimizao linear pode ser construdo definindo os ndices j para representar o tipo de produto
(madeira beneficiada, compensado) e i para representar o tipo de insumo (canela, pinho). Estes ndices
sero usados para definir os demais elementos do modelo.
ndices
j = 1, . . . , 2 representa respectivamente os produtos: madeira beneficiada, compensado;
i = 1, . . . , 2 representa respectivamente os insumos: canela, pinho.
Variveis de deciso
Precisamos decidir quanto produzir de cada item.
x1 : quantidade de madeira beneficiada produzida (em m3 )
x2 : quantidade de compensado produzido em (100m2 )
Note que necessrio definir 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 beneficiada 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 1m3 de pinho para a produo de 1m3 de madeira beneficiada 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:
(13) x1 + 2x2 32
- Canela:
Compromissos de venda determinam uma quantidade mnima a ser produzida de cada um dos items.
Temos ento um segundo conjunto de restries.
Restries relativas produo mnima
- Madeira beneficiada:
x1 5
- Compensado:
x2 12
Observe que a varivel x2 foi definida 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
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 27
15 abaixo.
min z = 45x1 + 60x2
sujeito a
x1 + 2x2 32
(15) 4x1 + 4x2 72
x1 5, x2 12.
O Modelo (15) envolve apenas duas variveis e pode ser resolvido facilmente pelo mtodo grfico ou
manualmente pelo mtodo simplex (e.g. [21], [6]). Note que sua estrutura muito similar ao modelo do
problema da dieta (8). De fato se considerarmos que temos n produtos, m insumos, o Modelo 15 pode ser
generalizado e escrito como:
max z = c 1 x1 + c 2 x2 + . . . + c n xn
sujeito a
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
..
(16) .
am1 x1 + am2 x2 + . . . + amn xn bm
x j 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 15 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 insumos
em cada um desses meses (ver Tabelas 2 e 3). 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 beneficiada e 3.5 u.m. para cada 100 m2 de compensado.
Tabela 2. Previso de Vendas Mensal
Produto Ms
Janeiro Fevereiro Maro Abril
M. beneficiada 43 0 100 53
Compensado 45 100 0 72
Insumo Ms
Janeiro Fevereiro Maro Abril
Pinho 32 32 20 32
Canela 72 80 40 72
Para adaptar o Modelo (15) de forma a refletir 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
definir 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 definir x3
28 SOCORRO RANGEL
como sendo o nmero de m3 de madeira beneficiada produzida em fevereiro. No entanto mais natural se
mantivermos o ndice j como definido 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.
Redefinio 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 definio 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
- Quanto e quando estocar de cada item em cada ms:
yjt : quantidade do item j em estoque no final 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.
Redefinio da funo-objetivo
- Retorno total associado venda dos produtos:
2 X
X 4
T otalvendas = pj sjt .
j=1 t=1
2 X
X 4
T otalestoque = cj yjt .
j=1 t=1
do modelo matemtico. Antes de prosseguirmos, vamos avaliar o modelo que construmos at agora.
Resumindo as informaes acima temos:
X 4
2 X 2 X
X 4
min Lucro = pj sjt cj yjt
j=1 t=1 j=1 t=1
sujeito a
x1t + 2x2t b1t , t = 1, . . . , 4
(19) 4x1t + 4x2t b2t , t = 1, . . . , 4
xjt 0, sjt 0, yjt 0, j = 1, 2; t = 1, . . . , 4.
De acordo com a funo-objetivo do Modelo (19) 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 infinito para as variveis
de venda sjt . Mas obter lucro infinito 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 (19) 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 2 foi fornecida
uma previso para as vendas de cada produto em cada ms. Podemos pensar nestes valores como limite
superior para as variveis sjt . 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 beneficiada e 45m2 de compensado. Mas note que no temos insumo
suficiente (pinho) para produzir esta quantidade de produtos. Ou seja, as vendas esto limitadas pela
capacidade de produo, no podemos vender mais do que podemos produzir5. Observe na Tabela 2 que a
previso de vendas, djt , indica que no h demanda por madeira beneficiada no ms de fevereiro, mas ela
alta no ms de maro. Talvez seja interessante produzir madeira beneficiada em fevereiro, armazenar e
vender em maro. O mesmo raciocnio pode ser estendido para os demais perodos. Assim, a quantidade
produzida em um perodo t somado quantidade em estoque no final do perodo anterior (t 1) deve ser
menor ou igual quantidade de produto vendido. O que sobrar no final do perodo t ser armazenado.
Lembrando que y1t a quantidade de produtos em estoque no final do perodo t podemos representar a
restrio de balanceamento relativa madeira beneficiada como:
Novas restries: balanceamento
- Madeira Beneficiada
Para resolver o exemplar definido na seo DATA, acione o aplicativo CPLEX (Seo 3.4) atravs dos
comandos RUN, Solve CPLEX do menu principal do MPL. Na Figura 14 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
15.
SOLUTION RESULT
Optimal solution found
MAX Lucro = 3653.0000
MACROS
Macro Name Values
Totalvendas 3720.0000
Totalestoque 67.0000
DECISION VARIABLES
VARIABLE x[produto,mes] :
produto mes Activity
-
Madeira_Beneficiada janeiro 4.0000
Madeira_Beneficiada fevereiro 8.0000
Madeira_Beneficiada abril 4.0000
Compensado janeiro 14.0000
Compensado fevereiro 12.0000
Compensado maro 10.0000
Compensado abril 14.0000
-
VARIABLE s[produto,mes] :
produto mes Activity
-
Madeira_Beneficiada janeiro 4.0000
Madeira_Beneficiada maro 8.0000
Madeira_Beneficiada abril 4.0000
Compensado janeiro 14.0000
Compensado fevereiro 12.0000
Compensado abril 24.0000
-
VARIABLE y[produto,mes] :
produto mes Activity
-
Madeira_Beneficiada fevereiro 8.0000
Compensado maro 10.0000
-
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 dificuldade da sua resoluo. De fato, uma boa
formulao do problema pode ser de crucial importncia para a eficincia 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 dificuldade associado sua soluo. Um
estudo detalhado sobre a classificao de problemas de otimizao inteira quanto ao grau de dificuldade
de sua soluo (complexidade computacional) pode ser visto em [20] e [10]. Saber que um problema
classificado 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 eficientes 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 (3)
definido 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 refinada
iterativamente para obter limites melhores. Solues viveis fornecem limites superiores (limite primal
[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.4). 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 planejando 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 4 abaixo. No possvel
fazer investimento parcial em um dado projeto. Em que projetos deve ser investido o capital disponvel?
O enunciado deste problema muito simples e podemos definir 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. Definindo:
36 SOCORRO RANGEL
Projeto P1 P2 P3
Investimento 3 5 4
retorno 40 10 10
Tabela 4. Investimento e Retorno (em milhes de u.m.)
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
1, se o projeto j for selecionado
xj =
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 in-
teira, mais especificamente 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 4 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 suficiente 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
(23) 3x1 + 5x2 + 4x3 10
xj = 0 ou 1
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 eficientes 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 possvel. O modelo matemtico que
descreve este problema e que generaliza o Modelo (23) :
X n
max z = p j xj
j=1
sujeito a
Xn
(24) aj x j C
j=1
xj = 0 ou 1.
Em (24) 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.
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 37
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 eficiente
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 florestais 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 Figura16).
O peso de uma aresta entre duas cidades igual ao custo da viagem entre elas. Em termos de Teoria dos
Grafos, a soluo deste problema consiste em determinar o circuito6 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 definir:
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
definir se a cidade i precede ou no a cidade j no roteiro. Isto :
Varivel de deciso
1, se a cidade i visitada antes da cidade j
xij =
0, caso contrrio;
6Um circuito uma seqencia de vrtices e arestas onde no h repetio de vrtices, exceto pelo primeiro.
38 SOCORRO RANGEL
A varivel xii no tem nenhum significado nesta aplicao, portanto s h variveis quando i 6= j. O
critrio para a tomada de decises est claramente definido, 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 definida como:
Funo Objetivo
6 X
X 6
min z = cij xij .
i=1 j=i
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 fizermos x12 = 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:
"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.
Acionando o CPLEX (Seo 3.4), atravs do MPL, para resolver um exemplar do problema obtemos a
soluo mostrada na Figura 18. Note que todas as cidades foram includas no roteiro, mas no passamos
PLAIN VARIABLES
Variable Name Activity
Custo_Total 170.0000
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 19) 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.
uj , j = 2 . . . 6
A incluso do seguinte conjunto de restries ao Modelo 28 elimina a possibilidade de sub-rotas:
Novas Restries
ui uj + 6xij 5, i, j = 2 . . . 6; i 6= j.
A demonstrao de que este conjunto de restries suficiente para eliminar as sub-rotas pode ser visto
em [29] e [24]. O novo modelo para representar o Exemplo 5.2 dado por:
6 X
X 6
min z = cij xij
i=1 j=i
sujeito a
xi1 + . . . + xi6 = 1, i = 1...6
(29) x1j + . . . + x6j = 1, j = 1...6
ui uj + 6xij 5, i, j = 2 . . . 6; i 6= j
xij = 0 ou 1; i, j = 1 . . . 6, i 6= j
ui 0; i = 2 . . . 6.
A modelagem de 29 na sintaxe do MPL vai exigir novos recursos. Veja na Figura 20 o novo modelo.
Observe que agora necessrio definir a varivel x como binria, pois a matriz de restries no mais
totalmente unimodular7.
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 20. 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 "caix-
eiro.xls". A varivel uj ser gerada apenas para os ndices definidos no Modelo 29. Da mesma forma, o
comando WHERE gera o conjunto de restries de sub-rotas apenas quando i 6= j. Acionando mais uma
vez o CPLEX para resolver o exemplar obtemos a soluo mostrada na Figura 21. 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.4).
interessante observar que as variveis uj apesar de definidas como contnuas receberam valores inteiros. O
limite inferior igual a dois definido 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 definidos.
O modelo mostrado na Figura 20 representa tanto o Exemplar (29) como um problema mais geral (30)
que pode ser enunciado como: encontre o roteiro de menor custo que passe por n cidades exatamente uma
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 43
VARIABLE u[no=SP..Sal] :
no Activity
SP 2.0000
Go 3.0000
Ma 4.0000
Be 5.0000
Sal 6.0000
produo. A fbrica possui trs tanques pequenos e quatro tanques grandes. Os tanques devem trabalhar
com uma quantidade mnima de lquido suficiente 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, codificar e empacotar os refrigerantes. Ao
final 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
23.
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, codificar,
empacotar) deve ter capacidade maior que a da enchedora, assim como a parte pr-enchedora (lavagem,
preparo do lquido), pois se a enchedora estiver trabalhando 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, verifica 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.
q
s X n
X X
cpijt xijt
i=1 j=1 t=1
- Custo de estoque
q
s X n
X X
caijt xijt
i=1 j=1 t=1
- Minimizar custo de produo e armazenamento
s X q n
X X
(32) min Custo_T otal = (cpijt xijt + caijt xijt )
i=1 j=1 t=1
q
s X
X
(34) aj eijt L, t = 1...n
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 (ct ) em termos do nmero de tachadas de xarope que a linha de
produo consegue engarrafar em cada perodo. Esta restrio ir ser usada para definir o nmero de
tachadas (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
X
(35) yit ct , t = 1 . . . n.
i=1
q
X
(36) bij xijt = 1310yit , i = 1 . . . s; t = 1 . . . n
j=1
q
s P
P
(37) kj xijt ht , t = 1, ..., n.
i=1 j=1
Note no entanto, que na Restrio (37) 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 23 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
zit = no perodo t
0, caso contrrio;
- Tamanho:
1, se a mquina estiver ajustada para a produo do tamanho j
wjt = no perodo t
0, caso contrrio.
Precisamos garantir que s pode haver produo de um refrigerante do sabor i = 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
(38) Sabor: x Mzijt it
P q
s P s
P q
P
(40) kij xijt + oi zit + fj wjt ht , t = 1, ..., n.
i=1 j=1 i=1 j=1
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 51
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-especificada (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
onde csab
i e ctam
j so respectivamente os custos de troca de sabor e de tamanho.
Podemos resumir as expresses acima no seguinte modelo de otimizao inteira mista cujo objetivo
definir um programa para a produo dos refrigerantes que minimize os custos de produo, armazena-
mento, e preparo das mquinas (FR):
s P q P n
min cpij xijt +caj eijt +csab +c
P tam
i zit j w jt
i=1 j=1 t=1
Sujeito a:
q
P
bij xijt = 1310y it , i = 1, ..., s; t = 1, ..., n.
j=1
s
P
yit ct , t = 1, ..., n.
i=1
Ps Pq P s Pq
kij xijt + oi zit + fj wjt ht , t = 1, ..., n.
i=1 j=1 i=1 j=1
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, ..., s; j = 1, ..., q; t = 1, ..., n.
Ps P q
aj eijt L, t = 1, ..., n.
i=1 j=1
qmin zij yit qmax zij , 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.
52 SOCORRO RANGEL
Considerando apenas os conjuntos de restries (33), (38), (39) e (40) obtemos um modelo que con-
hecido 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 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 eficiente os recursos disponveis [43].
Do ponto de vista matemtico, construir modelos de otimizao que representem de forma adequada o
problema continua sendo um desafio. 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 interromp-
idas, 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-definidos pelos compradores. Caso a fbrica en-
tregue 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 abaixo. O gerente de produo precisa definir a seqncia em que ele ir produzir
os lotes de forma a minimizar a demora na entrega dos lotes e as respectivas multas.
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.5. Classificao do Problema - ( | |). Existe uma nomenclatura prpria para descrever Prob-
lemas 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,
INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA 53
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
classificado como 1| | wT max.
5.5.1. Modelo com restries disjuntas.
Para construir o modelo de otimizao vamos identificar 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 :
funo-objetivo linear por partes
(42) min max{0, wi (xi + pi di )}
A funo-objetivo definida 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 42 por:
Funo-objetivo Linear
n
X
(43) minz = wi ti
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
(44) xi + p i xj
ou
(45) xj + p j xi .
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 definir:
54 SOCORRO RANGEL
(47) xj + pj xi + M (yij ).
onde M uma constante real de valor suficientemente grande. Note que se yij = 1 a restrio (46) fica
ativa e a restrio (47) 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
X
minz = wi ti
i=1
sujeito a
ti xi + pi di ,
i = 1...n
(48) 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.
Se a atividade j a ltima a ser executada, temos que xi + pi xj + pj para todo i = 1 . . . n, i 6= j.
Portanto se T T otal representa o tempo total necessrio para a execuo de todas as atividades:
n
X
(49) T T otal = pi ;
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 (48) depende do valor atribudo M .
Mas, considere por exemplo, que a atividade 3, que tem tempo de processamento igual a 4 (ver Tabela 5),
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 (50) deve ser T pi + 1, para garantir que cada uma das atividades seja concluda dentro do
horizonte de planejamento.
Reformulao: Todas as atividades devem ser executadas e concludas
T pi +1
X
(51) xit = 1 i = 1 . . . n.
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
X
(52) xit 1, t = 1...T.
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 definidos acima (51 e 52). No entanto, de acordo com os tempos de
execuo dados na Tabela 5, no perodo t = 7 a mquina ainda estar ocupada com a atividade 2, esta
atividade s estar completa no final 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 25 garante que se a atividade
2 comear no perodo 3, nenhuma outra atividade pode comear antes do final do perodo 7. Estendendo
este raciocnio para os demais perodos, as restries (52) devem ser reformuladas como:
Restries de capacidade: Reformulao
n
X t
X
(53) xit 1, t = 1...T.
i=1 s=tpi +1
56 SOCORRO RANGEL
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.5.1 pode ser calculada como:
Clculo do custo de atraso
wi ((t + pi 1) di ), se t + pi 1 > di
m
cit =
0 caso contrrio;
A funo objetivo pode ser escrita como:
Funo-objetivo
n T pi +1
X X
(54) minz = cm
it xit .
i=1 t=1
Reunindo as informaes acima chegamos ao modelo Indexado por Tempo para o Problema de sequenci-
amento:
n T pi +1
X X
min z = cm
it xit
i=1 t=1
sujeito a
T pi +1
X
xit = 1 i = 1 . . . n
t=1
n
X t
X
(55) xit 1, t = 1...T
i=1 s=tpi +1
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 (48) temos (n2 + 2n) variveis e (2n2 + n)
restries. O exemplar definido pelos dados mostrados na tabela 5 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 (55) 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 (48). O alto nmero
de variveis presentes no Modelo (55), dependente do nmero de perodos considerado no horizonte de
planejamento, sugere o mtodo de gerao de colunas para resolv-lo (e.g. [4], [44]).
Bibliografia 57
Referncias
[1] Applegate, D., Bixby, R., Chvatal, V., e Cook, W., Implementing the Dantzig-Fulkerson-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: mod-
elagem, 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 Cientfica 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.
[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, Depart-
ment 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.
[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.
58
[32] Mangasarian OL, Street WN, Wolberg WH, Breast-Cancer Diagnosis And Prognosis Via Linear-Programming Opera-
tions Research 43 (4): 570-577 Jul-Aug 1995.
[33] Martello, S. e Toth, P., Knapsack problems, John Wiley, 1990.
[34] Maximal Software, MPL Modeling System, v. 4.2, 2002. (http://www.Maximal-Usa.Com)
[35] Morton , E. T. e Pentico, D. W., Heuristic Scheduling Systems, Wiley-Interscience 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
[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] Szwarcfiter, J.L., Grafos e algoritmos computacionais, Ed. Campos, 1988.
[51] Sodhi, M.S., LP modeling for asset-liability management: A survey of choices and simplifications, 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 dimen-
sionamento 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.
[57] Wright, S.J., Primal-Dual Interior-Point Mthods, SIAM, 1997.
[58] Wolsey, L., Integer Programming, Ed. John Wiley & Sons, 1998.
ndice Remissivo
NP-hard, 53 modelo de otimizao binrio, 56
Variable Upper Bound, 76 modelo de otimizao linear, 9
branch and bound, 36, 68 modelo de planejamento multi-perodo, 47
branch and cut, 36, 68 modelo matemtico, 16
cut and branch, 68 modelos de otimizao, 1
knapsack problem, 56 MOSEL, 17
set-up variables, 76 MPL, 17, 18, 48, 60
mps, formato, 27
aditividade, 10 mtodo simplex, 36
algoritmos heuristicos, 86 mtodos de ponto interior, 36
AMPL, 17, 28, 32
NP-difcil, 53
biblioteca de subrotinas, 36
otimizao, 4
cenrios, 16 otimizao 0/1, 55
circuito hamiltoniano, 57 otimizao binria, 55
complexidade computacional, 53 otimizao combinatria, 57, 65
conjunto de restries, 2 otimizao inteira, 1, 55
construo de modelo, 2 otimizao inteira mista, 5, 62, 77
CPLEX, 36 otimizao linear, 1, 7, 38
critrio de otimizao, 4 otimizao linear contnua, 5
otimizao linear inteira, 5
dados do modelo, 10
otimizao no-linear, 5
divisibilidade, 12
documentao, 17 pedidos em atraso, 46
planos de corte, 36, 54
elementos conhecidos, 2, 10
problema da designao, 60
elementos desconhecidos, 2
problema da dieta, 7, 12
estrutura das linguagens de modelagem, 18
problema da mochila, 56
exemplar, 16, 17
problema de seleo de projetos, 56
ferramentas de modelagem, 15 problema de seqenciamento, 78
ferramentas de resoluo, 15 problema do caixeiro viajante, 65
formato lp, 25, 27 problema ilimitado, 45
formato mps, 25, 27 problemas de otimizao, i
formato padro, 5, 9 produo de refrigerantes, 69
funo-objetivo, 2, 6 programao inteira, i
funo-objetivo linear, 9 programao linear, i
programao matemtica, i
gerar exemplar, 25 programao no-linear, i
proporcionalidade, 10
implementao, 3
indstria de bebidas, 69 reformulao automtica, 54
inequaes de cobertura, 57 relaxao, 53
inequaes vlidas, 54 relaxao linear, 54
interface, 17, 27 restrio de balanceamento, 46, 73
invivel, 45 restries lineares, 5, 9
restries VUB, 76
limitantes, 53
limite dual, 54, 69 s.a, 4
limite primal, 54 SADE, 3
linear por partes, 81 SAM, 3
linguagem algbrica de modelagem, 15 simulao, 16
lp, formato, 27 sistemas de otimizao, 27
sistemas de resoluo, 27, 54
manuteno, 4 soluo vivel, 13
maximizar, 4 soluo tima, 13
minimizar, 4 sub-rotas, 61, 62, 66
modelagem, 2 sujeito a, 4
modelagem matemtica, ii
modelo de otimizao, 2, 4 Teoria dos Grafos, 57
59
60
tipo de varivel, 14
totalmente unimodular, 62
validao de um modelo, 2, 12
variveis binrias, 52, 55, 75
variveis de deciso, 2
variveis de preparao, 76
varivel de deciso, 2, 10
XPRESS-IVE, 29
XPRESS-MOSEL, 17, 28, 66
XPRESS-MP, 36