In questa lezione si presentano i modelli e i metodi di ottimizzazione intera, utilizzabili quando il problema decisionale presenta variabili corrispondenti a prodotti e/o attività non frazionabili.
Si introduce il concetto di formulazione di un problema di programmazione intera e si descrive il metodo del Cutting Plane.
Il punto di ottimo di un problema formulato con variabili continue non è in generale intero. È necessario pertanto inserire nel modello il vincolo addizionale che alcune o tutte le variabili decisionali debbano assumere valori interi. Questi vincoli si definiscono vincoli di interezza e per i modelli così formulati si utilizza il termine programmazione intera (P.I.) o discreta. Si utilizza inoltre il termine programmazione intera mista quando alcune variabili decisionali sono continue ed altre sono intere.
Le variabili intere possono essere di due tipi:
Un modello di programmazione intera si presenta nella forma seguente:
Max z = ∑j=1,n cjxj
s.a
∑j=1,n aijxj ≤ (≥, =) bi . i = 1,…, m (1)
xj ≥ 0 j = 1,…, n (2) xj intero j = 1,…, n (3)
o in forma matriciale compatta:
Max z = cx
s.a Ax ≤ b
x ≥ 0 intero
I vincoli di interezza (3) definiscono un reticolo di punti, interni al dominio continuo definito dai vincoli (1) e (2), che costituisce l’insieme delle soluzioni ammissibili del problema intero. Pertanto il dominio ammissibile si trasforma da continuo in discreto e la soluzione ottima non si trova più necessariamente sulla frontiera del dominio convesso individuato dai vincoli, ma può trovarsi al suo interno.
Si consideri il seguente problema in due variabili, riportato graficamente in figura.
Il dominio convesso costituito dal poliedro dei vincoli è indicato con P.
Sia S l’insieme, finito, delle soluzioni intere.
s.a.
Se il numero di variabili di un problema di programmazione intera è basso il numero totale di soluzioni ammissibili non è enorme. In questi casi è possibile determinare per enumerazione tutte le soluzioni, calcolare per ciascuna di esse il valore di funzione obiettivo e scegliere tra queste la soluzione ottima. Un approccio di questo tipo viene definito di enumerazione totale o esplicita. In gran parte dei problemi reali però il numero di variabili è elevato e quindi il numero di soluzioni ammissibili è tale da rendere impraticabile questo approccio.
Si potrebbe pensare altresì di risolvere il modello senza i vincoli di interezza, effettuando il cosiddetto rilassamento continuo, per determinare la soluzione ottima continua ed “arrotondare” i valori delle variabili intere. Ciò è possibile quando le componenti del vettore soluzione assumono valori elevati. Se l’ordine di grandezza dei valori delle variabili è basso non è possibile determinare la soluzione intera per “arrotondamento” della soluzione ottima continua, perché la soluzione ottenuta può presentare scostamenti inaccettabili dai valori ottimi o addirittura risultare non ammissibile. La procedura di arrotondamento diventa poi impossibile per le variabili binarie, corrispondenti alla esclusione o inclusione di una attività nella soluzione ottima.
Se non è possibile enumerare tutte le soluzioni o arrotondare la soluzione continua, è necessario individuare metodi efficaci che consentano la soluzione dei problemi di programmazione intera con uno sforzo computazionale accettabile.
Il poliedro P, corrispondente ai vincoli del modello (P={x≥0 : Ax≤b}), è rappresentato in figura con linea continua a tratto spesso. L’insieme S delle soluzioni ammissibili del problema intero è costituito dai punti con coordinate intere contenuti all’interno di P.
Il poliedro P’, interno a P, corrisponde ad un altro insieme di vincoli. Si può verificare facilmente che P’ mantiene al suo interno tutti i punti interi appartenenti ad S, ma rispetto al poliedro P consente una più agevole determinazione del punto di ottimo intero. Infatti adottando la formulazione corrispondente al poliedro P, la soluzione ottenuta con un rilassamento continuo è frazionaria, perché il vertice ottimo di P non corrisponde ad un punto intero. Adottando invece la formulazione corrispondente a P’, la soluzione ottenuta con lo stesso rilassamento continuo consente di determinare la soluzione ottima intera, perché il vertice ottimo di P’ corrisponde ad un punto intero. Ciò dipende ovviamente dall’insieme di vincoli Ax ≤ b, cioè dalla formulazione adottata per rappresentare il problema, che nel secondo caso è più “stringente” del primo. Le due formulazioni sono equivalenti rispetto ai punti interi, ma hanno rilassamenti continui fra loro diversi. Sulla base di questo ragionamento si potrebbe pensare di costruire una formulazione A^x ≤ b^ (la più “aderente” possibile all’insieme S dei punti interi) cui corrisponde un poliedro P^, definito nocciolo convesso, rappresentato in figura con linea tratteggiata, per il quale tutti i vertici sono interi. Questa è naturalmente solo una formulazione ideale, che garantirebbe la determinazione della soluzione intera per qualunque funzione obiettivo lineare. Si può dare la seguente definizione:
“Dato un insieme S di punti interi, si definisce nocciolo convesso di S il più piccolo insieme convesso conv (S) che contiene S”.
Il poliedro P corrisponde alla formulazione continua
Il poliedro P’ corrisponde ad una formulazione continua equivalente alla formulazione originaria
Il poliedro P^(nocciolo convesso) è il più piccolo insieme convesso contenente tutti i punti interi.
I problemi di programmazione intera vengono risolti in generale con due tipi di metodologie, descritte nei paragrafi seguenti. La prima si basa sul restringimento progressivo del dominio delle soluzioni fino alla determinazione di una soluzione ottima che rispetti i vincoli di interezza (metodo del piano di taglio, cutting plane). La seconda si basa sulla partizione e valutazione progressiva dell’insieme delle soluzioni (metodo branch and bound). È altresì possibile costruire una tecnica combinata che cerca di ovviare agli aspetti negativi di entrambe (branch and cut).
Il piano di taglio deve rispettare due condizioni:
Dopo l’aggiunta del vincolo di taglio si risove il modello rilassato.
Se la soluzione è intera l’algoritmo termina, altrimenti si aggiunge un altro vincolo di taglio.
2. Ottimizzazione non lineare monodimensionale
3. Ottimizzazione non lineare multidimensionale non vincolata
4. Ottimizzazione non lineare multidimensionale vincolata
5. Ottimizzazione lineare: formulazione di modelli
6. Ottimizzazione lineare: Algoritmo del Simplesso
7. Ottimizzazione lineare: Algoritmo del Simplesso - II parte
8. Ottimizzazione lineare: Algoritmo del Simplesso - III parte
9. Ottimizzazione lineare: il metodo del Big M
10. Ottimizzazione lineare: il metodo delle due fasi
11. Ottimizzazione lineare: Algoritmo del Simplesso revisionato
12. Ottimizzazione lineare: Analisi post-ottimale
13. Ottimizzazione lineare: il modello duale
15. Ottimizzazione intera: il metodo del piano di taglio
16. Ottimizzazione intera: il metodo Branch and Bound
17. Ottimizzazione su rete: Introduzione alla Teoria dei Grafi
18. Ottimizzazione su rete: Problemi di percorso
19. Ottimizzazione su rete: Problemi di flusso
20. Ottimizzazione su rete: Problemi di progetto, circuito e locali...