Vous êtes sur la page 1sur 63

Prefcio

A otimizao est presente no nosso dia a dia. Sempre que queremos ou precisamos tomar uma deciso,
procuramos escolher entre as vrias alternativas aquela que, naquele momento, nos d maior satisfao.
Na matemtica, a rea que estuda problemas de otimizao classicamente chamada de Programao
Matemtica . Esta denominao 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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO


LINEAR CONTNUA E INTEIRA
SOCORRO RANGEL

1. Modelos de Otimizao
"Existem duas maneiras de aumentar a eficincia de uma loja, empresa, ou indstria.
Uma delas requer a melhoria tecnolgica, isto , atualizao dos equipamentos, mudana
no processo tecnolgico, descoberta de novos e melhores tipos de matria prima. A outra
maneira, at hoje muito menos utilizada, envolve melhorias na organizao do planejamento
e da produo. Isto , melhorias no processo de distribuio do trabalho entre as mquinas
da empresa, distribuio de matria prima, combustvel, entre outros fatores." 1
Diversas situaes podem ser estudadas de forma mais abrangente se representadas atravs de modelos
que capturem seus principais elementos. Um modelo matemtico de otimizao envolve a representao de
um problema ou situao atravs de um conjunto de relaes matemticas tais como: equaes, inequaes,
dependncias lgicas, e funes. So vrias as razes para a construo de modelos de otimizao, entre elas
podemos destacar: aumentar o grau de entendimento da situao estudada; analisar a situao e propor
solues que no sejam aparentes; experimentar diversos cenrios que de outra forma no seria possvel, ou
recomendvel [56]. Taube [52] destaca outras razes sob o ponto de vista da gesto empresarial. Modelos
de otimizao linear e otimizao linear inteira podem ser teis na resoluo de um grande nmero de
problemas em diversas reas. Neste texto iremos discutir algumas destas aplicaes.
Para construir um modelo de otimizao linear que represente um determinado problema necessrio
identificar inicialmente quais so os elementos conhecidos geralmente associados ao que sabemos sobre o
problema, e quais so os elementos desconhecidos associados ao que queremos determinar ao solucionar
o problema. Esta fase inicial em geral realizada de forma conjunta atravs de reunies com o pessoal
envolvido na resoluo do problema, e envolve o conhecimento da situao estudada. Nem sempre a 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

de (Kantarovich (1939) in Dantzig [12]-pg 22)

SOCORRO RANGEL

Figura 1. Principais Elementos de um modelo de otimizao

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

Figura 2. Processo de construo de um modelo de otimizao


O formato geral dado pela Expresso (1) a seguir.
min (ou max)
sujeito a
(1)

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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


O problema da dieta consiste em, dado um conjunto de alimentos, escolher quais e quanto usar de
cada um para compor uma dieta alimentar que atenda quantidades pr-determinadas de nutrientes, de
acordo com algum critrio. Esse um enunciado muito geral, no entanto serve de base para apresentarmos
um problema que possui uma importncia especial. Num excelente histrico sobre o problema da dieta,
Namem e Bornstein [40] destacam que este foi um dos primeiros problemas a ser usado para testar o
mtodo simplex (e.g. [13], [21], [6]) desenvolvido por George B. Dantzig em 1947 para resolver problemas
de otimizao linear. Alm disso, o modelo original apresentado por Stigler em 1945, apesar de nem
sempre resultar em uma resposta satisfatria, simples e ilustra muito bem o processo de construo de
um modelo discutido no Captulo 1 e as principais suposies (ou axiomas) necessrias para se obter um
modelo de otimizao linear.
2.1. Axiomas: proporcionalidade, aditividade, divisibilidade.
Vamos ilustrar a construo de um modelo de otimizao linear considerando a seguinte adaptao do
problema da dieta proposto por Stigler (uma verso do enunciado original que envolvia 77 alimentos pode
ser encontrada em [40]).
Exemplo 2.1. Paula deseja balancear os alimentos que consume de forma a obter uma dieta alimentar
que fornea diariamente toda a energia, protena e clcio que necessita. Seu mdico recomendou que ela
se alimente de forma a obter diariamente no mnimo 2000 kcal de energia, 65g de protena e 800 mg de
clcio. O Valor nutritivo e o preo (por poro) de cada alimento a ser considerado na dieta dado na
Tabela 1. Quanto de cada alimento Paula deve consumir para obter uma dieta que atenda a recomendao
mdica e que tenha o menor custo possivel?
Tabela 1. Composio nutricional e custo dos alimentos
Tipo de tamanho energia Protena clcio
preo
alimento da poro (kcal)
(g)
(mg) p/ poro (centavos)
arroz
100g
170
3
12
14
ovos
2un
160
13
54
13
leite
237ml
160
8
285
9
feijo
260g
337
22
86
19
Para iniciar a construo do modelo matemtico que represente o problema da Paula, precisamos distinguir os elementos conhecidos e os desconhecidos conforme a discusso que fizemos no Captulo 1 (ver
Figura 1). Analisando o enunciado do Exemplo 2.1 temos:
Elementos conhecidos
- alimentos a serem considerados na elaborao da dieta;
- composio nutricional dos alimentos;
- quantidade mnima de nutrientes que a dieta deve satisfazer diariamente;
- custo dos alimentos (por poro);
Elementos desconhecidos
- nmero de pores de cada alimento a ser usado na dieta.
De acordo com os dados da Tabela 1 podemos verificar que existem diversas combinaes dos alimentos
que fornecem os nveis recomendados de nutrientes. Tambm possvel calcular o custo associado a cada
uma delas. Precisamos ento definir um critrio para a seleo do melhor combinao possvel. Antes
necessrio esclarecer o que consideramos como a melhor combinao possvel. Dentro do presente contexto,
a questo do custo associado combinao dos alimentos parece ser um item importante para a Paula.
Assim podemos dizer:
Objetivo
- obter uma dieta com o menor custo possvel.

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)

a11 x1 + a12 x2 + . . . + a1n xn b1


a21 x1 + a22 x2 + . . . + a2n xn b2
..
.

(7)

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


xj 0, xj <

onde o smbolo pode ser substitudo por "5", "=", ou "=". Qualquer problema de otimizao linear
pode ser escrito no formato padro apresentado no Captulo 1 (e.g. [13], [21]).
importante neste momento detalharmos um pouco mais a definio de um modelo de otimizao linear.
A funo-objetivo (5) e as restries (6) do modelo acima so lineares pois no apresentam produtos de
variveis, xy, potncias de variveis, xn , n > 1, ou ainda combinaes de variveis do tipo (x + logy).
De uma maneira geral, uma forma linear pode ser caracterizada por certas propriedades multiplicativas e
aditivas [25]. No contexto do Exemplo 2.1 se Paula incluir na dieta uma poro de arroz ela obtm 170
kcal de energia, se incluir duas ir obter o dobro de energia. A quantidade de energia obtida na dieta
referentes ao arroz proporcional ao nmero de pores includas. De maneira similar, para calcular o
custo da dieta, podemos supor que se uma poro de arroz custa 14 centavos, duas pores custaro 28
centavos. Assim, um modelo linear pressupe que o custo total da compra de um determinado item
proporcional ao nmero de unidades compradas.
A propriedade aditiva pode ser ilustrada considerando que se Paula incluir na dieta uma poro de
arroz e uma de feijo a energia total obtida ser igual soma das quantidades individuais fornecidas por
cada alimento, isto 507 kcal, e o custo total igual soma dos custos individuais, 33 centavos. Usando
as propriedades de aditividade e proprocionalidade, podemos concluir que dobrando o consumo de arroz e
triplicando o consumo de feijo, teremos uma dieta de 1351 kcal a um custo de 85 centavos.
No modelo (OL) que vamos construir para representar o problema da Paula, a letra j ser usada para
indexar os elementos do conjunto de alimentos que podero ser usados para compor a dieta. No Exemplo
2.1 temos quatro alimentos, o ndice j poder ento assumir valores inteiros entre 1 e 4 para representar
cada um deles. De forma similar definiremos um segundo indice, i, para indexar os nutrientes que devem
ser obtidos pela dieta. Assim temos:
ndices
j = 1, . . . , 4 representa respectivamente os alimentos: arroz, ovos, leite e feijo;
i = 1, . . . , 3 representa respectivamente os nutrientes: energia, proteina e clcio.
Verificamos acima que um elemento desconhecido importante no problema enunciado no Exemplo 2.1 :
quantas pores de cada alimento devem fazer parte da dieta. Assim podemos definir:
Variveis de deciso
xj : nmero de pores do alimento j a ser includo na dieta.
Note aqui que os elementos conhecidos do problema esto fornecendo os dados do modelo. At aqui o
nmero e o tipo de alimentos e nutrientes.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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

Quando definimos n = 4 e m = 3, e usamos os dados da Tabela 1 particularizamos o Modelo (11) acima


e obtemos o Problema 8. Neste caso dizemos que (8) um exemplar do problema da dieta. O Modelo
(11) pode ser usado para simular o problema da dieta em diversos cenrios, para isto basta atribuirmos
diferentes valores para os elementos conhecidos do problema. Por exemplo, podemos verificar qual a
sugesto de dieta se ao invs de arroz, ovos, leite e feijo, quisssemos compor uma dieta usando macarro,
brcolis, cenoura, ervilha e ovos.
Neste ponto conveniente distinguir entre um modelo matemtico e um exemplar do mesmo. Um
modelo uma representao algbrica abstrata do problema e um exemplar a descrio explcita ou uma
atribuio de valores para os dados abstratos de um modelo. Assim, no caso do problema da dieta podemos

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

11

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

Figura 3. Menu principal do MPL

Sintaxe do MPL. Os principais comandos usados para descrever um modelo de otimizao atravs do MPL
so: TITLE, INDEX, DATA, VARIABLES, MODEL, SUBJECT TO, END. Cada um destes comandos
so usado para 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).

Figura 4. Verificando erros de sintaxe


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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

13

Figura 5. Erro de sintaxe


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

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

{ 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

Figura 7. Problema da dieta no formato mps

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

19

MODEL nome do modelo


Instrues para compilao
Definio de parmetros
Definio do modelo e/ou algoritmos
END-MODEL
O comando MODEL usado para nomear o modelo e determinar o incio da descrio do programa, o fim
do mesmo indicado atravs do comando END-MODEL. As instrues para o compilador so fornecidas
atravs do comando USES e OPTIONS, e so optativos. A definio das estruturas para o armazenamento de dados e definio das variveis so iniciadas e finalizadas com os comandos DECLARATION e
END-DECLARATION, respectivamente. Estas definies so opcionais e podem ser feitas em qualquer
parte do cdigo. A definio do modelo e/ou algoritmo feita atravs de comandos similares aos usados
em linguagens de programao, com algumas palavras chaves reservadas para manipulaes algbricas.
Comentrios, isto , trechos de texto a serem ignorados pelo compilador, so precedidos do ponto de
exclamao, !, ou escritos entre os smbolos (! !). Qualquer editor de texto que gere arquivos livres de
formatao (tipo .txt) pode ser usado para criar o arquivo.
O modelo da dieta (11) na sintaxe do XPRESS-MOSEL pode ser lido nas Figuras 9 e 10 a seguir.
Todas as palavras reservadas para a linguagem, (e.g. ARRAY, FORALL, SUM) esto escritas em letras
maisculas.
{ Arquivo: dieta.mos
Problema da Dieta: Determinar uma combinao de alimentos que
fornea
uma quantidade mnima de nutrientes }
MODEL dieta
USES "mmxprs"! define o sistema mmxprs para resolver o
exemplar
DECLARATIONS
! definio dos ndices
alimento = {"arroz", "ovos", "leite", "feijao"};
nutriente = {"energia", "proteina", "Caloria"};
!
definio das estruturas para receber dados do exemplar
! Custo de cada alimento a ser considerado na dieta
preco: ARRAY (alimento) OF REAL;
! Quantidade mnima total de cada nutriente na dieta;
nivel: ARRAY (nutriente) OF REAL;
(! Quantidade de nutrientes presente em cada tipo de alimento
considerado na dieta !)
quant: ARRAY (alimento,nutriente) OF REAL;
! definio das variveis de deciso
! Nmero de pores de cada alimento que ira compor a dieta
comprar: ARRAY (alimento) OF MPVAR;
END-DECLARATION
Figura 9. Problema da Dieta na Sintaxe XPRESS-MOSEL

20

SOCORRO RANGEL

! continuao do arquivo dieta.mos


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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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

verso resumida pode ser obtida gratuitamente no endereo http://www.ampl.com/DOWNLOADS/index.html


(ltima visita em 13/08/2005)

22

SOCORRO RANGEL

define uma estrutura (vetor ou matriz) que ir armazenar os elementos conhecidos do exemplar,
fornecidos no arquivo nomemodelo.dat;
- VAR
define variveis de deciso;
- MINIMIZE (ou MAXIMIZA)
define a funo-objetivo e o critrio de otimizao;
- SUBJECT TO
define um conjunto de restries.
O contedo do arquivo dieta.mod contendo o problema da dieta (11) na sintaxe do AMPL mostrado
na Figura 11 a seguir. Os comentrios so precedidos do smbolo #, e todos os comandos devem finalizar
com ponto e vrgula (;). Os dados necessrios para gerar um exemplar (dieta.dat) pode ser visto na Figura
12.
# Arquivo: dieta.mod
# Problema da Dieta: Determinar uma combinao de alimentos
que fornea
# uma quantidade mnima de nutrientes
# Definio dos ndices
SET alimento;
SET nutriente;
# Definio das estruturas para receber dados do exemplar
PARAM preco { alimento }
PARAM nivel { nutriente };
PARAM quant {nutriente, alimento };
# Definio das variveis de deciso
VAR comprar { j in alimento } >=0;
# definio da funo-objetivo
minimize custo_total: SUM { j in alimento } preco[j] * 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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

#
#
#
#

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

3.4. Sistemas de resoluo.


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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

25

4. Aplicaes de Otimizao Linear


vasto o campo de aplicaes da otimizao linear. Esta classe de modelos tm sido usada para
representar problemas em reas to distintas quanto finanas [51] e medicina ([39],[32]). Williams [56]
apresenta uma descrio resumida de um amplo espectro de aplicaes com estudos de casos que incluem,
entre outros, problemas na indstria petrolfera, problemas de distribuio e de manufatura. Caixeta-Filho
[9] apresenta algumas aplicaes no setor agroindustrial. Uma bibliografia comentada de artigos sobre
formulaes de modelos de otimizao linear que cobre o perodo entre 1939 e 1979 pode ser encontrada
em [38]. um banco de dados em construo (mantido online) e artigos mais recentes esto sendo
includos gradativamente. Murphy [39] observa que atravs destas aplicaes possvel analisar a evoluo
das estruturas usadas para representar determinadas situaes prticas. Sistematizando o processo de
construo de modelos usado por estes autores possvel estabelecer alguns princpios que permitem
o desenvolvimento de modelos eficientes. Neste captulo ilustramos alguns destes princpios atravs da
discusso de modelos para problemas clssicos que podem ser usados isoladamente, mas que tambm
aparecem como sub-modelos na representao de situaes mais complexas.
4.1. Planejamento da produo.
Considere um consrcio de empresas do ramo madeireiro. Este consrcio opera, entre outros negcios,
reservas florestais para extrao de madeira ecolgica, serrarias, fbricas de mveis e de papel, e grficas. A
operao destas empresas envolve decises de natureza muito variada: contratao de pessoal, distribuio
da madeira extrada nas reservas para as serrarias, novos investimentos, planejamento da produo, entre
outras. Englobar todas estas decises em nico modelo pode se tornar uma tarefa rdua e ineficiente. Ao
invs disto, vamos simplificar o problema, modelando separadamente algumas decises a serem tomadas
pelos administradores do consrcio.
Vamos iniciar nosso estudo modelando um problema muito simples adaptado de um execcio proposto
em [55].
Exemplo 4.1. O Presidente, Antnio Castor, da Companhia Ramos de Carvalho quer utilizar do melhor
modo possvel os recursos de madeira em uma de suas reservas florestais. Dentro desta regio, h uma
serraria e uma fbrica de compensados, isto , as toras podem ser convertidas em madeira beneficiada
ou compensado. Produzir uma mistura de produto beneficiado requer 1 metro cbico de pinho e 4 metros
cbicos de canela. Produzir 100 metros quadrados de madeira compensada requer 2 metros cbicos de
pinho e 4 metros cbicos de canela. Esta regio tem disponvel no momento 32 metros cbicos de pinho e
72 metros cbicos de canela. Compromissos de venda exigem que sejam produzidos pelo menos 5 metros
cbicos de madeira beneficiada e 1200 metros quadrados de madeira compensada. As contribuies ao
lucro so 45 u.m. (unidades monetrias) por 1 metro cbico de produtos beneficiados e 60 u.m. por 100
metros quadrados de compensado.
Seguindo a estrutura usada para obter o modelo para o problema da dieta no Captulo 2 vamos identificar
no enunciado do Exemplo 4.1 os elementos conhecidos, os elementos desconhecidos, o objetivo e as restries
do problema.
Elementos conhecidos
- lucro associado aos produtos;
- quantidade necessria de cada tipo de insumo para a produo de cada item
- quantidade de insumo disponvel.
Elementos desconhecidos
- quanto produzir de cada item.
Objetivo a ser alcanado
- obter o maior lucro possvel.
Restries
- quantidade de insumos limitada
- compromissos de venda.

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)

4x1 + 4x2 72.

Compromissos de venda determinam uma quantidade mnima a ser produzida de cada um dos items.
Temos ento um segundo conjunto de restries.
Restries relativas produo mnima
- Madeira beneficiada:
x1 5
- Compensado:
x2 12
Observe que a varivel x2 foi definida em 100m2 , por isso usamos um limite inferior de 12 para a produo
de compensado. O modelo de otimizao linear que representa o problema pode ser resumido na Expresso

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

27

15 abaixo.
min
z = 45x1 + 60x2
sujeito a
x1 + 2x2 32
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)

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


x j uj
onde: aij representa a quantidade de insumo i usada na produo do item j, cj e uj so o lucro e a demanda
mnima do item j, e bi a quantidade de insumo i disponvel.
4.1.1. Planejamento Multi-perodo.
A resposta do Modelo 15 fornece uma sugesto para o planejamento considerando um nico perodo.
Seria interessante analisar como seria a produo se o planejamento for feito considerando um horizonte
maior, por exemplo planejar a produo para os meses de janeiro, fevereiro, maro e abril. Neste caso
vamos supor que conhecida uma previso para a venda dos produtos e para a disponibilidade de insumos
em cada um desses meses (ver Tabelas 2 e 3). possvel fazer estoque de um ms para o outro e, ento,
a demanda do ms de maro pode ser atendida, por exemplo, com produtos fabricados anteriormente (em
janeiro ou fevereiro). O custo mensal para manter cada um dos produtos em estoque de 4 u.m. para
cada m3 de madeira beneficiada e 3.5 u.m. para cada 100 m2 de compensado.
Tabela 2. Previso de Vendas Mensal
Produto

Ms
Janeiro Fevereiro Maro Abril
M. beneficiada
43
0
100
53
Compensado
45
100
0
72
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

- Custo total associado ao armazenamento dos produtos


T otalestoque =

4
2 X
X

cj yjt

j=1 t=1

- Objetivo: maximizar Lucro total


max Lucro = T otalvendas T otalestoque
onde pj e cj so o preo de venda e o custo de estoque do produto j respectivamente. Note que estamos
supondo que estes valores no mudam ao longo do horizonte de planejamento. O conjunto de restries
tambm precisa ser redefinido. A disponibilidade de insumos varia de ms a ms. Fazendo bit a disponibilidade do insumo i no ms t as Restries (13) e (14) podem ser redefinidas como:
Redefinio das restries relativas disponibilidade de insumo
- Pinho:
(17)

x1 + 2x2 b1t ,

t = 1, . . . , 4

4x1 + 4x2 b2t ,

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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)

y1t1 + x1t = s1t + y1t ,

t = 1, . . . , 4

y2t1 + x2t = s2t + y2t ,

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

Naturalmente, surge a dvida sobre o significado da varivel y1t1 quando o ms de janeiro, t = 1,


considerado. Apesar de definida implicitamente, a varivel y1,0 representa a quantidade de madeira beneficiada em estoque no perodo imediatamente anterior ao incio do perodo considerado no planejamento.
Em geral necessrio atribuir um valor para esta varivel. Isto , ela considerada um elemento conhecido
do problema. O modelo para o planejamento multi-perodo ento dado por:
min

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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


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

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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

Figura 15. Relatrio da soluo (cont. da Figura 14)

33

34

SOCORRO RANGEL

As informaes contidas nas Figuras 14 e 15 constam de um nico arquivo (Plan_mad_mult.sol) gerado


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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

35

5. Aplicaes de Otimizao Linear Inteira


Enquanto problemas de otimizao linear contnuo com algumas centenas de variveis e restries podem
ser resolvidos facilmente, a resoluo de algumas classes de problemas de otimizao linear inteira no
possuem este comportamento. Existe a possibilidade de construir um modelo de otimizao linear inteira
(ou inteira mista) e descobrir rapidamente o grau de dificuldade da sua resoluo. De fato, uma boa
formulao do problema pode ser de crucial importncia para a eficincia do processo de soluo [41].
Contrastando com os problemas de otimizao linear contnuo, no se sabe se existem ou no algoritmos
polinomiais para resolver muitas classes de problemas de otimizao linear inteira. Quando se usa esta
classe de modelos importante se ter em mente o grau de dificuldade associado sua soluo. Um
estudo detalhado sobre a classificao de problemas de otimizao inteira quanto ao grau de dificuldade
de sua soluo (complexidade computacional) pode ser visto em [20] e [10]. Saber que um problema
classificado como NP-difcil (NP-Hard [20]) importante porque permite ao usurio entender que a
resoluo de alguns exemplares ser difcil independentemente do algoritmo usado. No entanto, isto no
quer dizer que exemplares de grande porte no possam ser resolvidos em um tempo computacional aceitvel.
Mesmo que a soluo tima no seja encontrada, possvel obter boas solues viveis e mostrar quo
prximo da soluo tima podem estar.
Algoritmos eficientes para a soluo de problemas envolvendo variveis inteiras so baseados em tcnicas
de enumerao implcita e combinam vrios mtodos de soluo. A maioria dos algoritmos empregam a
tcnica de relaxao e clculo de limitantes([41], [45]) . Considere o problema de otimizao inteira (3)
definido no Captulo 1. A idia substituir o problema inteiro por um problema mais fcil (relaxao)
que pode ser usado para obter um limite inferior (limite dual [58]) para o valor timo da funo objetivo.
Se a soluo associada for vivel, o problema original esta resolvido. Caso contrrio a relaxao refinada
iterativamente para obter limites melhores. Solues viveis fornecem limites superiores (limite primal
[58]) para o valor timo da funo objetivo. Bons limites superiores podem ser obtidos, por exemplo,
atravs de algoritmos heursticos [10].
Um problema inteiro pode ser relaxado de vrias formas [58]. A relaxao linear, obtida substituindo
a restrio xj Z por xj <, conveniente para a maioria das aplicaes e a base dos algoritmos
implementados nos sistemas de resoluo de uso geral (ver Seo 3.4). Neste texto, iremos considerar que
um modelo de otimizao inteira uma boa formulao para uma aplicao se o limite inferior fornecido
pela relaxao linear associada for bom. Isto , se RLP1 e RLP2 representam o limite inferior de duas
relaxaes diferentes e tivermos que:
RLP1 RLP2 Z
diremos que a formulao associada a RLP2 a melhor das duas. Um modelo de otimizao inteira pode
ser reformulado de forma a fornecer bons limitantes inferiores atravs da incluso de inequaes vlidas
(planos de corte). Uma excelente discusso sobre a reformulao automtica de modelos de otimizao
inteira e outros mtodos de soluo pode ser encontrada em [58] e [47]. Este e outros mtodos de soluo
para problemas de otimizao inteira tambm so apresentados em [21], [45], [41].
5.1. O problema da mochila.
Vamos continuar discutindo as diversas decises associadas administrao do consrcio de empresas
do ramo madeireiro apresentado na Seo 4.1 e ver como estas decises podem ser estudadas atravs de
modelos de otimizao para problemas clssicos.
Exemplo 5.1. Seleo de Projetos - A companhia Ramos de Carvalho esta planejando seus investimento
para o prximo ano. Existem 3 projetos prioritrios, e o capital disponvel de 10 milhes de u.m.. O
investimento necessrio e retorno associado a cada projeto esta descrito na Tabela 4 abaixo. No possvel
fazer investimento parcial em um dado projeto. Em que projetos deve ser investido o capital disponvel?
O enunciado deste problema muito simples e podemos definir rapidamente qual a deciso a ser
tomada. Considerando que o investimento no pode ser parcial, a deciso a ser tomada se investimos ou
no em um determinado projeto. Decises do tipo sim ou no so facilmente modeladas se introduzirmos
variveis binrias no modelo. Isto , variveis que podem assumir apenas dois valores: 0 ou 1. Definindo:

36

SOCORRO RANGEL

Projeto
P1 P2 P3
Investimento 3 5 4
retorno
40 10 10
Tabela 4. Investimento e Retorno (em milhes de u.m.)
ndice
j = 1, 2, 3 para representar respectivamente os projetos P1, P2 e P3;
podemos representar a deciso a ser tomada como:
Varivel de deciso

1, se o projeto j for selecionado
xj =
0, caso contrrio;
neste caso, deixamos de lado o axioma de divisibilidade usado nos captulos anteriores para construir
modelos de otimizao linear. O modelo que iremos construir ser um modelo de otimizao linear 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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

37

Este problema possui um relacionamento muito grande com diversos outros problemas de otimizao
inteira . Sua importncia se deve fortemente ao fato que alm de modelar diversas situaes, aparece como
subproblema na formulao e soluo de diversos outros problemas, por exemplo problemas de corte e
empacotamento [3], e na gerao de planos de corte (inequaes de cobertura [58] e [45]). Sua estrutura
especial permite que diversas classes de algoritmos sejam explorados na busca de um processo eficiente
para resolv-lo. Maiores detalhes sobre a modelagem e soluo do problema da mochila e problemas
relacionados podem ser encontrados em [33] e [21] entre outros.
5.2. O Problema do Caixeiro Viajante.
O problema do Caixeiro Viajante talvez um dos problemas de otimizao combinatria mais estudados
na literatura. Possui um enunciado muito simples, mas, um processo de soluo complexo. Vejamos como
este problema pode estar relacionado s decises do consrcio de empresas que estamos estudando.
Exemplo 5.2. O Presidente, Antnio Castor, da Companhia Ramos de Carvalho quer fazer uma visita
s reservas florestais situadas nos estados do Amazonas e Par, aos depsitos situados nos estados de So
Paulo, Bahia, Minas Gerais e Rio de Janeiro. possvel determinar um roteiro de viagem tal que cada
reserva e cada depsito sejam visitados exatamente uma vez, saindo e retornando sede da empresa no
Rio de Janeiro, e que minimize a distncia total percorrida?
A situao do Exemplo 5.2 pode ser representada atravs de um grafo valorado [50] G(V, A) onde o
conjunto de vrtices, V , representa as capitais dos estados onde esto situadas as reservas e os depsitos,
e o conjunto de arestas, A, representa a possibilidade de se viajar de uma cidade a outra (ver Figura16).
O peso de uma aresta entre duas cidades igual ao custo da viagem entre elas. Em termos de Teoria dos

Figura 16. Cidades a serem visitadas


Grafos, a soluo deste problema consiste em determinar o circuito6 que inclua todos os vrtices do grafo,
um circuito hamiltoniano, de menor custo. O custo de um circuito igual soma dos pesos das aresta
includas. Para modelar o problema vamos definir:
ndice
i, j = 1, . . . , 6 para representar as cidades Rio de Janeiro , So Paulo, Goinia, Manaus, Belm e
Salvador respectivamente.
Note que os ndices i e j representam o mesmo conjunto de cidades. Vamos usar uma varivel binria para
definir se a cidade i precede ou no a cidade j no roteiro. Isto :
Varivel de deciso

1, se a cidade i visitada antes da cidade j
xij =
0, caso contrrio;
6Um

circuito uma seqencia de vrtices e arestas onde no h repetio de vrtices, exceto pelo primeiro.

38

SOCORRO RANGEL

A varivel xii no tem nenhum significado nesta aplicao, portanto s h variveis quando i 6= j. O
critrio para a tomada de decises est claramente definido, obter o circuito hamiltoniano de menor custo.
Seja cij o custo da viagem entre a cidade i e a cidade j. A funo objetivo pode ento ser definida como:
Funo Objetivo
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)

x12 + x32 + x42 + x52 + x62 = 1.

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)

Resumindo o modelo construdo at agora temos:


min z =

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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.

Figura 19. Soluo do modelo da designao 28: Subrotas


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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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

matriz A totalmente unimodular se o determinante de qualquer submatriz quadrada de A 0, 1, ou -1 [41].

42

SOCORRO RANGEL

{Problema do caixeiro viajante} TITLE Roteiro;


INDEX
no = EXCELRANGE ("caixeiro", "cidades");
origem = no;
destino = no;
DATA
custo[origem, destino] := EXCELRANGE ("caixeiro", "custo");
nc := EXCELRANGE ("caixeiro", "nc"); !nmero de cidades
VARIABLES
x[origem , destino]
EXPORT TO EXCELRANGE("caixeiro","roteiro");
Custo_Total
EXPORT TO EXCELRANGE("caixeiro","Custo_Total");
u[no > Rio];
MODEL
MIN Custo_Total ;
SUBJECT TO
Custo_Total = SUM(origem, destino: custo * x);
saida [no] : SUM(origem=no, destino: x) =1;
chegada[no] : SUM(origem, destino=no: x) =1;
!restries para eliminao de sub-rotas
sub[origem,destino > Rio] where (origem <> destino):
u[no:=origem] - u[no:=destino] + nc*x[origem,destino]<= nc-1;
BINARY
x
BOUNDS
u >=2
END
Figura 20. Caixeiro Viajante : Formulao de Miller, Tucker e Zemlin - Sintaxe MPL

Todos os dados necessrios, incluindo o nmero de cidades, so lidos na planilha do EXCEL "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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

43

MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.


MODEL STATISTICS
Solver: CPLEX
Iterations: 98
Integer nodes: 12
Constraints: 38
Variables: 42
Integers:36
Nonzeros: 179
Density: 11%
SOLUTION RESULT
Optimal integer solution found
MIN Z = 200.0000
DECISION VARIABLES
VARIABLE x[origem,destino] :
origem
destino
Activity
Rio
SP
1.0000
SP
Go
1.0000
Go
Ma
1.0000
Ma
Be
1.0000
Be
Sal
1.0000
Sal
Rio
1.0000
VARIABLE u[no=SP..Sal] :
no
SP
Go
Ma
Be
Sal

Activity
2.0000
3.0000
4.0000
5.0000
6.0000

Figura 21. Soluo do modelo de de Miller, Tucker e Zemlin - Formato MPL


vez e retorne cidade de origem.
min z =

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

na indstria de manufatura onde a seqncia em que um determinado conjunto de tarefas realizada


pode contribuir para diminuir os custos da produo [29]. Indo um pouco mais alm, podemos encontrar
exemplos na biologia computacional, onde definir um circuito hamiltoniano esta associado ao problema de
desvendar os mistrios do DNA [23].
O Modelo (30) possui (n 1)2 restries para eliminao de sub-rotas. Esta uma formulao bastante
compacta e pode ser usada para modelar situaes onde a cidade de origem pode ser visitada diversas
vezes e nenhuma sub-rota pode conter mais do que p cidades [21]. Uma formulao contendo um nmero
maior de restries, porm com uma relaxao linear melhor ser apresentada na prxima seo.
5.2.2. Formulao de Dantzig, Fulkerson e Johnson.
Dantzig, Fulkerson e Johnson (1954)( vide e.g. [29] e [21]) propuseram duas maneiras de eliminar as
sub-rotas permitidas no Modelo da designao (28). Uma delas consiste em limitar o nmero de variveis
associadas a um subconjunto de cidades S que pode receber valor diferente de zero. Considerando o roteiro
mostrado na Figura 19 e o subconjunto S = {M a, Be, Sal}, se impormos a restrio:
xM a,Be + xM a,Sal + xBe,M a + xBe,Sal + xSal,M a + xSal,Be 2.
a soluo mostrada na Figura 18 deixar de ser vivel. De fato, acrescentar esta nica restrio ao
exemplar 28 suficiente para obter a soluo tima do problema. Veja este novo modelo escrito na sintaxe
do XPRESS-MOSEL (Seo 3.3) na Figura 22 a seguir.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

(! Problema do Caixeiro Viajante: Formulao de Dantzig,


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

45

46

SOCORRO RANGEL

No caso geral o modelo dado por:


min z =

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.

A formulao (31) possui (2n 2) restries de eliminao de sub-rotas e 2n restries de designao.


Este nmero de restries cresce exponencialmente quando o valor de n cresce. Por isso, as inequaes de
sub-rotas so geradas a medida que vo sendo necessrias. Inicialmente resolve-se a relaxao do Problema
(31) obtida eliminando-se a restrio de sub-rotas e as restries de integralidade. A soluo do problema
da designao resultante ento analisada para ver se forma um circuito hamiltoniano. Caso forme, esta
a soluo tima do problema. Seno uma restrio de sub-rota no satisfeita pela soluo atual includa
e o novo problema resolvido. Esta tcnica aplicada iterativamente e combinada com mtodo branch and
bound , mtodo conhecido hoje como branch and cut (ver Seo 3.4), foi proposta em 1954 por Dantzig,
Fulkerson e Johnson para resolver com sucesso um problema com 49 cidades. Mais recentemente, Padberg
e Rinaldi (1991) [42] usaram esta tcnica combinada com mtodos de pr-processamento e outras classes de
inequaes para resolver exemplares com at 2392 cidades. Em um artigo publicado em 2003, Applegate
et al. [1] relatam a soluo de exemplares com um milho de cidades ou mais.
Boa parte do sucesso na resoluo de exemplares de grande porte do problema do caixeiro viajante se
deve integrao de diversas metodologias. De fato, um dos objetivos dos autores em [1] foi explorar a
eficincia e os limites destas tcnicas. As linguagens de modelagem XPRESS-MOSEL e AMPL possuem
recursos que permitem implementar o mtodo cut and branch: incluso iterativa das restries de sub-rotas
(planos de corte) para obter bons limites duais, seguido do mtodo branch and bound (ver Seo 3.4 e
referncias citadas).
5.3. Dimensionamento de lotes com tempos de preparo.
Vamos explorar um pouco mais o modelo de planejamento multiperodo apresentado na Seo 4.1 discutindo uma aplicao na indstria de bebidas. O modelo apresentado a seguir baseado no modelo
clssico de dimensionamento de lotes e foi usado por Rangel e Ferreira [46] para estudar o setor de produo de uma fbrica de refrigerantes de mdio porte situada na regio de So Jos do Rio Preto-SP.
A empresa organizada em trs setores: produo, armazenamento e transporte. Considerando a complexidade de otimizar simultaneamente as operaes dos trs setores, foi abordado inicialmente o setor de
produo, levando em considerao a existncia de um espao limitado para armazenamento dos produtos.
5.3.1. A linha de produo de uma Fbrica de Refrigerantes.
A empresa produz refrigerantes em 12 sabores que so embalados em diferentes tipos de vasilhames.
So utilizadas garrafas de plstico descartveis e garrafas de vidro que precisam ser esterilizadas antes de
receberem o lquido. Existem no total 10 tipos diferentes de tamanhos entre as embalagens de plstico e as
de vidro. Os insumos necessrios para a produo so: xarope de diversos sabores, vasilhames descartveis
e vasilhames reciclveis, rtulos variados, tampas e gua gaseificada.
A produo dos refrigerantes realizada em trs etapas: preparo do lquido, ajuste das mquinas e
finalizao do produto. Os xaropes so preparados em quantidades pr determinadas (1310 litros), chamadas de tachadas, com capacidade para produzir 7860 litros de refrigerante. O xarope utilizado na produo
dos refrigerantes armazenado em tanques que so ligados atravs de mangueiras especiais s linhas de

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

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.

Figura 23. Esquema do setor de Produo da Fbrica de Refrigerantes [46]

48

SOCORRO RANGEL

5.3.2. Um modelo de otimizao inteira mista.


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

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

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

q
n
s X
X
X

cpijt xijt

q
n
s X
X
X

caijt xijt

49

i=1 j=1 t=1

- Custo de estoque

i=1 j=1 t=1

- Minimizar custo de produo e armazenamento


q
s X
n
X
X
(32)
min Custo_T otal =
(cpijt xijt + caijt xijt )
i=1 j=1 t=1

onde cpijt e caijt so respectivamente o custo de produo e o custo de estoque.


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

eijt1 + xijt = dijt + eijt ,

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

Precisamos considerar tambm a disponibilidade de xarope e o o espao disponvel para armazenamento.


Trs novos conjuntos de restries so descritos a seguir.
Restries de espao para armazenamento de produtos
q
s X
X

(34)

aj eijt L,

t = 1...n

i=1 j=1

onde aj o espao ocupado por uma caixa de refrigerantes do tamanho j e L a capacidade do armazm.
A disponibilidade de xarope ser tratada atravs de dois conjuntos de restries. Inicialmente precisamos
considerar a capacidade de produo (ct ) em termos do nmero de tachadas de xarope que a linha de
produo consegue engarrafar em cada perodo. Esta restrio ir ser usada para definir o nmero de
tachadas (yit ) de cada sabor de xarope que devero ser preparados em cada perodo. Naturalmente, no
poder ser usado mais do que 1310yit litros de xarope.
Restries de disponibilidade de xarope
- Capacidade de produo
s
X

(35)

yit ct ,

t = 1 . . . n.

i=1

- Quantidade de xarope usada na produo


(36)

q
X

bij xijt = 1310yit ,

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

j=1

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


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

50

SOCORRO RANGEL

Restries de capacidade de tempo de produo


q
s P
P

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

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


no perodo t
zit =
0, caso contrrio;
- Tamanho:

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


no perodo t
wjt =

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.

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

51

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

- Custo de troca de tamanho


q
n
X
X

wjt
ctam
j

j=1 t=1

- Minimizar custo total de produo, armazenamento e preparo


q
s X
n
X
X
tam
(41)
min Custo_T otal =
(cpijt xijt + caijt xijt + csab
zjt )
i zit + cj
i=1 j=1 t=1

onde csab
e ctam
so respectivamente os custos de troca de sabor e de tamanho.
i
j
Podemos resumir as expresses acima no seguinte modelo de otimizao inteira mista cujo objetivo
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

bij xijt = 1310y it ,

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 ,

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

xijt M wjt ,

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

eijt1 + xijt = dijt + eijt ,


i = 1, ..., s; j = 1, ..., q; t = 1, ..., n.
q
s P
P
aj eijt L, t = 1, ..., n.
i=1 j=1
qmin zij yit qmax zij ,

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

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


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

52

SOCORRO RANGEL

Considerando apenas os conjuntos de restries (33), (38), (39) e (40) obtemos um modelo que 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,

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

53

ou seja, o processo de produo no pode ser interrompido. Tambm no h relao de precedncia entre
as atividades, nenhum dos modelos deve obrigatoriamente ser produzido antes de outro ( = ). Levando
em considerao todos os dados do problema, o objetivo do gerente de produo minimizar as multas
relacionadas demora na entrega de cada um dos lotes ( = wT max, onde: T max = max {0, atraso na
entrega do lote i}). Um valor estritamente negativo para T max quer dizer que a atividade foi concluda
antes da data de entrega. Segundo a nomenclatura apresentada em [37] e [43], este problema ento
classificado como 1| | wT max.
5.5.1. Modelo com restries disjuntas.
Para construir o modelo de otimizao vamos identificar no enunciado do Exemplo 5.3 os principais
elementos do problema.
Elementos conhecidos - Dados de um exemplar
- n : nmero de atividades
- pi : tempo de processamento da atividade i, i = 1 . . . n
- di : data de entrega da atividade i, i = 1 . . . n
- wi : multa (peso) associado atividade i, i = 1 . . . n
Variveis de deciso: tempo de incio
- xi : incio do processamento da atividade i, i = 1 . . . n
O gerente de produo deseja minimizar as multas relacionadas demora na entrega de cada um dos lotes.
A demora ponderada da atividade i pode ser calculada como:
Demora Ponderada
max {0, wi (xi + pi di )}
e o critrio de otimizao minimizar a demora. Isto :
funo-objetivo linear por partes
(42)

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

A funo-objetivo definida acima linear por partes, mas pode ser linearizada se criarmos uma nova
varivel, ti , tal que:
Restries para linearizao da Funo-objetivo
ti xi + pi di ,

ti 0,

i = 1 . . . n;

e substituirmos a expresso 42 por:


Funo-objetivo Linear
(43)

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

Varivel de deciso: controle de execuo



1, se a atividade i comea antes da atividade j
yij =
0, caso contrrio;
Se yij = 1 temos que a atividade i comea antes da j e portanto a restrio (44) associada deve estar ativa
para garantir que a atividade j comece depois que a atividade i estiver completa, a outra restrio deve
ser redundante. Similarmente se yij = 0 a restrio (45) deve ser satisfeita. Assim, podemos escrever:
Restries: controle de atividades na mquina
(46)

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.

Se a atividade j a ltima a ser executada, temos que xi + pi xj + pj para todo i = 1 . . . n, i 6= j.


Portanto se T T otal representa o tempo total necessrio para a execuo de todas as atividades:
(49)

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:

INTRODUO CONSTRUO DE MODELOS DE OTIMIZAO LINEAR CONTNUA E INTEIRA

55

Figura 24. Horizonte de planejamento


Varivel de deciso indexada pelo tempo

1, se a atividade i comea no perodo t
xit =
0, caso contrrio;
Precisamos garantir que cada atividade seja executada exatamente uma vez. Usando restries similares
s restrio de designao usadas para modelar o problema do caixeiro viajante (ver Seo 5.2) temos:
Restries: Todas as atividades devem ser executadas
T
X

(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

Figura 25. Restrio de capacidade associada ao perodo t = 7


O critrio de otimizao que vamos usar minimizar os custos relativos demora na entrega, isto ,
minimizar as multas pelo atraso na entrega das atividades. Uma atividade i est atrasada se t+pi 1 > di ,
onde t o perodo quando ela comea a ser executada. Assim a matriz de custos associada aos dados
apresentados na Seo 5.5.1 pode ser calculada como:
Clculo do custo de atraso

wi ((t + pi 1) di ), se t + pi 1 > di
m
cit =
0 caso contrrio;
A funo objetivo pode ser escrita como:
Funo-objetivo
(54)

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

Devido complexidade computacional dos Problemas de sequenciamento, os principais mtodos de


soluo descrito na literatura so baseados em algoritmos heursticos que fornecem solues aproximadas
para o problema (e.g. [35], [37] e [43]. A vantagem da utilizao de modelos de otimizao inteira
poder resolv-los usando sistemas gerais de otimizao. Estes sistemas tem alcanado um alto grau de
sofisticao, o que tem permitido a soluo de exemplares de grande porte em tempo vivel (e.g. [4]).
Alm disto, estes modelos podem fornecer bons limitantes para o valor timo, que servem de parmetros
para avaliao das solues heursticas.
Referncias
[1] Applegate, D., Bixby, R., Chvatal, V., e Cook, W., Implementing the Dantzig-Fulkerson-Johnson algorithm for large
traveling salesman problems, Mathematical Programming, Ser. B, 97, 91-153, 2003.
[2] Arajo, S.A. e Arenales,M.N., Problema de dimensionamento de lotes monoestgio com restrio de capacidade: modelagem, mtodo de resoluo e resultados computacionais, Pesquisa Operacional - SOBRAPO, 20, No. 2, 287-306,
2000.
[3] Arenales, M.N., Morabito, R. e Yanasse, H., Problemas de Corte e Empacotamento, Anais Do XXXVI Simpsio
Brasileiro De Pesquisa Operacional, SOBRAPO, 2004.
[4] van den Akker, J. M, Hurkens, C.A.J. e Salvelsbergh, M.W.P., Time-Indexed Formulations for Machine Scheduling
Problems: Column Generation, Informs Journal on Computing, 12(2), pg. 111-124, 2000.
[5] Atamturk, A. e Savelsbergh, M.W.P., Integer Programming Software Systems, Research Report BCOL.03.01, IEOR,
University of California at Berkeley, 2004. A ser publicado em Annals of Operations Research.
[6] Bazaraa, M.J. e Jarvis, J.J., Linear Programming and Network Flows, J. Wiley & Sons, N.Y., 2a edio, 1990.
[7] Bezerra, S. e Rangel S., Problemas De Sequenciamento: Modelos e Mtodos de Resoluo, Anais do CIC - Congresso
de Iniciaa Cientfica da UNESP, Ilha Solteira, 2004.
[8] Boaventura, P. O., Grafos : teoria, modelos, algoritmos, Edgard Blucher, 2001.
[9] Caixeta-Filho, J.V., Pesquisa Operacional: Tcnicas de Otimizao Aplicadas a sistemas Agroindustriais, Editora
Atlas, 2001.
[10] Campelo, R.E e Maculan,N., Algoritmos e Heursticas , Editora da Universidade Federal Fluminense, 1994.
[11] Dash Optimization, Applications Of Optimization With XpressMP, Traduo para o ingls de Programmation Linaire
de C. Guret, C. Prins E M. Sevaux, Dash Optimization Ltda, 2000.
[12] Dantzig, G. B., Linear Programming and Extensions, Princeton Universty Press, 1963.
[13] Dantzig, G. B. e Thappa,M.N., Linear Programming 1: Introduction, Springer, 1997.
[14] Drexl, A. e Kimms, A., Lot sizing and scheduling - survey and extensions, European Journal of Operational Research,
99, 1997, 221-235.
[15] Ferris, M.C, e Zhang, Y. Foreword: Special issue on mathematical programming in biology and medicine, Mathematical
Programming, 101(2), 297-299, 2004.
[16] Ferreira, D.; Rangel, S.; Morabito, R. Um Modelo Integrado De Dimensionamento E Sequenciamento De Lotes Para A
Produo De Bebidas, Anais Do XXXVI Simpsio Brasileiro De Pesquisa Operacional, SOBRAPO, 2335-2335, 2004.
[17] Friedlander, A., Elementos de programao no-linear,Editora da UNICAMP, 1994.
[18] Fourer, R., D.M. Gay, B.W. Kernighan, AMPL: A Modeling Language for Mathematical Programming, Duxbury Press
/ Brooks/Cole Publishing Company, 2002.
[19] Fourer, R., Lopes,L., Martin, K. LPFML: A W3C XML Schema for Linear Programming, Relatrio Tcnico, Department of Industrial Engineering and Management Sciences, McCormick School of Engineering and Applied Science,
Northwestern University, USA, 2004.
[20] Garey, M. R. e Johnson D.S., Computer Intractability - A Guide to the Theory of NPCompleteness, W.H. Freeman
Company, 1979.
[21] Goldbarg, M.C. E Luna, H.P.L., Otimizao Combinatria e Programao Linear, Editora Campus, 2000.
[22] Gonzaga, C. C., Algoritmos de Pontos Interiores para Proigramao Linear, IMPA, 1989.
[23] Gonnet G.H., Korostensky C., Benner S., Evaluation measures of multiple sequence alignments Journal of Comupational
Biology, 7, (1-2), 261-276, 2000.
[24] Gurreiro, J., Magalhes, A. e Ramalho, M., Programao Linear, Vol II, Mac Graw Hill.
[25] Hadley, G., Programao Linear, Ed. Guanabara Dois, 1982.
[26] Hilllier, F.S. E Lieberman, G.J., Introduo Pesquisa Operacional, Ed. Campus, 1988.
[27] Ilog, ILOG CPLEX 7.1: Getting Started, ILOG, 2001.
[28] Lachtermacher, G., Pesquisa Operacional na Tomada de Decises, Ed. Campus, 2002.
[29] Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G. e Shmoys, D.B. (ed.), The Traveling Salesman Problem: A Guided
Tour of Combinatorial Optimization Problems, Wiley, 1990.
[30] Linderoth,J. T. e Ralphs, T. K., Noncommercial Software for Mixed-Integer Linear Programming December, Relatrio
Tcnico, Department of Industrial and Systems Engineering, Lehigh University, Bethlehem, PA 18015, 2005.
[31] Luenberger, D.G., Linear and nonlinear programming,Addison-Wesley, 1984.

58

[32] Mangasarian OL, Street WN, Wolberg WH, Breast-Cancer Diagnosis And Prognosis Via Linear-Programming 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

modelo de otimizao binrio, 56


modelo de otimizao linear, 9
modelo de planejamento multi-perodo, 47
modelo matemtico, 16
modelos de otimizao, 1
MOSEL, 17
MPL, 17, 18, 48, 60
mps, formato, 27
mtodo simplex, 36
mtodos de ponto interior, 36

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

Teoria dos Grafos, 57


59

60

tipo de varivel, 14
totalmente unimodular, 62
validao de um modelo, 2, 12
variveis binrias, 52, 55, 75
variveis de deciso, 2
variveis de preparao, 76
varivel de deciso, 2, 10
XPRESS-IVE, 29
XPRESS-MOSEL, 17, 28, 66
XPRESS-MP, 36