Il metodo primale-duale¶
Parte 4 · Metodi matriciali, sensitività e geometria · Capitolo 13 · Dispensa, volume 4 (PDF) · Esercizi: Il metodo primale-duale
13.1 La coppia di riferimento: problema primale e duale¶
-
L'algoritmo del simplesso mantiene una base primale ammissibile e procede verso una base anche duale ammissibile; l'algoritmo del simplesso duale mantiene una base duale ammissibile e procede verso una base anche primale ammissibile. Il metodo primale-duale procede in modo diverso: mantiene una soluzione duale ammissibile, che non deve essere necessariamente una soluzione di base, e la usa per decidere quali variabili primali possono assumere un valore positivo.
-
Il metodo è formulato in modo naturale per un problema LP in forma standard di minimo con vettore dei termini noti non negativo, e per il suo duale:
con \({\boldsymbol b} \ge {\boldsymbol 0}\). Gli \(n\) vincoli duali \(\eqref{PD_D_CONS}\) si scrivono \({\boldsymbol A}_j' \, {\boldsymbol \pi} \le c_j\) per ogni \(j \in \{1,2,\dots,n\}\), dove \({\boldsymbol A}_j\) è la \(j\)-esima colonna della matrice dei vincoli, e le \(m\) variabili duali sono libere, perché i vincoli primali \(\eqref{PD_P_CONS}\) sono uguaglianze.
- Ogni problema LP si può portare nella forma (13.1): una funzione obiettivo di massimo si sostituisce con la sua opposta, ai vincoli di disuguaglianza si aggiungono variabili di scarto o di surplus, le variabili non positive e libere si sostituiscono come di consueto, e ogni vincolo con termine noto negativo si moltiplica per \(-1\).
Definizione 13.1: insieme ammesso
Data una soluzione ammissibile \({\boldsymbol \pi}\) del problema duale (13.2), l'insieme ammesso è l'insieme degli indici dei vincoli duali soddisfatti con uguaglianza:
Per il teorema degli scarti complementari, una soluzione ammissibile \({\boldsymbol x}\) del problema primale (13.1) e una soluzione ammissibile \({\boldsymbol \pi}\) del problema duale (13.2) sono entrambe ottime se e solo se
cioè se e solo se solo le variabili ammesse assumono un valore positivo.
- Questa è l'idea del metodo: data una \({\boldsymbol \pi}\) duale ammissibile, cerchiamo una soluzione primale ammissibile che usi solo le variabili di \(\pazocal{J}({\boldsymbol \pi})\). Se tale soluzione esiste, la coppia è ottima; se non esiste, il tentativo stesso ci dice come migliorare \({\boldsymbol \pi}\).
13.2 Il primale ristretto¶
- Data una soluzione duale ammissibile \({\boldsymbol \pi}\) con insieme ammesso \(\pazocal{J}\), cerchiamo una soluzione primale ammissibile che usi solo le variabili con indice in \(\pazocal{J}\). Per farlo risolviamo un problema ausiliario con \(m\) variabili artificiali, esattamente come nella Fase \(0\) dell'algoritmo del simplesso.
Definizione 13.2: primale ristretto
Data una soluzione ammissibile \({\boldsymbol \pi}\) del problema duale (13.2) con insieme ammesso \(\pazocal{J}\), il primale ristretto \(RP(\pazocal{J})\) è:
- Il primale ristretto non è mai inammissibile, poiché \({\boldsymbol b} \ge {\boldsymbol 0}\) ammette la soluzione di base ammissibile \({\boldsymbol a} = {\boldsymbol b}\) e \(x_j = 0\) per ogni \(j \in \pazocal{J}\), e non è mai illimitato, poiché il suo valore obiettivo è non negativo.
-
Se \(\xi(\pazocal{J}) = 0\), allora la soluzione ottima di \(RP(\pazocal{J})\), completata con \(x_j = 0\) per ogni \(j \notin \pazocal{J}\), è una soluzione ammissibile del problema primale (13.1) che soddisfa le condizioni degli scarti complementari insieme a \({\boldsymbol \pi}\): la coppia è ottima e il metodo si arresta.
-
Se \(\xi(\pazocal{J}) > 0\), allora nessuna soluzione primale ammissibile usa solo le variabili ammesse, e la soluzione duale \({\boldsymbol \pi}\) deve essere migliorata.
Definizione 13.3: duale del primale ristretto
Il problema duale del primale ristretto \(RP(\pazocal{J})\), detto duale del primale ristretto \(DRP(\pazocal{J})\), è:
- La sua soluzione ottima \({\boldsymbol y}\) è prodotta dall'algoritmo del simplesso insieme alla soluzione ottima di \(RP(\pazocal{J})\), e per la dualità forte abbiamo \({\boldsymbol b}' {\boldsymbol y} = \xi(\pazocal{J}) > 0\).
Il vettore \({\boldsymbol y}\) è la direzione lungo la quale si migliora la soluzione duale:
poiché il valore obiettivo duale aumenta, per ogni \(\theta > 0\), di
13.3 Il passo duale¶
-
La lunghezza del passo \(\theta\) è il massimo valore per cui la nuova soluzione duale resta ammissibile. Per ogni \(j \in \{1,2,\dots,n\}\) deve valere
\[ {\boldsymbol A}_j' ({\boldsymbol \pi} + \theta \, {\boldsymbol y}) \le c_j \qquad \Longleftrightarrow \qquad \theta \; {\boldsymbol A}_j' {\boldsymbol y} \; \le \; \underbrace{c_j - {\boldsymbol A}_j' {\boldsymbol \pi}}_{\text{scarto duale } s_j \, \ge \, 0} . \] -
Per \(j \in \pazocal{J}\) il vincolo è soddisfatto per ogni \(\theta \ge 0\), perché \(s_j = 0\) e \({\boldsymbol A}_j' {\boldsymbol y} \le 0\) per definizione di \(DRP(\pazocal{J})\). Per \(j \notin \pazocal{J}\) abbiamo \(s_j > 0\), e il vincolo limita \(\theta\) solo quando \({\boldsymbol A}_j' {\boldsymbol y} > 0\).
La lunghezza del passo è
Se \({\boldsymbol A}_j' {\boldsymbol y} \le 0\) per ogni \(j \notin \pazocal{J}\), allora \(\theta\) può crescere senza limite: il problema duale (13.2) è illimitato e, per il teorema sui possibili esiti di una coppia di problemi primale e duale, il problema primale (13.1) è inammissibile.
- L'indice \(j^{\star}\) che realizza il minimo entra nell'insieme ammesso: dopo il passo, il suo scarto duale si annulla. Inoltre, ogni indice \(j\) di una variabile in base della soluzione ottima di \(RP(\pazocal{J})\) resta nell'insieme ammesso, perché \({\boldsymbol A}_j' {\boldsymbol y} = 0\) per le condizioni degli scarti complementari tra \(RP(\pazocal{J})\) e \(DRP(\pazocal{J})\). Solo gli indici \(j \in \pazocal{J}\) con \({\boldsymbol A}_j' {\boldsymbol y} < 0\) possono uscire dall'insieme ammesso, perché il loro scarto duale diventa \(-\theta \, {\boldsymbol A}_j' {\boldsymbol y} > 0\).
La soluzione duale ammissibile iniziale è spesso immediata. Se \({\boldsymbol c} \ge {\boldsymbol 0}\), allora \({\boldsymbol \pi} = {\boldsymbol 0}\) è ammissibile, con \(\pazocal{J} = \{\, j : c_j = 0 \,\}\). Altrimenti, una soluzione duale ammissibile deve essere determinata in precedenza.
13.4 Pseudocodice del metodo primale-duale¶
Algoritmo
-
Input
Un problema LP (13.1) con \({\boldsymbol b} \ge {\boldsymbol 0}\) e una soluzione ammissibile \({\boldsymbol \pi}\) del suo problema duale (13.2).
-
Output
Una soluzione ottima del problema LP (13.1) e una soluzione ottima del suo problema duale, se esistono; altrimenti, un certificato di inammissibilità del problema LP (13.1).
-
Passo 0: Inizializzazione
Considerare la soluzione duale ammissibile data \({\boldsymbol \pi}\). Andare al Passo \(1\).
-
Passo 1: Insieme ammesso
Calcolare gli scarti duali \(s_j = c_j - {\boldsymbol A}_j' {\boldsymbol \pi}\) per ogni \(j \in \{1,2,\dots,n\}\) e l'insieme ammesso \(\pazocal{J} = \{\, j : s_j = 0 \,\}\).
-
Passo 2: Primale ristretto
Risolvere \(RP(\pazocal{J})\) con l'algoritmo del simplesso, ottenendo il suo valore ottimo \(\xi(\pazocal{J})\), una soluzione ottima \(x_j\) con \(j \in \pazocal{J}\) e una soluzione ottima \({\boldsymbol y}\) di \(DRP(\pazocal{J})\).
Se \(\xi(\pazocal{J}) = 0\), allora il punto
\[ \tilde x_j = x_j, ~ \forall j \in \pazocal{J}, \qquad \tilde x_j = 0, ~ \forall j \notin \pazocal{J}, \]è una soluzione ottima del problema LP (13.1), \({\boldsymbol \pi}\) è una soluzione ottima del suo problema duale, e \({\boldsymbol c}' \tilde{\boldsymbol x} = {\boldsymbol b}' {\boldsymbol \pi}\).
STOP. -
Passo 3: Passo duale
-
a. Se \({\boldsymbol A}_j' {\boldsymbol y} \le 0\) per ogni \(j \notin \pazocal{J}\), allora il problema LP (13.1) è inammissibile.
STOP. -
b. Calcolare
\[ \theta \leftarrow \min \left\{~\frac{s_j}{{\boldsymbol A}_j' {\boldsymbol y}} ~:~ j \notin \pazocal{J}, ~ {\boldsymbol A}_j' {\boldsymbol y} > 0 ~\right\} . \] -
c. Aggiornare la soluzione duale: \(~{\boldsymbol \pi} \leftarrow {\boldsymbol \pi} + \theta \; {\boldsymbol y}\).
Andare al Passo \(1\).
-
A ogni iterazione il valore obiettivo duale \({\boldsymbol b}' {\boldsymbol \pi}\) aumenta strettamente. La finitezza del metodo segue invece dai primali ristretti: la base ottima di \(RP(\pazocal{J})\) è ancora una base ammissibile del primale ristretto successivo, perché i suoi indici restano ammessi, e la nuova variabile ammessa \(x_{j^{\star}}\) ha costo ridotto negativo rispetto a essa. Di conseguenza, il primale ristretto successivo si può risolvere partendo da quella base, e i valori ottimi \(\xi(\pazocal{J})\) non aumentano mai da un'iterazione alla successiva. Essi diminuiscono strettamente se l'operazione di pivot su \(x_{j^{\star}}\) è non degenere, e in generale il metodo termina dopo un numero finito di iterazioni quando si usa una regola anti-ciclaggio (per esempio, la regola di Bland) nell'algoritmo del simplesso applicato ai primali ristretti.
13.5 Esecuzione del metodo primale-duale¶
-
Consideriamo il seguente problema LP in forma standard di minimo con \(n=4\) variabili non negative variabili e \(m=2\) vincoli lineari di uguaglianza, che viene risolto negli esempi di questa sezione:
\[ \begin{array}{rrrrrrrrrrrrr} {\min} & {2} \, {x_1} & {+} & {2} \, {x_2} & {+} & {5} \, {x_3} & {+} & {3} \, {x_4} \\[1ex] \text{soggetto a} & \, {x_1} & {+} & \, {x_2} & {+} & {2} \, {x_3} & {+} & \, {x_4} & {=} & {6} \\[1ex] & \, {x_1} & {+} & {2} \, {x_2} & {+} & \, {x_3} & {+} & {3} \, {x_4} & {=} & {4} \\[1ex] & {x_1,} & & {x_2,} & & {x_3,} & & {x_4} & { \ge} & {0} \end{array} \]Il suo vettore dei termini noti è non negativo e il suo vettore dei costi è non negativo, quindi \({\boldsymbol \pi} = (0~~0)'\) è una soluzione ammissibile del problema duale.
Esempio 13.1: metodo primale-duale – prima iterazione
Con \({\boldsymbol \pi} = (0~~0)'\) gli scarti duali sono
quindi l'insieme ammesso è \(\pazocal{J} = \emptyset\): nessuna variabile primale può essere positiva.
Il primale ristretto ha solo le due variabili artificiali, il suo valore ottimo è
e la soluzione ottima di \(DRP(\emptyset)\) è \({\boldsymbol y} = (1~~1)'\).
La lunghezza del passo è determinata dalle quattro colonne non ammesse:
realizzato da \(j^{\star} = 2\). La nuova soluzione duale è
con valore obiettivo duale \({\boldsymbol b}' {\boldsymbol \pi} = \frac{20}{3}\).
Esempio 13.2: metodo primale-duale – seconda iterazione
Con \({\boldsymbol \pi} = \left(\frac{2}{3}~~\frac{2}{3}\right)'\) gli scarti duali sono
quindi \(\pazocal{J} = \{2\}\).
Il primale ristretto \(RP(\{2\})\) ha la variabile \(x_2\) e le due variabili artificiali. La sua soluzione ottima è \(x_2 = 2\), con
e la soluzione ottima di \(DRP(\{2\})\) è \({\boldsymbol y} = \left(1~~-\frac{1}{2}\right)'\).
Per le colonne non ammesse abbiamo
e solo le prime due sono positive:
realizzato da \(j^{\star} = 1\). La nuova soluzione duale è
con valore obiettivo duale \({\boldsymbol b}' {\boldsymbol \pi} = 12\).
Esempio 13.3: metodo primale-duale – terza iterazione
Con \({\boldsymbol \pi} = (2~~0)'\) gli scarti duali sono
quindi \(\pazocal{J} = \{1,~2\}\).
Il primale ristretto \(RP(\{1,2\})\) ha le variabili \(x_1\) e \(x_2\) e le due variabili artificiali. La sua soluzione ottima è \(x_1 = 4\) e \(x_2 = 0\), con
e la soluzione ottima di \(DRP(\{1,2\})\) è \({\boldsymbol y} = (1~~-1)'\).
Per le colonne non ammesse abbiamo
quindi
realizzato da \(j^{\star} = 3\). La nuova soluzione duale è
con valore obiettivo duale \({\boldsymbol b}' {\boldsymbol \pi} = 14\). La seconda variabile variabile è diventata negativa: ciò è consentito, perché le variabili duali di (13.2) sono libere.
Esempio 13.4: metodo primale-duale – quarta iterazione
Con \({\boldsymbol \pi} = (3~~-1)'\) gli scarti duali sono
quindi \(\pazocal{J} = \{1,~3\}\).
Il primale ristretto \(RP(\{1,3\})\) ha le variabili \(x_1\) e \(x_3\) e le due variabili artificiali. La sua soluzione ottima è \(x_1 = 2\) e \(x_3 = 2\), con
Il valore ottimo del primale ristretto è \(0\), quindi il metodo si arresta. Una soluzione ottima di questo problema LP è
una soluzione ottima del suo problema duale è \(\tilde{\boldsymbol \pi}(\, D(LP) \,) = (3~~-1)'\), e i due valori ottimi coincidono:
in accordo con il teorema della dualità forte.
Il valore obiettivo duale è aumentato a ogni iterazione,
e l'insieme ammesso è cambiato di conseguenza,
finché non ha contenuto abbastanza variabili per costruire una soluzione primale ammissibile. L'insieme ammesso non cresce necessariamente: alla quarta iterazione l'indice \(2\) ne è uscito, perché \({\boldsymbol A}_2' {\boldsymbol y} = -1 < 0\) alla terza iterazione.
13.6 Confronto con gli algoritmi del simplesso¶
| mantiene | procede verso | |
|---|---|---|
| simplesso | base primale ammissibile | ammissibilità duale |
| simplesso duale | base duale ammissibile | ammissibilità primale |
| metodo primale-duale | soluzione duale ammissibile | ammissibilità primale |
La differenza tra l'algoritmo del simplesso duale e il metodo primale-duale è che il primo mantiene una base duale ammissibile, mentre il secondo mantiene una soluzione duale ammissibile, che non deve essere di base. Per questo motivo il metodo primale-duale può partire da qualunque soluzione duale ammissibile, anche una suggerita dalla struttura del problema.
- L'interesse pratico del metodo primale-duale è che il primale ristretto (13.3) è spesso molto più facile del problema LP originale: ha meno variabili e, per diversi problemi di ottimizzazione combinatoria risulta essere un problema con un algoritmo combinatorio noto, come un problema di cammino minimo o di flusso massimo. In questi casi il metodo primale-duale diventa un algoritmo puramente combinatorio, ed è all'origine di molti algoritmi classici e di diversi algoritmi di approssimazione.
Esercizi su questo capitolo: Il metodo primale-duale