Método Simplex Dual Prof. Fernando Augusto Silva Marins Departamento de Produção Faculdade de Engenharia Campus de Guaratinguetá UNESP www.feg.unesp.br/~fmarins fmarins@feg.unesp.br
Introdução Algoritmo proposto por C. E. Lemke baseando-se em observações da aplicação do Método Simplex (Primal) tradicional ao Dual de um modelo de Programação Linear. Útil em algoritmos de programação inteira, algoritmos de Programação Não-linear, e Algoritmos Primais-Duais. Pode ser útil como alternativa ao Método das Duas Fases ou do Big M para inicialização do Método Simplex Primal. É útil para alguns casos que ocorrem na Análise de Sensibilidade e na Programação Paramétrica. 2
Observações. Sabe-se que o vetor formado pelos coeficientes de custo relativo na - aplicação do Simplex Primal, dado por C = C - A (onde = C B B é o vetor dos multiplicadores do Simplex) independe do vetor de constantes das restrições, dado por b. 2. Em geral, para um modelo de Minimização, nem toda Solução Básica que tenha C 0 será viável (isto é, satisfaz as restrições), mas qualquer Solução Básica Viável com C 0 será uma solução ótima para o modelo sob análise. Idéia do método: Iniciar com alguma solução básica, não viável, com C 0. Procurar efetuar mudanças nas soluções básicas de modo que seja mantido para cada uma delas C 0, e não repetindo soluções já analisadas, pode-se achar uma solução ótima para o modelo num número finito de iterações. 3
Definições importantes Considere os problemas Primal e Dual abaixo: (Primal) Min Z = CX sujeito a: {AX = b, X 0} (Dual) Max W = Yb sujeito a: {YA C, Y variáveis livres} Seja B a submatriz da matriz de coeficientes tecnológicos do Primal formada pelas colunas dos coeficientes das variáveis básicas nas restrições (denominadas colunas básicas). Definição :( Base Primal Viável) B é uma Base Primal Viável para esta Base tem-se a seguinte Solução Básica Viável associada: - - X = B b, X = 0 e Z = C B b B N B 4
Observações importantes Condição de otimalidade do Simplex Revisado: - B é Base ótima se 0, com = C B (I) C = C - A Para uma dada solução ótima para o Primal o vetor de multiplicadores do Simplex correspondente é a solução ótima para o Dual associado, satisfazendo portanto suas restrições: C - A 0 (II) B Definição 2: (Base Dual Viável) - B é uma Base Dual viável C - C B B A 0 (III) Analisando conjuntamente as expressões (I), (II), (III) vem: Se B é Base Primal viável e Dual viável então B é Base ótima. 5
Caracterização dos métodos: Simplex Primal: Base Primal viável Base Primal viavel... Base Primal viavel ótima = Base Dual viável. Simplex Dual : Base Dual viável Base Dual viavel... Base Dual viável ótima = Base Primal viável. 6
Fundamentos do Método Simplex Dual: aplicado para um modelo de Minimização Inicia com Base Dual viável garantindo que as novas Bases também são duais viáveis. Utiliza a mesma Tabela do Simplex Primal, com regras para escolha do pivot diferentes. Em todas as Tabelas são mantidos os coeficientes de custo relativo não-negativos. As constantes das restrições não precisam se manter nãonegativas. Termina quando todas as constantes das restrições ficam nãonegativas. 7
Fases de aplicação do algoritmo Passo : Montar uma Tabela para os dados do Primal, contendo uma Solução Básica com as seguintes características: Var. Bas. X X r X m X m+ X s X n b X... 0... 0 A, m... A,s... A,n b........................ X r 0...... 0 A r, m...ar,s...ar,n br........................ X m 0... 0...... A... A A m, m m,s m,n bm 0... 0... C m... Cs... Cn Importante: Todos os C j 0 e b j quaisquer 8
Passo 2: Escolha da variável que sai (linha do pivot) (a) b 0 (b) Caso contrário: seja do pivot. Fases de Aplicação do Algoritmo se Solução Básica atual é ótima. Fim b r b j < 0 X r = min sai da Solução Básica e a linha r é a linha Passo 3: Escolha da variável não-básica que entra (coluna do pivot) (a) < 0 A r, j (b) caso contrário: achar Primal é inviável. Fim C Cj s = max para Ar,j < 0 pivot = Ar,s, Ar, s Ar, j coluna do pivot coluna S, X substitui X no conjunto das variáveis básicas. s r Passo 4: Atualização dos coeficientes da Tabela Efetuar o pivoteamento em r s e voltar ao Passo 2. A, 9
Min Z = X + 4X Exemplo de aplicação do Método Simplex Dual 2 + 3X 4 X + 2X2 - X3 + X4 3 s.a : - 2X - X2 + 4X3 + X4 2 Xi 0, i =, 4 Colocando as variáveis de folga percebe-se que não há uma Solução Básica inicial. Multiplicando-se cada restrição por (-), obtém-se uma Solução Básica inicial para o Método Simplex Dual (que não é Primal viável, mas é Dual viável). Passo : Tabela Var. Bas. X X 2 X 3 X 4 X 5 X 6 b X 5 - -2-0 -3 X 6 2-4 - 0-2 4 0 3 0 0 0
Solução Básica (Dual viável): C = Exemplo X5 = -3, X6 = - 2, X = X2 = X3 = X4 4 0 3 0 0 0 = 0 Passo 2: Escolha da variável que sai Como b = -3 = Min j 5 b X sai e a linha do pivot linha Passo 3: Escolha da variável que entra Como Para Pivot linha: Max = A = - = -, 4-2 entra, X 3 = - C A = - coluna do pivot =
Exemplo Passo 4: Efetuando o pivoteamento obtém-se a nova Solução Básica (Dual viável) dada na Tabela 2. Tabela 2 Var. Bas. X X 2 X 3 X 4 X 5 X 6 b X 2 - - 0 3 X 6 0-3 -2-3 2-8 0 2 2 0 Variável que sai: x 6 linha do pivot = 2 Variável que entra: C 3 A 23 = coluna - 2 = pivot Max = 3 C j A 2, j para A 2, j < 0 pivot entra = X A 3 23 = - 2 2
Exemplo Efetuando o pivoteamento obtém-se a Solução Básica (Dual viável ) da Tabela 3. Tabela 3 Var. Bas. X X 2 X 3 X 4 X 5 X 6 b X 7/2 0 5/2-2 -/2 7 X 3 0 3/2 3/2 - -/2 4 0 /2 0 /2 2 /2 Como tem-se solução ótima: b 7 = 0 solução da Tabela 3 é Base Primal viável e Dual viável 4 X Z * = 7, X = X * = 4, X + 4X * 2 + 3X = X * * * * 3 2 4 * 4 X * 5 = X * 6 = 0 = 7 + 4. 0 + 3. 0 = 7 Se o Primal for de Maximização: Manter C j C j 0 e fazer como Pivot = Min, para Ar, j < 0 Ar,j 3