Aula 02: Algoritmo Simplex (Parte 1) Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Slides baseados no material de Haroldo Gambini
Previously... Aula anterior: Breve histórico Exemplos básicos de Modelagem Método Gráfico Breve introdução (informal) ao Algoritmo Simplex 2 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Exercício Exercício 1 Desenhe no gráfico a região factível (região de soluções) que satisfaz as restrições abaixo: 5x 1 + 2x 2 25 4x 1 3x 2 3 x 1 0, x 1 2 x 2 0 3 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
x 2 12 5x 1 +2x 2 25 11 10 9 8 4x 1 3x 2 3 x 1 2 x 1, x 2 0 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8 9 10 11 12 1 x 1 5 / / 12 48 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex 4 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
x 2 12 5x 1 +2x 2 25 11 10 9 8 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8 9 10 11 12 1 4x 1 3x 2 3 x 1 2 x 1, x 2 0 x 1 5 / / 12 48 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex 4 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 4 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 4 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Definições Preliminares Conjunto Convexo Um conjunto de pontos S é um Conjunto Convexo se o segmento de linha juntando qualquer par de pontos em S é completamente contido em S. Convexo ou não? A E B A B A B C D a b c d 5 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Definições Preliminares Ponto Extremo Em um conjunto convexo S um ponto P é um Ponto Extremo se cada segmento de linha que fica completamente em S e contém P tem P como final da linha. 6 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Definições Preliminares 60 D 50 40 B 30 Quais são os pontos extremos? 20 10 F S E H C A 10 20 30 40 50 60 x 1 7 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 7 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Forma Padrão Um Programa Linear (PL) está na forma padrão se: 1 todas as restrições são de igualdade 2 todas as variáveis são não negativas ( 0) O modelo a seguir está na forma padrão? Minimize: 3x 1 +2, 5x 2 Sujeito a: 8x 1 + 4x 2 32 6x 1 + 6x 2 36 x 1 0 x 2 0 8 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Forma Padrão É possível converter qualquer PL para a forma padrão: 1 Restrições de e se tornam restrições de = por meio da introdução de variáveis de folga Variáveis de folga indicam falta ou excesso 2 Variáveis que podem ser negativas são substituídas por duas variáveis, uma indicando a parte positiva e outra a parte negativa da mesma 9 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Exemplo 3x 1 + 2x 2 6 3x 1 + 2x 2 s 1 = 6. 50x 1 + 35x 3 80 50x 1 + 35x 3 + s 3 = 80 10 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Exemplo min. 3x 1 +2, 5x 2 s.a. 8x 1 + 4x 2 32 6x 1 + 6x 2 36 x 1, x 2 0 11 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Forma Padrão Exercício Coloque na forma padrão: min. 3x 1 +x 2 s.a. x 1 3 x 1 +x 2 4 2x 1 x 2 = 3 x 1, x 2 0 12 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Forma Padrão max(ou min) : s.a. z = c 1 x 1 + c 2 x 2 +... + c n x n a 11 x 11 a 12 x 12... a 1n x 1n = b 1 a 21 x 21 a 22 x 22... a 2n x 2n = b 2........... a m1 x m1 a m2 x m2... a mn x mn = b m x i 0 i 1,..., n 13 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Forma Padrão A = x = a 11 a 12... a 1n a 21 a 22... a 2n... a m1 a m2... a mn x 1 x 2.. x n, b = b 1 b 2... b m Então o sistema de equações de um PL pode ser escrito como: Ax = b 14 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 14 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Variáveis Básicas Definição Em um sistema de equações com n variáveis e m restrições definimos como solução básica uma solução onde temos: Exemplo m variáveis para as quais o sistema é resolvido, essas são chamadas Variáveis Básicas (VB) m n o restante das variáveis permanece fixada em zero - as Variáveis Não-Básicas (VNB) x 1 +x 2 x 2 = 3 +x 3 = 1 Verifique as soluções para V B = {x 1, x 2 } e V B = {x 2, x 3 } 15 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Variáveis Básicas Todo conjunto de V B permite a obtenção de uma solução básica? x 1 +2x 2 +x 3 = 1 2x 1 +4x 2 +x 3 = 3 Tente BV = {x 1, x 2 }... 16 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Pontos Extremos e Soluções Básicas Factíveis Definição Qualquer solução básica onde todas as variáveis são não negativas é uma Solução Básica Factível - SBF. Teorema Um ponto na região factível de um PL é um Ponto Extremo se e somente se é uma Solução Básica Factível para o PL. 17 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
x 2 max. 4x 1 +3x 2 s.a. x 1 +x 2 40 60 D 2x 1 +x 2 60 x 1, x 2 0 50 40 30 B max. 4x 1 +3x 2 s.a. x 1 +x 2 + x 3 = 40 20 E 2x 1 +x 2 +x 4 = 60 10 x 1, x 2, x 3, x 4 0 F C A 10 20 30 40 50 60 x 1 Ex.: V B = {x 1, x 3 } corresponde a qual ponto? Qual o valor de x 2 e x 4 na SBF desse ponto? 18 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
PLs Degenerados Degeneração Eventualmente, mais de um Conjunto de Variáveis Básicas pode corresponder a um mesmo Ponto Extremo. Nesse caso dizemos que o Programa Linear é Degenerado. O impacto de soluções degeneradas na resolução dos PLs será discutido posteriormente. 19 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Direção Ilimitada Definição Em um PL com região factível S e restrições Ax = b, x 0 dizemos que d é uma Direção Ilimitada se para qualquer solução x S e qualquer c 0: x + c d S 20 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Direção Ilimitada x 2 x 14 B 14 min : 50x 1 +100x 2 s.a. : 7x 1 +2x 2 x 3 = 28 2x 1 +12x 2 x 4 = 24 d = 1 1 9 14 12 10 8 6 4 2 (10) z= 320 (4, 4) E z= 600 (11) C 12 10 8 6 4 2 2 4 6 8 10 12 14 x 1 21 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Pontos Extremos e Soluções Factíveis Teorema: Considere um PL na forma padrão com SBF: b 1, b 2,..., b k Qualquer ponto x na região factível pode ser escrito como: k x = d + σ i b i i=1 k em que d = 0 ou é a direção ilimitada e σ i = 1. i=1 22 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Combinações Convexas de SBFs (PL Limitado) max : 4x 1 +3x 2 s.a. : x 1 +x 2 40 2x 1 +x 2 60 x 1, x 2 0 Ponto H (24,12) não é SBF. Pode ser escrito como a combinação convexa de E e C: H = 0,6 E + 0,4 C Ponto G também não é BFS. 60 50 40 30 20 D B E Pode ser escrito como : G = 1 F 6 + 5 H 6 G = 1 F 6 + 5 (0, 6E + 0, 4C) 6 10 F H G C A 10 20 30 40 50 60 x 1 23 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Combinações Convexas de SBFs (PL Ilimitado) 7x 1 +2x 2 x 3 = 28 2x 1 +12x 2 x 4 = 24 Descrevendo F em termos de SBFs: Direção Ilimitada: 4 0 Inclinação para ir de C a F : 14 12 2 d = 4 22 52 12 b 1 = 0 56 x = 0 Desse modo obtemos: 14 4 78 52 z= 320 z= 600 x = d + b 2 E 1 14 12 10 8 6 4 x 2 B (10) D A (4, 4) (11) 2 4 6 8 10 12 14 C F x 1 24 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 24 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
O Algoritmo Simplex Passo 1 Converta o PL para a Forma Padrão. Passo 2 Obtenha uma Solução Básica Factível (se possível) da Forma Padrão. Passo 3 Teste de Otimalidade: Determine se a Solução Básica é Ótima. Se Ótima PARE. Passo 4 Caso não seja ótima - Mudança de Base: determine: qual variável não básica irá entrar na base, com o intuito de melhorar a função objetivo; qual variável básica irá sair da base. Passo 5 Utilize as operações elementares para computar a Nova Solução Básica e volte para o Passo 3. 25 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Exemplo - Móveis Dakota A empresa Dakota fabrica Mesas, Armários e Cadeiras. Cada um desses móveis utiliza madeira e dois tipos de trabalho: acabamento e carpintaria: Recurso Mesa Armário Cadeira Madeira (m 2 ) 8 6 1 Acabamento (horas) 4 2 1,5 Carpintaria (horas) 2 1,5 0,5 Tem-se disponível 48 m 2 de madeira, 20 horas de acabamento e 8 horas de carpintaria. Mesas são vendidas por $ 60, armários por $ 30 e cadeira por $ 20. A empresa tem demanda ilimitada por mesas e cadeiras, enquanto que no máximo 5 armários serão vendidos. 26 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Móveis Dakota max. z = 60x 1 + 30x 2 + 20x 3 s.a. 8x 1 + 6x 2 + x 3 48 4x 1 + 2x 2 + 1, 5x 3 20 2x 1 + 1, 5x 2 + 0, 5x 3 8 x 2 5 x 1, x 2, x 3 0 27 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Movéis Dakota - Forma Padrão max. z = 60x 1 + 30x 2 + 20x 3 s.a. 8x 1 + 6x 2 + x 3 + x 4 = 48 4x 1 + 2x 2 + 1, 5x 3 + x 5 = 20 2x 1 + 1, 5x 2 + 0, 5x 3 + x 6 = 8 x 2 + x 7 = 5 Qual seria uma solução básica factível inicial? 28 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Primeira Solução Básica Factível 0: 60x 1 30x 2 20x 3 = 0 z = 0 1: 8x 1 + 6x 2 + x 3 + x 4 = 48 x 4 = 48 2: 4x 1 + 2x 2 + 1, 5x 3 + x 5 = 20 x 5 = 20 3: 2x 1 + 1, 5x 2 + 0, 5x 3 + x 6 = 8 x 6 = 8 4: x 2 + x 7 = 5 x 7 = 5 VB = x 4, x 5, x 6, x 7 VNB = x 1, x 2, x 3 Quem entra na base? x 1, pois traz maior ganho por unidade. Mas até qual limite? 29 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Limite para Aumento de x 1 0: 60x 1 30x 2 20x 3 = 0 z = 0 1: 8x 1 + 6x 2 + x 3 + x 4 = 48 x 4 = 48 2: 4x 1 + 2x 2 + 1, 5x 3 + x 5 = 20 x 5 = 20 3: 2x 1 + 1, 5x 2 + 0, 5x 3 + x 6 = 8 x 6 = 8 4: x 2 + x 7 = 5 x 7 = 5 LINHA RESTRIÇÃO MÁX x 1 1 x 4 = 48 8x 1 x 4 0 2 x 5 = 20 4x 1 x 5 0 3 x 6 = 8 2x 1 x 6 0 48 / 8 = 6 20 / 4 = 5 8 / 2 = 4 4 x 1 NÃO APARECE x 7 0 (limite mais apertado) 30 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Limite para Aumento de x 1 0: 60x 1 30x 2 20x 3 = 0 z = 0 1: 8x 1 + 6x 2 + x 3 + x 4 = 48 x 4 = 48 2: 4x 1 + 2x 2 + 1, 5x 3 + x 5 = 20 x 5 = 20 3: 2x 1 + 1, 5x 2 + 0, 5x 3 + x 6 = 8? 4: x 2 + x 7 = 5 x 7 = 5 Na linha 3 a variável x 6 sairá da base e entrará a variável x 1. PIVOTEAMENTO: Executam-se as operações elementares para que x 1 apareça com coeficiente 1 nessa linha e com coeficiente 0 em todas as outras. A linha 3 é dita linha pivô. 31 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Pivoteamento 0: 60x 1 30x 2 20x 3 = 0 z = 0 1: 8x 1 + 6x 2 + x 3 + x 4 = 48 x 4 = 48 2: 4x 1 + 2x 2 + 1, 5x 3 + x 5 = 20 x 5 = 20 3: 2x 1 + 1, 5x 2 + 0, 5x 3 + x 6 = 8? 4: x 2 + x 7 = 5 x 7 = 5 32 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Nova SBF 0: 15x 2 5x 3 + 30x 6 = 240 z = 240 1: x 3 + x 4 4x 6 = 16 x 4 = 16 2: x 2 + 0, 5x 3 + x 5 2x 6 = 4 x 5 = 4 3: x 1 + 0, 75x 2 + 0, 25x 3 + 0, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 A solução é ótima? Se não, quem entra e quem sai da base? Dica: quem mais pode contribuir na função objetivo? Repetimos o procedimento anterior considerando x 3... 33 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Limite para Aumento de x 3 0: 15x 2 5x 3 + 30x 6 = 240 z = 240 1: x 3 + x 4 4x 6 = 16 x 4 = 16 2: x 2 + 0, 5x 3 + x 5 2x 6 = 4 x 5 = 4 3: x 1 + 0, 75x 2 + 0, 25x 3 + 0, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 LINHA RESTRIÇÃO MÁX x 3 1 x 4 = 16 + x 3 x 4 0 2 x 5 = 4 0.5x 3 x 5 0 3 x 1 = 4 0.25x 3 x 1 0 4 / 0.5 = 8 4 / 0.25 = 16 4 x 3 NÃO APARECE x 7 0 (limite mais apertado) 34 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Após Pivoteamento: Nova SBF 0: 5x 2 + 10x 5 + 10x 6 = 280 z = 280 1: 2x 2 + x 4 + 2x 5 8x 6 = 24 x 4 = 24 2: 2x 2 + x 3 + 2x 5 4x 6 = 8 x 3 = 8 3: x 1 + 1, 25x 2 + 0, 5x 5 + 1, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 Função objetivo: max z = 5x 2 10x 5 10x 6 Não há mais variáveis atrativas SOLUÇÃO ÓTIMA (x 1,..., x 3 ): (4, 0, 8) BASE ÓTIMA (x 1,..., x 7 ): (4, 0, 8, 24, 0, 0, 5) 35 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Aula de Hoje 1 Definições 2 Forma Padrão 3 Soluções Básicas 4 Algoritmo Simplex 5 Base Ótima - Informações 35 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Base Ótima - Informações A Base Ótima nos fornece algumas informações úteis; por exemplo: Custo Reduzido Restrições Ativas Restrições Inativas 36 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Custo Reduzido 0: 5x 2 + 10x 5 + 10x 6 = 280 z = 280 1: 2x 2 + x 4 + 2x 5 8x 6 = 24 x 4 = 24 2: 2x 2 + x 3 + 2x 5 4x 6 = 8 x 3 = 8 3: x 1 + 1, 25x 2 + 0, 5x 5 + 1, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 Custo Reduzido (CR) A linha 0 indica quanto o aumento de uma unidade em cada variável reduz o valor de z VB tem Custo Reduzido 0 na base ótima VNB (ex. x 2) na base ótima com coeficiente 5 indica que aumentar x 2 em 1 unidade pode diminuir em 5 unidades o valor de z 37 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Restrições Ativas 0: 5x 2 + 10x 5 + 10x 6 = 280 z = 280 1: 2x 2 + x 4 + 2x 5 8x 6 = 24 x 4 = 24 2: 2x 2 + x 3 + 2x 5 4x 6 = 8 x 3 = 8 3: x 1 + 1, 25x 2 + 0, 5x 5 + 1, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 Restrições Ativas (Binding Constraints) Restrições com variável de folga igual a zero. As restrições 2 e 3 (horas de acabamento e carpintaria) são as únicas que estão limitando o aumento do lucro. 38 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Restrições Inativas 0: 5x 2 + 10x 5 + 10x 6 = 280 z = 280 1: 2x 2 + x 4 + 2x 5 8x 6 = 24 x 4 = 24 2: 2x 2 + x 3 + 2x 5 4x 6 = 8 x 3 = 8 3: x 1 + 1, 25x 2 + 0, 5x 5 + 1, 5x 6 = 4 x 1 = 4 4: x 2 + x 7 = 5 x 7 = 5 Restrições Inativas (Non-binding Constraints) Restrições com variável de folga > 0 As restrições 1 e 4, (qtd. de madeira e demanda de armários) são restrições com folga. Ter mais madeira, por exemplo, não vai permitir uma produção maior. 39 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
Exercício 1 Resolva, usando o método Simplex (passo-a-passo): max. 300x 1 + 280x 2 s.a. 70x 1 + 50x 2 350 50x 1 + 80x 2 400 x 1 2 x 1, x 2 0 2 Resolva, usando o método Simplex (passo-a-passo): min. 300x 1 + 280x 2 s.a. 70x 1 + 50x 2 350 50x 1 + 80x 2 400 x 1 2 x 1, x 2 0 40 / 40 Túlio Toffolo Otimização Linear e Inteira Aula 02: Algoritmo Simplex (Parte 1)
/ 12 Perguntas?