Dualità nella programmazione lineare
Ogni problema di programmazione lineare ha un problema associato, chiamato duale, costruito a partire dagli stessi dati, ma organizzati in modo diverso e con una propria interpretazione economica.
Studiare il duale è utile per due motivi: permette di stabilire un limite al valore ottimo del problema originale e di determinare il valore marginale delle risorse, cioè quanto vale un'unità aggiuntiva di ciascuna risorsa in termini di miglioramento dell'obiettivo.
Il problema del compratore
Un'officina ha tre impianti, ciascuno con un certo numero di ore disponibili a settimana, e produce due tipi di componenti:
| C1 (h/lotto) | C2 (h/lotto) | Ore disponibili | |
|---|---|---|---|
| Impianto 1 | 1 | 0 | 4 |
| Impianto 2 | 0 | 3 | 15 |
| Impianto 3 | 2 | 2 | 14 |
| Profitto (k€/lotto) | 5 | 4 |
Il problema dell'officina è il solito: quanti lotti produrre per massimizzare il profitto.
Ora arriva un compratore che vuole affittare tutte le ore degli impianti. Deve proporre un prezzo per ogni ora di ciascun impianto: , , (k€/h), non negativi.
L'officina accetta solo se cedere le ore le rende almeno quanto usarle per produrre. Le ore che servono per un lotto di C1 (1h dell'impianto 1 e 2h dell'impianto 3) devono valere almeno i 5 k€ di profitto di quel lotto, e lo stesso per C2:
Tra tutte le offerte che l'officina accetterebbe, il compratore vuole spendere il meno possibile:
Questo è il problema duale di quello dell'officina.
Le due soluzioni. L'officina massimizza producendo e lotti, con k€. Il compratore minimizza offrendo , con una spesa di k€. Lo stesso numero. Il prezzo giusto delle risorse è esattamente il profitto che l'officina saprebbe ricavarne.
La definizione
In generale, a un problema di massimo con vincoli corrisponde un problema di minimo con vincoli :
La corrispondenza è simmetrica:
- a ogni vincolo del primale corrisponde una variabile del duale, e viceversa;
- i termini noti del primale diventano i coefficienti dell'obiettivo del duale, e i profitti diventano i termini noti;
- la matrice si traspone.
Il duale del duale è di nuovo il primale. I due problemi formano una coppia primale-duale, e quale si chiama "primale" è solo una convenzione.
Il duale del problema di produzione
Il problema degli articoli precedenti, con e , ha come duale:
La soluzione è e , con : di nuovo uguale all'ottimo del primale. E 2 e 1 sono proprio i coefficienti che il simplesso aveva lasciato nell'ultima iterazione, , davanti agli scarti dei due vincoli. Il simplesso, risolvendo il primale, risolve di conseguenza anche il duale.
La dualità debole: un limite all'ottimo
Il legame tra i due problemi si riassume in una relazione. Scrivendo i vincoli come equazioni, con gli scarti nel primale () e le eccedenze nel duale (), vale sempre:
La relazione, passo per passo
Si ottiene in tre passi, sostituendo in ciascun obiettivo l'equazione dei vincoli dell'altro problema.
1. L'obiettivo del primale. Dai vincoli del duale, . Sostituendo in :
(si usa ).
2. L'obiettivo del duale. Dai vincoli del primale, . Sostituendo in , che è lo stesso numero di :
3. Il termine comune. Entrambe le espressioni contengono . Dalla prima si ricava , e sostituendolo nella seconda:
Le coppie e si chiamano variabili complementari.
Se le due soluzioni sono ammissibili, tutte le variabili sono , quindi . Ne segue il teorema della dualità debole:
Qualsiasi soluzione ammissibile del problema di massimo vale al massimo quanto qualsiasi soluzione ammissibile del problema di minimo. In pratica:
- ogni soluzione ammissibile del primale dà un limite inferiore all'ottimo;
- ogni soluzione ammissibile del duale dà un limite superiore.
Basta un punto ammissibile per parte, anche scelto a caso, per sapere in che intervallo cade l'ottimo, senza risolvere niente. Nell'ottimo i due valori coincidono, come negli esempi: è la dualità forte.
Dalla relazione si vede anche perché nell'ottimo deve valere . Essendo una somma di prodotti non negativi, ogni prodotto è nullo: se una risorsa avanza (), il suo prezzo è zero (). È proprio il caso dell'impianto 2: nella produzione ottima lavora 9 ore su 15, e infatti il compratore offre .
Costruire il duale di un problema qualsiasi
Non tutti i problemi sono nella forma (max, ). Si può sempre riportarli a quella forma, oppure usare direttamente le regole di corrispondenza. Per un primale di massimo:
| Primale (max) | Duale (min) |
|---|---|
| vincolo di tipo | |
| vincolo di tipo | |
| vincolo di tipo | libera |
| vincolo di tipo | |
| vincolo di tipo | |
| libera | vincolo di tipo |
Un esempio:
Il primo vincolo è , quindi . Il secondo è , quindi . dà un vincolo , e libera dà un vincolo di uguaglianza:
Riepilogo
- Ogni problema di PL ha un duale: i vincoli diventano variabili, i termini noti diventano l'obiettivo, la matrice si traspone.
- Dualità debole: il valore di una soluzione ammissibile del problema di massimo non supera mai quello di una del problema di minimo. Ogni soluzione ammissibile dà un limite all'ottimo.
- Nell'ottimo i due valori coincidono, e una risorsa che avanza ha prezzo zero.
- Il simplesso fornisce la soluzione duale nella riga dell'obiettivo, in corrispondenza degli scarti.