Professional Documents
Culture Documents
e-ISSN 2236-5915
Editado por
Eliana X.L. de Andrade
Universidade Estadual Paulista - UNESP
So Jos do Rio Preto, SP, Brasil
a
e
Rubens Sampaio
Pontif Universidade Catlica do Rio de Janeiro cia
o
Rio de Janeiro, RJ, Brasil
Geraldo N. Silva
Universidade Estadual Paulista - UNESP
So Jos do Rio Preto, SP, Brasil
a
e
2012
Veja todos os t
tulos publicados nesta srie na pgina
e
a
http://www.sbmac.org.br/notas.php
2012
Prefcio
A otimizao est presente no nosso dia a dia. Sempre que queremos ou precisamos
tomar uma deciso, procuramos escolher entre as vrias alternativas aquela que,
naquele momento, nos d maior satisfao.
Na matemtica, a rea que estuda problemas de otimizao classicamente chamada de Programao Matemtica . Esta denominao identica uma ampla classe
de problemas. O nome programao foi empregado porque os militares se referem ao
planejamento de atividades como "programa". Boa parte dos acontecimentos que
culminaram com a criao desta importante rea da matemtica, se deram durante
a Segunda Guerra Mundial. De fato, George B. Dantzig usou o termo Programao
Linear (mais especicamente Programming in a linear Structure, mais tarde resumido para Linear Programming e generalizado como Mathematical Programming)
para analisar um problema de planejamento para a fora area americana. Com
a disseminao do uso do computador, programao passou a ser entendido como
a codicao de um algoritmo em uma determinada linguagem (e.g. FORTRAN,
C, C++) e s vezes a Programao Matemtica confundida com programao de
computadores. Linguagens de programao e computadores so muito usados no
estudo de problemas de otimizao, mas a Programao Matemtica muito mais
do que a codicao de um algoritmo.
O termo Otimizao empregado s vezes em referncia a uma classe especca
de problemas de Programao Matemtica: problemas de Programao no-linear.
No entanto, Otimizao pode ser usado para designar Programao Matemtica de
forma a tornar o signicado do termo mais compreensvel. Neste sentido, optamos
por usar Otimizao Linear, Otimizao Inteira, Otimizao no-linear para nomear
os problemas classicamente conhecidos como programao linear, programao inteira, e programao no linear, respectivamente.
Neste texto desenvolvemos a metodologia bsica de construo de modelos de
otimizao linear e linear inteira, apresentando ferramentas computacionais que
podem auxiliar no desenvolvimento de modelos ecientes e realistas. A modelagem
de problemas um importante tpico que tem sido pouco explorado nos livros textos
e/ou disciplinas de otimizao linear e linear inteira. A nfase, em geral, dada ao
desenvolvimento de mtodos de soluo.
Considerada por alguns como uma "arte", talvez com o intuito de evitar o tema,
a modelagem matemtica pode e deve ser sistematizada. Naturalmente, como em
outras reas do conhecimento, quanto maior a experincia, maior a facilidade de
construir modelos que representem matematicamente situaes do nosso dia-a-dia.
vii
viii
A partir de modelos clssicos possvel aprender o processo de modelagem e desenvolver habilidades para a criao de bons modelos matemticos. Ferramentas
computacionais (e.g. linguagens algbricas de modelagem e sistemas de resoluo)
permitem experimentar diversos mtodos de soluo, avaliar as solues obtidas e
validar um modelo. Explorando as limitaes dos recursos computacionais disponveis somos motivados a pesquisar e desenvolver novos mtodos de soluo e novas
ferramentas computacionais.
Agradecimentos
- aos alunos e alunas que cursaram as disciplinas de graduao Mtodos de
Otimizao I e II, Programao Linear e Programao Matemtica entre 2000
e 2005 que de uma forma ou de outra incentivaram a redao deste texto;
- ao apoio nanceiro do CNPq (Proc. no 473001/2004-7);
- ao apoio institucional da UNESP;
- Ana Paula Ximenes Flores e aos pareceristas AD HOC pela leitura cuidadosa
do texto.
ix
Contedo
1 Modelos de Otimizao
Ferramentas Computacionais
3.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1
13
13
16
26
33
34
Planejamento da produo . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 Planejamento Multi-perodo . . . . . . . . . . . . . . . . . . . 37
4.1.2 Modelo na sintaxe do MPL . . . . . . . . . . . . . . . . . . . 42
47
5.1
5.2
O problema da mochila . . . . . . . . . . . . . . . . . . . . . . . . .
O Problema do Caixeiro Viajante . . . . . . . . . . . . . . . . . . . .
5.2.1 Formulao de Miller, Tucker e Zemlin . . . . . . . . . . . . .
5.2.2 Formulao de Dantzig, Fulkerson e Johnson . . . . . . . . .
5.3 Dimensionamento de lotes com tempos de preparo . . . . . . . . . .
5.3.1 A linha de produo de uma Fbrica de Refrigerantes . . . .
5.3.2 Um modelo de otimizao inteira mista . . . . . . . . . . . .
5.4 Problema do Escalonamento de Tarefas . . . . . . . . . . . . . . . .
5.4.1 Classicao do Problema - ( | | ) . . . . . . . . . . . . . .
5.4.2 Modelo com restries disjuntas . . . . . . . . . . . . . . . . .
5.4.3 Modelo Indexado pelo tempo . . . . . . . . . . . . . . . . . .
48
50
54
58
61
62
63
70
71
71
73
Bibliograa
78
Captulo 1
Modelos de Otimizao
"Existem duas maneiras de aumentar a ecincia de uma loja, empresa, ou indstria. Uma delas requer a melhoria tecnolgica, isto ,
atualizao dos equipamentos, mudana no processo tecnolgico, descoberta de novos e melhores tipos de matria prima. A outra maneira, at
hoje muito menos utilizada, envolve melhorias na organizao do planejamento e da produo. Isto , melhorias no processo de distribuio do
trabalho entre as mquinas da empresa, distribuio de matria prima,
combustvel, entre outros fatores."1
Diversas situaes podem ser estudadas de forma mais abrangente se representadas atravs de modelos que capturem seus principais elementos. Um modelo
matemtico de otimizao envolve a representao de um problema ou situao
atravs de um conjunto de relaes matemticas tais como: equaes, inequaes,
dependncias lgicas, e funes. So vrias as razes para a construo de modelos de otimizao, entre elas podemos destacar: aumentar o grau de entendimento
da situao estudada; analisar a situao e propor solues que no sejam aparentes; experimentar diversos cenrios que de outra forma no seria possvel, ou
recomendvel [56]. Taube [52] destaca outras razes sob o ponto de vista da gesto
empresarial. Modelos de otimizao linear e otimizao linear inteira podem ser
teis na resoluo de um grande nmero de problemas em diversas reas. Neste
texto iremos discutir algumas destas aplicaes.
Para construir um modelo de otimizao linear que represente um determinado
problema necessrio identicar inicialmente quais so os elementos conhecidos
geralmente associados ao que sabemos sobre o problema, e quais so os elementos
desconhecidos associados ao que queremos determinar ao solucionar o problema.
Esta fase inicial em geral realizada de forma conjunta atravs de reunies com o
pessoal envolvido na resoluo do problema, e envolve o conhecimento da situao
1 Traduzido de (Kantarovich (1939) in Dantzig [12]-pg 22)
funo-objetivo
restries principais: equaes ou inequaes
tipo das variveis
(1.-1)
z = cx
Ax = b
(1.-7)
x 0, xj Z, j = 1, . . . , p; xj , j = p + 1, . . . , n.
Note que no Modelo (1.-5) xj indica a j -sima componente do vetor x. Para facilitar
a referncia a estes modelos usaremos a abreviao (OL), (OI), (OIM) respectivamente. Modelos tais que a funo-objetivo no linear e/ou o conjunto de restries
formado por equaes ou inequaes no lineares so chamados de modelos de otimizao no-lineares (ONL). Situaes que envolvam modelos no-lineares e que no
possam ser representadas por modelos lineares fogem do escopo deste texto e no
sero discutidas. O leitor interessado nesta classe de modelos poder consultar por
exemplo as seguintes obras: [56], [26], [31], [17].
Antes de prosseguirmos explorando os modelos descritos acima, gostaramos de
chamar ateno para algumas confuses existentes a respeito da validade e uso de
modelos matemticos. Uma das crticas apontadas diz respeito a quanticao de
parte dos dados usados no modelo, por exemplo como atribuir um custo a um valor
social, outra est associada preciso dos dados utilizados. Williams [56] responde
a estas crticas considerando que uma srie de decises associadas a conceitos "noquanticveis"precisam ser tomadas, e so baseadas numa caracterizao implcita
que no pode ser evitada. Incorporar esta deciso explicitamente num modelo matemtico parece ser uma forma cientca e honesta de lidar com a questo. A preciso
dos dados deve ser considerada em relao a cada modelo especicamente. Apesar
de uma parcela dos coecientes de um modelo no serem precisos, ainda assim
possvel que o modelo matemtico produza uma boa soluo para o problema. De
qualquer forma importante ter claro que o modelo matemtico deve ser usado
como uma de diversas ferramentas disponveis para a tomada de deciso. A qualidades das respostas que um modelo produz depende da preciso e da estrutura dos
dados do modelo. No caso dos modelos de otimizao a denio da funo-objetivo
tambm afeta fortemente a resposta do modelo.
Williams [56] observa ainda que a resposta fornecida por um modelo matemtico
deve ser analisada cuidadosamente. Se ela representa uma deciso que no pode
ser tomada, as razes para a no aceitao desta soluo devem ser analisadas e
possivelmente incorporadas num novo modelo atravs da modicao do conjunto de
restries e/ou da funo-objetivo. Se a resposta for aceitvel, pode ser sbio tomla apenas como uma opinio. Modicar a funo-objetivo (e conseqentemente o
modelo) pode resultar em uma outra opo. Questionando as respostas fornecidas
pelo modelo e modicando-o de forma adequada pode tornar mais visvel as diversas
possibilidades existentes e aumentar o grau de entendimento do problema.
Nos prximos captulos desenvolvemos a metodologia bsica de construo de
modelos de otimizao linear e linear inteira, apresentamos ferramentas computacionais que podem auxiliar no desenvolvimento de modelos ecientes e discutimos
alguns problemas clssicos que servem de ponto de partida para a soluo de diversos problemas no nosso dia a dia.
Captulo 2
Um primeiro modelo de
otimizao linear: o problema
da dieta
O problema da dieta consiste em, dado um conjunto de alimentos, escolher quais e
quanto usar de cada um para compor uma dieta alimentar que atenda quantidades
pr-determinadas de nutrientes, de acordo com algum critrio. Esse um enunciado
muito geral, no entanto serve de base para apresentarmos um problema que possui
uma importncia especial. Num excelente histrico sobre o problema da dieta,
Namem e Bornstein [40] destacam que este foi um dos primeiros problemas a ser
usado para testar o mtodo simplex (e.g. [13], [21], [6]) desenvolvido por George B.
Dantzig em 1947 para resolver problemas de otimizao linear. Alm disso, o modelo
original apresentado por Stigler em 1945, apesar de nem sempre resultar em uma
resposta satisfatria, simples e ilustra muito bem o processo de construo de um
modelo discutido no Captulo 1 e as principais suposies (ou axiomas) necessrias
para se obter um modelo de otimizao linear.
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 2.1. Quanto de cada alimento Paula deve consumir para obter uma dieta
que atenda a recomendao mdica e que tenha o menor custo possivel?
Elementos conhecidos
- alimentos a serem considerados na elaborao da dieta;
- composio nutricional dos alimentos;
- quantidade mnima de nutrientes que a dieta deve satisfazer diariamente;
- custo dos alimentos (por poro);
Elementos desconhecidos
- nmero de pores de cada alimento a ser usado na dieta.
De acordo com os dados da Tabela 2.1 podemos vericar que existem diversas combinaes dos alimentos que fornecem os nveis recomendados de nutrientes. Tambm
possvel calcular o custo associado a cada uma delas. Precisamos ento denir
um critrio para a seleo do melhor combinao possvel. Antes necessrio esclarecer o que consideramos como a melhor combinao possvel. Dentro do presente
contexto, a questo do custo associado combinao dos alimentos parece ser um
item importante para a Paula. Assim podemos dizer:
Objetivo
- obter uma dieta com o menor custo possvel.
O menor custo possvel na presente situao custo zero, mas claro que esta soluo no atende a recomendao mdica. Uma soluo do problema deve satisfazer
algumas restries e portanto para completar a denio dos elementos principais
do modelo necessrio denir:
Restries
- a dieta deve fornecer uma quantidade mnima dos nutrientes pr-especicados.
Uma vez entendido o problema, podemos iniciar a construo do modelo de
otimizao traduzindo para a matemtica os elementos acima. Vamos usar um
modelo de otimizao linear (OL). O modelo denido no Captulo 1 pela Expresso
(1.-1) tambm pode ser escrito no seguinte formato:
min
z=
n
j=1
cj xj
(2.1)
sujeito a
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.
(2.-1)
(2.-1)
onde o smbolo pode ser substitudo por " ", " ", ou "=". Qualquer problema
de otimizao linear pode ser escrito no formato padro apresentado no Captulo 1
(e.g. [13], [21]).
importante neste momento detalharmos um pouco mais a denio de um
modelo de otimizao linear. A funo-objetivo (2.1) e as restries (2.-1) do modelo
acima so lineares pois no apresentam produtos de variveis, xy , potncias de
variveis, xn , n > 1, ou ainda combinaes de variveis do tipo (x + logy ). De uma
maneira geral, uma forma linear pode ser caracterizada por certas propriedades
multiplicativas e aditivas [25]. No contexto do Exemplo 2.1 se Paula incluir na
dieta uma poro de arroz ela obtm 170 kcal de energia, se incluir duas ir obter
o dobro de energia. A quantidade de energia obtida na dieta referentes ao arroz
proporcional ao nmero de pores includas. De maneira similar, para calcular
o custo da dieta, podemos supor que se uma poro de arroz custa 14 centavos,
duas pores custaro 28 centavos. Assim, um modelo linear pressupe que o custo
total da compra de um determinado item proporcional ao nmero de unidades
compradas.
A propriedade aditiva pode ser ilustrada considerando que se Paula incluir na
dieta uma poro de arroz e uma de feijo a energia total obtida ser igual soma
das quantidades individuais fornecidas por cada alimento, isto 507 kcal, e o custo
total igual soma dos custos individuais, 33 centavos. Usando as propriedades
de aditividade e proprocionalidade, podemos concluir que dobrando o consumo de
arroz e triplicando o consumo de feijo, teremos uma dieta de 1351 kcal a um custo
de 85 centavos.
No modelo (OL) que vamos construir para representar o problema da Paula, a
letra j ser usada para indexar os elementos do conjunto de alimentos que podero
ser usados para compor a dieta. No Exemplo 2.1 temos quatro alimentos, o ndice
j poder ento assumir valores inteiros entre 1 e 4 para representar cada um deles.
De forma similar deniremos um segundo indice, i, para indexar os nutrientes que
devem ser obtidos pela dieta. Assim temos:
ndices
j = 1, . . . , 4 representa respectivamente os alimentos: arroz, ovos, leite e feijo;
i = 1, . . . , 3 representa respectivamente os nutrientes: energia, proteina e clcio.
Vericamos acima que um elemento desconhecido importante no problema enunciado no Exemplo 2.1 : quantas pores de cada alimento devem fazer parte da
dieta. Assim podemos denir:
Variveis de deciso
xj : nmero de pores do alimento j a ser includo na dieta.
Funo-objetivo
min z = 14x1 + 13x2 + 9x3 + 19x4 .
As propriedades de aditividade e proporcionalidade tambm sero teis para
expressar matematicamente as restries do modelo. A dieta precisa satisfazer
nveis mnimo de cada um dos nutrientes. Em relao energia temos que:
quantidade total de energia da dieta 2000 kcal.
A quantidade total de energia pode ser calculada de forma similar ao clculo do
custo total. Considerando que se for consumido x1 pores de arroz teremos 170x1
kcal e x2 pores de ovos teremos 160x2 kcal, temos um total de 170x1 + 160x2 kcal.
Se chamarmos de aij a quantidade de nutriente i no alimento j , a quantidade total
do nutriente i obtida pelo consumo de xj pores do alimento j igual a aij xj .
Considerando o consumo dos quatro alimentos temos que a quantidade total do
nutriente i igual a ai1 x1 + ai2 x2 + ai3 x3 + ai4 x4 . Usando os dados da Tabela 2.1
podemos explicitar o conjunto de restries:
10
Restries
energia: 170x1 + 160x2 + 160x3 + 337x4 2000
protena: 3x1 + 13x2 + 8x3 + 22x4 65
clcio: 12x1 + 54x2 + 285x3 + 86x4 800.
Para completar o nosso primeiro modelo, temos ainda que considerar os valores
que as variveis de deciso podem assumir. Naturalmente, nesta situao estamos
interessados apenas em valores no-negativos que satisfaam os nveis mnimos de
nutrientes. Podemos tambm considerar que a varivel xj pode receber qualquer
valor real. Esta a terceira propriedade que caracteriza um modelo de otimizao
linear: divisibilidade. Se impormos como restrio adicional, por exemplo, que
as variveis assumam apenas valores inteiros no teremos mais um problema de
otimizao linear, mas sim um problema de otimizao inteiro. Algumas situaes
reais so melhor representadas se estas restries forem impostas, o que discutiremos
com mais detalhes no Captulo 5. No presente caso:
(2.-4)
Note que a denio do tipo das variveis fornece um conjunto de restries adicionais ao modelo. Este conjunto descrito de forma separada porque estas informaes so em geral tratadas de forma implcita. A condio xj considerada
implicitamente nos modelos de otimizao linear e por isso foi omitida do problema
(2.-1).
Uma vez obtido o modelo de otimizao linear que represente, pelo menos a
princpio, a situao estudada precisamos vericar se as respostas obtidas so satisfatrias. Isto , iniciamos a fase de validao do modelo. Esta uma fase que pode
demandar bastante esforo da equipe envolvida. Ferramentas computacionais tais
como linguagens de programao, linguagens de modelagem, bem como sistemas
computacionais desenvolvidos para a resoluo de problemas de otimizao podem
facilitar o trabalho desta fase. No Captulo 3 apresentaremos algumas ferramentas
computacionais que esto disponveis para esta tarefa. Neste momento, vamos supor que dispomos de um aplicativo, chamado c_otim, que ir receber um problema
11
(2.-5)
que "traduzida"quer dizer que a dieta dever ser composta por 12,5 pores de leite
correspondendo a aproximadamente 2,96 litros de leite ( 3 representa o nmero de
x
pores do alimento leite e uma poro de leite igual a 237ml) a um custo de 112,5
centavos.
O que dizer desta soluo? Apesar de ser a de menor custo, a dieta sugerida composta por apenas um alimento em uma quantidade que no adequada.
Quando tomou conhecimento desta sugesto, a nossa personagem Paula imediatamente disse: "Eu no consigo tomar esta quantidade de leite!". Uma pergunta
natural para fazer a Paula : "Quantas pores de leite voce tomaria?". Este dilogo
ctcio ilustra bem a necessidade de se avaliar as respostas que um modelo produz.
Se lembrarmos do processo de construo de um modelo discutido no Captulo 1,
a fase de validao pode resultar em uma reviso do modelo proposto. A resposta
da Paula pergunta acima implica em impor um limite para o nmero de pores
de leite a serem includas na dieta. Isto , novos elementos conhecidos passam a
fazer parte do nosso modelo: nmero mximo de pores do leite. Podemos prever
que limitar apenas o consumo do leite pode gerar novas solues que sugiram um
consumo igualmente inaceitvel dos demais alimentos. Assim, para obter um modelo que reita melhor a situao precisamos conhecer os limites mximos aceitveis
para o consumo de cada um dos alimentos. Obtendo estes dados da Paula, podemos
representar matematicamente esta nova restrio impondo um limite superior para
o valor das variveis no Modelo (2.-1). Considerando que o limite mximo para o
consumo de arroz, ovos, leite e feijo so 1,2,2,3 respectivamente, temos:
12
(2.-7)
Captulo 3
Ferramentas Computacionais
O problema da dieta foi uma das primeiras aplicaes da otimizao linear a ser
resolvida pelo mtodo simplex. Em 1947, uma verso do problema contendo 9
restries e 77 variveis, considerado um problema de grande porte para a poca,
foi resolvida usando calculadoras de mesa em 120 dias de trabalho [13]. Hoje,
os sistemas computacionais so capazes de manipular problemas com milhares de
variveis em poucos segundos. De fato, o porte dos problemas a serem resolvidos
por um determinado sistema depende principalmente da disponibilidade de memria
da mquina onde o sistema est instalado. No entanto, manipular as informaes
associadas a um modelo de otimizao de grande porte, nos padres de hoje, no
uma tarefa trivial. E isso diz respeito ao armazenamento e manipulao dos dados
do problema, bem como gerao e documentao das variveis e das restries
do modelo associado, alm de outros fatores como fornecer e obter informaes dos
sistemas computacionais de resoluo.
Diversas ferramentas computacionais de carter geral e especco podem auxiliar no processo de construo, manuteno e soluo de modelos de otimizao.
Podemos dividir a discusso deste tpico em dois blocos: ferramentas de modelagem
e ferramentas de resoluo. No primeiro bloco esto as linguagens de programao
(e.g. C, C++, Fortran), as planilhas de clculo (e.g. EXCEL, Lotus 123) e as
linguagens algbricas de modelagem (LAM). No bloco das ferramentas de resoluo
entram novamente as linguagens de programao, usadas para a implementao de
algoritmos e os os sistemas de resoluo comerciais e de pesquisa. Em [28] a planilha
de clculo EXCEL usada para modelar e resolver problemas. Nas prximas sees
faremos uma breve discusso sobre linguagens de modelagens (Seo 3.1) e sistemas
de resoluo (Seo 3.2).
14
do problema da dieta discutido no Captulo 2, construmos um modelo de otimizao linear para representar especicamente a situao descrita no Exemplo 2.1.
No entanto, possvel descrever o Modelo (2.-1) em um formato mais geral. Se
considerarmos que temos:
- n alimentos;
- m nutrientes;
- cj , j = 1, . . . , n: o custo do alimento j ;
- bi , i = 1, . . . , m: o nvel mnimo do nutriente i;
- aij , i = 1, . . . , m, j = 1, . . . , n: quantidade do nutriente i presente no alimento j ;
o modelo (2.-1) pode ser generalizado como:
min
sujeito a
z = c1 x1 + c2 x2 + . . . + cn xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.
am1 x1 + am2 x2 + . . . + amn xn bm
xj 0, xj .
(3.-3)
15
- conjuntos e ndices
locais: {Rio, SP, Goinia}
cdigos: {A11, B45}
i : 1 . . . 4;
- variveis de deciso
podem ser do tipo inteiras, binrias ou contnuas, e denidas ou no para todos os
elementos de um conjunto;
- funo-objetivo
linear ou no linear;
- restries
16
podem ser agrupadas por tipo para expanso a posteriori, e denidas para subconjuntos de ndices.
Nas prximas sees, vamos usar o problema da dieta enunciado no Captulo 2
(Exemplo 2.1) para ilustrar a estrutura e algumas das facilidades das trs linguagens
mencionadas acima.
Operao do Sistema
Por ser tratar de um aplicativo para o sistema operacional Windows, sua operao
bsica segue o padro de outros aplicativos para este sistema operacional, como
por exemplo WORD, EXCEL. A barra de ferramentas principal do aplicativo, a
barra de menus (ver Figura 3.1), composta de comandos usuais de aplicativos
para Windows: FILE (e.g. abrir, fechar, salvar), EDIT (e.g. cortar, copiar, colar);
e comandos especcos do sistema: RUN e GRAPH que sero descritos a medida
que forem sendo usados. Na barra principal tambm esto dispostos uma srie de
cones que facilitam o acesso aos diversos comandos do sistema.
Sintaxe do MPL
Os principais comandos usados para descrever um modelo de otimizao atravs do
MPL so: TITLE, INDEX, DATA, VARIABLES, MODEL, SUBJECT TO, END.
Cada um destes comandos so usado para denir uma seo do modelo, exceto
os comandos TITLE e END que so usados para iniciar e encerrar a descrio do
modelo respectivamente. Estes comando so passados para o sistema atravs de
um arquivo tipo texto que ser lido e interpretado pelo MPL. O sistema possui
1 uma verso resumida do sistema (Free Student/Trial version) pode ser obtida gratuitamente
no endereo http://www.maximal-usa.com/download/ juntamente com as instrues para instalao (ltima visita em 13/08/2005).
17
um editor de texto prprio, mas qualquer editor capaz de gerar arquivo livre de
formatao (e.g. EDIT, PICO, NOTEPAD) pode ser usado. Usando o editor do
MPL vamos criar um arquivo para denir o nosso modelo (no menu principal escolha
FILE seguido de NEW e uma janela se abrir para receber o texto). Usaremos
letras maisculas para indicar palavras que so reservadas para a linguagem, isto ,
quando usadas so interpretadas como comandos pelo MPL.
O comando TITLE usado para dar um ttulo e indicar o incio da descrio
do modelo. Para o Exemplo 2.1 vamos usar o nome dieta. Veja a seguir o primeiro
comando do nosso arquivo.
TITLE dieta
Como zemos na modelagem descrita no Captulo 1, vamos agora denir os ndices
que sero usados para gerar as variveis, restries e estruturas de dados (vetores,
matrizes) para armazenar os valores necessrios para gerar um exemplar do modelo.
Isto ser feito atravs do comando INDEX. Quando denimos os ndices do Modelo
(2.-1) usamos as letras i e j e nmeros inteiros para denir os valores que estes ndices
poderiam receber. Precisamos exercitar um pouco nossa memria para lembrar que
a letra i representa os nutrientes, a letra j representa os alimentos, e que quando
fazemos j = 3 estamos nos referindo ao alimento leite. Seria muito mais natural
usar diretamente as palavras alimento e nutriente como ndices, da mesma forma
que usar os nomes dos alimentos ao invs de nmeros para denir as atribuies aos
ndices. Esta forma mais natural de fazer referncia aos elementos de um modelo
uma das vantagens de se usar uma linguagem de modelagem. Podemos ento
acrescentar o comando INDEX ao nosso arquivo, substituindo os ndicesi e j pelas
palavras nutriente e alimento, respectivamente.
TITLE dieta
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
importante observar a necessidade de se incluir comentrios na descrio do modelo, pois eles ajudaro a document-lo e torn-lo auto-explicativo. Os comentrios,
isto , partes do texto que sero ignorados pelo aplicativo, podem ser adicionados
no MPL de duas formas: texto entre chaves e texto precedido de um ponto de exclamao. As chaves so, em geral, usadas no caso de comentrios longos, de mais
de uma linha, e o ponto de exclamao usado no caso de comentrios de uma
nica linha. Vamos ento incluir comentrios na descrio do modelo da dieta.
{ Arquivo: dieta.mpl
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
TITLE dieta
18
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
Podemos iniciar agora a denio dos elementos conhecidos do modelo, ou seja a
seo DATA. neste ponto que sero denidas as estruturas que iro armazenar os
dados do exemplar que iremos gerar posteriormente. Na generalizao do Modelo
2.-1 denimos cj , bi , aij para representar o custo do alimento j , o nvel do nutriente
i e a quantidade do nutriente i presente no alimento j , respectivamente. Estes
elementos podem ser pensados como componentes dos vetores c,b e da matriz A.
Este mesmo recurso ser usado agora denindo os nomes custo, nivel e quant no
lugar de c, b e A. necessrio deixar claro a dimenso destas estruturas, e isto
feito associado a cada uma delas um ou mais dos ndices denidos na seo INDEX.
O comando VARIABLES abre a seo de denio das variveis de deciso do
modelo. Vamos usar o nome comprar no lugar de x para representar o nmero de
pores de cada alimento a ser includo na dieta.
J inclumos muitas informaes na descrio do modelo, e podemos ter cometido alguns erros de sintaxe, isto comandos que o sistema MPL no capaz de
interpretar. Assim, antes de prosseguir, conveniente vericar se a descrio do
modelo feita at o momento est de acordo com os requisitos da linguagem. Para
tanto acionamos na barra do menu principal o comando RUN seguido do comando
CHECK SYNTAX (ver Figura 3.2).
19
20
min
z=
cj xj
j=1
sujeito a
n
aij xj bi ,
i = 1, . . . , m
(3.-6)
j=1
xj 0, xj
{ Arquivo: dieta.mpl
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes }
TITLE dieta
INDEX
alimento = (arroz, ovos, leite, feijao)
nutriente = (energia, proteina, caloria)
DATA
! Custo de cada alimento a ser considerado na dieta
preco[alimento] = (14 13 9 19)
! Quantidade mnima total de cada nutriente na dieta;
nivel[nutriente] = ( 2000 65 800 )
! Quantidade de nutrientes presente em cada tipo de alimento
quant[alimento,nutriente] = (170 3 12
160 13 54
160 8 285
337 22 86)
VARIABLES
! Nmero de pores de cada alimento que ira compor a dieta
comprar[alimento]
MODEL
! Obter a dieta de menor custo possvel
MIN Custo_total = SUM(alimento: preco*comprar)
SUBJECT TO
! A dieta deve satisfazer nveis minimos de cada nutriente
N_[nutriente] :SUM(alimento: quant*comprar) > nivel[nutriente]
END
Figura 3.4: Problema da Dieta na Sintaxe MPL
21
22
Recursos da Linguagem
Um vez denido um modelo, diversas aes podem ser executadas: anlise da estrutura do modelo, resoluo de um exemplar entre outras. Apesar do MPL facilitar
a interao entre um modelo e um sistema de resoluo, o MPL uma linguagem
para descrever, documentar e analisar um modelo de otimizao, no um sistema
para resolver problemas de otimizao. Na Seo 3.2 iremos descrever brevemente
alguns sistemas de resoluo que podem ser acionados via MPL.
Formatos mps e lp
Se a sintaxe do modelo estiver correta, possvel gerar o exemplar do modelo
associado aos dados denidos na seao DATA em diversos formatos: mps, lp, cplex,
lindo, entre outros. Este recurso importante, pois, alm de permitir que o exemplar
possa ser usado como dado de entrada em diversos sistemas de otimizao, permite
tambm que seja lido e entendido sem um conhecimento prvio da sintaxe de uma
determinada linguagem. A maioria das linguagens de modelagem possuem este
recurso. Para gerar o exemplar acione o comando RUN no menu principal, seguido
de GENERATE FILE, e escolha o formato desejado. As Figuras 3.5 e 3.6 mostram
o Exemplar (2.-1) nos formatos mps e lp.
23
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
24
MINIMIZE Custo_total =
14 comprar_arroz + 13 comprar_ovos + 9 comprar_leite + 19 comprar_feijao
SUBJECT TO
N_energia:
170 comprar_arroz + 160 (comprar_ovos + comprar_leite)
+ 337 comprar_feijao >= 2000
N_proteina:
3 comprar_arroz + 13 comprar_ovos + 8 comprar_leite
+ 22 comprar_feijao >= 65
N_Caloria:
12 comprar_arroz + 54 comprar_ovos + 285 comprar_leite +
86 comprar_feijao >= 800
Figura 3.6: Problema da dieta no formato lp
25
Relatrio da soluo
Uma vez acionado o sistema de otimizao, o sistema MPL abre uma janela para
mostrar o andamento do processo de soluo. Isto detalhes sobre o exemplar
(nmero de linhas, colunas, elementos diferentes de zero, nmero de iteraes, entre
outros). Quando o processo de soluo se encerra possvel ver a soluo, caso haja,
atravs do comando VIEW. A apresentao da soluo pr-denida e o usurio
tem pouco controle sobre o formato do relatrio. A linguagem MPL possui diversos
outros comando e recursos que iremos apresentar medida que sejam necessrios.
Um tutorial sobre o uso da linguagem, mantido pelos proprietrios, est disponvel
em [34].
26
27
28
29
Note que apesar de manter a mesma estrutura que o MPL, a descrio do modelo
na sintaxe do XPRESS-MOSEL muito diferente. A denio das estruturas para
armazenamento de dados e variveis, precedidas do comando DECLARATIONS,
segue o padro das linguagens de programao. Os vetores e matrizes so denidos
pelo comando ARRAY seguido da denio do tipo que pode ser: real ( valor real
entre -1.7e+308 e 1.7e+308, integer (valor inteiro entre -214783648 e 2147483647)
e boolean (verdadeiro ou falso: resultado de uma expresso boleana ou lgica) e
MPVAR para denir as variveis do modelo. O comando END-DECLARATIONS
naliza esta seo do cdigo.
A descrio da funo-objetivo e das restries mais livre do que no MPL
e pode ser feita em qualquer local do cdigo. A funo-objetivo s identicada
como tal atravs do comando MINIMIZE (ou MAXIMIZE) que possui duas funes:
invocar o sistema de resoluo, denido atravs do comando USES, e denir o
critrio de otimizao. O comando FORALL foi usado para expandir o conjunto
de restries. Observe que a sintaxe para denio das restries bem diferente
da sintaxe do MPL. Alm do comando FORALL, necessrio denir para que
ndices a restrio ser expandida. No nosso exemplo para todo valor i do ndice
nutriente. Note tambm o uso do smbolo SUM. Na linguagem XPRESS-MOSEL o
usurio possui diversas formas de gerar o relatrio da soluo. Atravs dos comandos
GETOBJVAL e GETSOL possvel recuperar a soluo e escrev-la no formato
desejado atravs do comando WRITELN. A linguagem XPRESS-MOSEL possui
diversos outros comandos e recursos que iremos apresentar medida que sejam
necessrios. Uma descrio completa desta linguagem pode ser lida em [11].
endereo
30
- SET
dene um ndice;
- PARAM
dene uma estrutura (vetor ou matriz) que ir armazenar os elementos conhecidos
do exemplar, fornecidos no arquivo nomemodelo.dat;
- VAR
dene variveis de deciso;
- SUBJECT TO
dene um conjunto de restries.
O contedo do arquivo dieta.mod contendo o problema da dieta (3.1) na sintaxe
do AMPL mostrado na Figura 3.9 a seguir. Os comentrios so precedidos do
smbolo #, e todos os comandos devem nalizar com ponto e vrgula (;). Os dados
necessrios para gerar um exemplar (dieta.dat) pode ser visto na Figura 3.10.
A linguagem AMPL possui diversos outros comandos e recursos que sero apresentados a medida que forem necessrios. Mais detalhes sobre a sintaxe e recursos
desta linguagem podem ser obtidos em [18]. Na prxima seo iremos discutir
alguns sistemas de resoluo que podem ser acoplados s linguagens de modelagem.
#
#
#
#
#
#
#
#
#
Arquivo: dieta.mod
Problema da Dieta: Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes
Denio dos ndices
SET alimento;
SET nutriente;
Denio das estruturas para receber dados do exemplar
PARAM preco { alimento }
PARAM nivel { nutriente };
PARAM quant {nutriente, alimento };
Denio das variveis de deciso
VAR comprar { j in alimento } >=0;
denio da funo-objetivo
minimize custo_total: SUM { j in alimento } preco[j] * comprar[j];
A dieta deve satisfazer nveis minimos de cada nutriente
SUBJECT TO N_ { i in nutriente }:
SUM { j in alimento } quant[i,j] * comprar[j] >= nivel[i];
m arquivo dieta.mod
Figura 3.9: Problema da Dieta na Sintaxe AMPL
31
#
#
#
#
Arquivo: dieta.dat
Problema da Dieta:
Determinar uma combinao de alimentos que fornea
uma quantidade mnima de nutrientes
# ndices
SET alimento := arroz ovos leite feijao;
SET nutriente := energia proteina caloria;
# Dados: Custo dos alimento
PARAM preco :=
arroz 14
ovos 13
leite 9
feijao 19;
# Dados: Nvel mnimo de nutrientes na dieta
PARAM nivel :=
energia 2000
proteina 65
caloria 800;
# Quantidade de nutirente presente em cada alimento
PARAM quant:
arroz ovos leite feijao :=
energia
170 80 130 100
proteina
3 6 6.1 6
caloria
12 25 232 28;
# m arquivo dieta.dat
Figura 3.10: Dados para o Problema da Dieta na Sintaxe AMPL
32
33
Captulo 4
Aplicaes de Otimizao
Linear
vasto o campo de aplicaes da otimizao linear. Esta classe de modelos tm
sido usada para representar problemas em reas to distintas quanto nanas [51] e
medicina ([39],[32]). Williams [56] apresenta uma descrio resumida de um amplo
espectro de aplicaes com estudos de casos que incluem, entre outros, problemas na
indstria petrolfera, problemas de distribuio e de manufatura. Caixeta-Filho [9]
apresenta algumas aplicaes no setor agroindustrial. Uma bibliograa comentada
de artigos sobre formulaes de modelos de otimizao linear que cobre o perodo
entre 1939 e 1979 pode ser encontrada em [38]. um banco de dados em construo (mantido online ) e artigos mais recentes esto sendo includos gradativamente.
Murphy [39] observa que atravs destas aplicaes possvel analisar a evoluo das
estruturas usadas para representar determinadas situaes prticas. Sistematizando
o processo de construo de modelos usado por estes autores possvel estabelecer alguns princpios que permitem o desenvolvimento de modelos ecientes. Neste
captulo ilustramos alguns destes princpios atravs da discusso de modelos para
problemas clssicos que podem ser usados isoladamente, mas que tambm aparecem
como sub-modelos na representao de situaes mais complexas.
35
do consrcio.
Vamos iniciar nosso estudo modelando um problema muito simples adaptado de
um execcio proposto em [55].
quer utilizar do melhor modo possvel os recursos de madeira em uma de suas reservas orestais. Dentro desta regio, h uma serraria e uma fbrica de compensados,
isto , as toras podem ser convertidas em madeira beneciada ou compensado. Produzir uma mistura de produto beneciado requer 1 metro cbico de pinho e 4 metros
cbicos de canela. Produzir 100 metros quadrados de madeira compensada requer 2
metros cbicos de pinho e 4 metros cbicos de canela. Esta regio tem disponvel no
momento 32 metros cbicos de pinho e 72 metros cbicos de canela. Compromissos
de venda exigem que sejam produzidos pelo menos 5 metros cbicos de madeira beneciada e 1200 metros quadrados de madeira compensada. As contribuies ao lucro
so 45 u.m. (unidades monetrias) por 1 metro cbico de produtos beneciados e
60 u.m. por 100 metros quadrados de compensado.
Seguindo a estrutura usada para obter o modelo para o problema da dieta no
Captulo 2 vamos identicar no enunciado do Exemplo 4.1 os elementos conhecidos,
os elementos desconhecidos, o objetivo e as restries do problema.
Elementos conhecidos
- lucro associado aos produtos;
- quantidade necessria de cada tipo de insumo para a produo de cada item
- quantidade de insumo disponvel.
Elementos desconhecidos
- quanto produzir de cada item.
Objetivo a ser alcanado
- obter o maior lucro possvel.
Restries
- quantidade de insumos limitada
- compromissos de venda.
O modelo de otimizao linear pode ser construdo denindo os ndices j para representar o tipo de produto (madeira beneciada, compensado) ei para representar
o tipo de insumo (canela, pinho). Estes ndices sero usados para denir os demais
elementos do modelo.
ndices
36
Variveis de deciso
Precisamos decidir quanto produzir de cada item.
x1 : quantidade de madeira beneciada produzida (em m3 )
x2 : quantidade de compensado produzido em (100m2 )
Note que necessrio denir uma unidade de medida para cada uma das variveis
j que os produtos so medidos em unidades diferentes.
O critrio para a tomada de deciso maximizar o lucro obtido com a venda dos
produtos. O retorno associado a cada produto conhecido. Assim, se vendermos
1 m3 de madeira beneciada teremos um lucro de 45. Supondo vlido o axioma
de proporcionalidade temos que se a venda for duplicada, o lucro dobra. De uma
maneira geral, se vendermos x1 m3 , o lucro associado ser de 45x1 . Similarmente,
o lucro associado a venda de compensado pode ser calculado como: 60x2 . Usando o
axioma de aditividade temos que o lucro total associado venda dos dois produtos
45x1 + 60x2 . Como queremos obter o maior lucro possvel, temos:
funo-objetivo
Maximizar o lucro total:
max z = 45x1 + 60x2
A quantidade de recursos limitada. Sabemos que a quantidade total de pinho
utilizada para a produo dos dois items no pode exceder os 32 m3 disponveis.
Lendo o enunciado do Exemplo 4.1 temos que so necessrios 1 3 de pinho para
m
a produo de 1m3 de madeira beneciada e 2 m3 para produo de 100m2 de
compensado. Usando os axiomas de proporcionalidade e aditividade e estendendo
o raciocnio para o uso de canela temos o seguinte conjunto de restries:
(4.0)
(4.0)
- Canela:
37
- Compensado:
x2 12
Observe que a varivel x2 foi denida em 100m2 , por isso usamos um limite inferior de 12 para a produo de compensado. O modelo de otimizao linear que
representa o problema pode ser resumido na Expresso 4.1 abaixo.
min
z = 45x1 + 60x2
sujeito a
x1 + 2x2 32
4x1 + 4x2 72
x1 5, x2 12.
(4.-2)
O Modelo (4.1) envolve apenas duas variveis e pode ser resolvido facilmente pelo
mtodo grco ou manualmente pelo mtodo simplex (e.g. [21], [6]). Note que
sua estrutura muito similar ao modelo do problema da dieta (2.-1). De fato se
considerarmos que temos n produtos, m insumos, o Modelo 4.1 pode ser generalizado
e escrito como:
max
sujeito a
z = c1 x1 + c2 x2 + . . . + cn xn
a11 x1 + a12 x2 + . . . + a1n xn b1
a21 x1 + a22 x2 + . . . + a2n xn b2
.
.
.
(4.-6)
38
insumos em cada um desses meses (ver Tabelas 4.1 e 4.2). possvel fazer estoque
de um ms para o outro e, ento, a demanda do ms de maro pode ser atendida,
por exemplo, com produtos fabricados anteriormente (em janeiro ou fevereiro). O
custo mensal para manter cada um dos produtos em estoque de 4 u.m. para cada
m3 de madeira beneciada e 3.5 u.m. para cada 100 m2 de compensado.
Tabela 4.1: Previso de Vendas Mensal
Produto
Ms
Janeiro Fevereiro Maro Abril
M. beneciada
43
0
100
53
Compensado
45
100
0
72
Novo ndice
t = 1, . . . , 4 representa os respectivamente os meses: Janeiro, Fevereiro, Maro e
Abril.
O critrio de otimizao tambm precisa ser reavaliado. Na denio anterior consideramos que tudo o que estava sendo produzido seria vendido. Esta suposio no
adequada pois parte da produo em um perodo pode ser armazenada e vendida
no perodo seguinte. Precisamos de dois novos conjuntos de variveis.
39
o lucro associado venda dos produtos ser dado pela diferena entre o valor total
obtido com a venda dos produtos e o custo total de armazenamento.
Redenio da funo-objetivo
- Retorno total associado venda dos produtos:
2
T otalvendas =
pj sjt
j=1 t=1
T otalestoque =
cj yjt
j=1 t=1
t = 1, . . . , 4
(4.-11)
t = 1, . . . , 4
(4.-11)
- Canela:
40
Note que as restries em (4.1.1) representam o conjunto das quatro restries, uma
para cada valor de t, relativas disponibilidade de pinho em cada ms. Juntas as
Restries (4.1.1) e (4.1.1) representam oito restries. Esta forma compacta de
representao muito til, pois facilita a leitura e compreenso do modelo matemtico. Antes de prosseguirmos, vamos avaliar o modelo que construmos at agora.
Resumindo as informaes acima temos:
2
min
Lucro =
pj sjt
j=1 t=1
cj yjt
j=1 t=1
sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
xjt 0, sjt 0, yjt 0, j = 1, 2; t = 1, . . . , 4.
(4.-13)
41
t = 1, . . . , 4
(4.-14)
t = 1, . . . , 4
(4.-14)
Similarmente, temos:
- Compensado
min
Lucro =
pj sjt
j=1 t=1
cj yjt
j=1 t=1
sujeito a
x1t + 2x2t b1t ,
t = 1, . . . , 4
4x1t + 4x2t b2t ,
t = 1, . . . , 4
yjt1 + xjt = sjt + yjt ,
j = 1, 2; t = 1, . . . , 4
xjt 0, sjt djt , yjt 0.
(4.-16)
O Modelo (4.-13) possui trs tipos de variveis (produo, venda e estoque ) e dois
tipos de restries (capacidade e balanceamento) totalizando 24 variveis e 16 restries (desconsiderando o limite superior para as variveis de venda). Este nmero
42
43
44
45
SOLUTION RESULT
Optimal solution found
MAX Lucro =
MACROS
Macro Name
Totalvendas
Totalestoque
Values
3720.0000
67.0000
DECISION VARIABLES
VARIABLE x[produto,mes] :
produto
Madeira_Beneciada
Madeira_Beneciada
Madeira_Beneciada
Compensado
Compensado
Compensado
Compensado
mes
janeiro
fevereiro
abril
janeiro
fevereiro
maro
abril
-
Activity
4.0000
8.0000
4.0000
14.0000
12.0000
10.0000
14.0000
VARIABLE s[produto,mes] :
produto
Madeira_Beneciada
Madeira_Beneciada
Madeira_Beneciada
Compensado
Compensado
Compensado
mes
janeiro
maro
abril
janeiro
fevereiro
abril
-
Activity
4.0000
8.0000
4.0000
14.0000
12.0000
24.0000
VARIABLE y[produto,mes] :
produto
Madeira_Beneciada
Compensado
mes
fevereiro
maro
-
Activity
8.0000
10.0000
3653.0000
46
Captulo 5
Aplicaes de Otimizao
Linear Inteira
Enquanto problemas de otimizao linear contnuo com algumas centenas de variveis e restries podem ser resolvidos facilmente, a resoluo de algumas classes de
problemas de otimizao linear inteira no possuem este comportamento. Existe a
possibilidade de construir um modelo de otimizao linear inteira (ou inteira mista)
e descobrir rapidamente o grau de diculdade da sua resoluo. De fato, uma `boa'
formulao do problema pode ser de crucial importncia para a ecincia do processo de soluo [41]. Contrastando com os problemas de otimizao linear contnuo,
no se sabe se existem ou no algoritmos polinomiais para resolver muitas classes
de problemas de otimizao linear inteira. Quando se usa esta classe de modelos
importante se ter em mente o grau de diculdade associado sua soluo. Um
estudo detalhado sobre a classicao de problemas de otimizao inteira quanto ao
grau de diculdade de sua soluo (complexidade computacional) pode ser visto em
[20] e [10]. Saber que um problema classicado como NP-difcil (
NP-Hard [20])
importante porque permite ao usurio entender que a resoluo de alguns exemplares ser difcil independentemente do algoritmo usado. No entanto, isto no quer
dizer que exemplares de grande porte no possam ser resolvidos em um tempo computacional aceitvel. Mesmo que a soluo tima no seja encontrada, possvel
obter boas solues viveis e mostrar quo prximo da soluo tima podem estar.
Algoritmos ecientes para a soluo de problemas envolvendo variveis inteiras
so baseados em tcnicas de enumerao implcita e combinam vrios mtodos de
soluo. A maioria dos algoritmos empregam a tcnica de relaxao e clculo de
limitantes ([41], [45]) . Considere o problema de otimizao inteira (1.-3) denido
no Captulo 1. A idia substituir o problema inteiro por um problema mais fcil
(relaxao) que pode ser usado para obter um limite inferior (limite dual [58]) para
o valor timo da funo objetivo. Se a soluo associada for vivel, o problema
original esta resolvido. Caso contrrio a relaxao renada iterativamente para
obter limites melhores. Solues viveis fornecem limites superiores (limite primal
48
[58]) para o valor timo da funo objetivo. Bons limites superiores podem ser
obtidos, por exemplo, atravs de algoritmos heursticos [10].
Um problema inteiro pode ser relaxado de vrias formas [58]. A relaxao linear,
obtida substituindo a restrio xj Z por xj , conveniente para a maioria das
aplicaes e a base dos algoritmos implementados nos sistemas de resoluo de uso
geral (ver Seo 3.2). Neste texto, iremos considerar que um modelo de otimizao
inteira uma `boa' formulao para uma aplicao se o limite inferior fornecido pela
relaxao linear associada for bom. Isto , se RLP1 e RLP2 representam o limite
inferior de duas relaxaes diferentes e tivermos que:
RLP1 RLP2 Z
P1
3
40
P2
5
10
P3
4
10
49
ndice
j = 1, 2, 3 para representar respectivamente os projetos P1, P2 e P3;
Varivel de deciso
xj =
neste caso, deixamos de lado o axioma de divisibilidade usado nos captulos anteriores para construir modelos de otimizao linear. O modelo que iremos construir
ser um modelo de otimizao linear inteira, mais especicamente um modelo de
otimizao 0/1, ou otimizao binria. Os demais axiomas proporcionalidade e
aditividade sero usados para obtermos modelos lineares.
O critrio para a tomada de deciso maximizar o retorno total obtido com o
investimento. Usando o axioma da aditividade e os dados da Tabela 5.1 podemos
construir a seguinte funo objetivo:
Funo Objetivo
max z= 40x1 + 10x2 + 10x3 .
Naturalmente, se investirmos em todos os projetos teremos um lucro maior que
se investirmos apenas em alguns. O capital disponvel para os investimentos no
suciente para investir em todos os projetos. Temos uma nica restrio de
capacidade, o valor total investido deve ser menor ou igual ao capital disponvel.
Obtemos assim o seguinte modelo de otimizao binrio para o problema de seleo
de projetos:
max
z = 40x1 + 10x2 + 10x3
sujeito a
3x1 + 5x2 + 4x3 10
xj = 0 ou 1
(5.-2)
Este exemplar pode ser facilmente resolvido se avaliarmos o valor de z para cada
uma dos oito possveis valores para o vetor x. No entanto, se aumentarmos a dimenso do exemplar e considerarmos que existem n projetos , teremos 2n possveis
solues. Este nmero cresce exponencialmente quando o valor de n cresce, e portanto mtodos mais ecientes so necessrios para resolv-lo.
O modelo usado para representar a situao descrita no Exemplo 5.1 tambm
utilizado para representar um problema de otimizao combinatria conhecido como
O Problema da Mochila (Knapsack Problem). O enunciado clssico supe que
existem n items, cada um com peso, aj , e valor, pj , conhecidos. Deseja-se selecionar
um subconjunto destes items para colocar em uma mochila que suporta um peso
mximo, C , de forma que a soma dos valores dos items selecionados seja a maior
50
max z =
pj xj
j=1
sujeito a
n
aj xj C
(5.-4)
j=1
xj = 0 ou 1.
Em (5.-2) consideramos que no existem dois items com o mesmo par de valor e
peso. Se existem vrios items do mesmo tipo, temos a deciso de quantos de cada
tipo devem ser includos na mochila. A varivel de deciso passa a ser xj Z e
obtemos o Problema da mochila Inteiro.
Este problema possui um relacionamento muito grande com diversos outros problemas de otimizao inteira . Sua importncia se deve fortemente ao fato que alm
de modelar diversas situaes, aparece como subproblema na formulao e soluo
de diversos outros problemas, por exemplo problemas de corte e empacotamento [3],
e na gerao de planos de corte (inequaes de cobertura [58] e [45]). Sua estrutura
especial permite que diversas classes de algoritmos sejam explorados na busca de
um processo eciente para resolv-lo. Maiores detalhes sobre a modelagem e soluo
do problema da mochila e problemas relacionados podem ser encontrados em [33] e
[21] entre outros.
quer fazer uma visita s reservas orestais situadas nos estados do Amazonas e
Par, aos depsitos situados nos estados de So Paulo, Bahia, Minas Gerais e Rio
de Janeiro. possvel determinar um roteiro de viagem tal que cada reserva e
cada depsito sejam visitados exatamente uma vez, saindo e retornando sede da
empresa no Rio de Janeiro, e que minimize a distncia total percorrida?
A situao do Exemplo 5.2 pode ser representada atravs de um grafo valorado [50]
G(V, A) onde o conjunto de vrtices, V , representa as capitais dos estados onde
esto situadas as reservas e os depsitos, e o conjunto de arestas, A, representa a
possibilidade de se viajar de uma cidade a outra (ver Figura5.1). O peso de uma
aresta entre duas cidades igual ao custo da viagem entre elas. Em termos de
51
1
Teoria dos Grafos, a soluo deste problema consiste em determinar o circuito que
inclua todos os vrtices do grafo, um circuito hamiltoniano, de menor custo. O
custo de um circuito igual soma dos pesos das aresta includas. Para modelar o
problema vamos denir:
ndice
i, j = 1, . . . , 6 para representar as cidades Rio de Janeiro , So Paulo, Goinia,
Manaus, Belm e Salvador respectivamente.
Varivel de deciso
xij =
Funo Objetivo
6
min z =
cij xij .
i=1 j=i
pelo primeiro.
52
A restrio principal que temos que cada cidade deve ser includa exatamente uma
vez no circuito. Vamos considerar, por exemplo, a cidade de So Paulo. Podemos
chegar at ela vindo de qualquer uma das outras cinco cidades. Se zermosx12 = 1
inclumos So Paulo imediatamente aps o Rio de Janeiro no roteiro. Como cada
cidade s pode aparecer uma vez no roteiro as demais variveis que representam a
chegada a So Paulo, xi2 , devem assumir valor zero. Como as variveis de deciso
so binrias, esta situao (x12 = 1 ou x32 = 1 ou . . . x62 = 1) pode ser representada
atravs da seguinte equao:
x12 + x32 + x42 + x52 + x62 = 1.
(5.-5)
Pela Restrio (5.2) exatamente uma das variveis xi2 (i = 1 . . . 6, i = 2) ter valor
igual a 1, garantindo assim a chegada a So Paulo apenas uma vez. Naturalmente,
saindo de So Paulo queremos ir at uma das outras cidades. Da mesma forma que
chegamos apenas uma vez em So Paulo, iremos partir de l uma nica vez. Temos
ento que a equao:
x21 + x23 + x24 + x25 + x26 = 1
garante que sairemos de So Paulo uma nica vez. O mesmo raciocnio vale para
as demais cidades, assim temos o seguinte conjunto de restries:
Restries
Sada da cidade i:
xi1 + . . . + xi6 = 1,
i = 1...6
(5.-5)
x1j + . . . + x6j = 1,
j = 1 . . . 6.
(5.-5)
e Chegada cidade j :
min z =
cij xij
i=1 j=1
sujeito a
xi1 + . . . + xi6 = 1,
i = 1...6
(5.-7)
x1j + . . . + x6j = 1,
j = 1 . . . 6.
xij = 0 ou 1; i, j = 1 . . . 6, i = j .
53
Vamos vericar ento se este modelo tambm apropriado para o Exemplo 5.2.
Na Figura 5.2 temos a Modelo (5.-4) escrito na sintaxe do MPL. Observe o uso
dos comandos EXCELRANGE e EXPORT TO EXCELRANGE usados para ler os
dados e enviar a soluo para o arquivo da planilha de clculo EXCEL "caixeiro.xls".
Note tambm a criao da varivel Custo_Total para permitir que o valor timo
da soluo pudesse ser enviado junto com a soluo para o arquivo do EXCEL.
{Problema do caixeiro viajante}
TITLE Roteiro;
INDEX
!cidades a serem includas no roteiro
no =(Rio, SP, Go, Ma, Be, Sal);
origem = no;
destino = no;
DATA
!Leitura do custo da viagem entre as cidades na planilha caixeiro.xls
custo[origem, destino] := EXCELRANGE ("caixeiro", "custo");
VARIABLES
! Soluo do problema enviada para a planilha caixeiro.xls
x[origem, destino]
EXPORT TO EXCELRANGE("caixeiro","roteiro");
Custo_Total
EXPORT TO EXCELRANGE("caixeiro","Custo_Total");
MODEL
MIN Custo_Total ;
SUBJECT TO
Custo_Total = SUM(origem, destino: custo * x);
saida [no] : SUM(origem=no, destino: x) =1;
chegada[no] : SUM(origem, destino=no: x) =1;
END
Figura 5.2: Formulao Inicial : Problema da Designao - Sintaxe MPL
54
Variable Name
Custo_Total
Activity
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
Activity
170.0000
Novas variveis
uj , j = 2 . . . 6
55
Novas Restries
ui uj + 6xij 5,
i, j = 2 . . . 6; i = j .
min z =
cij xij
i=1 j=i
sujeito a
xi1 + . . . + xi6 = 1,
i = 1...6
x1j + . . . + x6j = 1,
j = 1...6
ui uj + 6xij 5, i, j = 2 . . . 6; i = j
xij = 0 ou 1; i, j = 1 . . . 6, i = j
ui 0; i = 2 . . . 6.
(5.-11)
A modelagem de 5.-8 na sintaxe do MPL vai exigir novos recursos. Veja na Figura
5.5 o novo modelo. Observe que agora necessrio denir a varivelx como binria,
2
pois a matriz de restries no mais totalmente unimodular .
56
57
inteiros. O limite inferior igual a dois denido para elas na seo BOUNDS permite
interpretar seu valor como sendo a ordem em que a cidade j visitada, isto : So
Paulo, Goinia, Manaus, Belm e Salvador. mera coincidncia esta ordem ser a
mesma em que os ndices foram denidos.
MPL Modeling System - Copyright (c) 1988-2001, Maximal Software, Inc.
MODEL STATISTICS
Solver: CPLEX
Iterations: 98
Integer nodes: 12
Constraints: 38
Variables: 42
Integers:36
Nonzeros: 179
Density: 11%
SOLUTION RESULT
Optimal integer solution found
MIN Z = 200.0000
DECISION VARIABLES
VARIABLE x[origem,destino] :
origem
destino
Activity
Rio
SP
1.0000
SP
Go
1.0000
Go
Ma
1.0000
Ma
Be
1.0000
Be
Sal
1.0000
Sal
Rio
1.0000
VARIABLE u[no=SP..Sal] :
no
SP
Go
Ma
Be
Sal
Activity
2.0000
3.0000
4.0000
5.0000
6.0000
58
origem.
n
min z =
cij xij
i=1 j=i
sujeito a
n
xij = 1,
i = 1...n
j=1
6
xij = 1,
j = 1...n
(5.-16)
i=1
ui uj + nxij n 1,
xij = 0 ou 1;
i, j = 2 . . . n; i = j
i, j = 1 . . . n, i = j
ui 0; i = 2 . . . n.
59
a soluo mostrada na Figura 5.3 deixar de ser vivel. De fato, acrescentar esta
nica restrio ao exemplar 5.-4 suciente para obter a soluo tima do problema.
Veja este novo modelo escrito na sintaxe do XPRESS-MOSEL (Seo 3.1.2) na
Figura 5.7 a seguir.
60
61
min z =
cij xij
i=1 j=i
sujeito a
n
xij = 1,
i = 1...n
xij = 1,
j = 1...n
j=1
6
(5.-21)
i=1
xij |S| 1,
S {1 . . . n}
iS jS
xij = 0 ou 1;
i, j = 1 . . . n, i = j .
62
63
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;
64
65
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;
funo-objetivo
- Custo de produo
s
cp xijt
ijt
i=1 j=1 t=1
- Custo de estoque
s
ca xijt
ijt
i=1 j=1 t=1
(5.-23)
66
Restries de balanceamento
eijt1 + xijt = dijt + eijt ,
(5.-23)
aj eijt L,
t = 1...n
(5.-23)
i=1 j=1
yit ct ,
t = 1 . . . n.
(5.-23)
i = 1 . . . s; t = 1 . . . n
(5.-23)
i=1
i=1 j=1
kj xijt ht , t = 1, ..., n.
(5.-23)
67
Para considerar estes elementos no modelo vamos precisar introduzir novas variveis
que iro controlar se a linha de produo esta preparada ou no para produzir
refrigerantes de uma determinada combinao de sabor/tamanho. Ao modelar o
problema da mochila na Seo 5.0 vimos que decises do tipo sim ou no podem ser
modeladas usando variveis binrias. Precisamos do seguinte conjunto de variveis:
Variveis de troca
- Sabor:
0, caso contrrio;
- Tamanho:
wjt
0, caso contrrio.
Restries de preparo
Sabor:
Tamanho:
xijt
M zit
(5.-22)
xijt
M wjt
(5.-21)
68
de refrigerante do tamanho j . Este tipo de restrio tambm pode ser til em outros
contextos, e recebe o nome de restries VUB (do ingls: Variable Upper Bound,
limite superior varivel[41]).
As variveis zit e wjt so conhecidas na literatura como variveis de preparao
das mquinas (set-up variables [54]). Neste modelo se considera que o tempo de
ajuste da mquina para um determinado sabor (tamanho) independente do sabor
(tamanho) usado anteriormente, de acordo com a prtica da empresa estudada.
Elas sero usadas para controlar de forma mais realista a capacidade de produo
da fbrica. Considerando oi e fj como sendo o tempo de troca de sabor e o tempo de
troca do tamanho, respectivamente, podemos reformular as restries de capacidade
(5.3.2) como:
i=1 j=1
kij xijt +
s
i=1
oi zit +
j=1
fj wjt ht , t = 1, ..., n.
(5.-21)
Para garantir a homogeneidade deve ser mantida uma quantidade mnima de xarope
nos tanques. Isto , se houver produo do sabor i no perodo t necessrio que a
quantidade de xarope yit seja maior ou igual que uma quantidade pr-especicada
(qmin ). Naturalmente, a capacidade do tanque, qmax , tambm deve ser respeitada.
Assim se zit = 1 devemos ter qmin yit qmax ; caso contrrio no h necessidade
de preparar o xarope i no perodo t. Assim temos mais um conjunto de restries:
i = 1, ..., s; t = 1, ..., n.
Reformulao da funo-objetivo
- Custo de troca de sabor
s
csab zit
i
i=1 t=1
ctam wjt
j
j=1 t=1
69
min
Sujeito a:
j=1
s
q
i=1 j=1
kij xijt +
i = 1, ..., s; t = 1, ..., n.
yit ct ,
t = 1, ..., n.
i=1
s
i=1
oi zit +
j=1
fj wjt ht , t = 1, ..., n.
xijt M zit ,
xijt M wjt ,
i=1 j=1
aj eijt L,
t = 1, ..., n.
i = 1, ..., s; t = 1, ..., n.
70
Exemplo 5.3 Uma fbrica produz panelas de metal de cinco modelos diferentes em
71
72
(5.-21)
A funo-objetivo denida acima linear por partes, mas pode ser linearizada se
criarmos uma nova varivel, ti , tal que:
ti 0,
i = 1 . . . n;
Funo-objetivo Linear
minz =
wi ti
(5.-21)
i=1
Outros critrios de otimizao podem levar a sequenciamentos equivalentes. Maiores detalhes sobre a equivalncia entre critrios de otimizao para problemas de
sequenciamento pode ser encontrados em [43] e [7].
Precisamos garantir que a mquina produzir apenas um lote de cada vez. Isto
, se a mquina estiver executando a atividade 1, ela s poder iniciar uma outra
atividade j quando a tiver terminado, isto x1 + p1 xj . De uma maneira mais
geral, vamos considerar as atividade i e j . Para garantir que a mquina processe
apenas uma delas de cada vez devemos ter:
Restries disjuntas
(5.-21)
xj + pj xi .
ou
xi + pi xj
(5.-21)
Isto , apenas uma das duas restries acima deve estar ativa, a outra deve ser
redundante. Mais uma vez variveis binrias sero teis para fazer este controle.
Vamos denir:
73
(5.-21)
xj + pj xi + M (yij ).
(5.-21)
onde M uma constante real de valor sucientemente grande. Note que se yij = 1
a restrio (5.4.2) ca ativa e a restrio (5.4.2) apenas fornece um limite superior
para xj .
Resumindo as informaes obtidas at agora temos um modelo com restries
disjuntas para representar o problema de sequenciamento:
n
minz =
wi ti
i=1
sujeito a
ti xi + pi di ,
i = 1...n
xi + pi xj + M (1 yij ),
i = 1 . . . n, j = 1 . . . n
xj + pj xi + M (yij )
i = 1 . . . n, j = 1 . . . n
xi 0, ti 0, i = 1 . . . n
yij = 0 ou 1, i = 1 . . . n, i = 1 . . . n.
(5.-24)
T T otal =
pi ;
(5.-29)
i=1
74
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:
xit = 1
i = 1 . . . n.
(5.-29)
t=1
Mas, considere por exemplo, que a atividade 3, que tem tempo de processamento
igual a 4 (ver Tabela 5.2), comece a ser executada no perodo t = 18 (x3,18 = 1).
No ser possvel conclu-la pois ela s terminar de ser executada no perodo t =
18 + 4 1 = 21, fora do horizonte de planejamento (T = 20). Para evitar este fato,
a atividade 3 dever comear em um tempo anterior ou igual a T p3 + 1. Assim o
limite superior da soma em (5.4.3) deve ser T pi + 1, para garantir que cada uma
das atividades seja concluda dentro do horizonte de planejamento.
75
xit = 1
i = 1 . . . n.
(5.-29)
t=1
Precisamos tambm garantir que no mximo uma atividade esteja sendo executada em cada perodo de tempo t:
xit 1,
t = 1...T.
(5.-29)
i=1
76
i=1
s=tpi +1
t = 1...T.
xit 1,
(5.-29)
cm =
it
Funo-objetivo
T pi +1
cm xit .
it
minz =
i=1
(5.-29)
t=1
T pi +1
cm xit
it
min z =
i=1
t=1
sujeito a
T pi +1
xit = 1
i = 1...n
t=1
n
i=1
s=tpi +1
xit 1,
t = 1...T
(5.-31)
xit = 0 ou 1, i = 1 . . . n, t = 1 . . . T .
77
Bibliograa
[1] Applegate, D., Bixby, R., Chvatal, V., e Cook, W., Implementing the DantzigFulkerson-Johnson algorithm for large traveling salesman problems,Mathematical Programming, Ser. B, 97, 91-153, 2003.
[2] Arajo, S.A. e Arenales,M.N., Problema de dimensionamento de lotes monoestgio com restrio de capacidade: modelagem, mtodo de resoluo e
resultados computacionais, Pesquisa Operacional - SOBRAPO, 20, No. 2,
287-306, 2000.
[3] Arenales, M.N., Morabito, R. e Yanasse, H., Problemas de Corte e Empacotamento, Anais Do XXXVI Simpsio Brasileiro De Pesquisa Operacional
,
SOBRAPO, 2004.
[4] van den Akker, J. M, Hurkens, C.A.J. e Salvelsbergh, M.W.P., Time-Indexed
Formulations for Machine Scheduling Problems: Column Generation,Informs
Journal on Computing, 12(2), pg. 111-124, 2000.
[5] Atamturk, A. e Savelsbergh, M.W.P., Integer Programming Software Systems, Research Report BCOL.03.01, IEOR, University of California at Berkeley, 2004. A ser publicado em Annals of Operations Research.
[6] Bazaraa, M.J. e Jarvis, J.J., Linear Programming and Network Flows, J.
Wiley & Sons, N.Y., 2a edio, 1990.
[7] Bezerra, S. e Rangel S., Problemas De Sequenciamento: Modelos e Mtodos
de Resoluo, Anais do CIC - Congresso de Iniciaa Cientca da UNESP
,
Ilha Solteira, 2004.
[8] Boaventura, P. O., Grafos : teoria, modelos, algoritmos, Edgard Blucher,
2001.
[9] Caixeta-Filho, J.V., Pesquisa Operacional: Tcnicas de Otimizao Aplicadas
a sistemas Agroindustriais, Editora Atlas, 2001.
[10] Campelo, R.E e Maculan,N., Algoritmos e Heursticas , Editora da Universidade Federal Fluminense, 1994.
Bibliograa
79
80
Bibliograa
[26] Hilllier, F.S. E Lieberman, G.J., Introduo Pesquisa Operacional, Ed. Campus, 1988.
[27] Ilog, ILOG CPLEX 7.1: Getting Started, ILOG, 2001.
[28] Lachtermacher, G., Pesquisa Operacional na Tomada de Decises, Ed. Campus, 2002.
[29] Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G. e Shmoys, D.B. (ed.), The
Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization
Problems, Wiley, 1990.
[30] Linderoth,J. T. e Ralphs, T. K., Noncommercial Software for Mixed-Integer
Linear Programming December, Relatrio Tcnico, Department of Industrial
and Systems Engineering, Lehigh University, Bethlehem, PA 18015, 2005.
[31] Luenberger, D.G., Linear and nonlinear programming,Addison-Wesley, 1984.
[32] Mangasarian OL, Street WN, Wolberg WH, Breast-Cancer Diagnosis And
Prognosis Via Linear-Programming Operations Research 43 (4): 570-577 JulAug 1995.
[33] Martello, S. e Toth, P., Knapsack problems, John Wiley, 1990.
[34] Maximal
Software,
MPL Modeling
(http://www.Maximal-Usa.Com)
System,
v.
4.2,
2002.
[35] Morton , E. T. e Pentico, D. W., Heuristic Scheduling Systems, WileyInterscience Publication, 1993.
[36] Moody, S., Methods and Tools for Modelling Linear and Integer Programming
Problems, Ph.D. Thesis, Department of Mathematics and Statistics, Brunel
University, Uxbridge, UK, March, 141p, 1994.
[37] Muller, F. M. Introduo aos Problemas de Sequenciamento, Minicurso, Congresso Nacional de Matemtica Aplicada e Computacional - Setembro/2002.
[38] Murphy,
F.H.,
Annotated Bibliography on Linear Programming Models,
Interactive Transactions of ORMS, v.1,
n.4.
http://catt.bus.okstate.edu/itorms/volumes/vol1/papers/murphy/ (ltima
consulta: 25/05/2005)
[39] Murphy, F.H., Understanding Linear Programming Modeling Through an
Examination of Early Papers on Model Formulations, Operations Research,
45, 3, 341-356, 1997.
[40] Namem, A.A.A. e Bornstein, C., Uma Ferramenta para Avaliao de Resultados de Diversos Modelos de Otimizao de Dietas, Pesquisa Operacional,
v.24, n.3, p.445-465, 2004
Bibliograa
81
[41] Nemhauser, G.L. e Wolsey, L., Integer and Combinatorial Otimization, Wiley,
1988.
[42] Padberg, M. e Rinaldi, G., A Branch and Cut Algorithm for the Resolution
of Large-scale Symmetric Traveling Salesman Problems, SIAM Review, 33(1),
66-100, 1991.
[43] Pinedo, M., Scheduling - Theory, Algorithms and Systems, Prentice Hall,
1995.
[44] Rangel, S., Estratgias de decomposio aplicadas ao problema de sequenciamento de tarefas para mquina nica, Resumos do XXVII CNMAC, Porto
Alegre, SBMAC, p. 450-450, 2004.
[45] Rangel, S., Solving Integer Programming Problems using Preprocessing and
Cutting Planes: Theory and Implementation of Branch and Cut Tese de
,
doutorado, Brunel University, Uxbridge, Inglaterra, 1995.
[46] Rangel, S., Ferreira, D., Um modelo de dimensionamento de lotes para uma
fbrica de refrigerantes, Tema - Tndencias Em Matemtica Aplicada e Computacional, SBMAC, v. 4, n. 2, p.237-246, 2003.
[47] Rardin, R.L., Optimization in Operations Research, Prentice Hall, 1998.
[48] Saltzman, M.J., Broad Review of Software Packages available,OR/MS Today,
ORSA/TIMS, pg. 42-51, 1994.
[49] Sharda, R. e Rampal. G., Algebraic Modeling Languages on PCs, OR/MS
Today, 22(3), 58-63, 1995.
[50] Szwarcter, J.L., Grafos e algoritmos computacionais, Ed. Campos, 1988.
[51] Sodhi, M.S., LP modeling for asset-liability management: A survey of choices
and simplications, Operations Research, 53 (2), 181-196, 2005.
[52] Taube, M., Matemtica Para Produtividade, Com Cincia - Revista Eletrnica, SBPC/LBJOR, 2002.
[53] Toledo,C.F.M., Frana, P. e Morabito, R., Proposta de um modelo conjunto
de programao da produo e dimensionamento de lotes aplicado a uma
indstria de bebidas, em Anais do XXII ENEGEP, Curitiba, PR, outubro,
2002.
[54] Trigeiro,W.W., Thomas, L.J. e Mcclain,J.O. , Capacitated lot sizing with
setup times, Management Science, 35, No. 3 , 353-366, 1989.
[55] Wagner, H., Pesquisa Operacional, Prentice Hall do Brasil, 1986.
[56] Williams, H.P., Model Bulding In Mathematical Programming, John Wiley &
Sons, 1990.
Bibliograa
82
ndice
NP-hard, 47
Variable Upper Bound, 68
branch and bound, 33, 61
branch and cut, 33, 61
cut and branch, 61
knapsack problem, 49
set-up variables, 68
aditividade, 8
algoritmos heuristicos, 77
AMPL, 15, 26, 29
biblioteca de subrotinas, 33
cenrios, 14
circuito hamiltoniano, 51
complexidade computacional, 47
conjunto de restries, 2
construo de modelo, 2
CPLEX, 33
critrio de otimizao, 3
funo-objetivo, 2, 5
funo-objetivo linear, 8
gerar exemplar, 22
implementao, 3
indstria de bebidas, 61
inequaes de cobertura, 50
inequaes vlidas, 48
interface, 14, 25
invivel, 40
limitantes, 47
limite dual, 47, 61
limite primal, 48
linear por partes, 72
linguagem algbrica de modelagem, 13
lp, formato, 25
manuteno, 3
maximizar, 3
minimizar, 3
dados do modelo, 9
modelagem, 2
divisibilidade, 10
modelagem matemtica, vii
documentao, 14
modelo de otimizao, 2, 3
modelo de otimizao binrio, 49
elementos conhecidos, 2, 9
modelo de otimizao linear, 8
elementos desconhecidos, 2
modelo de planejamento multi-perodo,
estrutura das linguagens de modelagem,
41
15
modelo matemtico, 14
exemplar, 14
modelos de otimizao, 1
MOSEL, 15
ferramentas de modelagem, 13
MPL, 15, 16, 42, 53
ferramentas de resoluo, 13
mps, formato, 25
formato lp, 22, 25
mtodo simplex, 33
formato mps, 22, 25
mtodos de ponto interior, 33
formato padro, 4, 8
84
NDICE
NP-difcil, 47
sujeito a, 3
otimizao, 3
otimizao 0/1, 49
otimizao binria, 49
otimizao combinatria, 50, 58
otimizao inteira, 1, 49
otimizao inteira mista, 5, 54, 69
otimizao linear, 1, 6, 34
otimizao linear contnua, 4
otimizao linear inteira, 4
otimizao no-linear, 5
pedidos em atraso, 40
planos de corte, 33, 48
problema da designao, 52
problema da dieta, 6, 10
problema da mochila, 49
problema de seleo de projetos, 49
problema de seqenciamento, 70
problema do caixeiro viajante, 58
problema ilimitado, 40
problemas de otimizao, vii
produo de refrigerantes, 62
programao inteira, vii
programao linear, vii
programao matemtica, vii
programao no-linear, vii
proporcionalidade, 8
reformulao automtica, 48
relaxao, 47
relaxao linear, 48
restrio de balanceamento, 41, 65
restries lineares, 4, 8
restries VUB, 68
s.a, 3
SADE, 3
SAM, 3
simulao, 13
sistemas de otimizao, 25
sistemas de resoluo, 25, 48
soluo vivel, 11
soluo tima, 11
sub-rotas, 54, 55, 58
validao de um modelo, 3, 10
variveis binrias, 46, 48, 67
variveis de deciso, 2
variveis de preparao, 68
varivel de deciso, 2, 9
XPRESS-IVE, 26
XPRESS-MOSEL, 15, 26, 59
XPRESS-MP, 33