Solução de programação linear em uma passagem com variáveis ​​ordenadas

9

Eu tenho uma família de problemas de programação linear: maximize cx sujeito a Axb , x0 . Os elementos de , , e são números inteiros não negativos, estritamente positivo. ( também deve ser integral, mas vou me preocupar com isso mais tarde.)b c c xAbccx

Geralmente, em minha aplicação, os coeficientes e são tais que um algoritmo simplificado de uma passagem fornece a solução ideal para todas as opções de : o algoritmo de uma passagem determina os elementos em seqüência, escolhendo cada é o maior valor possível consistente com os valores já determinados . Na linguagem simplex, a sequência de entrada de variáveis ​​é apenas a e termina após etapas. Isso economiza muito tempo em comparação com o simplex completo.c b x 1 , , x n x j x 1 , , x j - 1 x 1 x n nAcbx1,,xnxjx1,,xj1x1xnn

Esse algoritmo funciona quando as colunas de e os elementos de foram classificados de "barato" para "caro". Uma variável "barata" é uma coluna de com valores geralmente pequenos, para os quais o elemento correspondente de é grande: para esse elemento de você obtém muita saída com pouca demanda na restrição . Portanto, o algoritmo diz apenas "faça as coisas fáceis primeiro".c A c x bAcAcxb

Minha pergunta é: que propriedade de e nos garantiria que esse algoritmo simplificado funciona para todos os ? Minha conjectura inicial era que os elementos diferentes de zero de deveriam aumentar em cada linha, mas isso não está correto.c b AAcbA

Aqui estão alguns exemplos, todos com : , , , . Para tudo isso, o algoritmo seqüencial fornece a solução ideal para todos os valores de (por experimentação numérica). é o único para o qual todas as permutações de colunas também funcionam.A 1 = ( 1 1 1 1 2 3 3 2 0 ) A 2 = ( 0 0 1 3 0 2 0 3 2 ) A 3 = ( 1 1 1 1 0 0 1 1 1 ) A 4 = ( 1 0 1 0 1 0c=(1,1,1)A1=(111123320)A2=(001302032)A3=(111100101)A4=(101010011)bA3A1A3(1,1,3)parece mais caro que e mais caro que .(1,3,0)(1,1,1)(1,0,0)

Eu ficaria tremendamente grato por qualquer indicação na literatura, por quaisquer problemas como esse ou quaisquer sugestões. Deve ter havido outros casos em que algumas variáveis ​​podem ser determinadas como "mais baratas" do que outras e podem ser feitas primeiro com segurança. Com todo o trabalho realizado na programação linear ao longo dos anos, parece que algo semelhante deve ter surgido, mas não consegui encontrá-lo.

Robert Almgren
fonte

Respostas:

4

Provavelmente, o exemplo mais famoso em que um algoritmo ganancioso é conhecido por resolver um LP é o caso especial do problema de transporte. Hoffman ("Em programas lineares simples", em Convexity , vol. 7 de Proceedings of Symposia in Pure Mathematics , páginas 317-327, 1963) provou que se a matriz de custos para um problema de transporte (maximização) satisfaz a propriedade Monge ( quando 1 i < k n , 1 jcij+cklcil+ckj1i<kn ), então uma solução ideal pode ser encontrada de maneira gananciosa como a que você descreve. 1j<ln

Hoffman também tem um artigo de pesquisa (" Sobre algoritmos gananciosos que obtêm sucesso ") de 1985, no qual discute casos conhecidos nos quais um algoritmo ganancioso fornece uma solução ideal para um LP. Além de seu próprio trabalho citado acima (sobre o qual ele diz, "a maioria dos problemas de programação linear conhecidos [em 1963] por serem suscetíveis a um algoritmo ganancioso eram casos especiais da idéia de Monge"), ele menciona a interpretação de programação linear de Edmonds sobre um generalização de matróides e uma discussão do caso em que não é negativo, entre outras coisas.UMA

Imagino que haja resultados mais recentes, mas espero que isso responda pelo menos parcialmente à sua pergunta e lhe dê algumas idéias de onde mais procurar.

Mike Spivey
fonte
2
Gostaria de agradecer ao professor Spivey por sua sugestão. Demorei um pouco para procurar as referências, mas fornecerei uma descrição mais completa como resposta.
Robert Almgren
3

Graças à sugestão do professor Spivey, finalmente localizei o que considero o estado da arte: Ulrich Faigle, Alan J. Hoffman e Walter Kern, "Uma Caracterização de Matrizes Não-Negativas Box-Greedy", SIAM J. Disc. Matemática. 9 (1996) pp 1-6. Uma matriz é "gananciosa" se o algoritmo que descrevi acima fornecer a solução ideal para todos os . Uma matriz é "gananciosa em caixa" se o algoritmo ganancioso fornecer a solução ideal com a condição adicional x d para todos os b e todos d 0 . Claramente, a caixa gananciosa é uma condição mais forte que a gananciosa.bxdbd0

Sempre assuma que . Faigle, Hoffman e Kern provam que A é caixa gananciosa se, e somente se, não tiver submatriz k × ( k + 1 ) (para qualquer k ) da forma ( r 1 s 1c1cn>0Ak×(k+1)kcom cadarj>0ei:si>0ri(r1s1r2s2rksk)rj>0. Na extração das submatrizes, permutações arbitrárias de linhas são permitidas, mas não colunas, e subconjuntos arbitrários de linhas e colunas são permitidos. Assim, em particular, comk=1, os elementos diferentes de zero em cada linha deA nãodevem diminuir.i:si>0risi>1k=1A

Infelizmente, no meu problema, as matrizes não são gananciosas, embora eu ainda acredite que são gananciosas. Por exemplo, na minha acima da condição é violada e esta matriz não é caixa-gananciosos embora seja ganancioso. Até onde eu sei, não há resultados na identificação de matrizes gananciosas.A1

Robert Almgren
fonte
Estou feliz que minha resposta tenha ajudado a encontrar isso!
Mike Spivey
3

O exemplo mais fácil para algo como isso pode ser o problema da mochila fracionada, em que itens podem ser fracionados. esse problema (e seu lp dual) pode ser resolvido classificando os itens para lucro por peso, escolhendo a sequência mais longa nessa ordem, que seja possível e fracionando o último item.

anônimo
fonte