Академический Документы
Профессиональный Документы
Культура Документы
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 durante 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 generalizado como Mathematical Programming) para analisar um problema de planejamento para a fora
area americana. Com a disseminao do uso do computador, programao passou a ser entendido como
a 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 Programao 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 habilidades para a criao de bons modelos matemticos. Ferramentas computacionais (e.g. linguagens
algbricas de modelagem e sistemas de resoluo) permitem experimentar diversos mtodos de soluo,
avaliar as solues obtidas e validar um modelo. Explorando as limitaes dos recursos computacionais
disponveis somos motivados a pesquisar e desenvolver novos mtodos de soluo e novas ferramentas
computacionais.
So Jos do Rio Preto, agosto de 2005.
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
2. Um primeiro modelo de otimizao linear: o problema da dieta
2.1. Axiomas: proporcionalidade, aditividade, divisibilidade
3. Ferramentas Computacionais
3.1. Linguagens algbricas de modelagem
3.2. A linguagem MPL
3.3. As linguagem XPRESS-MOSEL e AMPL
3.4. Sistemas de resoluo
4. Aplicaes de Otimizao Linear
4.1. Planejamento da produo
4.1.1. Planejamento Multi-perodo
4.1.2. Modelo na sintaxe do MPL
5. Aplicaes de Otimizao Linear Inteira
5.1. O problema da mochila
5.2. O Problema do Caixeiro Viajante
5.2.1. Formulao de Miller, Tucker e Zemlin
5.2.2. Formulao de Dantzig, Fulkerson e Johnson
5.3. Dimensionamento de lotes com tempos de preparo
5.3.1. A linha de produo de uma Fbrica de Refrigerantes
5.3.2. Um modelo de otimizao inteira mista
5.4. Problema do Escalonamento de Tarefas
5.4.1. Classificao do Problema - ( | |)
5.4.2. Modelo com restries disjuntas
5.4.3. Modelo Indexado pelo tempo
Referncias
1
7
7
14
14
17
28
36
38
38
41
46
51
52
54
59
64
67
67
68
76
77
77
80
83
Bibliografia
ndice Remissivo
83
88
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 identificao 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
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 funoobjetivo, 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.
funo-objetivo
restries principais: equaes ou inequaes
tipo das variveis
A forma matemtica que a funo-objetivo a ser minimizada (ou maximizada) ir tomar, bem como as
restries e o tipo de varivel, iro definir os diversos modelos de otimizao. Se a funo-objetivo e as
restries forem lineares, e as variveis puderem assumir valores reais, isto x <, temos um modelo de
otimizao linear contnuo no formato padro (Modelo 2).
min
z = cx
sujeito a
(2)
Ax = b
x 0, x <n
onde A uma matriz m x n, x e c so vetores n-dimensionais e b um vetor m-dimensional. Se no Modelo
(2) restringirmos as variveis de forma que s possam assumir valores inteiros, x Z, teremos um modelo
de otimizao linear inteira (Modelo 3).
min
z = cx
sujeito a
(3)
Ax = b
x 0, x Zn
Em determinadas circunstncias interessa que apenas um subconjunto de variveis esteja restrito a assumir
valores inteiros. Neste caso, temos um modelo de otimizao inteira mista (modelo 4).
min
z = cx
sujeito a
(4)
Ax = b
x 0, xj Z, j = 1, . . . , p; xj <, j = p + 1, . . . , n.
Note que no Modelo (4) xj indica a j-sima componente do vetor x. Para facilitar a referncia a estes
modelos usaremos a abreviao (OL), (OI), (OIM) respectivamente. Modelos tais que a funo-objetivo
SOCORRO RANGEL
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.
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:
(5)
min
sujeito a
z=
n
P
j=1
c j xj
(6)
(7)
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.
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.
(8)
min
z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
xj 0, j = 1 . . . , 4
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).
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:
(10)
min
z = 14x1 + 13x2 + 9x3 + 19x4
sujeito a
170x1 + 160x2 + 160x3 + 337x4 2000
3x1 + 13x2 + 8x3 + 22x4 65
12x1 + 54x2 + 285x3 + 86x4 800
x1 1, x2 2, x3 3, x4 3, xj 0, j = 1 . . . , 4.
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.
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 construo, manuteno e soluo de modelos de otimizao. Podemos dividir a discusso deste tpico em
dois blocos: ferramentas de modelagem e ferramentas de resoluo. No primeiro bloco esto as linguagens
de programao (e.g. C, C++, Fortran), as planilhas de clculo (e.g. EXCEL, Lotus 123) e as linguagens
algbricas de modelagem (LAM). No bloco das ferramentas de resoluo entram novamente as linguagens
de programao, usadas para a implementao de algoritmos e os os sistemas de resoluo comerciais e de
pesquisa. Em [28] a planilha de clculo EXCEL usada para modelar e resolver problemas. Nas prximas
sees faremos uma breve discusso sobre linguagens de modelagens (Seo 3.1) e sistemas de resoluo
(Seo 3.4).
3.1. Linguagens algbricas de modelagem.
Em geral, estamos interessados em usar um determinado modelo matemtico para simular diversas
possibilidades ou cenrios antes de tomar uma deciso. No caso do problema da dieta discutido no Captulo
2, construmos um modelo de otimizao linear para representar especificamente a situao descrita no
Exemplo 2.1. No entanto, possvel descrever o Modelo (8) em um formato mais geral. Se considerarmos
que temos:
- n alimentos;
- m nutrientes;
- cj , j = 1, . . . , n: o custo do alimento j;
- bi , i = 1, . . . , m: o nvel mnimo do nutriente i;
- aij , i = 1, . . . , m, j = 1, . . . , n: quantidade do nutriente i presente no alimento j;
o modelo (8) pode ser generalizado como:
min
sujeito a
(11)
z = c 1 x1 + c 2 x2 + . . . + c n xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
..
.
am1 x1 + am2 x2 + . . . + amn xn bm
xj 0, xj <.
10
SOCORRO RANGEL
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 gratuitamente para download (em verses resumidas), o que permite que voce leitor, possa utiliz-las para
construir seus prprios modelos. Em geral, um sistema de resoluo (tambm em verso resumida) acompanha a verso disponibilizada para download. A linguagem MPL bastante didtica e indicada para um
primeiro curso de modelagem. As linguagens XPRESS-MOSEL e AMPL permitem uma boa manipulao
de conjuntos e ndices, e fornecem um conjunto de comandos para interao algoritmica entre o modelo e os
sistemas de resoluo. Os comandos disponveis para 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.
2uma
verso resumida do sistema (Free Student/Trial version) pode ser obtida gratuitamente no endereo
http://www.maximal-usa.com/download/ juntamente com as instrues para instalao (ltima visita em 13/08/2005).
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).
13
z=
n
X
c j xj
j=1
(12)
sujeito a
n
X
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
P
(8). O smbolo de soma
representado na linguagem MPL atravs do comando SUM, e os ndices usados
para a expanso bem como a expresso a ser expandida so 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.
{ Arquivo: dieta.mpl
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
TITLE dieta
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
DATA
! Custo de cada alimento a ser considerado na dieta
preco[alimento] = (14 13 9 19)
! Quantidade mnima total de cada nutriente na dieta;
nivel[nutriente] = ( 2000 65 800 )
! Quantidade de nutrientes presente em cada tipo de alimento
quant[alimento,nutriente] = (170 3 12
160 13 54
160 8 285
337 22 86)
VARIABLES
! Nmero de pores de cada alimento que ira compor a dieta
comprar[alimento]
MODEL
! Obter a dieta de menor custo possvel
MIN Custo_total = SUM(alimento: preco*comprar)
SUBJECT TO
! A dieta deve satisfazer nveis minimos de cada nutriente
N_[nutriente] :SUM(alimento: quant*comprar) > nivel[nutriente]
END
Figura 6. Problema da Dieta na Sintaxe MPL
15
16
SOCORRO RANGEL
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.
NAME
ROWS
N
G
G
G
COLUMNS
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_ARROZ
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_OVOS
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_LEITE
COMPRAR_FEIJAO
COMPRAR_FEIJAO
COMPRAR_FEIJAO
COMPRAR_FEIJAO
RHS
RHS1
RHS1
RHS1
ENDATA
DIETA
(MIN)
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
CUSTO_TOTAL
N_ENERGIA
N_PROTEINA
N_CALORIA
14
170
3
12
13
160
13
54
9
160
8
285
19
337
22
86
N_ENERGIA
N_PROTEINA
N_CALORIA
2000
65
800
MINIMIZE Custo_total =
14 comprar_arroz + 13 comprar_ovos + 9 comprar_leite +
19 comprar_feijao
SUBJECT TO
N_energia:
170 comprar_arroz + 160 (comprar_ovos + comprar_leite)
+ 337 comprar_feijao >= 2000
N_proteina:
3 comprar_arroz + 13 comprar_ovos + 8 comprar_leite
+ 22 comprar_feijao >= 65
N_Caloria:
12 comprar_arroz + 54 comprar_ovos + 285 comprar_leite +
86 comprar_feijao >= 800
Figura 8. Problema da dieta no formato lp
17
18
SOCORRO RANGEL
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, dimensionamento 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).
19
20
SOCORRO RANGEL
21
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 variveis, 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 MAXIMIZE) 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 algbrica dos modelos de otimizao que estamos habituados a usar. Como o XPRESS-MOSEL, o AMPL
tambm uma linguagem procedural, isto os comandos so compilados ao invs de interpretados. Possui
uma interface 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 (nomemodelo.mod). Os dados do exemplar a ser resolvido so fornecidos em um outro arquivo tipo texto (dadosmodelo.dat). O aplicativo AMPL ento executado criando um ambiente prprio para receber comandos
associados com a compilao e resoluo do modelo. A forma de manipulao desta linguagem bem
prxima da forma de manipulao das linguagens de programao em geral, e pode variar de um sistema
operacional para outro. Ao invocar o aplicativo 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:
ampl:
ampl:
ampl:
ampl:
ampl:
model nomemodelo.mod ;
data dadosmodelo.dat;
option solver nome do sistema de resoluo;
show;
solve;
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 estrutura geral da linguagem composta dos comandos SET, PARAM, VAR, MINIMIZE (ou MAXIMIZE) e
SUBJECT TO. Diferente da sintaxe do MPL, cada ndice, vetor, varivel ou restrio deve ser precedido
do comando que o 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
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] * comprar[j];
# A dieta deve satisfazer nveis minimos de cada nutriente
SUBJECT TO N_ { i in nutriente }:
SUM { j in alimento } quant[i,j] * comprar[j] >= nivel[i];
# fim arquivo dieta.mod
Figura 11. Problema da Dieta na Sintaxe AMPL
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.
#
#
#
#
Arquivo: dieta.dat
Problema da Dieta:
Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes
# ndices
SET alimento := arroz ovos leite feijao;
SET nutriente := energia proteina caloria;
# Dados: Custo dos alimento
PARAM preco :=
arroz 14
ovos 13
leite 9
feijao 19;
# Dados: Nvel mnimo de nutrientes na dieta
PARAM nivel :=
energia 2000
proteina 65
caloria 800;
# Quantidade de nutirente presente em cada alimento
PARAM quant:
arroz ovos leite feijao :=
energia
170 80 130 100
proteina
3 6 6.1 6
caloria
12 25 232 28;
# fim arquivo dieta.dat
Figura 12. Dados para o Problema da Dieta na Sintaxe AMPL
23
24
SOCORRO RANGEL
25
26
SOCORRO RANGEL
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:
(14)
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
27
15 abaixo.
min
z = 45x1 + 60x2
sujeito a
x1 + 2x2 32
4x1 + 4x2 72
x1 5, x2 12.
(15)
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
sujeito a
z = c 1 x1 + c 2 x2 + . . . + c n xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
..
.
(16)
Ms
Janeiro Fevereiro Maro Abril
M. beneficiada
43
0
100
53
Compensado
45
100
0
72
Tabela 3. Disponibilidade de insumos mensal
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:
T otalvendas =
2 X
4
X
pj sjt
j=1 t=1
4
2 X
X
cj yjt
j=1 t=1
x1 + 2x2 b1t ,
t = 1, . . . , 4
t = 1, . . . , 4
- Canela:
(18)
Note que as restries em (17) representam o conjunto das quatro restries, uma para cada valor de
t, relativas disponibilidade de pinho em cada ms. Juntas as Restries (17) e (18) representam oito
restries. Esta forma compacta de representao muito til, pois facilita a leitura e compreenso
29
do modelo matemtico. Antes de prosseguirmos, vamos avaliar o modelo que construmos at agora.
Resumindo as informaes acima temos:
min
Lucro =
4
2 X
X
pj sjt
j=1 t=1
(19)
4
2 X
X
cj yjt
j=1 t=1
sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
xjt 0, sjt 0, yjt 0, j = 1, 2; t = 1, . . . , 4.
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
(20)
t = 1, . . . , 4
t = 1, . . . , 4
Similarmente, temos:
- Compensado
(21)
Este conjunto de restries bastante comum em planejamento multi-perodo e aparece com freqncia na
modelagem de diversos problemas. So chamadas de restries de balanceamento entre produo e estoque,
ou simplesmente restries de balanceamento.
5Em
algumas situaes pode-se supor que pedidos em atraso (backorders), venda de produtos produzidos em perodos
posteriores ao considerado, so viveis [16].
30
SOCORRO RANGEL
Lucro =
4
2 X
X
j=1 t=1
(22)
pj sjt
4
2 X
X
cj yjt
j=1 t=1
sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
yjt1 + xjt = sjt + yjt ,
j = 1, 2; t = 1, . . . , 4
xjt 0, sjt djt , yjt 0.
O Modelo (22) possui trs tipos de variveis (produo, venda e estoque) e dois tipos de restries (capacidade e balanceamento) totalizando 24 variveis e 16 restries (desconsiderando o limite superior para
as variveis de venda). Este nmero de variveis e restries sugere o uso de uma linguagem algbrica de
modelagem para facilitar o trabalho de avaliao deste modelo. Vamos apresentar a seguir o processo de
descrio do modelo na sintaxe do MPL (ver Seo 3.2) e mostrar um pouco mais dos recursos que esta
linguagem oferece.
4.1.2. Modelo na sintaxe do MPL.
Exceto pelas restries de balanceamento, o Modelo (22) similar ao modelo do problema da dieta.
Naturalmente os nomes atribudos aos ndices, vetores e matrizes devem ser diferentes para refletir que
temos uma nova aplicao. Vamos utilizar novos recursos da linguagem. O primeiro a abreviao dos
nomes usados para os ndices, variveis e restries. Isto feito da seguinte forma:
INDEX
produto := (Madeira_Beneficiada, Compensado) > (MB MC)
assim, usamos no modelo o nome estendido, mas ao gerar o exemplar em um formato especfico, o comando
> far com que o sistema use os nomes abreviados, MB no lugar de Madeira_Beneficiada e MC no lugar
de Compensado. Isto pode ser til porque alguns sistemas de resoluo limitam o nmero de caracteres
usados no nome de uma varivel.
Outro recurso til a possibilidade de ler os dados do problema em um arquivo de dados, ao invs de
digita-los diretamente no arquivo do modelo. O uso destes arquivos facilita a resoluo do problema para
diversos cenrios. A leitura dos dados em arquivo externo ser feita atravs do comando DATAFILE.
Veja na Figura 13 a descrio do Modelo (22) na sintaxe do MPL. Observe a incluso da seo BOUNDS
para definir o limite superior para a varivel sjt . O uso do comando MACROS permite manipular os
dados no clculo de expresses matemticas. Note que a definio de Totalvendas e Totalestoque na seo
MACROS permite uma definio mais clara da funo-objetivo. Esta definio permite que junto com
a soluo tenhamos tambm o valor total arrecadado com as vendas e o valor gasto com os produtos
mantidos em estoque.
31
32
SOCORRO RANGEL
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.
MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.
MODEL STATISTICS
Problem name: Mad_mult
Filename: Plan_mad_mult.mpl Date: May 26, 2005 Time: 21:58
Parsing time: 0.05 sec
Solver: CPLEX Objective value: 3653.00000000
Iterations: 8 Solution time: 0.05 sec
Constraints: 16 Variables: 24 Nonzeros: 46
Density: 12
Figura 14. Relatrio da soluo
SOLUTION RESULT
Optimal solution found
MAX Lucro =
MACROS
Macro Name
Totalvendas
Totalestoque
3653.0000
Values
3720.0000
67.0000
DECISION VARIABLES
VARIABLE x[produto,mes] :
produto
mes
Madeira_Beneficiada
janeiro
Madeira_Beneficiada
fevereiro
Madeira_Beneficiada
abril
Compensado
janeiro
Compensado
fevereiro
Compensado
maro
Compensado
abril
Activity
4.0000
8.0000
4.0000
14.0000
12.0000
10.0000
14.0000
VARIABLE s[produto,mes] :
produto
mes
Madeira_Beneficiada
janeiro
Madeira_Beneficiada
maro
Madeira_Beneficiada
abril
Compensado
janeiro
Compensado
fevereiro
Compensado
abril
Activity
4.0000
8.0000
4.0000
14.0000
12.0000
24.0000
VARIABLE y[produto,mes] :
produto
mes
Madeira_Beneficiada
fevereiro
Compensado
maro
Activity
8.0000
10.0000
33
34
SOCORRO RANGEL
35
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 inteira, 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:
(23)
max
z = 40x1 + 10x2 + 10x3
sujeito a
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) :
n
X
max z =
p j xj
j=1
(24)
sujeito a
n
X
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.
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
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
min z =
6
6 X
X
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:
(25)
Pela Restrio (25) exatamente uma das variveis xi2 (i = 1 . . . 6, i 6= 2) ter valor igual a 1, garantindo
assim a chegada a So Paulo apenas uma vez. Naturalmente, saindo de So Paulo queremos ir at uma
das outras cidades. Da mesma forma que chegamos apenas uma vez em So Paulo, iremos partir de l
uma nica vez. Temos ento que a equao:
x21 + x23 + x24 + x25 + x26 = 1
garante que sairemos de So Paulo uma nica vez. O mesmo raciocnio vale para as demais cidades, assim
temos o seguinte conjunto de restries:
Restries
Sada da cidade i:
(26)
xi1 + . . . + xi6 = 1,
i = 1...6
x1j + . . . + x6j = 1,
j = 1 . . . 6.
e Chegada cidade j:
(27)
6 X
6
X
cij xij
i=1 j=1
sujeito a
xi1 + . . . + xi6 = 1,
i = 1...6
(28)
x1j + . . . + x6j = 1,
j = 1 . . . 6.
xij = 0 ou 1; i, j = 1 . . . 6, i 6= j.
As Restries (26) e (27) so as restries associadas ao problema da Designao (ver por exemplo [21]).
A matriz associada possui estrutura e propriedades que permitem:
que a restrio xij = 0 ou 1 possam ser relaxadas para 0 xij e a soluo tima ser inteira.
desenvolvimento de algoritmos especiais (e.g. algoritmo hngaro [21], [6]).
Vamos verificar ento se este modelo tambm apropriado para o Exemplo 5.2. Na Figura 17 temos a
Modelo (28) escrito na sintaxe do MPL. Observe o uso dos comandos EXCELRANGE e EXPORT TO
EXCELRANGE usados para ler os dados e enviar a soluo para o arquivo da planilha de clculo EXCEL
39
"caixeiro.xls". Note tambm a criao da varivel Custo_Total para permitir que o valor timo da soluo
pudesse ser enviado junto com a soluo para o arquivo do EXCEL.
{Problema do caixeiro viajante}
TITLE Roteiro;
INDEX
!cidades a serem includas no roteiro
no =(Rio, SP, Go, Ma, Be, Sal);
origem = no;
destino = no;
DATA
!Leitura do custo da viagem entre as cidades na planilha caixeiro.xls
custo[origem, destino] := EXCELRANGE ("caixeiro", "custo");
VARIABLES
! Soluo do problema enviada para a planilha caixeiro.xls
x[origem, destino]
EXPORT TO EXCELRANGE("caixeiro","roteiro");
Custo_Total
EXPORT TO EXCELRANGE("caixeiro","Custo_Total");
MODEL
MIN Custo_Total ;
SUBJECT TO
Custo_Total = SUM(origem, destino: custo * x);
saida [no] : SUM(origem=no, destino: x) =1;
chegada[no] : SUM(origem, destino=no: x) =1;
END
Figura 17. Formulao Inicial : Problema da Designao - Sintaxe MPL
40
SOCORRO RANGEL
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
MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.
SOLUTION RESULT
Optimal solution found
MIN Z = 170.0000
DECISION VARIABLES
VARIABLE x[origem,destino] :
origem
destino
Activity
Rio
SP
1.0000
SP
Go
1.0000
Go
Rio
1.0000
Ma
Be
1.0000
Be
Sal
1.0000
Sal
Ma
1.0000
PLAIN VARIABLES
Variable Name Activity
Custo_Total
170.0000
Figura 18. Soluo do problema da designao - Modelo (28) Formato MPL
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.
41
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:
min z =
6 X
6
X
cij xij
i=1 j=i
sujeito a
(29)
xi1 + . . . + xi6 = 1,
i = 1...6
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.
7Uma
42
SOCORRO RANGEL
Todos os dados necessrios, incluindo o nmero de cidades, so lidos na planilha do EXCEL "caixeiro.xls". A varivel uj ser gerada apenas para os ndices 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
43
Activity
2.0000
3.0000
4.0000
5.0000
6.0000
6
n X
X
cij xij
i=1 j=i
sujeito a
n
X
xij = 1,
i = 1...n
j=1
(30)
6
X
xij = 1,
j = 1...n
i=1
ui uj + nxij n 1,
xij = 0 ou 1;
i, j = 2 . . . n; i 6= j
i, j = 1 . . . n, i 6= j
ui 0; i = 2 . . . n.
Classicamente conhecido como O Problema do Caixeiro Viajante, este problema possui diversas aplicaes
no nosso dia-a-dia. muito comum que empresas de diversos setores, por exemplo de bebidas, se deparem
com a necessidade de determinar o melhor roteiro para a entrega da mercadoria em pontos de revenda
(bares, armazns, supermercados). Naturalmente, mais econmico um roteiro que inclua cada ponto
de revenda uma nica vez. A coleta de leite em stios e fazendas um outro exemplo onde desejvel
encontrar um roteiro que saia da fbrica de laticnios, passe em cada ponto de coleta apenas uma vez e
retorne ao ponto de partida. Mas, no apenas no setor de distribuio que temos exemplos de aplicao
deste importante problema de Otimizao Combinatria. Aplicaes mais sutis podem ser encontradas
44
SOCORRO RANGEL
45
46
SOCORRO RANGEL
6
n X
X
cij xij
i=1 j=i
sujeito a
n
X
xij = 1,
i = 1...n
j=1
6
X
(31)
xij = 1,
j = 1...n
i=1
XX
xij |S| 1,
S {1 . . . n}
iS jS
xij = 0 ou 1;
i, j = 1 . . . n, i 6= j.
47
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.
48
SOCORRO RANGEL
Elementos conhecidos
tipo de sabores e tamanhos de vasilhames;
horizonte de planejamento;
nmero necessrio de litros de xarope para a produo de uma caixa (pacote) de refrigerantes;
tempo de produo de uma caixa de refrigerantes;
tempo de preparao da mquina: troca de sabor;
tempo de preparao da mquina: troca de tamanho;
tempo disponvel para produo em cada perodo;
custo de produo de uma caixa de refrigerante;
custo de armazenamento de uma caixa de refrigerante;
custo de preparao da mquina: troca de sabor;
custo de preparao da mquina: troca de tamanho;
previso de demanda de cada tipo (sabor, tamanho) de refrigerante em cada perodo;
capacidade de produo em nmero de tachadas;
quantidade mnima (mxima) de xarope no tanque;
capacidade do estoque;
espao ocupado por uma caixa de refrigerante no estoque;
Elementos desconhecidos
- nmero de caixas de refrigerante de cada tipo (sabor e tamanho) a serem produzidas em cada
perodo;
- nmero de tachadas de xarope de cada sabor usados em cada perodo;
- nmero de caixas de refrigerantes de cada sabor e tamanho em estoque ao final de cada perodo;
Objetivo a ser alcanado
- minimizar o custo total de produo, preparo e armazenamento.
Restries
- capacidade de produo: tempo e insumos disponveis
- capacidade do estoque
- homogeneidade do xarope
Considerando que a fbrica produz s sabores de refrigerantes em q tamanhos e que o planejamento ser
feito para n perodos, podemos definir o seguinte conjunto de ndices:
ndices
- i = 1, ..., s representa o sabor do refrigerante;
- j = 1, ..., q representa o tamanho da embalagem;
- t = 1, ..., n representa os perodos considerados no horizonte de planejamento.
Vamos considerar inicialmente o seguinte conjunto de variveis:
Variveis de deciso
- xijt = nmero de caixas de refrigerante do sabor i, de tamanho j, produzidas no perodo t;
- yit = nmero de tachadas de xarope do sabor i usado no perodo t;
- eijt = nmero de caixas de refrigerantes do sabor i, de tamanho j, em estoque ao final do perodo
t.
Para descrever a funo-objetivo vamos desconsiderar no momento os custos de preparo:
funo-objetivo
- Custo de produo
q
n
s X
X
X
cpijt xijt
q
n
s X
X
X
caijt xijt
49
- Custo de estoque
(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
i = 1 . . . s; t = 1 . . . n
j=1
50
SOCORRO RANGEL
(37)
i=1 j=1
kj xijt ht , t = 1, ..., n.
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:
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
Mz
ijt
(39) Tamanho:
it
xijt M wjt
A constante M representa um valor conhecido para o limite superior da produo de um dado item. Desta
forma, se zit = 0 as restries (38) impem xijt = 0, garantindo que no haver produo de refrigerante
do sabor i. Quando zit = 1 as restries (38) se tornam redundantes, xijt M , e poder haver produo
de refrigerante do sabor i. As restries (39) controlam de forma similar a produo de refrigerante do
tamanho j. Este tipo de restrio tambm pode ser til em outros contextos, e recebe o nome de restries
VUB (do ingls: Variable Upper Bound, limite superior varivel[41]).
As variveis zit e wjt so conhecidas na literatura como variveis de preparao das mquinas (setup variables [54]). Neste modelo se considera que o tempo de ajuste da mquina para um determinado
sabor (tamanho) independente do sabor (tamanho) usado anteriormente, de acordo com a prtica da
empresa estudada. Elas sero usadas para controlar de forma mais realista a capacidade de produo da
fbrica. Considerando oi e fj como sendo o tempo de troca de sabor e o tempo de troca do tamanho,
respectivamente, podemos reformular as restries de capacidade (37) como:
Restries de capacidade com tempo de produo e preparo
(40)
q
s P
P
i=1 j=1
kij xijt +
s
P
i=1
oi zit +
q
P
j=1
fj wjt ht , t = 1, ..., n.
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
qmin zij yit qmax zij , i = 1, ..., s; t = 1, ..., n.
Finalmente, podemos redefinir a Funo-objetivo (32) para considerar tambm os custos de preparo. Assim
temos mais dois fatores para incluir na expresso do Custo_Total:
Reformulao da funo-objetivo
- Custo de troca de sabor
n
s X
X
csab
i zit
i=1 t=1
wjt
ctam
j
j=1 t=1
onde csab
e ctam
so respectivamente os custos de troca de sabor e de tamanho.
i
j
Podemos resumir as expresses acima no seguinte modelo de otimizao inteira mista cujo objetivo
definir um programa para a produo dos refrigerantes que minimize os custos de produo, armazenamento, e preparo das mquinas (FR):
q P
n
s P
P
tam
w
z
+c
cpij xijt +caj eijt +csab
min
jt
it
j
i
i=1 j=1 t=1
Sujeito a:
q
P
j=1
i = 1, ..., s; t = 1, ..., n.
s
P
yit ct , t = 1, ..., n.
i=1
q
q
s P
s
P
P
P
kij xijt +
oi zit +
fj wjt ht , t = 1, ..., n.
i=1 j=1
i=1
j=1
xijt M zit ,
xijt M wjt ,
i = 1, ..., s; t = 1, ..., n.
52
SOCORRO RANGEL
Considerando apenas os conjuntos de restries (33), (38), (39) e (40) obtemos um modelo que conhecido na literatura como modelo de planejamento da produo multi-item capacitado com tempos e custos
de preparo (PMC) (Multi-item Production Planning with set-up [54] e [2]).
Observe que o modelo (FR) permite a produo de refrigerantes de sabores e tamanhos diferentes em
um mesmo perodo. Uma importante questo que surge como fazer o sequenciamento dos itens diferentes
que so produzidos em um mesmo perodo. No presente trabalho, estamos supondo que o planejamento
ser feito em dois estgios. Um estgio determina o dimensionamento dos lotes (estgio A), e outro estgio
(estgio B), feito antes ou depois do estgio A, determina a 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 interrompidas, ou seja, depois de iniciada a fabricao de um lote de determinado modelo de panelas, este deve ser
totalmente concludo. A fbrica realiza um expediente de at 22h, devendo produzir diariamente um lote
de cada modelo. Cada lote possui horrios de entrega pr-definidos pelos compradores. Caso a fbrica entregue algum lote depois do prazo dever pagar uma multa, por cada hora de atraso, ao cliente prejudicado.
Os dados referentes ao tempo necessrio para a produo de cada lote, horrio de entrega e multas esto
resumidos na Tabela 5 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.
Tabela 5. Fbrica de Panelas: Tempo de produo, horrio de entrega e multa
Modelo
P1 P2 P3 P4 P5
Tempo de Produo (horas) 6 5 4 3 2
Horrio de Entrega
10 11 15 5 5
Multa (u.m./hora)
1 2 3 6 1
Uma deciso importante na fabricao dos lotes de panelas a escolha da seqncia em que estes devem
ser produzidos. Problemas deste tipo so chamados Problemas de Sequenciamento (ou escalonamento) de
tarefas [43].
5.5. Classificao do Problema - ( | |). Existe uma nomenclatura prpria para descrever Problemas de Sequenciamento, formada a partir do preenchimento de trs campos ( | |). O campo
representa as caractersticas de quem executa as atividades, denominado por conveno como mquina(s).
O campo descreve as atividades e como estas esto relacionadas. O ltimo campo, , se refere ao tipo
de objetivo utilizado para determinar a seqncia de produo.
Vamos avaliar as caractersticas do problema das panelas do Exemplo 5.3. Existe apenas uma mquina
na fbrica, neste caso utiliza-se a denominao problema de mquina nica ( = 1). A mquina deve
produzir cinco lotes diferentes, assim, ao utilizar a palavra atividade estaremos nos referindo a produo
de um lote de um determinado modelo de panela. Alm disso, sabemos que no deve haver preempo,
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)
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;
minz =
n
X
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
xi + pi xj + M (1 yij )
(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:
minz =
n
X
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.
T T otal =
n
X
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 .
5.5.2. Modelo Indexado pelo tempo.
Outra forma de modelar problemas de sequenciamento utilizando o tempo em que cada atividade inicia
como ndice das variveis. Esta estrutura permite construir modelos que incluam restries adicionais ao
problema, por exemplo: restries de Tempo de Preparo das mquinas (ver Seo 5.3.2) que surgem quando
necessrio preparar a mquina antes de comear a executar cada atividade.
Para construir o modelo vamos precisar calcular o tempo total necessrio para o processamento de todas
as tarefas. Este valor ser usado para definir o tamanho do horizonte de planejamento T , isto T perodos
de tempo (ver Figura 24). Um perodo pode ser definido em horas, turno de trabalho, dias ou outra
unidade de tempo de acordo com a aplicao estudada. No caso do Exemplo 5.3 o perodo de tempo ser
medido em horas. Se tomarmos (T ) como sendo exatamente o valor calculado na Expresso (49) no ser
permitido tempo ocioso na mquina, um valor menor, no permite a execuo de todas as tarefas.
Temos n atividades que podem comear em qualquer um dos perodos de 0 a T . A deciso a ser tomada
ento se a atividade i comea ou no no perodo de tempo t. Assim temos:
55
(50)
xit = 1 i = 1 . . . n.
t=1
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
(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
(53)
n
X
i=1
t
X
s=tpi +1
xit 1,
t = 1...T.
56
SOCORRO RANGEL
minz =
T pi +1
n
X
cm
it xit .
t=1
i=1
Reunindo as informaes acima chegamos ao modelo Indexado por Tempo para o Problema de sequenciamento:
min z =
n
X
i=1
T pi +1
cm
it xit
t=1
sujeito a
T pi +1
xit = 1 i = 1 . . . n
t=1
(55)
n
X
i=1
t
X
xit 1,
t = 1...T
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
58
[32] Mangasarian OL, Street WN, Wolberg WH, Breast-Cancer Diagnosis And Prognosis Via Linear-Programming Operations 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 dimensionamento de lotes aplicado a uma indstria de bebidas, em Anais do XXII ENEGEP, Curitiba, PR, outubro, 2002.
[54] Trigeiro,W.W., Thomas, L.J. e Mcclain,J.O. , Capacitated lot sizing with setup times, Management Science, 35, No. 3
, 353-366, 1989.
[55] Wagner, H., Pesquisa Operacional, Prentice Hall do Brasil, 1986.
[56] Williams, H.P., Model Bulding In Mathematical Programming, John Wiley & Sons, 1990.
[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
Variable Upper Bound, 76
branch and bound, 36, 68
branch and cut, 36, 68
cut and branch, 68
knapsack problem, 56
set-up variables, 76
aditividade, 10
algoritmos heuristicos, 86
AMPL, 17, 28, 32
NP-difcil, 53
biblioteca de subrotinas, 36
otimizao, 4
otimizao 0/1, 55
otimizao binria, 55
otimizao combinatria, 57, 65
otimizao inteira, 1, 55
otimizao inteira mista, 5, 62, 77
otimizao linear, 1, 7, 38
otimizao linear contnua, 5
otimizao linear inteira, 5
otimizao no-linear, 5
cenrios, 16
circuito hamiltoniano, 57
complexidade computacional, 53
conjunto de restries, 2
construo de modelo, 2
CPLEX, 36
critrio de otimizao, 4
dados do modelo, 10
divisibilidade, 12
documentao, 17
pedidos em atraso, 46
planos de corte, 36, 54
problema da designao, 60
problema da dieta, 7, 12
problema da mochila, 56
problema de seleo de projetos, 56
problema de seqenciamento, 78
problema do caixeiro viajante, 65
problema ilimitado, 45
problemas de otimizao, i
produo de refrigerantes, 69
programao inteira, i
programao linear, i
programao matemtica, i
programao no-linear, i
proporcionalidade, 10
elementos conhecidos, 2, 10
elementos desconhecidos, 2
estrutura das linguagens de modelagem, 18
exemplar, 16, 17
ferramentas de modelagem, 15
ferramentas de resoluo, 15
formato lp, 25, 27
formato mps, 25, 27
formato padro, 5, 9
funo-objetivo, 2, 6
funo-objetivo linear, 9
gerar exemplar, 25
implementao, 3
indstria de bebidas, 69
inequaes de cobertura, 57
inequaes vlidas, 54
interface, 17, 27
invivel, 45
reformulao automtica, 54
relaxao, 53
relaxao linear, 54
restrio de balanceamento, 46, 73
restries lineares, 5, 9
restries VUB, 76
limitantes, 53
limite dual, 54, 69
limite primal, 54
linear por partes, 81
linguagem algbrica de modelagem, 15
lp, formato, 27
s.a, 4
SADE, 3
SAM, 3
simulao, 16
sistemas de otimizao, 27
sistemas de resoluo, 27, 54
soluo vivel, 13
soluo tima, 13
sub-rotas, 61, 62, 66
sujeito a, 4
manuteno, 4
maximizar, 4
minimizar, 4
modelagem, 2
modelagem matemtica, ii
modelo de otimizao, 2, 4
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