Pesquisa Operacional Prof. José Luiz Resolver um problema de Programação Linear significa basicamente resolver sistemas de equações lineares; Esse procedimento, apesar de correto, é bastante trabalhoso, podendo ficar impraticável; Para resolver um problema real de Programação Linear precisamos de uma sistemática que nos diga: qual o sistema de equações que deve ser resolvido; que o próximo sistema a ser resolvido fornecerá uma solução melhor que os anteriores; Como identificar a solução ótima, uma vez que a tenhamos encontrado Essa sistemática é dada pelo 1
Procedimentos: Passo 1: Introduzir as variáveis de folga, uma para cada desigualdade. Passo 2: Passo 3: Passo 4: Montar um quadro para os cálculos, colocando os coeficientes de todas as variáveis com os respectivos sinais e, na última linha, incluir os coeficientes da função-objetivo transformada. Estabelecer uma solução básica inicial, usualmente atribuindo zero às variáveis originais e achando valores positivos para as variáveis de folga. Como próxima variável a entrar na base, escolher a variável não-básica que fornece, na última linha, a maior contribuição para o aumento da função objetivo (ou seja, tem o maior valor negativo). Se todas as variáveis que estão fora da base tiverem coeficientes nulos ou positivos nessa linha, a solução atual é ótima. Se alguma dessas variáveis tiver valor nulo, temos outra solução ótima, com o mesmo valor da função-objetivo. Passo 5: Passo 6: Para escolher a variável que deve deixar a base, deve-se realizar o seguinte procedimento: a) Dividir os elementos da última coluna pelos correspondentes elementos positivos da coluna da variável que vai entrar na base. Se não houver elemento nenhum positivo nessa coluna, o processo deve parar, já que a solução é ilimitada. b)o menor coeficiente indica a equação cuja respectiva variável básica deverá ser anulada, tornando-se variável não-básica. Usando operações com as linhas da matriz, transformar a coluna da nova variável básica num vetor identidade, onde o elemento 1 aparece na linha correspondente à variável que está sendo anulada. Passo 7: Retornar ao PASSO 4 para iniciar nova iteração. 2
Exemplo Prático MAX Z = 3X1 + 5X2; Sujeito a (S.A.) 2x1 + 4x2 10 6x1 + x2 20 x1 x2 30 x1 0; x2 0 1º Passo: Igualar a Função Objetivo à Zero Z 3x1 5x2 = 0 2º Passo: Inserir as variáveis de folga 1) 2x1 + 4x2 + xf1 = 10 2) 6x1 + x2 + xf2 = 20 3) X1 x2 + xf3 = 30 Exemplo Prático 3º Passo: Construir a tabela com o objetivo de Maximizar Z Entra 1-3 -5 0 0 0 0 0 2 4 1 0 0 10 0 6 1 0 1 0 20 0 1-1 0 0 1 30 Objetivo: Desaparecer os nºs negativos em Z 4º Passo: Identificar a variável que entra. O método é procurar o número negativo de maior valor absoluto na equação da função objetivo. Observamos (-5) em X2. 5º Passo: Identificar a linha que sai (LINHA PIVÔ). O Método é dividir os valores base pelo número da coluna que entra (Coluna X2). 10 / 4 = 2,5 20 / 1 = 20 30 / -1 = -30 Escolher a linha em que o resultado foi o menor positivo. Observamos que o menor positivo é 2,5, e a linha é a segunda. Sai 3
6º Passo: Identificar o elemento PIVÔ. Este elemento está localizado no cruzamento da coluna que entra com a linha que sai. Neste caso, o número é 4 7º Passo: Calcular a nova linha PIVÔ. O cálculo é feito dividindo cada elemento da linha PIVÔ pelo número encontrado no cruzamento, ou seja, 4. 0 2 4 1 0 0 10 : 4 NLP objetivo existente na coluna que entra. Observemos que o nº é (-5), então o oposto é (+5). O resultado da multiplicação é então somado a 1ª linha da tabela e então é calculada a nova 1ª Linha. objetivo existente na coluna que entra. Observemos que o nº é (-5), então o oposto é (+5). O resultado da multiplicação é então somado a 1ª linha da tabela e então é calculada a nova 1ª Linha. NOVA 1ª LINHA X (5) 0 2,5 5 1,25 0 0 12,5 + 1-3 -5 0 0 0 0 1-0,5 0 1,25 0 0 12,5 NLP Resultado Mult. 1ª Linha da Tab. Nova 1ª Linha. A segunda linha da nova tabela é a própria linha PIVÔ, implica que a próxima linha a ser calculada será a nova 3ª Linha. 4
NOVA 3ª LINHA Seguindo o mesmo padrão de cálculo da 1ª linha, a 3ª linha é encontrada multiplicando a Nova Linha Pivô (NLP) pelo oposto existente na 3ª Linha, na coluna que entra. O nº é 1 e o oposto é -1. O resultado é somado com a antiga 3ª linha. Após esta soma, encontra-se a nova 3ª Linha. X (-1) 0-0,5-1 -0,25 0 0-2,5 + 0 6 1 0 1 0 20 0 5,5 0-0,25 1 0 17,5 NLP Resultado Mult. 3ª Linha da Tab. Nova 3ª Linha. NOVA 4ª LINHA Seguindo o mesmo padrão de cálculo da 3ª linha, a 4ª linha é encontrada multiplicando a Nova Linha Pivô (NLP) pelo oposto existente na 4ª Linha, na coluna que entra. O nº é -1 e o oposto é +1. O resultado é somado com a antiga 4ª linha. Após esta soma, encontra-se a nova 4ª Linha. X (+1) + 0 1-1 0 0 1 30 0 1,5 0 0,25 0 1 32,5 NLP Resultado Mult. 4ª Linha da Tab. Nova 4ª Linha. 5
9º Passo: Reescrever a tabela com as novas linhas calculadas. 1-0,5 0 1,25 0 0 12,5 1ª Linha 2ª Linha 0 5,5 0-0,25 1 0 17,5 3ª Linha 0 1,5 0 0,25 0 1 32,5 4ª Linha 10º Passo: Apresentar a solução: Matriz Solução 1 0 0 0 1 0 0 0 1 1-0,5 0 1,25 0 0 12,5 0 5,5 0-0,25 1 0 17,5 0 1,5 0 0,25 0 1 32,5 VARIÁVEIS BÁSICAS X2 = 2,5 XF2 = 17,5 XF3 = 32,5 VARIÁVEIS NÃO BÁSICAS X1 = 0 XF1 = 0 VALOR DE Z Z = 12,5 A SOLUÇÃO NÃO É ÓTIMA PORQUE AINDA APARECE Nº NEGATIVO NA FUNÇÃO OBJETIVO (X1 = -0,5), NESTE CASO, TEMOS QUE RECALCULAR. NOVA ETAPA RECÁLCULO DA TABELA Entra 1-0,5 0 1,25 0 0 12,5 0 5,5 0-0,25 1 0 17,5 Sai 0 1,5 0 0,25 0 1 32,5 Objetivo: Desaparecer os nºs negativos em Z 4º Passo: Identificar a variável que entra. O método é procurar o número negativo de maior valor absoluto na equação da função objetivo. Observamos (-0,5) em X1. 5º Passo: Identificar a linha que sai (LINHA PIVÔ). O Método é dividir os valores base pelo número da coluna que entra (Coluna X1). 2,5 / 0,5 = 5 17,5 / 5,5 = 3,18 32,5 / 1,5 = 21,67 Escolher a linha em que o resultado foi o menor positivo. Observamos que o menor positivo é 3,18 e a linha é a terceira. 6
6º Passo: Identificar o elemento PIVÔ. Este elemento está localizado no cruzamento da coluna que entra com a linha que sai. Neste caso, o número é 5,5 7º Passo: Calcular a nova linha PIVÔ. O cálculo é feito dividindo cada elemento da linha PIVÔ pelo número encontrado no cruzamento, ou seja, 5,5. 0 5,5 0-0,25 1 0 17,5 Sai 5,5 0,000 1,000 0,000-0,045 0,182 0,000 3,182 NLP O método é multiplicar a linha PIVÔ pelo número oposto do nº na função objetivo existente na coluna que entra. Observemos que o nº é (-0,5), então o oposto é (+0,5). O resultado da multiplicação é então somado a 1ª linha da tabela e então é calculada a nova 1ª Linha. NOVA 1ª LINHA objetivo existente na coluna que entra. Observemos que o nº é (-0,5), então o oposto é (+0,5). O resultado da multiplicação é então somado à 1ª linha da tabela e então é calculada a nova 1ª Linha. 5,5 0,000 1,000 0,000-0,045 0,182 0,000 3,182 NLP 0,5 0 0,5 0-0,023 0,0909 0 1,5909 Resultado Mult. + 1-0,5 0 1,25 0 0 12,5 Soma com a 1ª Linha 1 0 0 1,2273 0,0909 0 14,091 Nova 1ª Linha A próxima linha a ser calculada será a nova 2ª Linha. 7
NOVA 2ª LINHA objetivo existente na coluna que entra. Observemos que o nº é (+0,5), então o oposto é (-0,5). O resultado da multiplicação é então somado à 2ª linha da tabela e então é calculada a nova 2ª Linha. 5,5 0,000 1,000 0,000-0,045 0,182 0,000 3,182 NLP -0,5 0-0,5 0 0,0227-0,091 0-1,591 Resultado Mult. + Soma com a 2ª Linha 0 0 1 0,2727-0,091 0 0,9091 Nova 2ª Linha A próxima linha a ser calculada será a nova 4ª Linha. É a quarta porque a terceira e a NOVA LINHA PIVÔ e ela não é recalculada. NOVA 4ª LINHA objetivo existente na coluna que entra. Observemos que o nº é (+1,5), então o oposto é (-1,5). O resultado da multiplicação é então somado à 4ª linha da tabela e então é calculada a nova 4ª Linha. :5,5 0,000 1,000 0,000-0,045 0,182 0,000 3,182 NLP -1,5 0-1,5 0 0,0682-0,273 0-4,773 Resultado Mult. + 0 1,5 0 0,25 0 1 32,5 Soma com a 4ª Linha 0 0 0 0,318-0,273 1 27,73 Nova 4ª Linha Após calculada a última linha da tabela, reescrevemos a nova tabela e observamos se ainda tem algum número negativo na linha da função objetivo. Se não tiver, identificamos a solução ótima para o problema de programação linear. 8
9º Passo: Rescrever a nova tabela 1 0 0 1,2273 0,0909 0 14,091 Nova 1ª Linha 0 0 1 0,2727-0,091 0 0,9091 Nova 2ª Linha 0 1,0 0-0,045 0,182 0 3,182 NLP 0 0 0 0,318-0,273 1 27,73 Nova 4ª Linha 10º Passo: Apresentar a solução: Matriz Solução 1 0 0 0 1 0 0 0 1 VARIÁVEIS DE SOLUÇÃO 1 0 0 1,2273 0,0909 0 14,091 Nova 1ª Linha 0 0 1,0 0,2727-0,091 0 0,9091 Nova 2ª Linha 0 1,0 0-0,045 0,182 0 3,182 NLP 0 0 0 0,318-0,273 1,0 27,73 Nova 4ª Linha VARIÁVEIS BÁSICAS X1 = 3,18 X2 = 0,91 XF3 = 27,73 VARIÁVEIS NÃO BÁSICAS XF1 = 0 XF2 = 0 VALOR DE Z Z = 14,09 A solução é ótima, pois não temos mais valores negativos em Z 9