250 likes | 372 Views
Resolução de problemas de programação linear combinando o algoritmo volumétrico e uma função de penalidade exponencial. Ana Maria A. C. Rocha, Universidade do Minho arocha@dps.uminho.pt Edite M. G. P. Fernandes, Universidade do Minho emgpf@dps.uminho.pt
E N D
Resolução de problemas de programação linear combinando o algoritmo volumétrico e uma função de penalidade exponencial Ana Maria A. C. Rocha, Universidade do Minho arocha@dps.uminho.pt Edite M. G. P. Fernandes, Universidade do Minho emgpf@dps.uminho.pt João Luís C. Soares, Universidade de Coimbra jsoares@mat.uc.pt Guimarães, 24-27 Março 2002
Conteúdo • Introdução • O Algoritmo Volumétrico • Combinação com uma Função de Penalidade Exponencial • Experiências Computacionais • Trabalho Futuro
Introdução Consideremos um problema de fractional set partitioning onde A é uma matriz 0-1 e é um vector de uns. • O problema (1) resulta da relaxação linear de problemas de set partitioning (political districting, airline crew scheduling, protection of microdata, information retrieval, ...). • Os métodos tradicionais podem demorar mais de 10 horas, mesmo em máquinas rápidas (dimensão típica é n = 50000, m = 2500 e superior). • Os algoritmos de ponto interior têm funcionado melhor que o simplex, mas requerem mais memória. • O algoritmo volumétrico, considerado como uma extensão do método do subgradiente, para além de produzir soluções duais produz também boas aproximações à solução primal.
Algoritmo do subgradiente Para um dado vector de multiplicadores (também designado por solução dual), uma natural relaxação Lagrangeana do problema linear (1) é: • é uma função linear por partes, côncava e não diferenciável se e só se . • Desde os anos setenta que o algoritmo do subgradiente tem sido usado para produzir limites inferiores em programas lineares de grande dimensão ([3]).
Aspecto genérico de um algoritmo do subgradiente Passo 1: Dado ,resolver (2) com , para obter a sua solução . Calcular , que é um subgradiente da função em . Passo 2: Determinar , onde é o comprimento do passo. Passo 3: Se o critério de paragem se verificar então terminar; senão fazer e ir para Passo 1.
Inconvenientes • A verificação do critério de paragem obriga à resolução do seguinte problema de optimização , que não aparenta ser de fácil resolução. • A escolha adequada do tamanho do passo não deve basear-se apenas na análise teórica da convergência, senão torna-o muito pequeno. • A direcção dual pode não ser uma direcção de subida para em . Para isso, seria necessário calcular a derivada direccional que requer algum esforço adicional. Além disso, os procedimentos da pesquisa unidimensional obrigam a sucessivas avaliações da função , o que é normalmente custoso. • O algoritmo do subgradiente tem convergência linear (provavelmente porque a direcção calculada apenas depende do último ponto encontrado e toda a informação dada pelas iterações anteriores é ignorada). • O algoritmo do subgradiente não garante variáveis primais admissíveis.
O algoritmo Volumétrico O algoritmo volumétrico é uma extensão do algoritmo do subgradiente que, com o mesmo esforço computacional, produz não só as variáveis duais como também aproximações às variáveis primais. Este algoritmo foi desenvolvido por F. Barahona (ver [1] e [2]) e mostrou que era funcional nas seguintes classes de problemas: • Problemas Lineares Combinatórios; • quando a matriz A tem coeficientes 0, 1, -1; • quando as variáveis são limitadas entre 0 e 1.
Passos do algoritmo volumétrico Passo 0: Dado ,resolver (2) com , para obter a sua solução e . Definir . Passo 1: Calcular e para um comprimento de passo . Resolver (2) com , para obter a sua solução e . Actualizar com onde é um comprimento de passo entre 0 e 1. Passo 2: Se então actualizar e com . Passo 3: Testar o critério de paragem. Se falhar então definir e ir para Passo 1.
Critério de paragem • limite máximo do número de iterações ou • máxima violação das restrições e • diferença relativa entre solução dual e o valor da aproximação à solução primal
O algoritmo volumétrico com uma função de penalidade exponencial Consideremos um problema de fractional set partitioning da seguinte forma onde , e . podem ser: • restrições adicionais relacionadas com planos de corte quando se resolve o problema original de set partitioning ou • o conjunto das restrições de A consideradas mais difíceis, após aplicação do algoritmo volumétrico original.
Aplicando uma função de penalidade exponencial ao 1º conjunto de restrições, (3) transforma-se numa sucessão de subproblemas parametrizados por m onde m > 0 é o parâmetro de penalidade. • Para esta técnica de penalidade quando então .
Para um vector de multiplicadores , a relaxação Lagrangeana do problema é: Para aplicar o algoritmo volumétrico a este problema, podemos • Linearizar o termo de penalidade de e resolver problemas lineares. • Resolver problemas não lineares para obter .
Experiências com o caso linear A matriz A, do problema (1), é decomposta em duas matrizes A1 e A2. Após uma aplicação do algoritmo volumétrico ao problema original de fractional set partitioning, • A1 contém o conjunto das restrições m1 com maior violação (mais difíceis) e • A2 contém todas as outras restrições (mais fáceis). As restrições mais difíceis são penalizadas e o problema original transforma-se na sucessão de subproblemas onde é o parâmetro de penalidade.
Após a linearização do termo de penalidade, a relaxação Lagrangeana do problema é para qualquer .
O algoritmo volumétrico aplicado ao caso linear Passo 0: Dado , um vector e um vector , resolver (7) com para obter a sua solução e . Definir . Passo 1: Calcular e para um comprimento de passo . Resolver (7) com , para obter a sua solução e . Actualizar com onde é um comprimento de passo entre 0 e 1. Passo 2: Se então actualizar e com . Passo 3: Actualizar , se necessário. Testar critério de paragem. Se falhar então definir e ir para Passo 1.
Escolha do parâmetro de penalidade m • Dado um valor inicial • Actualizar com , cada k iterações. Critério de paragem • máximo número de iterações ou • máxima violação das restrições e • diferença relativa entre solução dual e o valor da aproximação à solução primal
Experiências computacionais com a estrutura de penalidade exponencial
Experiências preliminares com o caso não linear Relembremos o problema original Aplicando uma função de penalidade exponencial, ao conjunto das m restrições de igualdade é o parâmetro de penalidade.
Resolução de (9) através do algoritmo L-BFGS-B (ver [4]) desenvolvido por Nocedal, para a resolução de problemas não lineares, de grandes dimensões e com limites nas restrições. • método Quasi-Newton; • usa uma matriz BFGS de memória reduzida para aproximar a Hessiana da função objectivo; • a direcção de procura é determinada pelo método dos gradientes projectados.
Algoritmo Passo 0: Dado e um vector . Definir . Passo 1: Resolver (9) usando L-BFGS-B (processo iterativo interno), para obter a solução . Passo 2: Actualizar . Passo 3: Testar o critério de paragem. Se falhar então definir e ir para Passo 1.
Critério de paragen • (a) ou (b) ou
Trabalho Futuro • Integrar o package L-BFGS-B no algoritmo volumétrico (penalizando apenas as restrições mais difíceis). • Testar outros packages para a resolução de problemas não lineares de grandes dimensões, com limites nas restrições. Por fim, integrá-los no algoritmo volumétrico. • Estender a estrutura de penalidade exponencial a planos de corte (para resolver problemas originais de set partitioning). Referências [1] F. Barahona e R. Anbil. On some difficult Linear Programs coming from set partitioning. IBM T.J. Watson Research Center, NY. [2] F. Barahona e R. Anbil. The Volume Algorithm: producing primal solutions with a subgradient method. Mathematical Programming, 87:385-399, 2000. [3] M. Held, P. Wolfe e H.P. Crowder. Validation os subgradient optimization. Mathematical Programming, 6:62-68, 1974. [4] C. Zhu, R. Byrd, P. Lu e J. Nocedal. L-BFGS-B – fortran routines for large-scale bound constrained optimization. Northwestern Univ. EECS Technical Report, 1996.