UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista...
Transcript of UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista...
![Page 1: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/1.jpg)
UFFLP: Integrando Programação Inteira Mista e
Planilhas de Cálculo
Artur PessoaEduardo Uchoa
Engenharia de Produção – UFF
![Page 2: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/2.jpg)
Roteiro – Aula 1
• Apresentação geral da UFFLP• Criação de modelos básicos com
UFFLP– Exemplo 1: Problema do Mix de
Produção– Exemplo 2: Problema da p-Mediana
![Page 3: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/3.jpg)
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•
![Page 4: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/4.jpg)
Como usar esses pacotes?1. 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: 12 x1 + 5 x2 + 15 x3 + 10 x4
Subject Toc1: 5 x1 + x2 + 9 x3 + 12 x4 <= 15c2: 3 x1 + 2 x2 + 4 x3 + 10 x4 <= 8
Bounds0 <= x1 <= 50 <= x2 <= 50 <= x3 <= 50 <= x4 <= 5
Generalsx1 x2 x3 x4
End
![Page 5: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/5.jpg)
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.
![Page 6: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/6.jpg)
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);
![Page 7: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/7.jpg)
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.
![Page 8: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/8.jpg)
AMPL: diet1.modset 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];
![Page 9: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/9.jpg)
AMPL: diet1.datparam: FOOD: cost f_min f_max :="Quarter Pounder w/ Cheese" 1.84 . ."McLean Deluxe w/ Cheese" 2.19 . ."Big Mac" 1.84 . ."Filet-O-Fish" 1.44 . ."McGrilled Chicken" 2.29 . ."Fries, small" 0.77 . ."Sausage McMuffin" 1.29 . ."1% Lowfat Milk" 0.60 . ."Orange Juice" 0.72 . . ;
param: NUTR: n_min n_max :=Cal 2000 .Carbo 350 375 Protein 55 .VitA 100 .VitC 100 .Calc 100 .Iron 100 . ;
![Page 10: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/10.jpg)
AMPL: diet1.datparam amt (tr):
Cal Carbo Protein VitA VitC Calc Iron :="Quarter Pounder w/ Cheese" 510 34 28 15 6 30 20 "McLean Deluxe w/ Cheese" 370 35 24 15 10 20 20 "Big Mac" 500 42 25 6 2 25 20 "Filet-O-Fish" 370 38 14 2 0 15 10 "McGrilled Chicken" 400 42 31 8 15 15 8 "Fries, small" 220 26 3 0 15 0 2 "Sausage McMuffin" 345 27 15 4 0 20 15 "1% Lowfat Milk" 110 12 9 10 4 30 0 "Orange Juice" 80 20 1 2 120 2 2 ;
![Page 11: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/11.jpg)
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: $1280
• 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
•
![Page 12: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/12.jpg)
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=1 até m).
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 ...
∑=
=∀=m
jij nix
1
,,1 1 …
![Page 13: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/13.jpg)
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.
![Page 14: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/14.jpg)
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.
![Page 15: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/15.jpg)
UFFLP• Modelos simples são escritos de forma quase tão
simples quanto nas linguagem de modelagem.– Ex: um somatório de 1 a m exige um comando de iteração
• em C: for(j=1;j<=m;j++){...}• em VBA: For j=1 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.
![Page 16: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/16.jpg)
UFFLP em VBA
O suporte à linguagem VBA (Visual Basic for Applications) é essencial na concepçãoda UFFLP:
• Apesar de injustamente criticada porpuristas de computação, a linguagemBasic possui uma das mais rápidas curvasde aprendizado.
![Page 17: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/17.jpg)
UFFLP em VBA• A planilha Excel (que contém um interpretador VBA)
fornece mais recursos do que os disponíveis emqualquer 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–
![Page 18: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/18.jpg)
UFFLP em VBA
A UFFLP chamada de dentro do Excel vem sendo usada com sucessodesde 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 parauso real.
![Page 19: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/19.jpg)
UFFLP - Resolvedores de PIM
Atualmente a UFFLP suporta os resolvedoresCPLEX e COIN CBC
![Page 20: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/20.jpg)
Exemplo 1 – Problema do Mix de Produção
� Uma fábrica de cadeiras é capaz de produzir os seguintes modelos:
![Page 21: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/21.jpg)
Exemplo 1 – 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
![Page 22: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/22.jpg)
Lucro X gasto de matéria-prima
150 500 200
1 4 1
1 1 2
400
3
1
![Page 23: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/23.jpg)
Modelo de programação linear
x1 x2 x4150 + 500 + 200
x1 x2 x41 + 4 + 1 ≤ 50
x1 x2 x41 + 1 + 2 ≤ 75
max x3+ 400
x3+ 3
x3+ 1
![Page 24: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/24.jpg)
x1 x2 x4150 + 500 + 200
x1 x2 x41 + 4 + 1 ≤ 50
x1 x2 x41 + 1 + 2 ≤ 75
max x3+ 400
x3+ 3
x3+ 1
Solução: x1= 25, x2= 0, x3= 0, x4= 0; lucro = R$8750,00
Modelo de programação linear
![Page 25: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/25.jpg)
Funções básicas UFFLP1. UFFLP_CreateProblem2. UFFLP_AddVariable3. UFFLP_SetCoefficient4. UFFLP_AddConstraint5. UFFLP_Solve6. UFFLP_GetObjValue7. UFFLP_GetSolution8. UFFLP_DestroyProblem
Usadas em praticamente qualquer aplicação
![Page 26: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/26.jpg)
Outras funções UFFLP usadas no exemplo
• UFFLP_WriteLP• UFFLP_SetLogInfo
![Page 27: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/27.jpg)
UFFLP: linguagem C
![Page 28: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/28.jpg)
UFFLP: linguagem C
![Page 29: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/29.jpg)
UFFLP: linguagem VBA
![Page 30: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/30.jpg)
UFFLP: linguagem VBA
![Page 31: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/31.jpg)
• n clientes• m locais potenciais p/
abrir algum serviço• Distâncias dij entre
cliente i e local j• Escolher p locais
para minimizar a soma das distânciasde cada cliente aolocal aberto maispróximo.
Exemplo 2 – Problema das p-medianas
![Page 32: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/32.jpg)
Exemplo 2 – Problema das p-medianas
Variáveis:
• xj (j = 1, ..., m) = 1 se o local j é aberto
• yij (i = 1, ..., n; j = 1, ..., m) = 1 se o cliente ié atendido no local j
![Page 33: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/33.jpg)
Exemplo 2 – Problema das p-medianas
{ }{ } mjx
mjniy
px
mjnixy
niy
yd
j
ij
m
jj
jij
m
jij
n
i
m
jijij
…
……
……
…
,11,0
,1;,11,0
,1;,10
,11S.a
Min
1
1
1 1
=∀∈=∀=∀∈
=
=∀=∀≤−
=∀=
∑
∑
∑∑
=
=
= =
![Page 34: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/34.jpg)
Tela principal Excel
![Page 35: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/35.jpg)
Criação das variáveis
![Page 36: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/36.jpg)
Criação das restrições
![Page 37: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/37.jpg)
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
![Page 38: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/38.jpg)
Exemplo 3 – Problema da Soma Máxima
• Instância fixa de exemplo:• 8 números:
13332 223442 83435 374351
252342 75312 282632 263721
• Encontrar um subconjunto cuja soma seja máxima sem ultrapassar1143641
A solução ótima soma 1132767
![Page 39: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/39.jpg)
Adicionando Cortes no UFFLP1. UFFLP_SetCutCallBack2. 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
![Page 40: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/40.jpg)
Adicionando Cortes no UFFLP
![Page 41: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/41.jpg)
Função de “call back” de separação
![Page 42: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/42.jpg)
Exemplo 4 – Problema do Caixeiro Viajante
• n cidades p/ visitar
• Distâncias dij 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.
![Page 43: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/43.jpg)
Exemplo 4 – Problema do Caixeiro Viajante
• G = (V,E) é um grafo completo onde cada vértice é uma cidade.
Variáveis:
• xe (e = (i,j) ∈ E) = 1 se o caminho entre as cidades i e j é usado em qualquer sentido
![Page 44: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/44.jpg)
Exemplo 4 – Problema do Caixeiro Viajante
( )
( )
Min
S.a 2
2
{0,1}
e ee E
ee i
ee S
e
d x
x i V
x
x S V
e E
δ
δ
∈
∈
∈
= ∀ ∈
≥ ∀ ⊂
∈ ∀ ∈
∑
∑
∑
Número exponencial de restrições
![Page 45: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/45.jpg)
Problema de Separação
• (e = (i,j) ∈ E) = valor fracionário da variável xe na solução ótima da relaxação linear.
• Encontrar S ⊂ V que minimiza
• Se o valor ótimo for menor que 2, o corte está violado
ex
( )e
e S
xδ∈∑
![Page 46: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/46.jpg)
Problema de Separação
0,9
0,2
0,9
0,3
0,1
0,1
0,3
1
1
0,60,8
0,8
S
Valor = 0,8
![Page 47: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/47.jpg)
Problema de Separação
Variáveis:
• we (e ∈ E) = 1 se e ∈ δ(S)
• yi (i = 1, ..., n) = 1 se i ∈ S
![Page 48: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/48.jpg)
Problema de Separação
2
1
Min
S. a ( , )
( , )
2
1
{0,
2
1}
{0,1} , ,
e ee E
e i j
e j i
n
ii
e
i
x w
w y y e i j E
w y y e i j E
y n
w e E
y
y i n
∈
=
≥ − ∀ = ∈≥ − ∀ = ∈
≤ −
=∈∈ =
∀ ∈…
∑
∑
![Page 49: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/49.jpg)
Tela Principal Excel
![Page 50: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/50.jpg)
Criação do MIP Incompleto
![Page 51: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/51.jpg)
Criação das variáveis (Separação)
![Page 52: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/52.jpg)
Criação das restrições (Separação)
![Page 53: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/53.jpg)
Inserção do corte (Separação)
![Page 54: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/54.jpg)
� Dado um conjunto de n items, cada um com um peso wi, colocá-los no menor número possível de caixas com capacidade C.
� Exemplo: n=5, w1= 3, w2 = 4, w3 = 6, w4 = 8, w5=9 e C=10.
Exemplo 5 – Problema do BinPacking
![Page 55: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/55.jpg)
� Dado um conjunto de n items, cada um com um peso wi, colocá-los no menor número possível de caixas com capacidade C.
� Exemplo: n=5, w1= 3, w2 = 4, w3 = 6, w4 = 8, w5=9 e C=10.
São necessárias 4 caixas.
Exemplo 5 – Problema do BinPacking
![Page 56: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/56.jpg)
Formulação de Kantorovitch� Seja U um limite superior ao número de caixas necessárias.� Variáveis yj indicando se a caixa j vai ser usada.� Variáveis xij indicando que o item i vai para a caixa j.
{ } )1(1
1
1
1,0,
1.
11S.a
inM
+=
=
=
∈=∀≤
=∀=
∑
∑
∑
Unj
n
i iji
U
j ij
U
jj
yx
UjyCxw
nix
y
…
…
![Page 57: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/57.jpg)
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 .
� No exemplo, esse limite seria 2,9.
� A simetria das variáveis faz com que algoritmos para PI, como o branch-and-bound, sejam ineficientes.
Cwn
i i∑ =1
![Page 58: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/58.jpg)
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, w1= 3, w2 = 4, w3 = 5, w4 = 8, w5=9 e C=10; são 8 combinações: {1}, {2}, {3}, {4}, {5}, {1,2}, {1,3} {2,3}.
![Page 59: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/59.jpg)
Formulação de Gilmore-Gomory
� Defina o coeficiente aij como sendo 1 se o item i está na combinação j e 0 caso contrário.
{ }Q
Q
j jij
Q
jj
nia
1,0
11S.a
inM
1
1
∈
=∀=∑
∑
=
=
λλ
λ
…
![Page 60: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/60.jpg)
Formulação de Gilmore-Gomory
� No exemplo:
{ }85
4
873
862
761
87654321
1,0
1
1
1
1
1S.a
Min
∈===++=++=++
+++++++
λλ
λλλλλλλ
λλλλλλλλλλλ
![Page 61: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/61.jpg)
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 1 unidade da solução ótima!
![Page 62: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/62.jpg)
Resolvendo a relaxação linear por Geração de Colunas
0
11S.a
inM
≥=∀=∑
∑
∈
∈
λλ
λ
niaRj jij
Rjj
…
Seja π o vetor de variáveis duais ótimas
Seja R um (pequeno) subconjunto das variáveis λ suficientepara que o seguinte PL mestre tenha solução:
![Page 63: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/63.jpg)
Subproblema de Pricing
{ }n
n
i ii
n
iii
x
Cxw
x
1,0
S.t.
1inM
1
1
∈≤
−
∑
∑
=
=
π
Esse é um clássico problema da mochila, que é NP-difícil, mas muito bem resolvido na prática.
Enquanto o valor da solução do subproblema for negativo, a variável correspondente é adicionada ao conjunto R e o PL mestre é resolvido novamente. Caso contrário, a solução do PL mestre é a solução da relaxação da formulação G-G.
![Page 64: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/64.jpg)
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.
![Page 65: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/65.jpg)
Outras Funções UFFLP usadas no exemplo
• UFFLP_GetDualSolution• UFFLP_ChangeVariableType
![Page 66: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/66.jpg)
Tela principal Excel
![Page 67: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/67.jpg)
Criação do PL Mestre
![Page 68: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/68.jpg)
Criação do Subproblema
![Page 69: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/69.jpg)
Adição de Variável (coluna)
Notar a simetria entre a adição de restrições e de variáveis
![Page 70: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/70.jpg)
Resolve o Mestre Restrito Final como um MIP
![Page 71: UFFLP: Integrando Programação Inteira Mista e Planilhas de ...Programação Linear e Inteira Mista Importantes ferramentas básicas em Pesquisa Operacional Pacotes resolvedores de](https://reader030.fdocument.pub/reader030/viewer/2022040522/5e7f7f0485c5173684143216/html5/thumbnails/71.jpg)
Obrigado!