Prof. Ricardo Santos
Manipular problemas pequenos e compreender como o método funciona Considerar problema na forma padrão Coeficientes e função objetivo são organizados como: x... x n variáveis c c 2... c n f Coeficientes da func. objetivo a a 2... a n b Coeficientes das restrições
Dado o problema de PL: Minimizar f(x, )= x 2 s.a. x + <=6 x <=4 x + <=4 x <=, <= Como já sabemos, para transformar o problema anterior na forma padrão necessitamos inserir variáveis de folga: =b (x + )=6 x =b 2 (x )=4 x + =b 3 ( x + )=4+x
A Tabela Simplex fica então da seguinte forma: x 2 Observe que as colunas de, e formam uma matriz identidade., e são chamadas de variáveis básicas x e são variáveis não básicas f 6 4 4
A Tabela Simplex fica então da seguinte forma: x 2 Fixando os valores de x = =, temos que: =6, =4, =4 e f= Se mantermos x = e aumentarmos vemos que a função decresce. Logo, x = = não é uma solução ótima f 6 4 4
Se todos os a i2 <=, i=,2,...m então a variável cresceria indefinidamente de forma que f > Algoritmo Simplex em Tabelas Na estratégia simplex (alterar apenas uma variável nãobásica), deve se tomar o cuidado para manter a nãonegatividade das variáveis de folga Considerando então x =, podemos reescrever as variáveis de folga como: =b (x + )=6 >= =b 2 (x )=4+ >= =b 3 ( x + )=4 >= Das desigualdades anteriores, notamos que apenas e limitam o crescimento de Como a 2 >, então b a 2 >= implica <=b /a 2, então <=6 Como a 32 >, então b 3 a 32 >= implica <=b 3 /a 32, então <=4 Observe que a 22 <, de forma que cresce junto com
Das observações anteriores, notamos que o maior valor para é 4 pois: =minimo(b/a2, b3/a32)=minimo(6,4)=4 Com esse valor, segue que =4 =4 4=. Assim, temos que: Variáveis não básicas: x =, =4 Variáveis básicas: =2, =8, = Função objetivo: f= 8 Se redefinirmos as variáveis não básicas como aquelas com valores nulos e as variáveis básicas aquelas com valores positivos, temos que: Variáveis não básicas: x =, = Variáveis básicas: =2, =8, =4
Se redefinirmos as variáveis não básicas como aquelas com valores nulos e as variáveis básicas aquelas com valores positivos, temos que: Variáveis não básicas: x =, = Variáveis básicas: =2, =8, =4 Nesse caso, entrou na base e saiu da base As colunas das novas variáveis básicas não formam uma matriz identidade e, assim, a tabela simplex precisa ser atualizada O que fizemos até agora (partir de uma solução factível e encontrar outra melhor) foi uma interação do método simplex
As operações realizadas em uma interação do simplex são: Encontre variável não básica que tenha o coeficiente negativo na função objetivo, por exemplo: x k Percorra a coluna na tabela simplex da variável x k e, para cada coeficiente positivo (aik>), calcule a razão bi/aik (valores que anulam a variável básica na linha i) e determine bl/alk=minimo(bi/aik tal que aik>, i=,...,m) Com x k =bl/alk, a variável básica na linha l se anula (isto é, sai da base). Se aik<, i=,...,m então f > e, nesse caso, pare (não tem solução ótima finita) Redefina as variáveis básicas e não básicas e reconstrua a tabela simplex para essa nova solução básica
Antes de atualizar a tabela simplex, precisamos pivotar (aplicar eliminação de Gauss) a tabela anterior para que os coeficientes das variáveis nãobásicas formem uma matriz identidade Assim, a coluna de deve ser transformada na 3a. coluna da matriz identidade Tomemos o elemento 4,2 (intersecção entre e ) como pivô e aplicamos operações elementares sobre a tabela: o. Definimos multiplicadores para cada linha: M2=m2/m42= 2/= 2; M22=m22/m42=/=; M32=m32/m42= /= 2o. Atualizamos cada linha i como: Li=Li (mi2.l4)
A Tabela Simplex fica então da seguinte forma: x 3 2 f+8 2 2 8 4 Agora, observamos que a função objetivo é dada por f= 8 3x +2 Se aumentarmos x mantendo =, a função objetivo descreve na taxa de 3
A Tabela Simplex fica então da seguinte forma: x 3 2 Mantendo =, temos que: =2 2x >= =8+x >= 2 f+8 2 8 4 Note ainda que o valor máximo para x =b/a=
A Tabela Simplex fica então da seguinte forma: x 3 2 f+8 2 2 8 4 Note ainda que o valor máximo para x =b/a= Com x =, a variável básica se anula. Variáveis não básicas: x =, x = 5 Variáveis básicas: x =, 3 x =8, 4 x =4 2
Como há necessidade de atualizar a tabela simplex, escolhemos o elemento, como pivô e aplicamos operações elementares sobre a tabela de forma que: Variáveis não básicas: =, = Variáveis básicas: x =, =8, =4 x 3/2 3/2 f+ /2 /2 8 /2 /2 5
Podemos reescrever as variáveis e função objetivo como: f= +3/2 +3/2, como = =, então f= x = /2 +/2 =8 x =5 /2 /2 3/2 3/2 f+ /2 /2 8 /2 /2 5
Note que os custos relativos (a. Linha) de e são positivos. Logo, qualquer atribuição em ou faz f(x)>= Então, f(x)= é a solução ótima! x 3/2 3/2 f+ /2 /2 8 /2 /2 5
Podemos dividir o algoritmo Simplex em Tabelas em 2 fases: Fase I: Determinar a tabela simplex inicial Matriz de coeficientes contém uma matriz identidade mxm e o vetor independente b Função objetivo é escrita em termos de variáveis não básicas, isto é, coeficientes das variáveis básicas são nulos Iteração= Fase II: Determinação das soluções em cada iteração. Determine o menor dos custos relativos ck=minimo entre os coeficientes das variáveis não básicas 2. Se ck>, então pare. Senão, ck entra na base 3. Se aik<=, i=,...,m, então pare (não existe solução ótima finita. Senão, determine: bl/alk=minimo(bi/aik tal que aik>, i=,...,m). Variável básica da linha l sai da base 4. Atualize a tabela simplex (pivotamente no elemento (l,k). A variável xk passa a ser a variável básica na linha l 5. Iteração=Iteração+ 6. Retorne passo