Mestrado em Modelagem e Otimização - CAC/UFG Programação Linear - Parte 4 Profs. Thiago Alves de Queiroz Muris Lage Júnior 1/2014 Thiago Queiroz (DM) Parte 4 1/2014 1 / 18
Solução Inicial O método simplex depende de uma solução básica factível inicial (Fase I); Para problemas como: Minimizar z { = c T x Ax b sujeito a : x 0. (1) sendo b 0, temos uma solução básica factível naturalmente; Com a introdução das variáveis de folga, digamos x f, temos: Minimizar z { = c T x Ax + xf = b sujeito a : x 0, x f 0. (2) Thiago Queiroz (DM) Parte 4 1/2014 2 / 18
Solução Inicial Note que a matriz dos coeficientes das restrições é dada por [A I]; Esta matriz fornece a seguinte partição básica factível: B = I: as variáveis básicas são as variáveis de folga x b = x f ; N = A: as variáveis não-básicas são as variáveis originais xn = x; Além disso, a solução básica factível é dada por: xb = x f = b 0; xn = x = 0; Porém, em geral, uma solução básica factível inicial deve ser encontrada. Considere: Minimizar z { = c T x Ax = b sujeito a : x 0. (3) Em que A não tem uma submatriz identidade e que b 0. Thiago Queiroz (DM) Parte 4 1/2014 3 / 18
Solução Inicial A questão é como encontrar uma partição nas colunas de A m n, A = [B N], tal que exista B 1 e x B = B 1 b 0; Uma estratégia simples é fazer uma busca exaustiva e encontrar m colunas linearmente independentes para formar B, satisfazendo x B 0; Note que este procedimento pode envolver a resolução de C n m sistemas de equações lineares m m; Isto é inaceitável para problemas grandes do ponto de vista computacional; Existe um método, chamado de método das duas fases que permite resolver o problema de encontrar uma solução inicial. Thiago Queiroz (DM) Parte 4 1/2014 4 / 18
Quando há restrições de igualdade, não há variáveis de folga; Quando há restrições do tipo, há variáveis de folga, porém aparecem com o coeficiente 1 na restrição; Nestes casos, introduzimos novas variáveis, como se fossem de folga. Vejamos o caso da igualdade: Ax = b Ax + y = b x 0, y 0. Essas novas vaiáveis são chamadas variáveis artificiais: NÃO fazem parte do problema original; Devem ser eliminadas. Thiago Queiroz (DM) Parte 4 1/2014 5 / 18
Para eliminar as variáveis artificiais, utilizamos um novo objetivo; Isto resulta no problema artificial: m Minimizar z a = y i { i=1 Ax + y = b sujeito a : x 0, y 0. (4) A solução ótima desse problema deve ter y i = 0, i = 1,..., m; Os coeficientes na função objetivo artificial podem ser quaisquer números positivos; Caso haja colunas da matriz identidade na matriz A: Tais colunas devem ser utilizadas para formar a base inicial; Completar o restante das colunas com a adição das variáveis artificiais; Thiago Queiroz (DM) Parte 4 1/2014 6 / 18
Vejamos um exemplo em que não precisa adicionar variáveis artificiais em todas as restrições: Minimizar z = x 1 x 2 + 2x 3 x 1 + x 2 + x 3 = 3 sujeito a : 2x 1 x 2 + 3x 3 4 x 1 0, x 2 0, x 3 0. (5) Para ter uma base B factível, precisamos de uma matriz de ordem m = 2, ou seja, de duas colunas linearmente independentes; Note que a segunda restrição é do tipo, sendo necessário acrescentar uma variável de folga com coeficiente positivo: 2x 1 x 2 + 3x 3 + x 4 = 4, com x 4 0. Esta restrição fornece imediatamente uma variável básica, pois [ ] 0 sua coluna corresponde a uma coluna da matriz identidade. 1 Thiago Queiroz (DM) Parte 4 1/2014 7 / 18
A primeira restrição não fornece imediatamente qualquer variável básica. O mesmo seria verdade caso tal restrição fosse do tipo ; Neste caso, seguindo o método das duas fases, criamos uma variável artificial x5 a e adicionamos a tal restrição, ou seja: x 1 + x 2 + x 3 + x5 a = 3, com x 5 a 0. Note que agora temos imediatamente uma variável básica, já que outra coluna da matriz identidade está disponível; O problema artificial é: Minimizar z a = x5 a x 1 + x 2 + x 3 + x5 a = 3 sujeito a : 2x 1 x 2 + 3x 3 + x 4 = 4 x 1 0, x 2 0, x 3 0, x 4 0, x 5 0. (6) Logo, podemos definir as variáveis básicas por x B = (x a 5, x 4); Thiago Queiroz (DM) Parte 4 1/2014 8 / 18
No caso geral, o problema artificial sempre tem uma partição básica factível óbvia: B = I: variáveis básicas xb = y; N = A: variáveis não-básicas x N = x. Com isso, podemos aplicar o método simplex para obter uma base que não contenha variáveis artificiais; O objetivo é chegar em uma base que contenha apenas as variáveis do problema (podendo ter as folgas) e com as colunas originais da matriz A; Isto acontece quando a função objetivo artificial alcançar o valor 0 (zero), isto é, z a = 0, que é o mínimo para o objetivo artificial; Com isso, o problema artificial tem, em geral, infinitas soluções ótimas, isto é, qualquer solução factível do problema original e solução ótima para o problema artificial. Thiago Queiroz (DM) Parte 4 1/2014 9 / 18
Por outro lado, se o problema original for infactível (inviável), então o problema artificial tem solução ótima z a 0; Neste caso, podemos parar a resolução e retornar que o problema original é inviável; Em resumo, o método das duas fases consiste em: Fase I: resolver o problema artificial com o simplex; Fase II: resolver o problema original com o simplex, a partir da base factível obtida na Fase I. No final da Fase I, chegando em z a = 0, podemos eliminar (todas) as variáveis artificiais e as respectivas colunas do modelo, caso tais variáveis estejam fora da base; Thiago Queiroz (DM) Parte 4 1/2014 10 / 18
Se existir alguma variável artificial na base, devemos proceder da seguinte maneira: Etapa 1: Selecione uma variável artificial com coeficiente igual a zero na função objetivo para sair da solução básica e designe sua linha como a linha do pivô; A variável que entra pode ser qualquer variável não-básica (não-artificial) que tenha coeficiente não-zero (positivo ou negativo) na linha do pivô. Execute a operação de pivoteamento; Etapa 2: Remova a coluna e a variável artificial que acabou de sair da base. Se todas as variáveis artificiais com coeficiente igual a zero tiverem sido removias, passe para a Fase II. Caso contrário, volte para a Etapa 1. Thiago Queiroz (DM) Parte 4 1/2014 11 / 18
Exemplo. Resolva o seguinte problema de programação linear usando o método das duas fases. Maximizar z = x 1 + x 2 x 1 + 4x 2 4 sujeito a : 3x 1 + x 2 = 1 x 1 0, x 2 0. (7) 1. Coloque as restrições na forma padrão, adicionando uma variável de folga onde for preciso: primeira restrição; x 1 + 4x 2 x 3 = 4, com x 3 0, 2. Como não é possível obter uma base diretamente, com B = I, acrescente variáveis artificiais nas restrições que originalmente eram = e : primeira e segunda restrição; Thiago Queiroz (DM) Parte 4 1/2014 12 / 18
Na primeira restrição, adicionamos a variável artificial y 1 0: x 1 + 4x 2 x 3 + y 1 = 4; Na segunda restrição, adicionamos a variável artificial y 2 0: 3x 1 + x 2 + y 2 = 1; O problema artificial é: Minimizar z a = y 1 + y 2 x 1 + 4x 2 x 3 + y 1 = 4 sujeito a : 3x 1 + x 2 + y 2 = 1 x 1 0, x 2 0, x 3 0, y 1 0, y 2 0. (8) 3. Aplica-se o simplex (em tabelas) para resolver o problema artificial; Thiago Queiroz (DM) Parte 4 1/2014 13 / 18
Para montar a tabela, a linha da função objetivo artificial consiste na operação das linhas: linha da função objetivo artificial - linhas que contém variáveis artificiais: Linha original de z a y 1 + y 2 = 0 - Linha da restrição que contém y 1 x 1 + 4x 2 x 3 + y 1 = 4 - Linha da restrição que contém y 2 3x 1 + x 2 + y 2 = 1 = nova linha de z a = 4x 1 + 5x 2 + x 3 = 5. Colocar a linha da função objetivo original na forma padrão: Minimizar z = x 1 x 2 Montar a tabela simplex inicial do problema artificial e resolver com o simplex em tabelas; No final da FASE I, aplicar o procedimento para eliminar as variáveis artificiais; Iniciar a FASE II com a tabela resultante da FASE I, aplicando o simplex em tabelas normalmente. Thiago Queiroz (DM) Parte 4 1/2014 14 / 18
Método do M-grande Um objetivo alternativo para o problema artificial consiste em considerar a função objetivo original; Neste caso, as variáveis artificiais são penalizadas exageradamente de modo que sejam nulas na solução ótima (caso o problema tenha solução); Considere um valor M muito grande (se o problema original for de minimizar) ou muito pequeno (se o problema original for de maximizar); Dado o problema original com uma função de minimizar, então a nova função objetivo é: Minimizar z a = c T x + M(y 1 + y 2 +... + y m ). Após adicionar as variáveis artificias penalizadas com o coeficiente M na função objetivo, o problema pode ser resolvido normalmente com o método simplex (em tabelas); Thiago Queiroz (DM) Parte 4 1/2014 15 / 18
Método do M-grande Note que o valor exagerado para as variáveis artificiais deve orientar o método simplex para substituir as variáveis artificias da base por outras de menor coeficiente na função objetivo; Se o problema não possuir solução factível, então no final da aplicação do método simplex alguma variável artificial será básica na solução ótima encontrada; Este procedimento é chamado método do M-grande tendo desempenho similar ao método das duas fases; Exemplo. Aplique o método do M-grande para resolver o problema abaixo: Maximizar z = x 1 + x 2 x 1 + 4x 2 4 sujeito a : 3x 1 + x 2 = 1 x 1 0, x 2 0. (9) Thiago Queiroz (DM) Parte 4 1/2014 16 / 18
Método do M-grande 1. Coloque as restrições na forma padrão, adicionando uma variável de folga onde for preciso: primeira restrição; x 1 + 4x 2 + x 3 = 4, com x 3 0. 2. Como não é possível obter uma base diretamente, com B = I, acrescente variáveis artificiais nas restrições que originalmente eram = e : primeira e segunda restrição; Na primeira restrição, adicionamos a variável artificial y 1 0: x 1 + 4x 2 x 3 + y 1 = 4; Na segunda restrição, adicionamos a variável artificial y 2 0: 3x 1 + x 2 + y 2 = 1; 3. Na função objetivo do problema acrescente a variável artificial com um coeficiente (valor de M) muito grande, se for de maximização; Maximizar z a = x 1 + x 2 100y 1 100y 2. 4. Escreva o novo problema de otimização que deverá ser resolvido via simplex (em tabelas); Thiago Queiroz (DM) Parte 4 1/2014 17 / 18
Método do M-grande O novo problema de otimização linear é: Minimizar z = x 1 x 2 + 100y 1 + 100y 2 x 1 + 4x 2 x 3 + y 1 = 4 sujeito a : 3x 1 + x 2 + y 2 = 1 x 1 0, x 2 0, x 3 0, y 1 0, y 2 0. (10) 5. Aplique o método simplex (em tabelas) e retorne a solução encontrada; 6. Se alguma variável artificial estiver na solução final (ótima), aplique o procedimento para eliminar a variável artificial; Note que uma variável artificial não tem significado (interpretação) para o problema. Ela foi adicionada apenas para obter uma base viável inicial. Thiago Queiroz (DM) Parte 4 1/2014 18 / 18