Soluzione di programmazione lineare in un passaggio con variabili ordinate


9

Ho una famiglia di problemi di programmazione lineare: massimizzare soggetto ad , x \ ge0 . Gli elementi di A , b e c sono numeri interi non negativi, c strettamente positivi. ( x dovrebbe anche essere integrale, ma mi preoccuperò più avanti).A x b x 0 A b c c xcxAxbx0Abccx

Accade spesso nella mia applicazione che i coefficienti A e c siano tali che un algoritmo one-pass semplificato fornisce la soluzione ottimale per ogni scelta di b : l'algoritmo one-pass determina gli elementi x1,,xn in sequenza, scegliendo ciascuno xj deve essere il valore più grande possibile coerente con i valori già determinati x1,,xj1 . Nel linguaggio simplex, la sequenza di immissione delle variabili va da x1 a xn e termina dopo n passaggi. Ciò consente di risparmiare molto tempo rispetto al simplex full-on.

Questo algoritmo funziona quando le colonne di A e gli elementi di c sono stati ordinati da "economico" a "costoso". Una variabile "economica" è una colonna di A con valori generalmente piccoli, per i quali l'elemento corrispondente di c è grande: per quell'elemento di x si ottiene un sacco di output con poca richiesta sul vincolo b . Quindi l'algoritmo dice solo "fai prima le cose facili".

La mia domanda è: quale proprietà di A e c ci assicurerebbe che questo algoritmo semplificato funziona per tutti b ? La mia congettura iniziale era che gli elementi diversi da A dovessero aumentare in ogni riga, ma ciò non è corretto.

Ecco alcuni esempi, tutti con : , A_2 = \ begin {pmatrix} 0 & 0 & 1 \\ 3 & 0 & 2 \\ 0 & 3 & 2 \ end {pmatrix} , A_3 = \ begin {pmatrix} 1 & 1 & 1 \\ 1 & 0 & 0 \\ 1 & 0 & 1 \ end {pmatrix} , A_4 = \ begin {pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 1 & 1 \ end {pmatrix} . Per tutti questi, l'algoritmo sequenziale fornisce la soluzione ottimale per tutti i valori di b (mediante sperimentazione numerica). A_3 è l'unico per cui funzionano anche tutte le permutazioni delle colonne.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 0 1 ) A 4 = ( 1 0 1 0 1 0c=(1,1,1)A1=(111123320)A2=(001302032)A3=(111100101)bA3A1A3(1,1,3)A4=(101010011)bA3A1A3(1,1,3)sembra più costoso di (1,3,0) e (1,1,1) più costoso di (1,0,0) .

Sarei tremendamente grato per qualsiasi suggerimento alla letteratura, per problemi come questo o per qualsiasi suggerimento. Ci devono essere stati altri casi in cui alcune variabili possono essere determinate come "più economiche" rispetto ad altre e possono essere eseguite in sicurezza. Con tutto il lavoro svolto sulla programmazione lineare nel corso degli anni, sembra che qualcosa di simile debba essere emerso, ma non sono riuscito a trovarlo.

Risposte:


4

Probabilmente il caso più famoso in cui un algoritmo avido è noto per risolvere un LP è per il caso speciale del problema del trasporto. Hoffman ("Sui semplici programmi lineari", in Convexity , vol. 7 di Proceedings of Symposia in Pure Mathematics , pagine 317-327, 1963) ha dimostrato che se la matrice dei costi per un problema di trasporto (massimizzazione) soddisfa la proprietà Monge ( quando , ) è possibile trovare una soluzione ottimale in modo goloso come quello che descrivi. 1 i < k n 1 j < l ncij+cklcil+ckj1i<kn1j<ln

Hoffman ha anche un documento di indagine (" Su algoritmi golosi che hanno successo ") del 1985 in cui discute casi noti in cui un algoritmo goloso fornisce una soluzione ottimale a un LP. Oltre al suo lavoro sopra citato (di cui dice, "la maggior parte dei problemi di programmazione lineare conosciuti [dal 1963] come suscettibili di un avido algoritmo erano casi speciali dell'idea di Monge"), menziona l'interpretazione di programmazione lineare di Edmonds di un generalizzazione dei matroidi e discussione del caso in cui non è negativo, tra le altre cose.A

Immagino che ci siano risultati più recenti, ma spero che questo almeno parzialmente risponda alla tua domanda e ti dia alcune idee su dove altro cercare.


2
Vorrei ringraziare il Prof Spivey per il suo suggerimento. Mi ci è voluto un po 'per inseguire i riferimenti, ma fornirò una descrizione più completa come risposta.
Robert Almgren,

3

Grazie al suggerimento del Prof Spivey, ho finalmente individuato quello che penso sia lo stato dell'arte: Ulrich Faigle, Alan J. Hoffman e Walter Kern, "Una caratterizzazione di matrici avide non negative", SIAM J. Disc. Matematica. 9 (1996) pagg. 1-6. Una matrice è "avida" se l'algoritmo che ho descritto sopra fornisce la soluzione ottimale per tutti . Una matrice è "box-greedy" se l'algoritmo greedy fornisce la soluzione ottimale con la condizione aggiuntiva per tutte e tutte . Chiaramente, l'avido di scatola è una condizione più forte dell'avido.x d b d 0bxdbd0

sempre che . Faigle, Hoffman e Kern dimostrano che è avido di casella se e solo se non ha (per qualsiasi ) sottomatrix del modulo con ogni e . Nell'estrazione delle sottomaterie, sono consentite permutazioni arbitrarie di righe ma non colonne, ed è consentita la sottosezione arbitraria di righe e colonne. Quindi, in particolare, con , gli elementi diversi da zero in ciascuna riga di devono essere non in diminuzione.A k × ( k + 1 ) k ( r 1 s 1c1cn>0Ak×(k+1)krj>0i:si>0ri(r1s1r2s2rksk)rj>0k=1Ai:si>0risi>1k=1A

Si scopre, sfortunatamente, che nel mio problema le matrici non sono avide, anche se credo ancora che siano avide. Ad esempio, nel mio sopra la condizione è violata e questa matrice non è avida di scatola sebbene sia avida. Per quanto ne so, non ci sono risultati sull'identificazione di matrici avide.A1


Sono contento che la mia risposta ti abbia aiutato a trovare questo!
Mike Spivey,

3

L'esempio più semplice per qualcosa di simile potrebbe essere il problema dello zaino frazionato in cui è possibile frazionare gli oggetti. questo problema (e il suo doppio dp) può essere risolto ordinando gli articoli per profitto per peso, scegliendo la sequenza più lunga in questo ordine che è fattibile e frazionando l'ultimo articolo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.