220 likes | 391 Views
PROGRAMAÇÃO INTEIRA. 27 de maio de 2014. PROGRAMAÇÃO INTEIRA. 5. 4. 3. x 2. 2. 1. 0. 0. 1. 2. 3. 4. 5. x 1. É um caso particular da Programação Linear em que todas as variáveis são restritas a valores inteiros.
E N D
PROGRAMAÇÃO INTEIRA 27 de maio de 2014
PROGRAMAÇÃO INTEIRA 5 4 3 x2 2 1 0 0 1 2 3 4 5 x1 É um caso particular da Programação Linear em que todas as variáveis são restritas a valores inteiros. Aplicações em problemas envolvendo número de itens, como televisores, automóveis, número de estágios...
Na resolução desses problemas, além da Função Objetivo e das restrições, são acrescentadas 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) Há problemas, no entanto, em que apenas algumas variáveis são restritas a valores inteiros. Nesse caso, as condições de integralidades são acrescentadas apenas para estas. Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1≥ 0 (inteiro) x2 ≥ 0 Temos, então a Programação Linear com Inteiros
No decorrer da resolução dos problemas de Programação Inteira, aparecem os seguintes tipos de soluções intermediárias: - soluções inteiras: todas as variáveis exibem valores inteiros. - soluções não-inteiras: pelo menos uma variável exibe um valor não-inteiro. As soluções não-inteiras são eliminadas passo-a-passo restando ao final a solução inteira ótima. A estratégia de resolução consiste em: 1. Aplicar o SIMPLEX ao problema original com as condições de integralidaderelaxadas Se coincidir desta solução ser inteira, ela é a solução do problema. 2. Formular e resolver sucessivos problemas de Programação Linear. Em cada problema é acrescentada um nova restrição a uma variável não-inteira, convergindo-se, assim, para asolução inteira ótima.
Essa estratégia pode ser aplicada com o auxílio do Método de Branch-and-Bound, que consta de duas operações básicas: bifurcação(“branch”) e limitação (“bound”). 100 P xj xj [xj*] xj ≥ [xj*] + 1 80inteira Guardada 70 não-inteiranão bifurcável SP1 SP2 A bifurcação gera novos problemas restritos. A limitação evita a resolução de problemas cujas soluções se mostram, antecipadamente, piores (economiza esforço computacional). xj xj
Eliminação de Intervalo 5 4 3 x2 2 1 0 0 1 2 3 4 5 x1 Numa solução intermediária não-inteira, deve haver pelo menos uma variável xj cujo valor xj* é não-inteiro. Seja [xj*] a parte inteira de xj. Então, a condição necessária para que xj seja inteiro é xj [xj*]ouxj≥[xj*] + 1 Ou seja: o intervalo [xj*]<xj < [xj*] + 1 deve ser eliminado da busca Exemplo: x2* = 2,6 [x2*] = 2 Intervalo eliminado2<x2 < 2 + 1
Eliminação de Intervalo: Bifurcação (“branch”) Ao dar continuidade à resolução, parte-se da solução intermediária não-inteira FP Problema de Máximo P xj FSP1 < FP FSP2 < FP xj [xj*] xj ≥ [xj*] + 1 e criam-se dois sub-problemas(bifurcação) com as devidas restrições: SP1 Sub-problema 1: xj [ xj* ] SP2 Sub-problema 2: xj≥[ xj* ] + 1 A solução de qualquer Sub-Problema é mais restrita do que a do Problema que a originou. Portanto, a sua solução é necessariamente pior do que a do Problema. Este fato não preocupa porque faz parte do caminho de busca de uma solução inteira. Heurística: havendo mais de uma variável com valor não-inteiro, deve-se selecionar, para bifurcação, aquela mais afastada do valor inteiro (mais próxima de 0,5).
LIMITAÇÃO (“Bound”) FP xj xj FSP1 < FPinteira FSP2 < FSP1 não-inteiranão bifurcável Ao se chegar a uma primeira solução inteira, esta não é necessariamente a ótima porque outras soluções inteiras ainda podem ser encontradas no processo de bifurcação. O valor (F) da Função Objetivo desta primeira solução inteira serve de limite (“bound”) para as soluções seguintes. Em Problemas de Mínimo limite superior. Em Problemas de Máximo limite inferior. 100 P P xj xj Qualquer outra solução inteira posteriormente encontrada com um valor melhor do que F, deve ser adotada como solução ótima provisória. Se pior, deve ser descartada. xj [xj*] xj [xj*] xj ≥ [xj*] + 1 xj ≥ [xj*] + 1 Qualquer solução não-inteira com um valor pior do que F, não deve ser bifurcada: as soluções bifurcadas são necessariamente piores. 80inteira Guardada 70 não-inteiranão bifurcável SP1 SP1 SP2 SP2 Exemplo Problema de Máximo xj xj
Max f = 3 x1 + 4 x2 s.a.: 2 x1 + x2 6 2 x1 + 3 x2 9 x1 ≥ 0 (inteiro) x2 ≥ 0 (inteiro) x1 = 2,5x2 = 1 5 f = 11,50 4 3 x1 = 1x2 = 2 x2 f = 11,00 2 1 0 0 1 2 3 4 5 x1 7 3 1 5 6 2 inviável Problema Relaxado f = 12,75 x1 = 2,25x2 = 1,50 Duas soluções piores... x2 1 x2 2 x1 = 1,5x2 = 2 f = 12,5 x1 2 x1 1 Não-inteira não-bifurcável: pior que a outra x1 = 1x2 = 2,33 4 f = 12,33 x2 3 inviável x2 2 x1 = 0x2 = 3 f = 12,00 SOLUÇÃO
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 10 x1 + 5 y1 + 3 y2 + 4 y3 10 x1≥ 0 y1 , y2 , y3 = 0, 1 [0,6; 1; 1] f= -6,8 6 3 0 1 2 5 y1= 0 [1; 0,333; 1] [0; 1; 1] f= -5 f= - 6,667 y2= 0 y1= 1 y1= 1 4 f= - 6,5 [1; 1; 0,5] y3= 0 y3= 1 [1; 1; 0] f= - 5 f= -6 [1; 0; 1] Inviável (pq?)
Na Engenharia de Processos, o problema central é a criação de um fluxograma de processo. Neste problema, há variáveis inteiras e variáveis contínuas. As variáveis inteiras binárias correspondem à presença (1) ou não (0) de um equipamento. As variáveis contínuas correspondem às variáveis de processo (vazões, temperaturas, concentrações, dimensões). Temos, então, a Programação LinearInteira Mista (PLIM) “Mixed Integer Linear Programming” (MILP). e a Programação Não-LinearInteira Mista (PNLIM) “Mixed Integer Nonlinear Programming” (MINLP).
6.5.4 Resolução por Super-estruturas Escrevem-se os modelos dos equipamentos e conexões. A cada equipamento é associada uma variável binária. Na solução: (1) equip. presente; (0) equip. ausente. Resolve-se um problema de programação não-linear com inteiros: geradas e analisadas diversas estruturas..