Sie sind auf Seite 1von 8

Proposta de Mini-Curso para a XLIII SBPO

Artur Alves Pessoa Eduardo Uchoa Departamento de Engenharia de Produo Universidade Federal Fluminense

Ttulo: UFFLP: Integrando Programao Inteira Mista e Planilhas de Clculo

Um problema de Programao Linear Inteira consiste em atribuir valores inteiros a variveis, satisfazendo restries lineares de modo a maximizar ou minimizar uma funo objetivo linear. Quando uma ou mais variveis podem assumir valores fracionrios, o problema denominado Programao Inteira Mista (PIM), omitindo-se o adjetivo Linear. Os primeiros algoritmos para se resolver problemas de PIM surgiram no final dos anos 50 [Gomory, 1958] e incio dos anos 60 [Land e Doig, 1960]. Aps mais de 50 anos de PIM, com a evoluo da capacidade de processamento dos computadores e o desenvolvimento de inmeras tcnicas capazes de melhorar a eficincia dos algoritmos existentes [Wolsey, 1998], diversos problemas de otimizao de larga escala j podem ser resolvidos de forma exata. Alm disso, a existncia de diversos softwares comerciais e acadmicos para a resoluo de problemas de PIM tornou esta tecnologia acessvel a engenheiros, economistas, administradores e outros profissionais que possam identificar problemas de otimizao relevantes em suas respectivas reas de atuao. Apesar disso, a utilizao efetiva desta tecnologia ainda requer que o profissional seja capaz de realizar duas tarefas principais: 1. O problema genrico deve ser modelado na forma de variveis inteiras ou contnuas e restries lineares. Essa tarefa feita no papel, usando simbologia matemtica: somatrios, conjuntos, matrizes, etc. 2. A partir dos dados primrios de uma instncia particular do problema, deve ser gerado o PIM especfico correspondente, para que esse possa ser lido por um resolvedor de PIM. Da mesma forma, a soluo fornecida pelo resolvedor de PIM em termos de valores de variveis deve ser traduzida para o contexto do problema original. Mesmo para instncias de pequeno ou mdio porte, altamente recomendado que essa tarefa seja automatizada.

Apesar da tarefa 1 aparentemente requerer um esforo intelectual maior, a tarefa 2 muitas vezes a maior barreira enfrentada por iniciantes. Isto ocorre porque os cursos de pesquisa operacional freqentemente omitem essa segunda etapa, exigindo apenas que o aluno construa um PIM particular para uma nica instncia (sempre pequena) do problema. Tipicamente isso feito no editor de textos de ferramentas como o LINDO [LINDO Systems, 2010]. A automatizao da construo de PIMs, no entanto, requer o uso de linguagens de programao. Neste contexto, softwares comerciais como o

CPLEX [IBM, 2010a], o XPRESS [FICO, 2010] ou o prprio LINDO dispem de linguagens e/ou interfaces de programao (APIs) voltadas para o desenvolvimento de aplicaes que utilizam resolvedores de PIM como subrotinas. Dentre estas linguagens e interfaces esto o CONCERT [IBM, 2010b], o AMPL [Fourer e outros, 2002] e o XPRESS-MOSEL. Apesar disso, no do conhecimento dos autores deste mini-curso que alguma destas linguagens ou interfaces seja amplamente utilizada por alunos de engenharia em universidades brasileiras, possivelmente devido limitao de disponibilidade gratuita para uso acadmico, devido resistncia ao aprendizado de uma nova linguagem de programao ou devido dificuldade na obteno de suporte. Para suplantar estas dificuldades, a biblioteca de funes UFFLP foi criada h mais de trs anos a partir da observao de que as planilhas de clculo modernas, que so amplamente utilizadas num grande nmero de empresas, possuem linguagens de programao poderosas que permitem a realizao da tarefa 2. Apesar de softwares como o CONCERT, o AMPL e o MOSEL permitirem a importao e exportao de dados de planilhas de clculo, a possibilidade manipular os dados de entrada, construir um PIM particular, resolv-lo e visualizar a soluo no mesmo ambiente, torna o uso da UFFLP bem mais prtico. A UFFLP uma Dynamic Link Library (DLL) para Windows que pode ser chamada de programas escritos em Visual Basic for Applications (VBA) dentro da planilha de clculo Excel [Microsoft, 2010]. Vale mencionar que o Excel/VBA j tem funes de resoluo de problemas de PIM integradas. No entanto, o desempenho dessas funes no competitivo com o de resolvedores especializados como o CBC [COIN-OR, 2010] ou o CPLEX. As funes da UFFLP tambm podem ser chamadas de programas em C/C++ a partir do Windows ou do Linux. A UFFLP tem ainda as seguintes funcionalidades: 1. Referncia a variveis e restries do modelo PIM apenas pelos seus nomes (strings). 2. Possibilidade de integrao com heursticas e rotinas de gerao de cortes chamadas atravs de callbacks em VBA ou em C/C++. 3. Pode utilizar como resolvedor tanto o Coin-CBC (totalmente aberto e gratuito) e o CPLEX (fechado, gratuito apenas para uso acadmico). 4. Cdigo fonte aberto e gratuito, disponvel em http://www.logis.uff.br/~artur/UFFLP

A UFFLP j foi utilizada com sucesso em trs edies do curso de nvel de psgraduao Modelagem em Logstica, onde boa parte dos alunos so engenheiros com pouco conhecimento de programao. A biblioteca tambm foi utilizada em dois trabalhos de concluso de curso [Rezende e Azevedo, 2008] e [Torres e Azevedo, 2009] e em duas dissertaes de mestrado [Gonalves, 2009] e [Aizemberg, 2010], e atualmente vem sendo utilizada em dois trabalhos de tese de doutorado e em um projeto de pesquisa financiado pela Petrobras. Um exemplo ilustrativo de uso da UFFLP fornecido no apndice.

Este mini-curso pretende apresentar a UFFLP como uma alternativa para a automatizao da construo de modelos de PIM que seja atraente para estudantes, profissionais e professores com pouca experincia no uso de linguagens de programao e uma ferramenta de prototipao rpida no caso de usurios que j possuem experincia no uso destas ferramentas. Ementa I Programao em Excel/VBA e funes bsicas da UFFLP Incluso de rotinas de programao em planilhas de clculo Instalao da UFFLP Criao de modelos de PIM usando UFFLP Resoluo e recuperao da soluo usando UFFLP Exemplos

II Automatizao da entrada e sada de dados e correo de erros Leitura e escrita de dados da planilha de clculo Visualizao grfica da soluo Estudo de caso detalhado: problema do caixeiro viajante Uso do depurador do Excel Interpretao do arquivo de log do resolvedor de PIM

III Funes avanadas da UFFLP Callback de gerao de cortes Estudo de caso detalhado: problema de localizao de facilidades Callback de heursticas primais Estudo de caso detalhado: problema de escalonamento open shop.

Referncias L. Aizemberg, Modelos de Programao Inteira Mista e Heursticas para Otimizao da Produo de Computadores no Ambiente do Jogo TAC/SCM Mestrado em Engenharia de Produo - Universidade Federal Fluminense, 2010. Computational Infrastructure for Operations Research COIN-OR, CBC Project, URL: http://www.coin-or.org/projects/Cbc.xml , 2010 FICO, FICO Xpress Optimization Suite 7, URL: http://www.fico.com/en/Products/ DMTools/Pages/FICO-Xpress-Optimization-Suite.aspx, 2010 R. Fourer, D. M. Gay e B. W. Kernighan, AMPL: A Modeling Language for Mathematical Programming Brooks/Cole Publishing Company, 2002

R. E. Gomory, Outline of an algorithm for integer solutions to linear programs Bulletin of the American Mathematical Society 64 (5), 275-278, 1958. J. M. B. Gonalves, Formulaes para o Problema do Flow Shop em Duas Mquinas com Penalidades por Atraso nas Tarefas Mestrado em Engenharia de Produo Universidade Federal Fluminense, 2009. International Business Machines IBM, IBM ILOG CPLEX Optimizer, URL: http://www-01.ibm.com/software/integration/optimization/cplex-optimizer/, 2010a International Business Machines IBM, IBM ILOG CPLEX Optimization Studio Interfaces, URL: http://www-01.ibm.com/software/integration/optimization/cplex/ interfaces/, 2010b A. H. Land e A. G. Doig, An Automatic Method of Solving Discrete Programming Problems Econometrica 28 (3), 497-520, 1960. LINDO Systems, Optimization Software: Integer Programming, Linear Programming, Nonlinear Programming, Global Optimization, URL: http://www.lindo.com/, 2010 Microsoft, Microsoft Office fx100646961046.aspx, 2010 Excel, http://office.microsoft.com/pt-br/excel/

F. F. Rezende e F. M. de Azevedo, Problema de Roteirizao de Veculos na Cadeia de Logstica Reversa da Indstria de Pneus Trabalho de Concluso de Curso, Engenharia de Produo - Universidade Federal Fluminense, 2008. C. R. R. Torres e G. H. I. de Azevedo, Problemas de Escalonamento de Projetos com Restrio de Recursos: um Estudo de Caso no Setor de Petrleo e Gs Trabalho de Concluso de Curso, Engenharia de Produo - Universidade Federal Fluminense, 2009. L. A. Wolsey, Integer Programming Wiley-Interscience, 1998. Apndice Para ilustrar o uso da UFFLP, esta seo descreve um aplicativo de otimizao do problema clssico conhecido Problema das p-Medianas, desenvolvido em VBA no ambiente do Excel. Este problema de ampla aplicao em diversas reas do conhecimento, sendo particularmente muito usado em aplicaes de Logstica. O problema definido da seguinte forma. Dados n clientes e m locais, deseja-se escolher exatamente p locais e atribuir cada cliente a exatamente um local escolhido de modo a minimizar a soma das distncias dos clientes aos locais aos quais eles foram atribudos. Na sua verso euclidiana, so dadas as coordenadas X e Y da posio de cada cliente e de cada local no plano, e a distncia dist(i,j) do cliente i, posicionado em (Xi, Yi), ao local j, posicionado em (Xj+n, Yj+n), distncia euclidiana entre respectivas posies, dada por
( X j + n X i ) 2 + (Y j + n Yi ) 2 . Para este problema, utilizada a seguinte formulao:

Variveis: xj yij Restries:

quando 1 indica que o local j foi escolhido. zero em caso contrrio. quando 1 indica que o cliente i atribudo ao local j. zero em caso contrrio.

Minimizar

dist (i, j ) y
i =1 j =1

ij

(0)

Sujeito a

y
j =1 m

ij

= 1,

i = 1, ..., n i = 1, ..., n; j = 1, ..., m

(1) (2) (3)

yij x j ,

x
j =1

=p j = 1, ..., m
i = 1, ..., n; j = 1, ..., m

x j {0,1},

(4)
(5)

yij {0,1},

A funo objetivo (0) contabiliza os custos associados s distncias dos clientes aos locais aos quais foram atribudos. As restries (1) garantem que cada cliente atribudo a exatamente 1 local. As restries (2) s permitem atribuir clientes a locais abertos. A restrio (3) permite abrir apenas p locais. Por fim, as restries (4) e (5) definem os domnios das variveis.

Figura 1: Instncia Euclidiana do Problema das p-Medianas na planilha de clculo

O aplicativo desenvolvido permite resolver qualquer instncia do problema a partir dos dados de entrada primrios da instncia (n, m, p, as coordenadas dos clientes e dos locais) e visualizar o resultado graficamente atravs da planilha de clculo. A Figura 1 mostra os dados de entrada de uma instncia denominada Teste1 organizados numa folha da planilha. possvel trabalhar com diversas instncias ao mesmo tempo, cada instncia em uma folha separada.

Figura 2: Soluo do Problema das p-Medianas Euclidiano na planilha de clculo

A Figura 2 mostra o nome da instncia selecionada para resoluo, o boto Resolve, que ativa a resoluo, a lista de locais abertos na soluo tima, o valor da funo objetivo e um desenho da soluo obtida. No desenho, os crculos azuis representam clientes, as linhas azuis ligam os clientes aos locais a que foram atribudos, os quadrados vermelhos so locais abertos e os quadrados cinza so os locais fechados. Usando a UFFLP a partir do VBA/Excel a funo objetivo e as variveis yij e xj so criadas pelo Cdigo Fonte 1. Neste cdigo, As chamadas UFFLP so indicadas pelo prefixo UFFLP_ encontrado nos nomes das funes. Os resultados das chamadas, que so armazenados na varivel erro, indicam sucesso se forem zero ou fornecem um cdigo de erro. Os valores de Xi, Yi, Xj+n e Yj+n so armazenados em Clientes(i,1), Clientes(i,2), Locais(j,1) e Locais(j,2), respectivamente. Alm disso, o smbolo & indica a concatenao de cadeias de caracteres (strings).

' Cria uma instncia de PIM na UFFLP problema = UFFLP_CreateProblem ' Variveis "y_i_j": binrias onde 1 indica que o cliente i atendida no local j For i = 1 To n For j = 1 To m ' calcula dist(i,j) dist = Sqr((Clientes(i, 1) - Locais(j, 1)) ^ 2 + _ (Clientes(i, 2) - Locais(j, 2)) ^ 2) ' Cria a varivel "y_i_j" com custo "dist(i,j)" variavel = "y_" & i & "_" & j erro = UFFLP_AddVariable_(problema, variavel, 0, 1, dist, UFFLP_Binary) Next Next ' Variveis "x_j": binrias onde 1 indica o local j est aberto For j = 1 To m ' Cria a varivel "x_j" com custo zero variavel = "x_" & j erro = UFFLP_AddVariable_(problema, variavel, 0, 1, 0, UFFLP_Binary) Next
Cdigo Fonte 1: Criao das variveis pela UFFLP para o Problema das p-Medianas

As restries (1), (2) e (3) so criadas, nesta ordem, pelo Cdigo Fonte 2. O cdigo fonte completo do aplicativo tem apenas 315 linhas, incluindo a visualizao grfica. Nos cursos oferecidos nos ltimos 3 anos foi observado que uma vez que os alunos se familiarizem com alguns exemplos simples do uso da UFFLP, como este da p-mediana, eles se tornam capazes de implementar de forma independente modelos bem mais complexos.

' Para cada cliente i, "Soma(j=1..m) y_i_j = 1" For i = 1 To n ' Acrescenta a restrio do cliente i restricao = "Cliente_" & i For j = 1 To m ' Soma o termo "y_i_j" ao lado esquerdo da restrio variavel = "y_" & i & "_" & j erro = UFFLP_SetCoefficient_(problema, restricao, variavel, 1) Next ' Completa a restrio com "= 1" erro = UFFLP_AddConstraint_(problema, restricao, 1, UFFLP_Equal) Next ' Para cada cliente i e cada local j, "y_i_j - x_j <= 0" For i = 1 To n For j = 1 To m ' Acrescenta de abertura do local j para o cliente i restricao = "Abertura_" & j & "_" & i ' Soma o termo "y_i_j" ao lado esquerdo da restrio variavel = "y_" & i & "_" & j erro = UFFLP_SetCoefficient_(problema, restricao, variavel, 1) ' Soma o termo "-x_j" ao lado esquerdo da restrio variavel = "x_" & j erro = UFFLP_SetCoefficient_(problema, restricao, variavel, -1) ' Completa a restrio com "<= 0" erro = UFFLP_AddConstraint_(problema, restricao, 0, UFFLP_Less) Next Next ' "Soma(j=1..m) x_j = p" ' Acrescenta a restrio das p medianas restricao = "pMedianas" For j = 1 To m ' Soma o termo "x_j" ao lado esquerdo da restrio variavel = "x_" & j erro = UFFLP_SetCoefficient_(problema, restricao, variavel, 1) Next ' Completa a restrio com "= p" erro = UFFLP_AddConstraint_(problema, restricao, p, UFFLP_Equal)
Cdigo Fonte 2: Criao das restries pela UFFLP para o Problema das p-Medianas

Das könnte Ihnen auch gefallen