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