Appello straordinario – 06/04/2016 1 RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola: 1) Si consideri il problema di PL parzialmente illustrato nella figura, in cui c, A1 ed A4 sono collineari. Si forniscano le definizioni algebriche di base ammissibile primale e duale, degenere primale e duale, e se ne descriva l’interpretazione grafica (limitandosi al caso bidimensionale). Infine si descrivano le proprietà (ammissibilità e degenerazione, sia primale che duale) di ognuna delle possibili basi relative ai vincoli mostrati. A2 A3 A5 c A4 SVOLGIMENTO Per il problema di PL A1 max{ cx : Ax ≤ b } in cui la matrice A con n colonne ed m righe ha rango di colonna pieno (e quindi m ≥ n), una base B è un sottoinsieme dell’insieme degli indici di riga I = {1, 2, . . . , m} tale che |B| = n e la matrice (quadrata) AB è invertibile. Sono pertanto definite le soluzioni di base primale e duale, ossia rispettivamente −1 x̄ = AB bB , ȳ = [ ȳB , ȳN ] = [ cA−1 B , 0] dove N = I \ B. Una base B si dice primale ammissibile se AN x̄ ≤ bN , il che geometricamente corrisponde al fatto che x̄ è un vertice del poliedro, ossia appartiene alla regione ammissibile (non viola alcun vincolo); si dice inoltre primale non degenere se AN x̄ 6= bN , ossia in x̄ incidono (per n = 2) solamente le due rette che identificano la frontiera dei due vincoli in base. Una base si dice duale ammissibile se ȳB ≥ 0, il che geometricamente corrisponde al fatto che il vettore c appartiene al cono finitamente generato dai due (poiché n = 2) gradienti dei vincoli in base; si dice inoltre duale non degenere se ȳB 6= 0, ossia c non è collineare a nessuno dei due (poichè n = 2) gradienti dei vincoli in base. Da questo segue che, per la figura in oggetto: {1, 2} è primale ammissibile non degenere, duale non ammissibile degenere; {1, 3} è primale ammissibile degenere, duale non ammissibile degenere; {1, 4} non è una base; {1, 5} è primale ammissibile degenere, duale non ammissibile degenere; {2, 3} è primale ammissibile degenere, duale ammissibile non degenere; {2, 4} è primale ammissibile degenere, duale ammissibile degenere; {2, 5} è primale non ammissibile non degenere, duale ammissibile non degenere; {3, 4} è primale non ammissibile degenere, duale ammissibile degenere; {3, 5} è primale ammissibile degenere, duale non ammissibile non degenere; {4, 5} è primale non ammissibile non degenere, duale ammissibile degenere. Appello straordinario – 06/04/2016 2 2) Si risolva graficamente il problema di PL in figura, utilizzando l’algoritmo del Simplesso Duale a partire dalla base B = { 2 , 5 }; si noti che c ed A5 sono collineari. Per ogni iterazione si indichino: la base, la soluzione primale di base (in figura), l’indice entrante k, i segni delle componenti dei vettori ȳB e ηB e l’indice uscente h, giustificando le risposte. Si discuta inoltre l’eventuale degenerazione primale e duale delle soluzioni di base determinate. A3 A6 A1 A5 x3 c x2 x1 x4 A2 SVOLGIMENTO A4 it. 1): B = { 2 , 5 }. La soluzione primale di base x̄1 viola i vincoli 2 e 6, pertanto k = min{4, 6} = 4 per la regola anticiclo di Bland. ȳ2 = 0 e ȳ5 > 0 in quanto c è collineare con A5 ; quindi la base è duale degenere, ed è primale non degenere poiché B = I(x̄1 ). Poiché A4 ∈ cono(−A2 , A5 ), come mostrato in figura (a), risultano η2 < 0 e η5 > 0; pertanto h = 5. it. 2): B = { 2 , 4 }. La soluzione primale di base x̄2 viola il solo vincolo 6, pertanto k = 6. ȳ2 > 0 e ȳ4 > 0 in quanto c è interna a cono(A2 , A4 ), quindi la base è duale non degenere. Risulta invece primale degenere poiché B ⊂ I(x̄2 ) = { 1 , 2 , 4 }. Poiché A6 ∈ cono(A2 , A4 ), come mostrato in figura (b), risultano η2 > 0 e η4 > 0. Poichè però c ∈ cono(A2 , A6 ) ma c ∈ / cono(A4 , A6 ), deve necessariamente risultare h = 4. it. 3): B = { 2 , 6 }. La soluzione primale di base x̄3 viola il solo vincolo 1, pertanto k = 1. ȳ2 > 0 e ȳ6 > 0 in quanto c è interno al cono generato da A2 e A6 ; quindi la base è duale non degenere, ed è anche primale non degenere poiché B = I(x̄3 ). Poiché A1 ∈ cono(A2 , −A6 ), come mostrato in figura (c), risultano η2 > 0, η6 < 0; pertanto h = 2. it. 4): B = { 1 , 6 }. ȳ1 > 0 e ȳ6 > 0 in quanto c è interno al cono generato da A1 e A6 (si veda ancora la figura (c)); quindi la base continua ad essere primale e duale non degenere. La soluzione primale di base x̄4 viola il solo vincolo 4, pertanto k = 4 (ancora una volta). Poiché A4 ∈ cono(−A1 , −A6 ), come mostrato in figura (d), risultano η1 < 0, η6 < 0; pertanto l’algoritmo termina avendo determinato che il problema duale è inferiormente illimitato, e quindi il problema primale è vuoto. a) A2 c -A2 A4 c) b) A5 A2 A4 A1 c A6 A1 A2 -A6 d) c -A6 c A6 A4 A6 -A1 Appello straordinario – 06/04/2016 3 3) Sia d[·] un vettore di etichette che soddisfano le condizioni di Bellman (e tale che d[r] = 0): si dimostri la relazione esistente tra d[i], i 6= r ed il costo del cammino minimo tra r ed i, e la si utilizzi per dimostrare che, quando l’algoritmo SPT termina, l’albero orientato e radicato individuato dal vettore dei predecessori p[·] è effettivamente un albero dei cammini minimi. SVOLGIMENTO Teorema: sia dato un vettore d di etichette dei nodi che verificano le condizioni di Bellman d[i] + cij ≥ d[j] ∀(i, j) ∈ A e tale che d[r] = 0: allora, per ogni i 6= r, d[i] è una valutazione inferiore del costo del cammino minimo tra r ed i. Dimostrazione: consideriamo un qualsiasi cammino P = {j1 , j2 , . . . , jk } tra r ed i (quindi r = j1 e jk = i). Per ipotesi si ha: d[jk ] ≤ d[jk−1 ] + cjk−1 jk d[jk−1 ] ≤ d[jk−2 ] + cjk−2 jk−1 . .. .. .. . . . d[j2 ] ≤ d[j1 ] + cj1 j2 Sommando membro a membro, e sapendo che d[j1 ] = d[r] = 0, si ottiene: d[i] = d[jk ] ≤ cj1 j2 + cj2 j3 + . . . + cjk−1 jk = C(P ) . Siccome la relazione precedente vale per un qualsiasi cammino P tra r ed i allora vale in particolare per il cammino di costo minimo, il che dimostra la proprietà. Siano adesso p[·] e d[·] rispettivamente il vettore delle etichette e dei predecessori al momento della terminazione dell’algoritmo SPT. Sappiamo che p[·] individua un albero di copertura del grafo orientato e radicato in r, e per ogni nodo i 6= r d[i] è la lunghezza dell’unico cammino tra i ed r sull’albero individuato da p[·]. Siccome d[·] rispetta le condizioni di Bellman, per ogni nodo i 6= r la lunghezza del cammino minimo tra i ed r non può essere inferiore a d[i]; siccome il cammino rappresentato dal vettore p[·] ha esattamente questa lunghezza, esso è un cammino minimo tra r ed i. Questo vale per ogni i 6= r, e quindi p[·] rappresenta un albero dei cammini minimi. Appello straordinario – 06/04/2016 4 4) Si individui un albero dei cammini minimi di radice 8 sul grafo in figura, utilizzando l’algoritmo SPT.L.deque. Per ogni iterazione si forniscano il nodo selezionato, i vettori dei predecessori e delle etichette e l’insieme dei nodi candidati Q. Durante l’esecuzione dell’algoritmo si esplorino gli archi della stella uscente del nodo selezionato in ordine crescente del nodo testa. Al termine si disegni l’albero dei cammini minimi individuato. L’algoritmo utilizzato sarebbe quello più conveniente dal punto di vista della complessità computazionale in tempo? Giustificare la risposta. 1 2 4 6 1 2 1 1 5 4 6 -1 8 7 8 3 2 SVOLGIMENTO M = (n − 1) max{cij : (i, j) ∈ A} + 1 = 7 × 8 + 1 = 57. it. 0 1 2 3 4 5 6 7 8 9 10 11 12 i 8 4 6 7 6 4 2 5 4 2 1 3 3 5 0 5 1 3 3 p[1] p[2] p[3] p[4] p[5] p[6] p[7] p[8] d[1] d[2] d[3] d[4] d[5] d[6] d[7] d[8] Q 8 8 8 8 8 8 8 8 57 57 57 57 57 57 57 0 Q = {8} 8 8 8 8 8 8 8 8 57 57 57 6 57 4 2 0 Q = {4, 6, 7} 8 4 8 8 8 8 8 8 57 7 57 6 57 4 2 0 Q = {6, 7, 2} 8 4 8 8 8 8 8 8 57 7 57 6 57 4 2 0 Q = {7, 2} 8 4 8 8 7 7 8 8 57 7 57 6 5 3 2 0 Q = {6, 2, 5} 8 4 8 6 7 7 8 8 57 7 57 5 5 3 2 0 Q = {4, 2, 5} 8 4 8 6 7 7 8 8 57 6 57 5 5 3 2 0 Q = {2, 5} 2 4 8 6 7 7 8 8 7 6 57 5 5 3 2 0 Q = {5, 1} 2 4 5 5 7 7 8 8 7 6 8 4 5 3 2 0 Q = {4, 1, 3} 2 4 5 5 7 7 8 8 7 5 8 4 5 3 2 0 Q = {2, 1, 3} 2 4 5 5 7 7 8 8 6 5 8 4 5 3 2 0 Q = {1, 3} 2 4 5 5 7 7 8 8 6 5 8 4 5 3 2 0 Q = {3} 2 4 5 5 7 7 8 8 6 5 8 4 5 3 2 0 Q=∅ L’albero dei cammini minimi individuato è 1 4 6 1 2 1 1 -1 8 7 2 3 5 3 3 È ovvio che l’algoritmo utilizzato non può essere quello più conveniente dal punto di vista della complessità computazionale in tempo, in quanto SPT.L.deque ha complessità al caso pessimo esponenziale, mentre esistono algoritmi polinomiali per SPT. A maggior ragione in questo caso, in cui rinumerando i nodi come segue originale rinumerato 1 8 2 7 3 6 4 5 5 4 6 3 7 2 8 1 si dimostra che il grafo è aciclico: infatti per ogni arco (i, j) del grafo rinumerato risulta i < j. In questo caso sarebbe quindi possibile utilizzare l’algoritmo SPT.Acyclic, che ha la miglior complessità in tempo possibile per un algoritmo di cammini minimi: O(m), anche in presenza di archi di costo negativo ed anche considerato il costo di calcolare la buona numerazione del grafo. Appello straordinario – 06/04/2016 5 5) A seguito del recente deterioramento della qualità dei prestiti bancari (aumento delle sofferenze) e della nuova legge sul “bail in”, il funzionario responsabile dei prestiti di una piccola banca vuole costruire un sistema di supporto alle decisioni che determini quando una richiesta di prestito da parte di un cliente può essere accettata. Le condizioni “ufficiali” perché ciò avvenga sono: • che il cliente non abbia subito protesti e che possegga immobili o titoli per un valore pari a 3/2 dell’importo del prestito richiesto, oppure • che il cliente, avendo subito protesti, possegga immobili o titoli per un valore pari a 3 volte l’importo del prestito richiesto. Il funzionario però non vuole rischiare ed aggiunge un ulteriore caso in cui il prestito sarà concesso: quello di un cliente che, indipendentemente dalle altre condizioni, sia raccomandato dal presidente della banca. Si formuli come PLI il problema di stabilire, sapendo se sono o meno verificate tutte le condizioni elementari, se il prestito deve essere concesso. SVOLGIMENTO Innanzitutto definiamo le proposizioni elementari rilevanti: a b c d e il cliente ha subito protesti il cliente possiede immobili/titoli pari a 3/2 dell’importo il cliente possiede immobili/titoli pari a 3 volte l’importo il cliente è raccomandato dal presidente al cliente può essere concesso il prestito La formula del calcolo dei predicati risultante è (¬a ∧ b) ∨ (a ∧ c) ∨ d ⇐⇒ e . Indichiamo con x(p) una variabile binaria che vale 1 se la proposizione p è vera e 0 se p è falsa. Allora, chiamando f la proposizione ¬a ∧ b, e ricordando che x(¬a) = 1 − x(a), possiamo scrivere 1 − x(a) ≥ x(f ) , x(b) ≥ x(f ) , x(f ) ≥ (1 − x(a)) + x(b) − 1 = x(b) − x(a) . Indicando poi con g la proposizione a ∧ c, si ha x(a) ≥ x(g) , x(c) ≥ x(g) , x(g) ≥ x(a) + x(c) − 1 . La proposizione e è allora equivalente a f ∨ g ∨ d, e quindi x(e) ≥ x(f ) , x(e) ≥ x(g) , I vincoli cercati sono pertanto 1 − x(a) ≥ x(f ) x(a) ≥ x(g) x(e) ≥ x(f ) x(e) ≤ x(f ) + x(g) + x(d) x(a), x(b), x(c), x(e) ≥ x(d) , x(e) ≤ x(f ) + x(g) + x(d) . x(b) ≥ x(f ) x(c) ≥ x(g) x(e) ≥ x(g) x(f ) ≥ x(b) − x(a) x(g) ≥ x(a) + x(c) − 1 x(e) ≥ x(d) x(d), x(e), x(f ), x(g) ∈ {0, 1} Il valore della variabile x(e) indica se il prestito va concesso (se è 1) oppure no (se è 0). Appello straordinario – 06/04/2016 6 6) Si risolva il problema del Cammino Minimo Vincolato dal nodo 1 al nodo 6 del grafo in figura utilizzando l’algoritmo Branch&Bound che usa come rilassamento il Cammino Minimo (non vincolato), nessuna euristica, visita l’albero delle decisioni a ventaglio, e come regola di branching usa la seguente: dato il cammino minimo ottenuto dal rilassamento, nel primo dei figli si elimina il primo arco del cammino, nel secondo si fissa in soluzione il primo arco e si elimina il secondo, nel terzo si fissano in soluzione i primi due archi e si elimina il terzo, e cosı̀ via fino all’ultimo sottocammino la cui lunghezza è minore della soglia massima. Per ogni nodo si riporti la soluzione del rilassamento e si indichi se il nodo viene chiuso e perché, oppure se viene effettuato il branching e come. Si esaminino solamente i primi due livelli dell’albero delle decisioni (la radice conta come un livello); se Q non è vuota a quel punto si indichi il gap ottenuto quando l’algoritmo viene interrotto, giustificando la risposta. 2,2 i 3 c ij , lij -1 j 1,2 L=7 6, 3 3,5 2 2, ,2 2,1 6, 6 1 3,1 3 4 1 5 5,2 3,4 SVOLGIMENTO Indichiamo con z la valutazione inferiore ottenuta ad ogni nodo e con z la migliore delle valutazioni superiori determinate; inizialmente z = +∞. La coda Q viene inizializzata inserendovi il solo nodo radice dell’albero delle decisioni, corrispondente a non aver fissato alcuna variabile. Nodo radice L’SPT ottenuto è mostrato in a), come è possibile verificare dalle etichette riportate che rispettano le condizioni di Bellman. Il cammino P = {(1, 3), (3, 4), (4, 2), (2, 6)} ha costo z = 5 ma lunghezza pari a 10, e quindi non è ammissibile. Non avendo ottenuto nessuna soluzione ammissibile resta z = +∞ > z = 5 ed occorre procedere col branching. Ciò corrisponde a creare un nodo in cui si elimina l’arco (1, 3), un altro in cui si fissa in soluzione l’arco (1, 3) mentre si elimina l’arco (3, 4), un altro in cui cui si fissano in soluzione gli archi (1, 3) e (3, 4) mentre si elimina l’arco (4, 2), ed un altro ancora in cui cui si fissano in soluzione gli archi (1, 3), (3, 4) e (4, 2) mentre si elimina l’arco (2, 6). Ovviamente non si crea il figlio in cui si fissano in soluzione tutti e quattro gli archi perché ció corrisponderebbe ad un problema vuoto (il costo di quel sottocammino è già superiore ad L). x13 = 0 L’SPT ottenuto è mostrato in b). Il cammino P = {(1, 4), (4, 2), (2, 6)} ha costo z = 8 ma lunghezza pari a 10, e quindi non è ammissibile. Pertanto resta z = +∞ > z = 8 ed occorre procedere col branching, creando un nodo in cui si elimina l’arco (1, 4), un altro in cui si fissa in soluzione l’arco (1, 4) mentre si elimina l’arco (4, 2), ed un terzo un cui si fissano in soluzione (1, 4) e (4, 2) mentre si elimina l’arco (2, 6). x13 = 1, x34 = 0 L’SPT ottenuto, di radice 3, è mostrato in c). Il cammino P = {(1, 3), (3, 2), (2, 6)} ha costo z = 6 e lunghezza pari ad 9. Non si è ancora ottenuta nessuna soluzione ammissibile; pertanto resta z = +∞ > z = 6 ed occorre procedere col branching, creando un nodo in cui si elimina l’arco (1, 3), un altro in cui si fissa in soluzione l’arco (1, 3) mentre si elimina l’arco (3, 2), ed un terzo un cui si fissano in soluzione (1, 3) e (3, 2) mentre si elimina l’arco (2, 6). x13 = x34 = 1, x42 = 0 L’SPT ottenuto, di radice 4, è mostrato in d). Il cammino P = {(1, 3), (3, 4), (4, 6)} ha costo z = 6 e lunghezza pari ad 7; pertanto si è determinata una soluzione ammissibile e si pone z = 6, ed il nodo viene chiuso per ottimalità (in altri termini, z = 6 ≥ 6 = z ed il nodo viene chiuso dalla valutazione inferiore). x13 = x34 = x42 = 1, x26 = 0 . L’SPT ottenuto, di radice 2, è mostrato in e). Il cammino P = {(1, 4), (3, 4), (4, 2), (2, 5), (5, 6)} ha costo z = 7 e lunghezza pari a 7; pertanto si è determinata una soluzione ammissibile, ed il nodo viene chiuso per ottimalità. Siccome z = 7 > 6 = z, peró, z non cambia. Poiché sono stati esaminati il massimo numero di livelli l’algoritmo termina ma Q 6= ∅. La miglior valutazione inferiore disponibile si ottiene prendendo la minima tra le valutazioni inferiori dei predecessori immediati dei nodi in Q (e facendone il minimo con z). In questo caso si tratta dei nodi x13 = 0 e x13 = 1, x34 = 0 , le cui valutazioni inferiori sono rispettivamente 8 e 6; pertanto, la valutazione inferiore globale è 6, e poiché la valutazione superiore globale è anch’essa z = 6 possiamo affermare che il problema è stato risolto all’ottimo, anche se Q non è vuota. Infatti, entrambi i nodi sopra citati sarebbero stati potati se la soluzione “incumbent” di valore z = 6 fosse già stata nota al momento in cui sono stati valutati. 1 2 2 3 6 5 a) 0 5 2 3 6 8 b) 4 1 5 0 3 2 6 4 0 6 1 0 4 5 5 2 3 2 6 4 5 5 c) 1 3 3 0 4 5 2 6 4 5 7 5 e) d) 0 1 2 1 4