Capítulo 6 Resolvendo algebricamente um PPL 6.1 O método algébrico para solução de um modelo linear A solução de problemas de programação linear com mais de duas variáveis, não pode ser obtida utilizando-se o algoritmo gráfico. Como cada variável é representada por um eixo do gráfico, um problema com mais de duas variáveis não pode ser representado no plano, o que torna a visualização da solução impossível ou muito complexa, como podemos observar no exemplo a seguir. Exemplo de P.P.L. com três variáveis de decisão. Modelo: Função Objetivo MÁX Z = 4 * X1 + 4 * X2 + 4 * X3 Restrições: R1 → 4 * X1 + 3 * X2 R2 → X2 R3 → ≤ 12 ≤ 3 X3 ≤ 2 Restrições implícitas: R4 → X1 ≥ 0 R5 → X2 ≥ 0 R6 → X3 ≥ 0 OBS.: - O conjunto de soluções viáveis para o modelo acima, será representado graficamente em três dimensões, como um poliedro, cujas faces são os planos limites das restrições. - A função objetivo será representada como uma família de planos paralelos ao plano Zqq apresentado na figura 6.1, que faz um ângulo de 45o com os três eixos. - O ponto ótimo será o vértice do poliedro mais afastado da origem. PESQUISA OPERACIONAL Prof. Cleber Almeida x3 (0,0,4) Zqq (0,0,2) PO (0,4,0) x2 (0,3,0) (3,0,0) (4,0,0) x1 Figura 6.1: Representação gráfica de um modelo a três dimensões. 6.2 Conceitos da álgebra linear utilizados pelo algoritmo SIMPLEX Um sistema de equações lineares pode ser resolvido, algebricamente, dividindo-se e multiplicando-se por constantes as equações e somando-as entre si. Estas operações alteram o sistema inicial, mas não modificam o resultado dos sistemas. Resolvendo o sistema abaixo algebricamente e acompanhando pelo gráfico temos: R1 → 3 * x1 + 3 * x2 R2 → 2 * x1 + 4 * x2 Sistema Inicial: X2 R1 R2 solução (2,1) 1 X1 2 Figura 6.2: Solução gráfica do sistema. =9 =8 PESQUISA OPERACIONAL Prof. Cleber Almeida Determinamos um novo sistema executando as seguintes operações: a) Dividindo R1 por (3) encontramos uma nova equação R1, b) Multiplicando a nova R1 por (-2) e somando com R2 do sistema inicial, encontramos a nova equação R2. O novo sistema é mais simples, mas possui a mesma solução do sistema inicial. R1 → 1 * x 1 + 1 * x 2 R2 → 2 * x2 O novo sistema: =3 =2 X2 R1 solução (2,1) 1 R2 X1 2 Figura 6.3: Solução gráfica do novo sistema. Determinamos um novo sistema executando as seguintes operações: a) Dividindo R2 por (2) encontramos uma nova equação R2, b) Multiplicando a nova R2 por (-1) e somando com R1 do sistema anterior, encontramos a nova equação R1. O novo sistema é mais simples, mas possui a mesma solução do sistema inicial. R1 → 1 * x 1 R2 → 1 * x2 O novo sistema: =2 =1 X2 R1 solução (2,1) 1 R2 X1 2 Figura 6.4: Solução gráfica do novo sistema. PESQUISA OPERACIONAL Prof. Cleber Almeida Generalizando, a partir do exemplo anterior, verificamos que para resolver um sistema qualquer de equações lineares, devemos transformar o sistema da forma geral para uma forma reduzida onde cada variável apareça independente, associada à uma equação. Exemplo: Forma Geral de um sistema linear com duas equações. R1 → a11 * x1 + a12 * x2 = b1 R2 → a21 * x1 + a22 * x2 = b2 Forma Reduzida. R1 → R2 → x1 = d1 x2 = d2 O sistema reduzido possui a mesma solução do sistema original. Usando a notação matricial temos: Forma geral: A*X = B Forma reduzida: I* X = D Onde: A é uma matriz genérica; X é um vetor de variáveis; B e D são vetores de constantes e I é a matriz identidade com a mesma ordem da matriz A. 6.3 O algoritmo GAUSS-JORDAN Esse algoritmo busca transformar a matriz A, alterando inclusive o vetor coluna B, em matrizes equivalentes, sucessivamente, até obter a matriz identidade. Essa transformação é conhecida como diagonalização da matriz A. Portanto o algoritmo consiste em diagonalizar cada uma das colunas da matriz A, até chegar a matriz identidade. Passos do algoritmo: PASSO 1: Diagonalizar a primeira coluna da matriz A, transformando-a na coluna da matriz I. Para isso devemos escolher a primeira posição dessa coluna (denominada de elemento PIVÔ) e dividi-la, tornando-a igual a 1. PASSO 2: Continuar a diagonalização da coluna, subtraindo múltiplos do PIVÔ, das demais posições da coluna, com o objetivo de zerá-los. PASSO 3: Repetir a diagonalização para as demais colunas da matriz A, até obter a matriz I. PESQUISA OPERACIONAL Prof. Cleber Almeida Exemplo: Resolva o exemplo anterior utilizando o algoritmo GAUSS-JORDAN. R1 → 3 * x 1 + 3 * x 2 R2 → 2 * x 1 + 4 * x 2 Sistema Inicial: Equações R1 R2 R1’ R2’ R1” R2” X1 1 PIVÔ = 3 2 1 0 1 0 o X2 3 4 1 o 2 PIVÔ = 2 0 1 =9 =8 b 9 8 3 2 2 1 Operações R1’= R1/3 R2’= R1’*(-2)+R2 R1”= R2”*(-1)+R1’ R2”= R2’/2 OBS.: a) Os PIVÔS devem ser escolhidos de modo a transformar a coluna da diagonal principal da matriz A na diagonal da matriz I, que possui todos o elementos iguais a 1. b) A solução do Sistema é lida nas duas últimas posições da coluna b, no caso x1 = 2 e x2 = 1. 6.4 O Método SIMPLEX É um algoritmo iterativo que procura fornecer solução para problemas de programação linear, através da pesquisa dos vértices do conjunto de soluções viáveis, em cada iteração, visando a otimização de uma função matemática denominada função objetivo. O método explora o fato de o máximo ou mínimo da função objetivo ocorrer em um dos vértices desse conjunto de soluções. X2 P ótimo Z ótimo Campo de soluções viáveis P2 Zqq Reta Z de referência P(0,0) Z=0 X1 P1 Zqq Figura 6.5: Esquema demonstrando a atuação do Método SIMPLEX. PESQUISA OPERACIONAL Prof. Cleber Almeida O Campo de soluções viáveis é um conjunto convexo e seus vértices são soluções básicas viáveis. 6.5 A forma de atuação do Método SIMPLEX a) O método inicia pela escolha de uma solução inicial que seja básica viável, ou seja, procura um vértice do campo de soluções viáveis, normalmente esse vértice é a origem. b) Em seguida avalia o próximo ponto extremo do campo, que cause aumento da função objetivo e calcula o valor da função neste ponto. c) Continua avaliando ponto após ponto até encontrar a solução ótima. 6.6 Solução básica Uma solução básica se apresenta sempre que desejamos solucionar sistemas indeterminados, isto é, sistemas onde o número de incógnitas (n) é maior que o número de equações (m). A solução básica é aquela na qual as variáveis independentes são igualadas a zero. Exemplo: Para o sistema X + Y + Z =15 X -Y+Z=5 temos as seguintes soluções básicas: a) X = 0 (variável independente) Y = 5 (variável básica) Z = 10 (variável básica) b) X = 10 (variável básica) Y = 5 (variável básica) Z = 0 (variável independente) 6.7 Forma Padrão do modelo linear Nessa forma de apresentação as restrições do modelo linear são do tipo aij * xj ≤ bi . Para transformar restrições do tipo aij * xj ≥ bi para a forma padrão devemos multiplicar ambos os lados da inequação por (-1), essa operação altera o sinal da inequação. 6.8 Forma Canônica do modelo linear Essa forma de apresentação do modelo linear é o primeiro passo na solução de um P.P.L. utilizando o método SIMPLEX. Consiste em transformar todas as desigualdades em igualdades, através do acréscimo de novas variáveis, que representarão a folga ou o excesso de cada restrição do modelo. 6.8.1 Variável de Folga (xf) PESQUISA OPERACIONAL Prof. Cleber Almeida Uma restrição qualquer da forma aij * xj ≤ bi pode ser convertida em igualdade, pela adição de uma nova variável (xf), não negativa ao lado esquerdo da desigualdade. Essa variável é numericamente igual à diferença entre os valores a direita e a esquerda da desigualdade. Exemplo: R→ x2 ≤ 3 logo: x2 + xf ≤ 3 portanto: O ponto P(1, 0) O ponto P(1, 1) O ponto P(1, 2) O ponto P(1, 3) tem tem tem tem folga = 3 folga = 2 folga = 1 folga = 0 A Forma Canônica de um sistema com restrições lineares do tipo xj ≤ bi pode ser definida de modo geral, como: aij * a11 * x1 + a12 * x2 + ... + a1n * xn + xf1 = b1 a21 * x1 + a22 * x2 + ... + a2n * xn + xf2 = b2 .................................................................................... + xfm = bm am1 * x1 + am2 * x2 + ... + amn * xn onde: xf1 , xf2 e xfm são variáveis de folga das restrições lineares R1 , R2 e Rm que são do tipo aij * xj ≤ bi . 6.9 Algoritmo SIMPLEX O algoritmo SIMPLEX resume a forma canônica sob uma tabela denominada TABLEAU SIMPLEX INICIAL e a partir desse modelo matricial, procura a solução ótima, alterando o tableau inicial, utilizando como ferramenta básica o algoritmo GAUSS JORDAN. 6.9.1 Passos do Algoritmo SIMPLEX Antes de iniciar o algoritmo devemos: 1) Rescrever o modelo do P.P.L. para a FORMA CANÔNICA. 2) Montar o TABLEAU INICIAL. A seguir aplicamos o algoritmo: PASSO 1: Escolher na linha do tableau, correspondente a função objetivo, o MENOR coeficiente cj, considerando apenas os coeficientes negativos. PASSO 2: Escolher o PIVÔ. Na coluna do coeficiente escolhido no passo anterior, calcular a relação: bi / aij onde: bi ≥ 0 e aij > 0 PESQUISA OPERACIONAL Prof. Cleber Almeida A MENOR relação indica o aij da coluna que será o elemento PIVÔ. PASSO 3: Aplicar o algoritmo GAUSS-JORDAN. PASSO 4: Repetir os passos anteriores até que não haja coeficientes cj NEGATIVOS na linha da função objetivo. Quando todos os cj se tornarem POSITIVOS encontramos a solução ótima (Z ótimo). 6.9.2 Exemplo aplicando o algoritmo Resolver o P.P.L. a seguir utilizando o algoritmo SIMPLEX.. Modelo: Função Objetivo: MAX Z = 1 * x1 + 3 * x2 Restrições: R1 → 2 * x1 + 1 * x2 ≤ 12 R2 → 1 * x1 + 2 * x2 ≤ 10 R3 → 1 * x2 ≤ 4 x1 ≥ 0, x2 ≥ 0 e [x1 ∧ x2 ∈ Ν ] Forma Padrão: R 1 → 2 * x1 + 1 * x 2 + 1 * x 3 = 12 R 2 → 1 * x1 + 2 * x 2 + 1 * x4 = 10 R3 → 1 * x2 + 1 * x5 = 4 Z → -1 * x1 - 3 * x2 +Z= 0 OBS.: - Passamos todos os elementos do lado direito para o lado esquerdo da função objetivo. - As variáveis básicas são: x3, x4 e x5 PESQUISA OPERACIONAL Prof. Cleber Almeida Tableau Inicial: R1 R2 R3 Z x1 2 1 0 -1 x2 1 2 1 -3 x3 1 0 0 0 x4 0 1 0 0 x5 0 0 1 0 Z 0 0 0 1 b 12 10 4 0 bi/aij 12 5 4 Operações OBS.: O cj escolhido foi o (-3) porque é o MENOR; A relação bi / aij escolhida foi 4 porque é a MENOR; logo: O PIVÔ escolhido foi a32 = 1 Aplicando o algoritmo GAUSS-JORDAN temos: Segundo Tableau: R’1 R’2 R’3 Z’ x1 2 1 0 -1 x2 0 0 -1 1 0 x3 1 0 0 0 x4 0 1 0 0 x5 -1 -2 1 3 Z 0 0 0 1 b 8 2 4 12 bi/aij 4 2✓ Operações R’1 = R’3 * (-1) + R1 R’2 = R’3 * (-1) + R2 R’3 = R3 / (1° PIVÔ ) Z’ = R’3 * 3 + Z Solução Básica Viável encontrada no segundo tableau: Variáveis básicas: São aquelas que pertencem à matriz identidade, no caso: x2 = 4, x3 = 8, x4 = 2 e Z = 12 Variáveis não básicas: São aquelas que não pertencem à matriz identidade, no caso: x1 = 0 e x5 = 0 OBS.: As variáveis não básicas devem assumir valor ZERO para que as variáveis básicas assumam os valores da coluna b do tableau. Terceiro Tableau: R”1 R”2 R”3 Z” x1 0 1 0 0 x2 0 0 1 0 x3 1 0 0 0 x4 -2 1 0 1 x5 3 -2 1 1 Z 0 0 0 1 b 4 2 4 14 bi/aij Operações R”1 = R”2 * (-2) + R’1 R”2 = R’2 / (2° PIVÔ ) R”3 = R”2 * 0 + R’3 Z” = R’2 * 1 + Z’ OBS.: Como não existem mais valores negativos na linha da função objetivo, podemos afirmar que encontramos a solução ótima para o P.P.L. analisado, logo: Variáveis de decisão: (variável básica no último tableau) x1 = 2 PESQUISA OPERACIONAL Prof. Cleber Almeida x2 = 4 (variável básica no último tableau) Variáveis de folga: x3 = 4 (variável básica no último tableau) x4 = 0 (variável não básica no último tableau) x5 = 0 (variável não básica no último tableau) Função objetivo: Z = 14 (variável básica no último tableau)