Universidade Federal de Itajubá Instituto de Engenharia de Produção e Gestão Pesquisa Operacional Programação inteira Prof. Dr. José Arnaldo Barra Montevechi Objetivo da Programação Inteira Max Z = 20X1 + 10X2 ST: X1 + 0,45X2 5 X1 + 1,7X2 12 X1, X2 0 Resultado (solução ótima) X1 = 2,48 X2 = 5,60 Z = 105,60 2 1
Objetivo da Programação Inteira Resultado (solução ótima) X1 = 2,48 X2 = 5,60 Z = 105,60 Valores contínuos - variáveis contínuas Variáveis contínuas variáveis inteiras 3 Objetivo da Programação Inteira Resultado (solução ótima)? X1 = 2,48 X2 = 5,60 Z = 105,60 4 2
Objetivo da Programação Inteira Resultado (solução ótima) 3? X1 = 2,48 X2 = 5,60 Z = 105,60 O arredondamento pode não levar a solução ótima! 6? 5 Objetivo da Programação Inteira O problema resolvido por técnica de Programação Inteira, pode levar a resultados bastante diferentes do arredondamento. Se o resultado implicar em valores grandes, o arredondamento normalmente pode ser utilizado. 6 3
Objetivo da Programação Inteira A Programação Inteira possui uma técnica particular de solução, chamada de Método Branch and Bound, que se baseia na montagem de um diagrama tipo árvore, em que cada ramo é uma opção de solução inteira. Apenas alguns ramos são testados e para cada tentativa, o Método Simplex é utilizado. O computador é indispensável! 7 Solução de um problema Max Z = 20X1 + 10X2 ST: X1 + 0,45X2 5 X1 + 1,7X2 12 X1, X2 0 X1 = 2,48 X2 = 5,60 Z = 105,60 8 4
Solução de um problema X1 = 2,48 X2 = 5,6 Região de solução 12 X2 10 8 6 X1 = 3 X2 = 6 Fora da Região de solução Restrição 1 Restrição 2 4 2 0 0 2 4 6 8 10 12 14 X1 9 Solução de um problema Região de Solução 12 X2 11 10 9 8 7 6 Dentro deste polígono encontram-se os pontos candidatos a solução do problema 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 X1 10 5
Solução do problema pela Programação Inteira Max Z = 20X1 + 10X2 ST: X1 + 0,45X2 5 X1 + 1,7X2 12 X1, X2 0 X1 = 3 X2 = 4 Z = 100 11 Solução de um problema Região de Solução 12 11 10 X2 9 8 7 6 X1 = 3 X2 = 4 Dentro da Região de solução 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 X1 12 6
Por que programação inteira? Vantagem de restringir variáveis para obter valores inteiros: Mais realista Desvantagens: Mais difícil de modelar Pode ser bem mais difícil de solucionar 13 O mistério da programação inteira Alguns programas de inteiros são fáceis (é possível resolver os problemas com milhões de variáveis); Alguns programas de inteiros são difíceis (até mesmo 100 variáveis podem ser difíceis); Expertise e experiência são essenciais para saber o que é o que! É uma área de pesquisa ativa em várias Universidades. 14 7
Tipos de programação inteira Todos os programas de inteiros possuem igualdades e desigualdades lineares e algumas ou todas as variáveis devem ser inteiras. Se todas as variáveis devem ser inteiras, então pode-se esse programa pode ser chamado de programa puro de inteiros. Se todas as variáveis devem ser 0 ou 1, o programa é chamado de programa binário de inteiros ou um programa de inteiros 0-1. Se algumas variáveis forem números fracionários e outras números inteiros, então o problema é chamado programação inteira mista (PIM). 15 Como modelar restrições lógicas Exemplos: São selecionados exatamente 3 estoques. Se o estoque 2 for selecionado, o estoque 1 também o será. Se o estoque 1 for selecionado, então o estoque 3 não será selecionado. O estoque 4 ou 5 é selecionado, mas não os dois. 16 8
São selecionados exatamente 3 estoques Imaginando um exemplo com 6 variáveis de decisão, e todas binárias, a restrição pode ser a seguinte: x 1 + x2 + x3 + x4 + x5 + x6 = 3 17 Se o estoque 2 for selecionado, o estoque 1 também o será A restrição da programação inteira: x1 x 2 Estoque 2 Uma representação bidimensional Estoque 1 18 9
Se o estoque 1 for selecionado, então o estoque 3 não será selecionado A restrição da programação inteira: Uma representação bidimensional x 1 + x3 1 Estoque 3 Estoque 1 19 O estoque 4 ou 5 é selecionado, mas não os dois A restrição da programação inteira: Uma representação bidimensional x 4 + x5 = 1 Estoque 5 Estoque 4 20 10
Solução pelo Lindo 21 Solução pelo Lindo Comando apropriado 22 11
Solução pelo Solver 23 Solução pelo Solver 24 12
Solução pelo Solver Restrição adicional 25 Exercício Resolver o exemplo 4.5.1 da apostila; Usar o Lindo e o solver; Inicialmente resolver admitindo as variáveis contínuas. Arredondar a resposta. Resolver usando a Programação Inteira e comparar o resultado com o arredondamento. 26 13
Formulação min Z = X1 + X2 + X3 + X4 + X5 + X6 + X7 sujeito a: X1 + X4 + X5 + X6 + X7 17 (SEG) X1 + X2 + X5 + X6 + X7 13 (TER) X1 + X2 + X3 + X6 + X7 15 (QUAR) X1 + X2 + X3 + X4 + X7 19 (QUIN) X1 + X2 + X3 + X4 + X5 14 (SEX) X2 + X3 + X4 + X5 + X6 16 (SAB) X3 + X4 + X5 + X6 + X7 11 (DOM) Xi 0 (i = 1; 2;...; 7) 27 Solução anterior do problema 4.5.1 X1 = 4/3 X2 = 10/3 X3 = 2 X4 = 22/3 X5 = 0 X6 = 10/3 X7 = 5 Z = 67/3 X1 = 2 X2 = 4 X3 = 2 X4 = 8 X5 = 0 X6 = 4 X7 = 5 Z = 25 Arredondamento a partir da solução real. 28 14
Solução do problema 4.5.1 programação inteira X1 X2 X3 X4 X5 X6 X7 MIN 1 1 1 1 1 1 1 Restrições segunda 1 1 1 1 1 17 17 terça 1 1 1 1 1 15 13 quarta 1 1 1 1 1 15 15 quinta 1 1 1 1 1 21 19 sexta 1 1 1 1 1 14 14 sábado 1 1 1 1 1 16 16 domingo 1 1 1 1 1 17 11 Resultado Solução 0 6 0 8 0 2 7 23 29 Solução do problema 4.5.1 programação inteira Acrescentar esta restrição! 30 15