PROGRAMAÇÃO INTEIRA 08 de dezembro de 2016
ROTEIRO 1. Conceito 2. Programação 0-1 3. Resolução
1. CONCEITO
variáveis são restritas a valores inteiros. PROGRAMAÇÃO INTEIRA É um caso particular da Programação Linear em que todas as variáveis são restritas a valores inteiros. 1 2 3 4 5 x1 x2 Aplicações: problemas envolvendo número de itens, como televisores, automóveis, número de estágios...
Condições de Integralidade Programação Linear com Inteiros No enunciado do problema devem explicitadas as Condições de Integralidade Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) Temos, então um problema de Programação Linear com Inteiros
No entanto, há problemas em que apenas algumas variáveis são restritas a valores inteiros.. Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0
Se a Função Objetivo e as Restrições forem Lineares, o problema é de Programação Linear Inteira Mista (PLIM) “Mixed Integer Linear Programming” (MILP). Se alguma delas for não-linear: Programação Não-Linear Inteira Mista (PNLIM) “Mixed Integer Nonlinear Programming” (MINLP).
3. RESOLUÇÃO
A busca da solução inteira ótima pode ser obtida pelo Método “Branch-and-Bound” O Método trata o problema com inteiros de uma maneira indireta. Resolve-se uma sequência de problemas contínuos ignorando a condição de integralidade das variáveis.
restrições adicionais forçando a integralidade da solução A cada etapa reduz-se a Região de Busca pela aplicação de restrições adicionais forçando a integralidade da solução até que seja encontrada a solução inteira ótima. 1 2 3 4 5 x1 x2
O primeiro passo consiste em resolver o problema com o EXEMPLO Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) O primeiro passo consiste em resolver o problema com o SIMPLEX relaxando as restrições de integralidade. É obtida a Solução Relaxada Se esta solução for inteira, ela já é a solução do Problema.
Trata-se de uma solução não-inteira. Logo, não é a ótima. 1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 Trata-se de uma solução não-inteira. Logo, não é a ótima. A partir deste problema, são criados dois outros através de uma operação denominada Bifurcação. Parte-se do princípio de que se x é um valor não inteiro e [x*] é a sua parte inteira, o seu valor inteiro ótimo atende a uma das duas condições: x0 [x*] ou x0 [x*] + 1
São criados os Problemas 2 e 3 . 1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) Bifurcação Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 3 2 São criados os Problemas 2 e 3 . Cada um deles inclui uma restrição adicional a uma das variáveis não-inteiras no intuito de eliminar a região onde ela não é inteira. É escolhida a que se encontra mais afastada dos limites: x2.
Os Problemas 2 e 3 são resolvidos pelo SIMPLEX. 1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 Os Problemas 2 e 3 são resolvidos pelo SIMPLEX. As suas soluções são não-inteiras e passíveis de bifurcação. Escolhe-se para bifurcar o Problema 3 em que o valor da Função Objetivo é superior.
Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 inviável 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 x1 = 1 x2 = 2,33 f = 12,33 5 4 inviável São criados os Problemas 4 e 5. O Problema 4 é resolvido por SIMPLEX. A sua solução é não-inteira e será bifurcada. O Problema 5 se mostra inviável face às restrições
Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 inviável 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 x1 = 1 x2 = 2,33 f = 12,33 Há 2 Problemas a bifurcar: 2 e 4 A preferência é do Problema 4 (maior f) 5 4 inviável x2 3 x2 2 7 6
Os Problemas 6 e 7 são resolvidos pelo SIMPLEX. 1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 x1 = 1 x2 = 2,33 f = 12,33 5 4 Os Problemas 6 e 7 são resolvidos pelo SIMPLEX. inviável x2 3 x2 2 7 x1 = 0 x2 = 3 f = 12 6 x1 = 1 x2 = 2 f = 11
Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 inviável 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 x1 = 1 x2 = 2,33 f = 12,33 Há 2 soluções inteiras. A do problema 6 é descartada face à do Problema 7, até então candidata a ÓTIMA 5 4 inviável x2 3 x2 2 7 x1 = 0 x2 = 3 f = 12 6 x1 = 1 x2 = 2 f = 11
Falta bifurcar o Problema 2. 1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 2 x2 1 x1 = 1,5 x2 = 2 f = 12,5 3 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 x1 = 1 x2 = 2,33 f = 12,33 Falta bifurcar o Problema 2. 5 4 Porém, qualquer solução inteira que possa advir será inferior à do Problema 7. inviável x2 3 x2 2 7 x1 = 0 x2 = 3 f = 12 6 x1 = 1 x2 = 2 f = 11
1 2 3 4 5 x1 x2 Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) inviável Problema Relaxado 1 x1 = 2,25 x2 = 1,50 f = 12,75 x2 1 x2 2 3 f = 12,5 x1 = 1,5 x2 = 2 2 x1 = 2,5 x2 = 1 f = 11,50 x1 2 x1 1 Não mais bifurcável 4 x1 = 1 x2 = 2,33 f = 12,33 5 inviável x2 3 x2 2 6 x1 = 1 x2 = 2 f = 11 7 x1 = 0 x2 = 3 f = 12 SOLUÇÃO ÓTIMA
PROGRAMAÇÃO 0 - 1 Caso particular da Programação Inteira em que as variáveis inteiras só podem assumir os valores 0 e 1. É a parte da Programação Inteira de interesse na Engenharia de Processos.
Min f = 2 x1 – 3 y1 – 2y2 – 3y3 s.a.: x1 + y1 + y2 + y3 ≥ 2 f= -6,8 [0,6; 1; 1] 1 6 f= - 6,667 f= -5 [0; 1; 1] [1; 0,333; 1] y1 = 0 y1 = 1 5 2 f= - 6,5 [1; 1; 0,5] y2= 0 y2 = 1 f= -6 [1; 0; 1] 7 6 f= - 5 [1; 1; 0] y3= 0 y3= 1 Inviável (pq?)