UFFLP: Integrando Programação Inteira Mista e Planilhas de Cálculo

Documentos relacionados
UFFLP: Integrando Programação Inteira Mista e Planilhas de Cálculo

Ferramentas de modelação em optimização não linear

Conteúdo GLPK. Notas. Introdução à Otimização, Utilizando o GLPK. Notas. Notas

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Aula 13: Branch-and-bound

Quinta-feira, 11 de abril

Aula 17: Planos de Corte

Aula 12: Programação Inteira

Prof.: Eduardo Uchoa.

PCC173 - Otimização em Redes

Aula 19: Lifting e matrizes ideais

Otimização Combinatória - Parte 4

Exemplos de modelos de PL ou PI

Pesquisa Operacional / Programação Matemática

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Resolução de problemas difíceis de programação linear através da relaxação Lagrangeana

COMPARAÇÃO ENTRE FROTA HOMOGÊNEA E HETEROGÊNEA EM PROBLEMAS DE ROTEAMENTO DE VEÍCULOS CAPACITADOS

Programação Inteira. Solução com o método Branch-and-Bound

Branch-and-Bound para problemas de Otimização Combinatória

Notas 1 / 17. Notas 2 / 17. Notas

Introdução Problema da Mistura Problema da Marcenaria Problema do Transporte. Tutorial AMPL. Daniela Cristina Lubke

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Resolução do problema do caixeiro viajante assimétrico (e uma variante) através da relaxação Lagrangeana

Programação Inteira. Prof. Ricardo Santos

Softwares de Programação Matemática

Aula 22: Formulações com número exponencial de variáveis

Algoritmos Exatos 3.1. Relaxação Lagrangeana

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 41

Pesquisa Operacional aula 3 Modelagem PL. Profa. Alessandra Martins Coelho

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Pesquisa Operacional / Programação Matemática

Programação Linear/Inteira

Parte II. Aplicações em Roteamento de Veículos

Pesquisa Operacional aplicada ao Planejamento e Controle da Produção e de Materiais Programação Linear

6 Experimentos realizados

4 Resolução exata do PAG

Técnicas de análise de algoritmos

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e

Uma Introdução à Programação Linear

Programação Linear Inteira GNU Linear Programming Kit

Os Problemas de Optimização Combinatória e a Teoria da Complexidade

Alguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1

Paradigmas de Projetos de Algoritmos

Construção de Modelos de Otimização e Ferramentas Computacionais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Coloração de intervalos

CAPÍTULO IV PROGRAMAÇÃO LINEAR INTEIRA (PLI)

Programação Linear Aplicada em Redes de Telecomunicações. Prof. Rodrigo de Souza Couto

Pesquisa Operacional I Apresentação Geral do curso exemplos de modelagem

Objetivo da Programação Inteira

Métodos Exatos para PI - Parte 1: Branch-and-Bound

Aula 07: Análise de sensibilidade (2)

5 MODELO COMPUTACIONAL

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Algoritmo Branch-and-Price para o Problema de Corte de Estoque Não-Guilhotinado

3. Resolução de problemas por meio de busca

Aula 10: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Programação Linear. MÉTODOS QUANTITATIVOS: ESTATÍSTICA E MATEMÁTICA APLICADAS De 30 de setembro a 13 de novembro de 2011 prof. Lori Viali, Dr.

Programação Inteira Resolução por Branch and Bound

Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos

Problemas de Fluxo em Redes

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Proposta de Mini-Curso para a XLIII SBPO

MATEMÁTICA APLICADA AO PLANEJAMENTO DA PRODUÇÃO E LOGÍSTICA. Silvio A. de Araujo Socorro Rangel

Projeto e Análise de Algoritmos

Otimização em Grafos

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Branch and Bound - Ramicar e Limitar

ANÁLISE DE ALGORITMOS

Aula 26: Branch-and-Price

QuickTime and atiff (Uncompressed) decompressorare needed to see this picture. Programação Inteira. Métodos Quantitativos 2002/2003.

Programação Linear Inteira. C. Requejo (UA) Métodos de Investigação Operacional MIO / 30

Linear para o Problema de Escalonamento de Workflows em Múltiplos Provedores de Nuvem

OPT-7. Ivan Sendin. Exercicios. Aula 7. Ivan Sendin. FACOM - Universidade Federal de Uberlândia 3 de abril de 2018

Problema do Caixeiro Viajante

1-1 PESQUISA OPERACIONAL INTRODUÇÃO

OTIMIZAÇÃO. O processo de otimização normalmente involve a procura de pontos de máximos e mínimos de uma função.

Prática 00. Total 04. Pré-requisitos. No. De Créditos 04

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Aula 03: Algoritmo Simplex (Parte 2)

Teoria dos Grafos Aula 14

EAD 350 Pesquisa Operacional Aula 04 Parte 1 Resolução de Exercícios

Engenharia Industrial

Code: Luiza Rodrigues Matos, Daisy Paes Silva, Edilaine Martins Soler. Universidade Estadual Paulista "Júlio de Mesquita Filho" (UNESP)

Métodos de Pesquisa Operacional

Disciplina que estuda métodos analíticos para auxiliar na tomada de decisões.

AULA 03 MODELOS DE PROGRAMAÇÃO LINEAR. Eduardo Camargo de Siqueira PESQUISA OPERACIONAL TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

5COP096 TeoriadaComputação

Modelos em Programação Matemática

Combinando inequações lineares

Aula 09: Modelagem / Variáveis inteiras

Programação linear I João Carlos Lourenço

Problemas de otimização

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

PESQUISA OPERACIONAL. UNIDADE 1 Introdução à Pesquisa Operacional. Prof. Me. Carlos Guimarães

Otimização discreta Modelagem com variáveis binárias: problemas clássicos

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR. Prof. Angelo Augusto Frozza, M.Sc.

OTIMIZAÇÃO DE CIRCUITOS DE INSPEÇÃO DE PAVIMENTOS: APLICAÇÃO À REDE RODOVIÁRIA NACIONAL

Programação Linear/Inteira

Transcrição:

UFFLP: Integrando Programação Inteira Mista e Planilhas de Cálculo Artur Pessoa Eduardo Uchoa Engenharia de Produção UFF Roteiro Aula Apresentação geral da UFFLP Criação de modelos básicos com UFFLP Exemplo : Problema do Mix de Produção Exemplo 2: Problema da p-mediana 2992

Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de PIM: Fechados (alto desempenho, licenças comerciais caras) IBM ILOG CPLEX FICO XPRESS Gurobi (graças a ele, hoje todos esses pacotes oferecem licenças acadêmicas ilimitadas e gratuitas sob certas condições). Abertos (médio desempenho) COIN CBC GLPK MINLP Como usar esses pacotes?. Criar manualmente arquivos nos formatos MPS ou LP Inviável exceto para modelos simples e poucos dados Não separa o modelo dos dados Muitos cursos de PO ainda não ensinam outros métodos => Muitos engenheiros de produção recém-formados não são capazes de aplicar PIM em problemas reais. Maximize obj: 2 x + 5 x2 + 5 x3 + 0 x4 Subject To c: 5 x + x2 + 9 x3 + 2 x4 <= 5 c2: 3 x + 2 x2 + 4 x3 + 0 x4 <= 8 Bounds 0 <= x <= 5 0 <= x2 <= 5 0 <= x3 <= 5 0 <= x4 <= 5 Generals x x2 x3 x4 End 2993

Como usar esses pacotes? 2. Usar interfaces integradas a planilhas (tipo Solver do Excel) Sem dúvida melhor, mas ainda inviável para problemas reais com milhares de restrições. Separação entre modelo e dados pouco clara. Geralmente usam resolvedores com desempenho inferior. Como usar esses pacotes? 3. Usar funções de programação C/C++/Java oferecidas pelos pacotes Permite criar modelos de tamanho e complexidade arbitrários Baixo nível, variáveis e restrições referenciadas pela numeração das colunas e linhas. Exige conhecimento relativamente avançado de programação int CPXaddcols (CPXENVptr env, CPXLPptr lp, int ccnt, int nzcnt, double *obj, int *cmatbeg, int *cmatind, double *cmatval, double *lb, double *ub, char **colname); 2994

Como usar esses pacotes? 4. Usar linguagens de modelagem Permite criar modelos de tamanho e complexidade arbitrários Alto nível, variáveis e restrições representadas de forma semelhante a notação matemática Separação entre modelo e dados Exige pouco conhecimento de programação Na verdade, modelos simples exigem um mínimo de programação; modelos complexos acabam exigindo bastante programação. Atualmente a melhor alternativa para um usuário que pretende fazer uso sério de PIM, mas não tem formação em computação. Particularmente apropriada para protótipos. AMPL: diet.mod set NUTR ordered; set FOOD ordered; param cost {FOOD} >= 0; param f_min {FOOD} >= 0, default 0; param f_max {j in FOOD} >= f_min[j], default Infinity; param n_min {NUTR} >= 0, default 0; param n_max {i in NUTR} >= n_min[i], default Infinity; param amt {NUTR,FOOD} >= 0; var Buy {j in FOOD} integer >= f_min[j], <= f_max[j]; # -------------------------------------------------------- minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j]; subject to Diet {i in NUTR}: n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i]; 2995

AMPL: diet.dat param: FOOD: cost f_min f_max := "Quarter Pounder w/ Cheese".84.. "McLean Deluxe w/ Cheese" 2.9.. "Big Mac".84.. "Filet-O-Fish".44.. "McGrilled Chicken" 2.29.. "Fries, small" 0.77.. "Sausage McMuffin".29.. "% Lowfat Milk" 0.60.. "Orange Juice" 0.72.. ; param: NUTR: n_min n_max := Cal 2000. Carbo 350 375 Protein 55. VitA 00. VitC 00. Calc 00. Iron 00. ; AMPL: diet.dat param amt (tr): Cal Carbo Protein VitA VitC Calc Iron := "Quarter Pounder w/ Cheese" 50 34 28 5 6 30 20 "McLean Deluxe w/ Cheese" 370 35 24 5 0 20 20 "Big Mac" 500 42 25 6 2 25 20 "Filet-O-Fish" 370 38 4 2 0 5 0 "McGrilled Chicken" 400 42 3 8 5 5 8 "Fries, small" 220 26 3 0 5 0 2 "Sausage McMuffin" 345 27 5 4 0 20 5 "% Lowfat Milk" 0 2 9 0 4 30 0 "Orange Juice" 80 20 2 20 2 2 ; 2996

Pacotes que incluem linguagens de modelagem Fechados (incluem sofisticadas interfaces para importação/exportação de dados, ambiente de depuração, ferramentas de visualização, etc) AMPL Versão de estudante limitada a 300 var/rest GAMS Licença acadêmica c/ interface CPLEX: $280 MOSEL (XPRESS) Número limitado de licenças p/ Academic Partners OPL (CPLEX) Livre para Academic Initiative Abertos (praticamente só a própria linguagem) COIN PuLP Zimpl Uma crítica às linguagens de modelagem Perfeitas para restrições simples, que só usam conceitos matemáticos previstos na linguagem (Ex: somatório de j= até m). m j= x ij = i =,, n Entretanto, restrições complexas obrigam o usuário a programar numa linguagem nova e relativamente pobre, que carece de algumas construções e recursos básicos encontradas em linguagens de uso geral... 2997

Uma crítica às linguagens de modelagem Um usuário (mesmo que saiba programar!) tem uma grande dificuldade ao se deparar com a primeira restrição que usa um conceito matemático não diretamente suportado pela linguagem. Ex: Uma enumeração de permutações, uma operação sobre grafos, etc. UFFLP Uma abordagem de médio nível : É um conjunto de funções em C/C++/VBA (em breve, Java) As variáveis e restrições são indexadas pelo nome. Outros conceitos matemáticos, simples ou complexos, são implementados na linguagem hospedeira. 2998

UFFLP Modelos simples são escritos de forma quase tão simples quanto nas linguagem de modelagem. Ex: um somatório de a m exige um comando de iteração em C: for(j=;j<=m;j++){...} em VBA: For j= To n... Next j Modelos complexos se beneficiam de todas as construções e recursos existentes na linguagem hospedeira. Ex: uma função recursiva para gerar permutações, uma bibilioteca de algoritmos sobre grafos. Existe maior motivação para aprender algo que faz parte de uma linguagem de uso geral. Farta documentação, exemplos na internet, etc. UFFLP em VBA O suporte à linguagem VBA (Visual Basic for Applications) é essencial na concepção da UFFLP: Apesar de injustamente criticada por puristas de computação, a linguagem Basic possui uma das mais rápidas curvas de aprendizado. 2999

UFFLP em VBA A planilha Excel (que contém um interpretador VBA) fornece mais recursos do que os disponíveis em qualquer pacote contendo uma linguagem de modelagem: Ambiente de depuração Facilidade na manipulação de dados Importação/Exportação para praticamente qualquer outra plataforma Funções gráficas UFFLP em VBA A UFFLP chamada de dentro do Excel vem sendo usada com sucesso desde 2007 nos cursos de pós-graduação em engenharia de produção da UFF: Alguns alunos que nunca tinham programado, ao final dos cursos se mostraram capazes de escrever aplicações de modelos de PIM para uso real. 3000

UFFLP - Resolvedores de PIM Atualmente a UFFLP suporta os resolvedores CPLEX e COIN CBC Exemplo Problema do Mix de Produção Uma fábrica de cadeiras é capaz de produzir os seguintes modelos: 300

Exemplo Problema do Mix de Produção O limitante da produção é o fornecimento de 2 matéria-primas: lâminas de madeira e tecido 50 lâminas/semana 75 metros/semana Lucro X gasto de matéria-prima 50 500 400 200 4 3 2 3002

Modelo de programação linear max 50 x + 500 x 2 + 400 x 3 + 200 x 4 x + 4 x 2 + 3 x 3 + x 4 50 x + x 2 + x 3 + 2 x 4 75 Modelo de programação linear max 50 x + 500 x 2 + 400 x 3 + 200 x 4 x + 4 x 2 + 3 x 3 + x 4 50 x + x 2 + x 3 + 2 x 4 75 Solução: x = 25, x 2 = 0, x 3 = 0, x 4 = 0; lucro = R$8750,00 3003

Funções básicas UFFLP. UFFLP_CreateProblem 2. UFFLP_AddVariable 3. UFFLP_SetCoefficient 4. UFFLP_AddConstraint 5. UFFLP_Solve 6. UFFLP_GetObjValue 7. UFFLP_GetSolution 8. UFFLP_DestroyProblem Usadas em praticamente qualquer aplicação Outras funções UFFLP usadas no exemplo UFFLP_WriteLP UFFLP_SetLogInfo 3004

UFFLP: linguagem C UFFLP: linguagem C 3005

UFFLP: linguagem VBA UFFLP: linguagem VBA 3006

Exemplo 2 Problema das p- medianas n clientes m locais potenciais p/ abrir algum serviço Distâncias d ij entre cliente i e local j Escolher p locais para minimizar a soma das distâncias de cada cliente ao local aberto mais próximo. Exemplo 2 Problema das p- medianas Variáveis: x j (j =,..., m) = se o local j é aberto y ij (i =,..., n; j =,..., m) = se o cliente i é atendido no local j 3007

Exemplo 2 Problema das p- medianas Min S.a i= j= m j= y ij m j= y x n ij j y x x m ij j d j ij y = 0 i =, n; j =, m = p ij i =, n { 0,} i =, n; { 0,} j =, m j =, m Tela principal Excel 3008

Criação das variáveis Criação das restrições 3009

Roteiro Aula 2 Modelos avançados com UFFLP Separação de cortes / branch-and-cut Exemplo 3: Problema da Soma Máxima Exemplo 4: Problema do Caixeiro Viajante Geração de colunas Exemplo 5: Problema do Bin Packing Exemplo 3 Problema da Soma Máxima Instância fixa de exemplo: 8 números: 3332 223442 83435 37435 252342 7532 282632 26372 Encontrar um subconjunto cuja soma seja máxima sem ultrapassar 4364 A solução ótima soma 32767 300

Adicionando Cortes no UFFLP. UFFLP_SetCutCallBack 2. UFFLP_GetSolution * 3. UFFLP_SetCoefficient * 4. UFFLP_AddConstraint * 5. UFFLP_PrintToLog * * Dentro de uma função de call back de geração de cortes Retorna a solução da relaxação linear do nó corrente da árvore de B&B Adicionando Cortes no UFFLP 30

Função de call back de separação Exemplo 4 Problema do Caixeiro Viajante n cidades p/ visitar Distâncias d ij entre as cidades i e j Escolher um circuito de comprimento mínimo visitando cada cidade uma única vez e voltando ao ponto de partida. 302

Exemplo 4 Problema do Caixeiro Viajante G = (V,E) é um grafo completo onde cada vértice é uma cidade. Variáveis: x e (e = (i,j) E) = se o caminho entre as cidades i e j é usado em qualquer sentido Exemplo 4 Problema do Caixeiro Viajante Min d x e E S.a x = 2 i V e δ () i e δ ( S) x e e e e x 2 S V e {0,} e E Número exponencial de restrições 303

x e Problema de Separação (e = (i,j) E) = valor fracionário da variável x e na solução ótima da relaxação linear. Encontrar S V que minimiza e δ ( S) Se o valor ótimo for menor que 2, o corte está violado x e Problema de Separação S 0,3 0,5 0, 0, 0,8 0,2 0,9 Valor = 0,8 0,3 0,8 0,9 304

Problema de Separação Variáveis: x e (e E) = se e δ(s) y i (i =,..., n) = se i S Problema de Separação Min S. a x y y e= ( i, j) E x y y e= (, i j) E n i= 2 e E e e e i j e j i i n 2 = x {0, } e E e y {0,} i = 2,, n i y y x x 305

Tela Principal Excel Criação do MIP Incompleto 306

Criação das variáveis (Separação) Criação das restrições (Separação) 307

Exemplo 5 Problema do Bin Packing Dado um conjunto de n items, cada um com um peso w i, colocá-los no menor número possível de caixas com capacidade C. Exemplo: n=5, w = 3, w 2 = 4, w 3 = 6, w 4 = 8, w 5 =9 e C=0. Exemplo 5 Problema do Bin Packing Dado um conjunto de n items, cada um com um peso w i, colocá-los no menor número possível de caixas com capacidade C. Exemplo: n=5, w = 3, w 2 = 4, w 3 = 6, w 4 = 8, w 5 =9 e C=0. São necessárias 4 caixas. 308

Formulação de Kantorovitch Seja U um limite superior ao número de caixas necessárias. Variáveis y j indicando se a caixa j vai ser usada. Variáveis x ij indicando que o item i vai para a caixa j. M in S.a U j= U j= n i= y i x, y j x ij w x ij = C. y n( U + ) { 0,} j i = n j = U Formulação de Kantorovitch Essa formulação não funciona na prática O limite inferior da sua relaxação linear é ruim, igual ao limite trivial n w C. i = No exemplo, esse limite seria 2,9. i A simetria das variáveis faz com que algoritmos para PI, como o branch-and-bound, sejam ineficientes. 309

Formulação de Gilmore- Gomory Defina uma variável para cada uma das Q possíveis combinações de itens em caixas. O número Q pode ser muito grande! Com n=5, w = 3, w 2 = 4, w 3 = 5, w 4 = 8, w 5 =9 e C=0; são 8 combinações: {}, {2}, {3}, {4}, {5}, {,2}, {,3} {2,3}. Formulação de Gilmore- Gomory Defina o coeficiente a ij como sendo se o item i está na combinação j e 0 caso contrário. Min S.a Q j= Q j= λ λ a j ij λ j = { 0,} Q i = n 3020

No exemplo: Formulação de Gilmore- Gomory Min S.a λ λ + λ λ 2 2 + λ λ 3 3 + λ λ 4 4 + λ λ 5 5 + λ 6 + λ 6 + λ 6 + λ 7 + λ 7 + λ 7 + λ 8 + λ 8 + λ λ 8 = = = = = { 0,} 8 Formulação de Gilmore- Gomory No exemplo acima, o limite obtido pela relaxação linear da formulação é 3,5. Em geral, os limites dessa relaxação são extremamente fortes. Raramente se encontra uma instância em que o limite arredondado para cima não iguale o valor da solução ótima. Nunca se achou uma instância em que o limite arredondado para cima estivesse a mais de unidade da solução ótima! 302

Resolvendo a relaxação linear por Geração de Colunas λ Min S.a j R j R λ λ a π j ij λ j = 0 i = n Subproblema de Pricing M in S.t. n i= n i= x π x i i w x i i C { 0,} n 3022

Obtendo boas soluções inteiras Uma possível maneira de encontrar boas soluções inteiras para o problema do bin packing é resolver um MIP apenas com as variáveis do conjunto R final. O limite inferior encontrado pela relaxação muitas vezes é suficiente para provar que essa solução é ótima. Outras Funções UFFLP usadas no exemplo UFFLP_GetDualSolution UFFLP_ChangeVariableType 3023

Tela principal Excel Criação do PL Mestre 3024

Criação do Subproblema Adição de Variável (coluna) 3025

Resolve o Mestre Restrito Final como um MIP Obrigado! 3026