Quali sono i vantaggi / gli svantaggi dei metodi a punti interni rispetto al metodo simplex per l'ottimizzazione lineare?


14

A quanto ho capito, poiché una soluzione a un programma lineare si presenta sempre a un vertice del suo insieme poliedrico (se esiste una soluzione e il valore della funzione obiettivo ottimale è limitato dal basso, ipotizzando un problema di minimizzazione), come può una ricerca attraverso l'interno della regione fattibile sia migliore? Converge più velocemente? In quali circostanze sarebbe vantaggioso utilizzare il metodo simplex rispetto ai metodi a punti interni? Uno è più facile da implementare in un codice rispetto all'altro?


Una delle tue dichiarazioni è errata. La soluzione a un problema di ottimizzazione convessa NON si presenta sempre al limite. Prendi, ad esempio, , dove la soluzione ottimale si trova in x = 0 , che si trova all'interno della regione possibile. Inoltre, al di fuori del contesto della programmazione lineare, il metodo simplex si riferisce generalmente al metodo simplex Nelder-Mead, che potrebbe anche non convergere in una soluzione ottimale in dimensioni maggiori di 1. Questo metodo non è raccomandato per la programmazione convessa. Modifica la tua domanda per chiarezza e correttezza. minX[-1,1]X2X=0
Geoff Oxberry

Sarebbe più appropriato dire "ottimizzazione lineare" anziché "ottimizzazione convessa"?
Paul

Sì, allora la tua affermazione è corretta. Grazie per aver modificato la tua domanda.
Geoff Oxberry,

Il problema con il metodo simplex è che non può essere generalizzato a problemi non lineari, vale a dire la maggior parte dei problemi del mondo reale.

Risposte:


17

Sulla base dell'esperienza personale, direi che i metodi simplex sono leggermente più facili da capire come implementare rispetto ai metodi a punti interni, basati sull'esperienza personale dall'implementazione sia del simplex primitivo che di un metodo a punti interni di base in MATLAB come parte di una lezione di programmazione lineare . Gli ostacoli principali nel simplex primordiale sono la corretta implementazione della Fase I e della Fase II e l'implementazione corretta di una regola di riciclaggio. I principali ostacoli nell'implementazione di un metodo a punti interni per la programmazione lineare tendono principalmente a implementare correttamente il metodo iterativo e ridimensionare il parametro della barriera di conseguenza.

Puoi trovare una discussione più completa dei pro e dei contro di ogni algoritmo in un libro di testo sulla programmazione lineare, come Introduzione all'ottimizzazione lineare di Bertsimas e Tsitsiklis. ( Dichiarazione di non responsabilità: ho imparato la programmazione lineare da questo libro di testo e ho preso la programmazione lineare al MIT dalla moglie di Bertsimas.) Ecco alcune delle basi:

Pro di simplex:

  • Dato variabili di decisione, di solito converge in O ( n ) operazioni con O ( n ) perni.nO(n)O(n)
  • Sfrutta la geometria del problema: visita i vertici dell'insieme fattibile e verifica l'ottimalità di ogni vertice visitato. (In primal simplex, il costo ridotto può essere utilizzato per questo controllo.)
  • Buono per piccoli problemi.

Contro di simplex:

  • nO(2n)
  • Non eccezionale per grossi problemi, perché le operazioni di rotazione diventano costose. Gli algoritmi del piano di taglio o gli algoritmi di generazione ritardata della colonna come Dantzig-Wolfe possono talvolta compensare questa mancanza.

Pro dei metodi di punti interni:

  • O(n3.5L2logLloglogL)L è il numero di bit di input per l'algoritmo.
  • Meglio per problemi grandi e sparsi perché l'algebra lineare richiesta per l'algoritmo è più veloce.

Contro di metodi di punti interni:

  • Non è così intuitivamente soddisfacente perché hai ragione, questi metodi non visitano i vertici. Vagano attraverso la regione interna, convergendo su una soluzione quando hanno successo.
  • Per piccoli problemi, il simplex sarà probabilmente più veloce. (Puoi costruire casi patologici, come il cubo di Klee-Minty.)

2
Un buon riassunto Klee-Minty sembra infatti essere progettato per confondere i metodi LP simplex ...
JM,

@JM Sì, è esattamente questo il punto - è una costruzione esplicita mostrare che i metodi simplex non sono polinomiali (anche se ci sono varianti che fanno piangere anche i metodi dei punti interni).
Christian Clason,

Grazie per questo post informativo. Mi chiedo quante variabili aumentano il problema? Dozzine? Centinaia? Migliaia?
KjMag

5DUNX*

3

La risposta è semplice Entrambi (metodi a punti semplici e interni) sono un campo maturo da un punto di vista algoritmico. Entrambi funzionano molto bene in pratica. La buona reputazione dell'IPM (metodi dei punti interni) è dovuta alla sua complessità polinomiale nel peggiore dei casi. Questo non è il caso del simplex che ha una complessità combinatoria. Tuttavia, nella pratica non si verificano quasi mai programmi lineari combinatori. Per problemi su larga scala, l'IP sembra essere un po 'più veloce, ma non è necessaria la regola. A mio avviso, l'IP può essere facile da capire e da implementare, ma sicuramente qualcun altro non è d'accordo, e questo va bene. Ora, in LP, se la soluzione è unica, è sicuramente in un vertice (sia IP che Simplex vanno bene anche qui). La soluzione può anche essere su una faccia del poliedro o su un bordo nel qual caso, il vertice adiacente è (o vertici) è anche una soluzione (di nuovo, sia IP che simplex fanno bene). Quindi sono praticamente uguali.


Mi rendo conto che l'esempio che ho dato non era un programma lineare; se si guarda alla cronologia delle revisioni, una versione precedente di questa domanda chiedeva di confrontare il metodo simplex e i metodi dei punti interni per problemi di ottimizzazione convessa. Ho fornito un controesempio per giustificare le modifiche apportate e per incoraggiare il poster originale a correggere la sua domanda, cosa che ha fatto.
Geoff Oxberry,
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.