Pular para o conteúdo principal

Método Simplex (parte 2) - Exemplo

Exemplo: método Simplex

Solução através do método Simplex do Problema seguinte:

Maximizar Z = f(x,y) = 3x + 2y
sujeita às restrições: 2x + y ≤ 18
                                  2x + 3y ≤ 42
                                  3x + y ≤ 24
                                  x ≥ 0 , y ≥ 0
Consideram-se as seguintes fases:

Realizar uma mudança de variáveis e normalizar o sinal dos termos independentes.

Realiza-se uma mudança na nomenclatura das variáveis. Estabelecendo a seguinte correspondência:

x passa a ser X1
y passa a ser X2

Como os termos independentes de todas as restrições são positivos não é necessário fazer nada. Caso contrário, se deverá multiplicar por "-1" ambos os lados da inequação (considerando que esta operação também afeta o tipo de restrição).

Normalizar as restrições.
As inequações são transformadas em equação adicionando variáveis de folga, de excesso e artificiais, conforme a tabela a seguir:

Tipo de desigualdade Tipo de variável que aparece
- excesso + artificial
= + artificial
+ folga
Neste caso, deve-se introduzir uma variável de folga (X3, X4 e X5) em cada uma das restrições do tipo ≤, para convertê-las em igualdades, resultando o sistema de equações lineares:

2·X1 + X2 + X3 = 18
2·X1 + 3·X2 + X4 = 42
3·X1 + X2 + X5 = 24

Igualar a função objetivo à zero.

Z - 3·X1 - 2·X2 - 0·X3 - 0·X4 - 0·X5 = 0

Escrever a tabela inicial do método Simplex.

A tabela inicial do método Simplex é composta por todos os coeficientes das variáveis de decisão do problema original e as de folga, excesso e artificiais adicionadas no passo 2 (nas colunas, sendo P0 o termo independente e o resto das variáveis Pi coincidem com Xi), e as restrições (das linhas). A coluna Cb contém os coeficientes das variáveis que estão na base.

A primeira linha é formada pelos coeficientes da função objetivo, enquanto que a última linha contém o valor da função objetivo e os custos reduzidos Zj - Cj.

A última linha é calculada da seguinte forma: Zj = Σ(Cbi·Pj) para i = 1..m, onde se j = 0, P0 = bi e C0 = 0, e caso contrário Pj = aij. Embora seja a primeira tabela do método Simplex e que todos os Cb sejam nulos, pode-se simplificar o cálculo, e assim termos Zj = -Cj.

Tabela I . Iteração 1
  3 2 0 0 0
Base Cb P0 P1 P2 P3 P4 P5
P3 0 18 2 1 1 0 0
P4 0 42 2 3 0 1 0
P5 0 24 3 1 0 0 1
Z 0 -3 -2 0 0 0

Critério de parada.

Se o objetivo é maximizar, quando na última linha (linha indicadora) não exista nenhum valor negativo entre os custos reduzidos (colunas P1 em diante) a condição de parada é alcançada.

Neste caso, o algoritmo chega ao final, porque já não existe possibilidade de melhoria. O valor de Z (coluna P0) é a solução ótima do problema.

Outra possibilidade é que na coluna da variável de entrada à base, todos os valores são negativos ou nulos. Isto indica que o problema não se encontra delimitado e sua solução sempre poderá ser melhorada. Neste caso, não será necessário continuar realizando iterações indefinidas e pode-se finalizar o algoritmo.

Caso contrário, as seguintes etapas são executadas de forma iterativa.

Escolha da variável de entrada e saída da base.

Em primeiro lugar, determina-se a variável que entra na base. Para isto é escolhida a coluna em que o valor da linha Z seja o menor entre todos os negativos. Neste caso seria a variável X1 (P1) de coeficiente -3.

Se houver dois ou mais coeficientes iguais que satisfazem a condição anterior (caso de empate), então se optará pela variável que seja básica.

A coluna da variável que entra na base chama-se coluna pivô (na cor verde).

Depois de obter-se a variável que entra na base, determina-se qual será a variável que sairá da mesma. A decisão é baseada em um cálculo simples: dividir cada termo independente (coluna P0) entre o elemento correspondente da coluna pivô, desde que ambos elementos sejam estritamente positivos (maior que zero). É escolhida a linha cujo resultado é mínimo.

Se houver algum elemento menor ou igual a zero não se realiza tal cálculo. Caso todos os elementos da coluna pivô tenham esta condição, o critério de parada seria satisfeito e o problema teria uma solução não delimitada (ver teoria do método Simplex).

Neste exemplo: 18/2 [=9] , 42/2 [=21] y 24/3 [=8]

O termo da coluna pivô que na divisão anterior deu lugar ao menor quociente positivo, indica a linha de variável de folga que sai da base. Neste caso, resulta ser X5 (P5), de coeficiente 3. Esta linha chama-se linha pivô (na cor verde).

Se ao realizar o cálculo dos quocientes, dois ou mais resultados satisfaçam o critério para a escolha do elemento de saída da base (caso de empate), é escolhida a variável não-básica (sempre que possível).

A intersecção da linha pivô e coluna pivô marca o elemento pivô, neste caso o 3.

Atualizar a tabela.
Os novo valores da tabela devem ser calculados como é explicado a seguir:

Na linha do elemento pivô cada novo elemento é calculado como:
Novo Elemento Linha Pivô = Elemento Anterior Linha Pivô / Pivô
Nas demais linhas, cada elemento é calculado como:
Novo Elemento Linha = Elemento Anterior Linha - (Elemento Anterior Linha na Coluna Pivô * Novo Elemento Linha Pivô)
Com isto se normaliza o elemento pivô e seu valor torna-se 1, enquanto que os demais elementos da coluna pivô são anulados (análogo ao método de Gauss-Jordan).

A seguir, mostra-se os cálculos da linha P4:

Anterior Linha P4                                        42 2 3 0 1 0
                                                                  - - - - - -
Elemento Anterior Linha na Coluna Pivô 2 2 2 2 2 2
                                                                  x x x x x x
Nova Linha Pivô                                         8 1 1/3 0 0 1/3
                                                                  = = = = = =
Nova Linha P4                                        26 0 7/3 0 1 -2/3

A tabela correspondente a esta segunda iteração é:

Tabela II . Iteração 2
  3 2 0 0 0
Base Cb P0 P1 P2 P3 P4 P5
P3 0 2 0 1/3 1 0 -2/3
P4 0 26 0 7/3 0 1 -2/3
P1 3 8 1 1/3 0 0 1/3
Z 24 0 -1 0 0 1

Ao verificar o critério de parada observado não é cumprido, já que entre os elementos da última linha há o valor de um negativo, -1. Neste caso, novamente realiza-se a iteração nos passos 6 e 7.

6.1. A variável que entra na base é X2 (P2), pois é a variável que corresponde à coluna em que se encontra o coeficiente -1.

6.2. Para calcular a variável de saída, dividem-se os termos da coluna P0 entre os termos correspondentes da nova coluna pivô: 2 / 1/3 [=6] , 26 / 7/3 [=78/7] e 8 / 1/3 [=24]. Como o menor quociente positivo é 6, a variável que sai da base é X3 (P3).

6.3. O elemento pivô é 1/3.

7. Atualizando novamente os valores da tabela se obtém:

Tabela III . Iteração 3
  3 2 0 0 0
Base Cb P0 P1 P2 P3 P4 P5
P2 2 6 0 1 3 0 -2
P4 0 12 0 0 -7 1 4
P1 3 6 1 0 -1 0 1
Z 30 0 0 3 0 -1

Uma nova verificação do critério de parada revela que entre os elementos da linha indicadora, novamente temos um negativo, -1. Significa que ainda não se chegou à solução ótima e é preciso continuar iterando (passos 6 e 7):

6.1. A variável que entra na base é X5 (P5), pois é a variável que corresponde ao coeficiente -1.

6.2. A variável de saída é escolhida realizando o cálculo do quociente dos termos da coluna de termos independentes e os termos correspondentes da nova coluna pivô: 6/(-2) [=-3] , 12/4 [=3], e 6/1 [=6]. Nesta ocasião é X4 (P4).

6.3. O elemento pivô é 4.

7. Depois de atualizar todas as linhas, tem-se a seguinte tabela:

Tabela IV . Iteração 4
  3 2 0 0 0
Base Cb P0 P1 P2 P3 P4 P5
P2 2 12 0 1 -1/2 1/2 0
P5 0 3 0 0 -7/4 1/4 1
P1 3 3 1 0 3/4 -1/4 0
Z 33 0 0 5/4 1/4 0

Fim do algoritmo.

Observa-se que na última linha, todos os coeficientes são positivos, satisfazendo assim o critério de parada.

A solução ótima é dada pelo valor de Z na coluna dos termos independentes (P0), neste exemplo: 33. Na mesma coluna, pode-se ver o ponto em que é atingido, observando as linhas correspondentes das variáveis de decisão que entraram na base: X1 = 3 e X2 = 12.

Desfazendo a mudança de variáveis é obtido x = 3 e y = 12.

Comentários

Postagens mais visitadas deste blog

A História da Programação Linear

O desenvolvimento de técnicas algébricas para se lidar com inequações lineares é algo bastante antigo. Durante o século XVIII, o matemático e físico Jean-Baptiste Joseph Fourier desenvolveu vários métodos inovadores para se resolver sistemas de ineqüações. Um dos principais algoritmos desenvolvido por Fourier foi o Método de Eliminação de Fourier–Motzkin. Durante a Segunda Guerra Mundial, novas tecnologias bélicas levaram à criação de grupos acadêmicos com o objetivo de resolver problemas como o uso eficiente de radares, canhões antiaéreos, escoltas navais, etc. O objetivo era sempre reduzir custos militares e buscar maximizar as baixas inimigas. Para resolver estes problemas, a Programação Linear mostrou-se extremamente útil. Os grupos acadêmicos que a utilizavam eram sempre mantidos secretos até o ano de 1947, após o término da guerra. Foi quando a Programação Linear passou a ser muito usada em empresas com o objetivo de reduzir despesas e maximizar lucros. Também no ano de ...

Vídeo Aulas

Vídeo Aulas Matrizes https://www.youtube.com/embed/gE_1LTPwhV0 https://www.youtube.com/embed/pNWx2LE9meQ Método Gráfico https://www.youtube.com/embed/B518pKT7xks https://www.youtube.com/embed/4hZKBvMTOLI Método Simplex https://www.youtube.com/embed/OD0BVZbDieY https://www.youtube.com/embed/uendv1Khpcw Dualidade https://www.youtube.com/embed/z6-kdJoSwpg https://www.youtube.com/embed/tgPe1XnK9aU

Teoria de Programação Linear

Geometricamente, as restrições lineares definem um poliedro convexo, que é chamado de conjunto dos pontos viáveis. Uma vez que a função objectivo é também linear, todo ótimo local é automaticamente um ótimo global. A função objetivo ser linear também implica que uma solução ótima pode apenas ocorrer em um ponto da fronteira do conjunto de pontos viáveis. Existem duas situações nas quais uma solução ótima não pode ser encontrada. Primeiro, se as restrições se contradizem (por exemplo, x ≥ 2 e x ≤ 1) logo, a região factível é vazia e não pode haver solução ótima, já que não pode haver solução nenhuma. Neste caso, o PL é dito inviável. Alternativamente, o poliedro pode ser ilimitado na direção da função objetivo (por exemplo: maximizar x1 + 3 x2 sujeito a x1 ≥ 0, x2 ≥ 0, x1 + x2 ≥ 10), neste caso não existe solução ótima uma vez que soluções arbitrariamente grandes da função objetivo podem ser construídas, e o problema é dito ilimitado. Fora estas duas condições patológicas (que são...