O MÉTODO HOMOGÊNEO E AUTO-DUAL PARA O PROBLEMA LINEAR DE DISTRIBUIÇÃO DINÂMICO Luis Ernesto Torres Guardia Universidade Federal Fluminense Departamento de Engenharia de Produção Rua Passos da Pátria 156, São Domingos 24210-240, Niterói, RJ, Brasil. tepletg@vm.uff.br Valdecy Pereira Universidade Federal Fluminense Pós-Graduação em de Engenharia de Produção Rua Passos da Pátria 156, São Domingos 24210-240, Niterói, RJ, Brasil. valdecy.pereira@gmail.com RESUMO Neste trabalho apresentamos o método homogêneo e auto-dual para o problema de programação linear de distribuição dinâmico, formulado como um problema linear de fluxo em rede. Este método é combinado com uma estratégia de Mehrotra de preditor-corretor, com a mesma matriz de coeficientes em cada iteração. O sistema linear resultante, mas com diferentes lados direitos, é resolvido usando o método AINV de decomposição da respectiva matriz inversa associada ao sistema linear. O referido método homogêneo e auto-dual é aplicado a este modelo de distribuição dinâmico em diferentes dimensões, e a experiência computacional mostra que este método é eficiente para resolver este tipo especial de problema linear. PALAVRAS CHAVE. programação linear. método homogêneo e auto-dual. logística ABSTRACT In this work, we present the homogeneous and self-dual method applied to linear programming and apply this method to dynamic network flow problem. At each iteration, the homogeneous and self-dual method is combined, with different right-hand side, is solved by the AINV method, a decomposition method for the linear system inverse matrix. The homogeneous and self-dual method is applied for different problems and the computational experiments show that this method is efficient for solving this special class of linear programming. KEYWORDS. linear programming. homogeneous and self-dual method. logistic. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1237
1. Introdução Depois que Karmarkar (1983) propôs seu método de pontos interiores para resolver um problema específico de programação linear com resultados superiores aos obtidos pelo método simplex, muitos outros métodos baseados em seus estudos foram desenvolvidos desde então. Dentre os métodos desenvolvidos estão o método primal-dual, de 1986, apresentado por Meggido, e o preditor-corretor, desenvolvido por Mehrotra em 1992. O método exige um esforço computacional para solucionar os sistemas de equações lineares de Newton que surgem das suas iterações, e na prática é determinado uma decomposição da matriz associada ao sistema linear, e podem ser realizadas diversas vezes essas decomposições se essas soluções do sistema linear ajudam a diminuir o número total de iterações do método de pontos interiores. Essa é a idéia básica realizada por Mehrotra (1992) no seu método denominado preditor-corretor. Um outro passo crucial para o método de pontos interiores é determinar um ponto inicial viável. Esse problema pode ser evitado se usamos a técnica denominada homogêneo e auto-dual, primeiro proposto por Ye et al. (1994). Essa técnica foi depois simplificada por Xu et al. (1996) combinando com a técnica de Mehrotra (1992) de preditor-corretor, de tal modo que, em cada iteração do método homogêneo e auto-dual, a matriz do sistema linear é a mesma, para o passo do preditor e corretor, mas com diferentes lados direitos. Esse método homogêneo e auto-dual é aplicado por Berkelaar et al. (2002) e Sun e Liu (2006) na solução do problema linear estocástico formulado através de cenários, o qual resulta em um problema de programação linear de grande porte. Neste trabalho, apresentamos o método homogêneo e auto-dual de Xu et al. (1996) para resolver um problema de programação linear, combinando com a técnica preditor-corretor de Mehrotra (1992) e aplicamos para determinar a solução do problema linear de distribuição dinâmico formulado como um problema linear de fluxo em rede, o qual é um problema de grande porte devido a sua estrutura de rede que formam a matriz de restrições. Esta estrutura de rede pode ser explorada por ser esparsa e portanto a matriz de restrições não precisa ser armazenada. Para uma maior compreensão na teoria do fluxo em rede e de suas aplicações, sugere-se consultar o livro de Ahuja et al. (1993). Para um maior entendimento quanto a teoria de pontos interiores e outros métodos, sugere-se a leitura de Wrigth (1997) e Vanderbei (2008). Este trabalho é organizado como segue: a seção 2 descreve o método homogêneo autodual para resolver o problema de programação linear; na seção 3 apresenta-se a formulação matemática do problema linear de distribuição dinâmico formulado como um problema linear de fluxo em rede, na seção 4 os resultados computacionais do método homogêneo e auto-dual aplicado ao caso em diferentes dimensões, e finalmente, na última seção são apresentados as conclusões. 2. Método homogêneo e auto-dual Nesta seção, apresentamos o método homogêneo e auto-dual para resolver o problema de programação linear, seguindo o trabalho de Xu et al. (1996). Consideremos o seguinte problema primal de programação linear dado no formato padrão: (P) min cc TT xx sujeito a: AAAA = bb, xx 0, onde c R n, A é uma matriz e de posto completo, A R m x n, m < n e b R m são dados, e x é o vetor de decisão, x R n. O problema dual de (P) pode ser descrito como: (D) max bb TT yy, sujeito a: AA TT yy + zz = cc, XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1238
zz 0, onde y R m e z R n é o vetor de folga dual Em geral, para resolver (P) e (D), é importante ter uma solução inicial viável para iniciar o processo de otimização. Este ponto inicial pode ser obtido pela fase I do método de II-fases ou usando o método M-Grande. Para evitar usar o método II-fases ou M-Grande, Ye et al. (1994) usarão o algoritmo homogêneo e auto-dual para (P) e (D) que tem o seguinte formato: Ax - bτ = 0, -A T y + cτ 0, (1) b T y - c T x 0, x, τ, 0. O sistema (1) é transformado em um sistema com restrições de igualdade incluindo variáveis adicionais. Assim, temos o sistema denominado H: H: Ax - bτ = 0, -A T y - z + cτ = 0, (2) b T y - c T x - к = 0, x, z, τ, к 0. Se o sistema H tem uma solução (x *, y *, z *, τ *, к * ) tal que τ * > 0 e к * = 0, então uma solução ótima para (P) é xx e uma solução ótima para (D) é (yy, zz ττ ττ ττ ). Por outro lado, a solução (x *, y *, z *, τ *, к * ) é tal que: x * + z * > 0 e τ * + к * > 0, e portanto, devemos analisar qualquer solução (x, y, z, τ, к) de H, o qual necessariamente deve satisfazer x T z+ τк = 0. Consideremos um ponto interior para o sistema H tal que x k > 0, y k, z k >0 τ k > 0 e к k > 0. Iniciando deste ponto interior, aplica-se o método modificado de Newton para resolver o sistema H. Em cada iteração, o método homogêneo e auto-dual resolve-se o seguinte sistema de equações lineares, para determinar a direção (dx, dy, dz, dτ, dк): onde : ηη e γ são dois parâmetros positivos, e: Adx - dτ = ηηr k P, -A T dy - dz + cdτ = - ηηr k D, b T dy - c T dx - dк = ηηr k G, (3) Z k dx + X k dz = γµe - X k z k, к k dτ + τ k dк = γµ - τ k к k, r k P = bτ k - Ax k, r k D = cτ k - A T y k - z k, r k G = c T x k - b T y k + к k, XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1239
µ k = xx kk TT zz kk +ττ kk к kk nn+1. Nas expressões acima, denomina-se e como o vetor 1 s, e X k e Z k indicam matrizes diagonais com x k e z k respectivamente nas suas diagonais. O método genérico do homogêneo e do auto-dual para resolver problemas de programação linear, apresentado por Xu et al. (1996), é descrito a seguir: Dado o ponto inicial x 0 >0, y 0, z 0 >0, τ 0 > 0 e к 0 >0; ηη [0,1] e γ [0,1], k 0. 1. Seja r P k = bτ k - Ax k ; r D k = cτ k - A T y k - z k ; r G k = c T x k - b T y k + к k. 2. Resolver o sistema (3) para (dx, dy, dz, dτ, dк). 3. Escolha o tamanho de passo α k > 0. 4. Atualizar: x k+1 = x k + α k dx > 0, y k+1 = y k + α k dy, z k+1 = z k + α k dz > 0, τ k+1 = τ k + α k dτ > 0, к k+1 = к k + α k dк > 0. 5. Se o critério de parada for satisfeito, parar. Senão, k k + 1, ir ao passo 1. Xu et al. (1996) aplica a técnica preditor-corretor de Mehrotra (1992) para resolver o sistema (3). Em particular, primeiro usa no passo preditor ηη = 1 e γ = 0, e temos o seguinte sistema: Adx -bdτ = r P k, -A T dy + cdτ - dz = - r D k, b T dy - c T dx - dк = r G k, (4) Z k dx + X k dz = -X k z k, к k dτ + τ k dк = -τ k к k. Realizando as substituições convenientes em (4), sem considerar o sub-índice k, temos o seguinte sistema: - ττ к cct dx +[A T + ττ к cbt ]dy + dz = r D + cf, [A T - ττ к bct ]dx + ττ к bbt dy = r p + bf, (5) Zdx + Xdz = - Xz. ou expresso em uma forma matricial, o sistema (5) é dado por: onde ff = ττк+ ττrr GG. к 0 AA TT II cc cc AA 0 0 + ττ bb bb к ZZ 0 XX 0 0 TT dddd rr DD + cccc dddd = rr PP + bbbb dddd XXXX, (6) XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1240
Uma vez determinada (dx, dy, dz) T, podemos então calcular dτ = f + ττ к ct dx - ττ к bt dy, e da terceira equação do sistema linear (4), podemos determinar dк: dк = b T dy - c T dx - r G k. Desta forma, temos determinado a direção (dx, dy, dz, dτ, dк). Agora, para determinar a solução do sistema linear (6), este pode ser expresso na forma: sendo, e (G + gh T )u = v, (7) 0 AA TT II cc cc G = AA 0 0, g = bb, h = ττ bb, к ZZ 0 XX 0 0 dddd rr DD + cccc u = dddd, v = rr PP + bbbb. dddd XXXX Usando a fórmula conhecida de Sherman-Morrison-Woodbury, consultar o livro de Nocedal e Wright (1999), temos que a solução de (7) é dada por: uu = GG 1 vv htt GG 1 vv 1+h TT (GG 1 gg) GG 1 gg. (8) De (8), pode-se observar que precisamos determinar GG 1 vv e GG 1 gg, isto é, devemos resolver o sistema linear digamos GG 1 vv = rr ou GGGG = vv, para o primeiro caso, e o mesmo para GG 1 gg = tt ou GGGG = gg. Isto significa resolver o sistema linear: 0 AA TT II rr 1 rr DD + cccc AA 0 0 rr 2 = rr PP + bbbb. (9) ZZ 0 XX rr 3 XXXX Similarmente, resolve-se também o sistema digamosgg 1 gg = tt ou GGGG = gg, isto é: 0 AA TT II tt 1 cc AA 0 0 tt 2 = bb. (10) ZZ 0 XX tt 3 0 As matrizes de coeficientes de (9) e (10) tem a mesma estrutura, como nos métodos de pontos interiores primal-dual para resolver problemas de programação linear padrão, consultar por exemplo o livro de Wrigth (1997), mas o lado direito de (9) e (10) são diferentes. Considerando essa observação, então para qualquer vetor do lado direito, a solução do sistema linear da forma (9) ou (10), isto é: 0 AA TT II pp 1 AA 0 0 pp 2 = ZZ 0 XX pp 3 qq 1 qq 2 qq 3. (11) XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1241
é dada por: (AZ -1 XA T )p 2 = AZ -1 (Xq 1 - q 3 ) + q 2, (12.1) p 3 = q 1 - A T p 2, (12.2) p 1 = Z -1 (q 3 - Xp 3 ). (12.3) A equação (12.1) denomina-se de sistema de equações normais. A solução deste sistema linear (12.1) pode ser determinada usando algum algoritmo de decomposição da matriz (AZ -1 XA T ), sendo esta última matriz, simétrica definida e positiva. Para a decomposição de matrizes poderíamos usar o método tradicional de Cholesky, mas para o nosso caso usamos o método AINV de Benzi et al. (2000) e seus motivos serão explicados na seção 4. Este método trata da decomposição da inversa da matriz (AZ -1 XA T ) tal que: (AZ -1 XA T ) -1 LP -1 L T, sendo L uma matriz triangular superior com elementos na diagonal igual a 1 s, e P uma matriz diagonal. Desta forma, usando (12.1) e realizando as operações convenientemente, podemos determinar os vetores r = G -1 v e t = G -1 g, e assim temos, de (8), determinamos o vetor u dado por: uu = rr htt rr tt. 1+h TT tt Assim o sistema (6) é resolvido para (dx, dy, dz) T, e usando (4) todas as outras variáveis dτ e dк são determinadas. Denominamos a solução resultante do sistema de equações (4) como a direção afim (dx a, dy a, dz a, dτ a, dк a ). e calculamos o tamanho de passo α dado por: αα = min (XX 1 ddxx aa,zz 1 ddzz aa, ddττaa ττ θθ aa,ddкaa к Assim, no passo preditor, podemos determinar (x, y, z, τ, к ) dada por: aa, θθ). (13) e (x, y, z, τ, к ) = (x k, y k, z k, τ k, к k ) + α(dx a, dy a, dz a, dτ a, dк a ), (14) µ k = xx kk TT zz kk +ττ kk к kk nn+1, e calculamos: e fazer γ = µ a = xx TT zz +ττ к nn+1, 2 µ aa µ kk se µ aa µ kk 0,01 min 0,1 ; max µ 3, (15) aa µ kk ; 0,0001 cccccccc ccccccccccárrrrrr ηη = 1- γ. Pode-se observar que γ 0,1, portanto ηη 0,9. A escolha acima dada por Xu et al. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1242
(1996), deve ser apropriadamente calculada para que garanta uma maior eficiência do método preditor-corretor. Feito isto, realizamos o passo corretor que consiste em resolver o seguinte sistema: Adx -bdτ = ηηr P k, -A T dy + cdτ - dz = - ηηr D k, b T dy - c T dx - dк = ηηr G k, (16) Z k dx + X k dz = - X k z k - D a xd a z + γµ k e, к k dτ + τ k dк = - τ k к k - d a τd a к + γµ k, onde foram adicionadas D a xd a z e d a τd a к respectivamente, e D a x =diag(d a x) é a matriz diagonal com as componentes do vetor d a x A solução do sistema (16) é determinada seguindo o mesmo esquema realizado para a obtenção da solução do sistema (14). Denomina-se a solução (16) por (dx, dy, dz, dτ, dк ) e calculamos o tamanho do passo αα dado similarmente em (13), isto é: Fazer então: αα = min (XX 1 ddxx aa,zz 1 ddzz aa, ddττaa ττ θθ aa,ddкaa к aa, θθ). (x k+1, y k+1, z k+1, τ k+1, к k+1 ) = (x, y, z, τ, к ) + α(dx, dy, dz, dτ, dк ). Se o critério de parada não for satisfeito, realizar o passo preditor com γ 0 e ηη 1 isto é, resolver o sistema (4). Depois aplicar o passo corretor, isto é, resolver o sistema (16). Caso contrário, se o critério de parada for satisfeito, consultar Xu et al (1996), temos uma solução ótima aproximada e é dada por: 3. O problema de distribuição dinâmico (xx, yy, zz ) = xx kk+1 ττ yy kk+1 zzkk+1,, kk+1 ττkk+1 ττ kk+1. Uma cadeia de suprimentos pode ser entendida como uma forma de colaboração entre fornecedores, varejistas e consumidores para a criação de valor envolvendo fluxos físicos, informativos, financeiros e de conhecimento, cujo objetivo é satisfazer os requisitos do consumidor final com produtos e serviços de vários fornecedores ligados (AYERS, 2001, p. 4-5). Para ilustrar a eficiência do método homogêneo e auto-dual, consideremos o problema de distribuição dinâmica em um horizonte de planejamento T, pode ser formulado como uma PPL da seguinte forma: min cc iiii (tt)xx iiii (tt) + qq jjjj (tt)yy jjjj (tt) sujeito a: ii PP jj AA jj AA kk CC jj AA xx iiii (1) + xx iiii (1) = aa 1 (1) ; ii PP, ii AA xx iiii (1) + yy jjjj (1) + kk CC yy jjjj (1) = 0 ; jj AA, jj AA xx iiii (tt) + xx iiii (tt) = aa ii (tt) + xx iiii (tt 1) ; ii PP, ii AA xx iiii (tt) + yy jjjj (tt 1) + kk CC yy jjjj (tt) + yy jjjj (tt) = 0 ; jj AA, XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1243
jj AA yy jjjj (tt) = dd kk (tt) ; kk CC, xx iiii 0; ii PP; jj AA, yy jjjj 0; jj AA; kk CC. Onde: P Centros de produção, com ii PP, A Centros de armazenagem, com jj AA, C Centros de consumo, com kk CC, x ij (t) Número de unidades transportadas do centro de produção i ao centro de armazenagem j, no período t, x ii (t) Número de unidades remanescentes no centro de produção i e que resultam em um custo de armazenagem c ii (t), no período t, y jk (t) Número de unidades transportadas do centro de armazenagem j ao centro de consumo k, no período t, y jj (t) Número de unidades remanescentes no centro de armazenagem j, e que resultam em um custo de armazenagem q jj (t), no período t, aa ii (tt) Quantidade de bens produzidos no período t no centro de produção i P, dd kk (tt) Quantidade de bens consumidos no período t no centro de consumo k, k C. Conforme a figura abaixo: Figura 1. Problema da distribuição dinâmica Em um período observado t os centros de fabricação produzem bens que são enviados a centros de armazenagem que atendem as necessidades de cada centro de consumo no mesmo período. Em t+1 os centros de fabricação continuam a produzir bens a serem distribuídos para os centros de consumo, porém é possível que ainda existam bens residuais (estoques do período anterior) dentro dos próprios centros de fabricação ou dos centros de armazenagem. Tais estoques devem agora ser considerados no planejamento da distribuição de bens, sabendo que o total de fluxo de entrada deverá ser igual ao fluxo de saída em cada nó, e que ainda obedeçam a seguinte restrição: NN aa ii (tt) = NN dd kk (tt) ; ii PP ee kk CC tt=1 tt=1. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1244
4. Resultados Computacionais Redes de diversas dimensões foram analisadas, dependendo do número de centros de produção, centros de armazenamento e centros de consumo. Para isso foi implementado um programa específico, em linguagem FORTRAN, que determina o nó de origem e o nó de destino que definem o arco de rede.. Um ponto inicial no método homogêneo e auto-dual é dado a seguir: x 0 = e, y 0 = -0,25, z 0 = e, τ 0 = 1, к 0 = 1. Mas uma boa escolha de outro ponto inicial poderia ser usado e talvez melhorar o desempenho computacional. Para determinar o tamanho de passo α correspondente, foi usado em todos os testes computacionais o valor de θθ = 0, 99995. O algoritmo homogêneo e auto-dual foi inteiramente codificado na linguagem FORTRAN com dupla precisão. Todos os experimentos foram realizados em um microcomputador PC Duron com 1GB de RAM e 1600MHZ de freqüência na plataforma Windows XP. Como foi mencionado anteriormente, a matriz inversa (AZ -1 XA T ) é decomposta usando o método AINV de Benzi et al. (2000) de tal forma que: (AZ -1 XA T ) -1 LP -1 L T Neste caso, aplicando o algoritmo AINV, solicita-se realizar o produto (AZ -1 XA T ) para um vetor p, não sendo necessário armazenar a matriz A nem a matriz (AZ -1 XA T ). Por outro lado, a matriz L, que é triangular superior, é armazenada em um vetor usando a seqüência l 11, l 12, l 22, l 13, l 23, etc. Diferentemente do método de Cholesky que talvez precisaria armazenar a parte simétrica da matriz (AZ -1 XA T ). A seguir apresentamos os resultados computacionais para redes de diferentes dimensões. Tabela 1. Resultados computacionais. M 10 8 7 5 N 12 10 9 8 P 15 12 11 10 H 8 12 15 20 N-link 2.877 2.817 2.833 2.781 N-node 333 390 432 483 Iteração 6 6 6 6 Primal 107.999,98771872 135.159,95514134 153.999,940521667 157.499,94665875 Dual 107.999,98599849 135.199,95043440 153.999,93462295 157.499,94156412 Tempo 2,04 3,31 4,47 6,14 Onde: M Número de centros de produção, N Número de centros de armazenagem, P Número de centros de consumo, H Número de períodos, N-link Número de arcos, N-node Número de nós, Iteração Número de iterações realizadas Primal Valor da função objetivo do problema primal, Dual Valor da função objetivo do problema dual, Tempo Tempo do processamento dado em segundos. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1245
Da tabela 1, pode-se observar que a diferença entre os valores da função objetiva do correspondente problema linear primal e dual é pequena. Por outro lado, o número de iterações é tipicamente muito pequeno quando aplicamos este método homogêneo e auto-dual. Podemos dizer que este método estudado comporta-se muito bem para o caso do problema linear dinâmico de fluxo em rede de diferentes dimensões. 5. Conclusões Este artigo apresentou o método homogêneo e auto-dual para resolver o problema de programação linear de grande porte como é o caso do problema de distribuição dinâmico formulado como um problema linear de fluxo em rede, que pela sua estrutura, a matriz A de restrições lineares é esparsa. O método estudado explora essa estrutura matricial, não sendo necessária a armazenamento da matriz A, nem da matriz (AZ -1 XA T ) quando foi resolvido o correspondente sistema linear. O método AINV é usado na solução de mais de um sistema linear, que tem a mesma matriz de coeficientes para diferentes lados direitos, quando é aplicado tanto o passo preditor e o corretor respectivamente. Os resultados numéricos realizados em algumas redes de diferentes dimensões confirmam a eficiência do método homogêneo e auto-dual. 6. Referências. Ahuja, A., Magnanti, T. e Orlin, J., (1993) Networks Flows: Theory, Algorithms and Applications, Prentice-Hall, Inc. New Jersey. Ayers, James B. (2001), Introduction to the supply chain. In AYERS, James B. ed. - Handbook of supply chain management. Boca Raton, FL: St. Lucie Press. Benzi, M., Cullum, J. e Tuma, M., (2000), Robust approximate inverse pre-conditioning for the conjugate gradient method, SIAM Journal of Scientific Computing, 22, 1318-1332. Berkelaar, A., Dert, C., Oldenkamp, B. e Zhang, S., (2002), A primal-dual decompositionbased interior point approach to two-stage stochastic linear programming, Operation Research, 50, 904-915. Karmakar, N., (1984), A polynomial-time algorithm for linear programming, Combinatorica, 4, 373-395. Meggido, N. (1986), Pathways to the Optimal Set in Linear Programming. IBM. Almaden Research Center, San Jose, CA, USA. Relatório Técnico RJ 5295. Mehrotra, S., (1992), On the implementation of a primal-dual interior point, SIAM Journal on Optimization, 2, 575-601. Nocedal, J. e Wright, S., (1999) Numerical Optimization, Springer-Verlag, New York. Sun, J. e Liu, X., (2006), Scenario formulation of stochastic linear programs and the homogeneous self-dual interior-point method, INFORMS Journal on Computing, 18, 444-454. Vanderbei, R., (2008) Linear Programming, 3 rd. Ed. Springer, Boston. Wright, S., (1997) Primal-Dual Interior-Point methods, SIAM, Philadelphia. Xu, X., Hung, P. e Ye, Y., (1996), A simplified homogeneous and self-dual linear programming algorithm and its implementation, Annals of Operation Research, 62, 151-171. Ye, Y., Todd, J. e Mizuno, S., (1994), An iteration homogeneous and self dual linear programming algorithm, Mathematics of Operations Research, 19, 53-67. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1246