soluzioni - Dario Pacciarelli

Transcript

soluzioni - Dario Pacciarelli
A
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
Nicola il fornaio prepara e vende panettoni, pizza bianca e ciambellone per i clienti del suo forno.
Un panettone da 1Kg si vende a 7 € e richiede, tra gli altri ingredienti, 700 gr di pasta lievitata 2
uova e 200 gr di zucchero. 1Kg di pizza bianca si vende a 6 €, per prepararla occorrono 1000 gr di
pasta lievitata. Un ciambellone da 1Kg si vende a 10 € e richiede, tra gli altri ingredienti, 500 gr di
farina, 4 uova e 300 gr di zucchero. Per preparare 1Kg di pasta lievitata occorre mescolare 600 gr di
farina, 50 gr di zucchero e 20 gr di lievito di birra, oltre a 350 gr di acqua e 50 gr di sale.
Nicola ha dimenticato di fare provvista e in magazzino ha solo 10 kg di farina, 100 gr di lievito di
birra, 24 uova e 3 kg di zucchero. Potete aiutarlo a decidere cosa produrre per massimizzare
l'incasso di domani, formulando un opportuno problema di Programmazione Lineare (senza
risolverlo)?
Soluzione
Il problema è una variante del classico problema di allocazione di risorse (farina, lievito di birra,
uova, zucchero e pasta lievitata) a prodotti (panettone, pizza bianca, ciambellone e pasta lievitata).
Le variabili saranno quindi legate ai livelli di produzione dei 4 prodotti, i vincoli alla disponibilità
delle 5 risorse scarse. In questo modello la pasta lievitata figura sia come un prodotto (perché va
preparata) che come una risorsa (perché serve a preparare altri prodotti) e quindi figurerà sia come
variabile che come vincolo. Alternativamente si potrebbe vedere la pasta lievitata solo come un
aggregato di risorse elementari (farina e lievito) e quindi arrivando ad una formulazione con 3
variabili e 4 vincoli. La formulazione che segue si basa sulla prima impostazione. Le variabili sono:
x1 = kg di panettoni
x2 = kg di pizza bianca
x3 = kg di ciambellone
x4 = kg di pasta lievitata
I vincoli del problema di allocazione delle risorse sono legati alla disponibilità delle 5 risorse
farina consumata in kg: 0,5 x3 + 0,6 x4
lievito di birra consumato in gr: 20 x4
uova consumate: 2 x1 + 4 x3
zucchero consumato in kg: 0,2 x1 + 0,3 x3 + 0,05 x4
pasta lievitata consumata in kg: 0,7 x1 + x2
≤
≤
≤
≤
≤
disponibile in kg: 10
disponibile in gr: 100
disponibile: 24
disponibile in kg: 3
disponibile in kg: x4
I vincoli del problema impongono che il consumo sia non superiore alla disponibilità per ciascuna
risorsa:
max 7 x1 + 6 x 2 + 10 x 3
0,5x 3 + 0,6 x 4 ≤ 10
20x ≤ 100
4

2x 1 + 4 x 3 ≤ 24

0,2x 1 + 0,3x 3 + 0,05 x 4 ≤ 3
0,7x 1 + x 2 ≤ x 4

x ≥ 0
Esercizio 2
È dato il problema di PL in figura.
1. Portare il problema in forma standard.
2. Utilizzando l’algoritmo del simplesso (fase
1 e fase 2) trovare una soluzione ottima del
problema o dimostrare che il problema è
impossibile o illimitato inferiormente.
Applicare la regola di Bland.
max 5 x1 − x 2
 2 x 2 + x3 + x 4 − 2 x5 = 32
x + x − 2x
− x5 = 0
 1
2
3

− x 2 + 3x3
+ x5 = 6

 x ≥ 0
Soluzione
Per portare il problema in forma standard è sufficiente cambiare segno ai coefficienti della funzione
obiettivo (e non agli elementi della matrice A come ha pensato qualcuno).
Per ottenere una SBA è necessario introdurre il problema artificiale. Allo scopo è sufficiente
aggiungere una sola variabile artificiale al terzo vincolo, aggiungendo alla variabile artificiale x1 e
x4 come variabili in base.
min y 3
 2 x 2 + x3 + x 4 − 2 x5 = 32
x + x − 2x
− x5 = 0
 1
2
3

− x 2 + 3 x 3 + x5 + y 3 = 6

 x, y ≥ 0
Al primo passo entra x3 ed esce y3. Fine della fase 1. Inizia la fase 2, si ha: uT= (0 -5 -10/3), z =-20
Al primo passo entra x5 ed esce x3. Fine della fase 2, la soluzione xT=(6 0 0 44 6) è ottima.
Esercizio 3
In tabella sono riportati gli archi di un grafo con 6 nodi, e sono dati i valori di capacità degli archi
ed un flusso iniziale. Si verifichi che il flusso dato sia ammissibile. Se il flusso dato risulta
ammissibile terminare l’algoritmo partendo dal flusso, se il flusso non è ammissibile partire dal
grafo completamente scarico. Trovare il massimo flusso inviabile dal nodo 1 al nodo 6 con
l’algoritmo di Ford e Fulkerson. Individuare il taglio di capacità minima nel grafo.
Archi (1,2) (1,3) (2,3) (2,4) (2,5) (3,4) (3,6) (4,6) (5,6)
Capacità 6
50
3
8
8
35
9
16
25
Flussi
6
6
3
0
3
0
9
0
3
Soluzione
Il flusso iniziale circolante nella rete è ammissibile e pari a 12. I cammini aumentanti individuati
dall’algoritmo di Ford-Fulkerson sono:
1,3,4,6 con flusso 16
1,3,2,5,6 con flusso 3
Il taglio di costo minimo comprende i nodi 1, 3 e 4 con capacità pari a 31.
Domanda 4
Definire il problema di Cammino minimo e dimostrare il teorema di Floyd-Warshall.
B
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
Grunt il cavernicolo deve progettare una rete di allarme per la sua tribù. La rete consiste in una serie
di postazioni di avvistamento, ognuna presidiata da un cavernicolo. Le postazioni sono in
comunicazione tra di loro per mezzo di alcuni cavi fatti da capelli intrecciati da Snort e dalle altre
donne della tribù. In caso di avvistamento di una tigre dai denti a sciabola il cavernicolo di guardia
dovrà dare degli strattoni ai cavi in maniera da avvisare le postazioni limitrofe collegate. In Figura è
rappresentata la mappa della regione occupata dalla tribù di Grunt.
600
Monte verde
Altura isolata
450
Radura del morto
350
Villaggio di Grunt
250
Isola sul fiume
Caverne nuove
100
200 300
500 600 700
900
Sapendo che ogni postazione quando riceve un allarme lo propaga immediatamente verso tutte le
postazioni limitrofe, e che ogni postazione può essere collegata alle altre da più cavi di
comunicazione, si formuli (come problemi su grafi, senza risolvere) il problema di collegare tra di
loro le postazioni di avvistamento in maniera da minimizzare il lavoro di Snort.
Soluzione
Il problema è formulabile come un problema di albero ricoprente, in cui i nodi rappresentato le
postazioni di avvistamento e gli archi (non orientati) sono i possibili collegamenti tra le diverse
postazioni. Il peso associato all’arco rappresenterà la lunghezza del cavo stesso. Il grafo è composto
da 6 nodi (uno per ogni postazione V, I, C, M, R, A) e 15 archi pesati con la distanza tra le due
postazioni.
Esercizio 2
In tabella sono riportati gli archi di una rete di flusso con 5
nodi 1…5 ed i valori di domanda di ogni nodo (assumendo
un valore negativo per un nodo sorgente e un valore positivo
per un nodo pozzo). Se necessario si aggiunga per completare
la base iniziale un arco che collega il nodo di transito con il
nodo pozzo. Si determini un flusso ammissibile utilizzando la
fase 1 del simplesso su reti, o dimostrare che il problema non
ammette soluzione ammissibile.
Archi (1,2) (2,4) (2,5) (3,1)
(3,2) (3,4) (4,5) (5,1)
Nodi
1
Domanda -9
2
3
3
1
4
2
5
3
Soluzione
Dopo l’inserimento del nodo artificiale 6, l’algoritmo del simplesso su reti procede come segue.
Nella prima iterazione entrerà in base l’arco (1,2), e provocherà l’uscita dell’arco (6,2), il flusso
circolante nel ciclo è 3.
Nella seconda iterazione entrerà in base l’arco (2,4), e provocherà l’uscita dell’arco (6,4) il flusso
circolante nel ciclo è 2.
Nella terza iterazione entrerà in base l’arco (2,5), e provocherà l’uscita dell’arco (6,5) il flusso
circolante nel ciclo è 3.
La soluzione così trovata non rappresenta un flusso ammissibile per la rete di flusso poiché del
flusso circola ancora attraverso il nodo fittizio.
Esercizio 3
Dato il problema di PL (primale) in figura,
1. risolvere il problema con il metodo grafico ed impostare il problema duale;
2. se il primale ammette una soluzione ottima, dalla soluzione ottima del
primale ricavare la soluzione ottima del duale con le condizioni di
ortogonalità. Se il primale non ammette una soluzione ottima, risolvere il
problema duale con il metodo del simplesso.
max
x1 + 2 x 2
5 x1 − 3 x 2 ≤ 10

− 2 x1 + 5 x 2 ≤ 15
x ≥ 0

Soluzione
La soluzione ottima del primale è xT=(5 5), la soluzione ottima del duale è uT= (9/19 13/19).
Domanda 4
Illustrare le definizioni di vertice e soluzione base ammissibile. Dimostrare che una soluzione
ammissibile di un problema di PL in forma standard è un vertice del poliedro delle soluzioni
ammissibili se e solo se è una soluzione base ammissibile.
C
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
La beauty farm Urania è celebre per i suoi cosmetici all'olio d'oliva. 1 kg di sapone alla lavanda
(prezzo di vendita: 6 € una saponetta da 250 gr) si prepara con 950 gr di sapone base, acqua e 5 gr
di essenza di lavanda. 1 kg di bagno schiuma agli agrumi (prezzo di vendita: 7 € una bottiglia da
300 gr) si prepara con 800 gr di sapone base, acqua e 5 gr di essenza di agrumi. 1 kg di crema per le
mani alla lavanda (prezzo di vendita: 10 € un vasetto da 200 gr) si prepara con 800 gr di crema
base, acqua e 30 gr di essenza di lavanda. 1 kg di crema per il viso agli agrumi (prezzo di vendita:
12 € un vasetto da 250 gr) si prepara con 700 gr di crema base, acqua e 100 gr di essenza di agrumi.
Il sapone base contiene il 30% di olio d'oliva, la crema base contiene l'80% di olio d'oliva. Sapendo
che sono disponibili solo 20 kg di olio d'oliva, 1 kg di essenza di lavanda e 1 kg di essenza di
agrumi, formulare il problema di Programmazione Lineare di determinare la produzione che
consenta il massimo incasso (senza risolverlo).
Soluzione
Il problema è una variante del classico problema di allocazione di 3 risorse (2 essenze, olio di oliva)
a 4 prodotti (2 alla lavanda, 2 agli agrumi). Le variabili saranno quindi legate ai livelli di
produzione dei 4 prodotti, i vincoli alla disponibilità delle 3 risorse scarse. In questo modello il
sapone base e la crema base compaiono solo come quantità di olio d'oliva equivalente (cioè
valutando ogni kg di sapone base come 0,4 kg di olio d'oliva equivalenti e 1 kg di crema base come
0,8 kg di olio equivalente). Alternativamente si potrebbero esplicitare sia come un prodotti che
come risorse aggiungendo due variabili e due vincoli al problema. La formulazione che segue si
basa sulla prima impostazione. Le variabili sono:
x1 = kg di sapone alla lavanda
x2 = kg di bagno schiuma agli agrumi
x3 = kg di crema per le mani
x4 = kg crema per il viso
I vincoli del problema di allocazione delle risorse sono legati alla disponibilità delle 5 risorse
olio consumato in gr: 285 x1 + 240 x2 + 640 x3 + 560 x4
essenza di lavanda consumata in gr: 5 x1 + 30 x3
essenza di agrumi consumata in gr: 5 x2 + 100 x4
≤ disponibile in gr: 20000
≤ disponibile in gr: 1000
≤ disponibile in gr: 1000
I vincoli del problema impongono che il consumo sia non superiore alla disponibilità per ciascuna
risorsa, il costo va espresso in euro al kg di prodotto (avendo scelto di utilizzare i kg come unità di
misura delle variabili):
70
max 24 x1 +
x 2 + 50 x3 + 48 x 4
3
285x 1 + 240 x 2 + 640 x 3 + 560 x 4 ≤ 20000
5x + 30 x ≤ 1000
 1
3

5x 2 + 100 x 4 ≤ 1000
x ≥ 0
Esercizio 2
In tabella sono riportati gli archi di un grafo con 6 nodi, e sono dati i valori di capacità degli archi
ed un flusso iniziale. Si verifichi che il flusso dato sia ammissibile. Se il flusso dato risulta
ammissibile terminare l’algoritmo partendo dal flusso, se il flusso non è ammissibile partire dal
grafo completamente scarico. Trovare il massimo flusso inviabile dal nodo 1 al nodo 6 con
l’algoritmo di Ford e Fulkerson. Individuare il taglio di capacità minima nel grafo.
Archi (1,2) (1,3) (2,3) (2,4) (3,4) (3,6) (4,5) (4,6) (5,6)
Capacità 6
50
4
8
35
9
14
16
25
Flussi
6
20
0
6
20
0
0
0
25
Soluzione
Il flusso iniziale non è ammissibile in quanto non rispetta i vincoli sul nodo 4 (26 entrante, 25
uscente). Partendo dalla rete vuota i cammini aumentanti individuati dall’algoritmo di FordFulkerson sono:
1,3,6 con flusso 9
1,3,4,6 con flusso 10
1,3,4,5,6 con flusso 14
Il taglio di costo minimo comprende i nodi 1, 2, 3 e 4 con capacità pari a 39.
Esercizio 3
È dato il problema di PL in figura.
1. Portare il problema in forma standard.
2. Utilizzando l’algoritmo del simplesso (fase 1 e fase
2) trovare una soluzione ottima del problema o
dimostrare che il problema è impossibile o illimitato
inferiormente. Applicare la regola di Bland.
max
x1 + 2 x 2
4 x1 − x 2 + x3 + 2 x 4
x − 2x
− 2 x4
 1
2

− x1 + x 2
 x ≥ 0
=4
=2
+ x5 = 6
Soluzione
Per portare il problema in forma standard è sufficiente cambiare segno ai coefficienti della funzione
obiettivo (e non agli elementi della matrice A come ha pensato qualcuno).
Per ottenere una SBA è necessario introdurre il problema artificiale. Allo scopo è sufficiente
aggiungere una sola variabile artificiale al secondo vincolo, aggiungendo alla variabile artificiale x3
e x5 come variabili in base.
min
y2
4 x1 − x 2 + x3 + 2 x 4
x − 2x
− 2x4
 1
2

−
x
+
x
2
 1
 x ≥ 0
=4
+ y2 = 2
+ x5 = 6
Al primo passo entra x1 ed esce x3. Fine della fase 1, poiché resta in base la variabile artificiale con
valore 1 diverso da zero si conclude che il problema iniziale dato è impossibile.
Domanda 4
Illustrare il problema di flusso di costo minimo. Dimostrare che una base della matrice dei
coefficienti coincide con un albero ricoprente della rete di flusso.
D
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
La Commissione Edilizia del Dipartimento deve decidere come assegnare degli uffici vuoti (tre
stanze singole, due doppie e una tripla) ai dottorandi afferenti a diversi gruppi di ricerca attivi nel
Dipartimento. Per evitare di scontentare i vari gruppi di ricerca (Reti, Automatica, Basi di Dati e
Ricerca Operativa) ad ogni gruppo di ricerca è chiesto di dare una valutazione da 1 a 10 ad ogni
stanza. Sapendo che i quattro gruppi di ricerca hanno espresso le seguenti valutazioni (vedi Tabella)
e che il numero di dottorandi da assegnare è 3 per Reti, due per Automatica, 3 per Basi di Dati e
uno per Ricerca Operativa.
Reti (3)
Automatica (2)
Basi di Dati (3)
Ricerca Operativa (1)
Singola 1
5
7
4
1
Singola 2
3
6
4
8
Singola 3
5
1
6
7
Doppia 1
2
1
4
1
Doppia 2
5
3
1
1
Tripla 1
1
2
1
2
Formulare come un problema su grafi (senza risolverlo) il problema di assegnare gli uffici ai vari
gruppi di ricerca in maniera da massimizzare la soddisfazione complessiva.
Soluzione
Il problema è formulabile come un problema di flusso a costo minimo su rete non capacitata. In
particolare il grafo sarà un grafo bipartito. Il primo insieme di nodi è composto da 4 nodi
rappresentanti i gruppi di ricerca. Ognuno di questi nodi sarà un nodo sorgente pari al numero di
dottorandi da assegnare. Il secondo gruppo di nodi sarà dato dalle stanze. Ogni stanza sarà un nodo
pozzo con richiesta pari al numero di posti disponibili nella stanza. Gli archi tra questi due insiemi
saranno pesati con le valutazioni delle stanze da parte dei gruppi di ricerca.
Si osservi come il numero di dottorandi (9) sia inferiore al numero di posti disponibili (10) quindi
sarà necessario introdurre un gruppo fittizio con un dottorando in maniera tale da bilanciare la
domanda con l’offerta. Tali archi avranno per esempio peso 0 (in realtà è sufficiente assumere che il
peso sia costante per tutti gli archi uscenti dal nodo fittizio).
Esercizio 2
In tabella sono riportati gli archi di una rete di flusso con 6 nodi 1…6 ed i valori di domanda di ogni
nodo (assumendo un valore negativo per un nodo sorgente e un valore positivo per un nodo pozzo).
Se necessario si aggiunga per completare la base iniziale un arco che collega il nodo di transito con
il nodo pozzo. Si determini un flusso ammissibile utilizzando la fase 1 del simplesso su reti, o
dimostrare che il problema non ammette soluzione ammissibile. Nel generare la base iniziale se
possibile si colleghino i nodi di transito con i nodi sorgente.
Archi (1,2) (1,3) (1,5) (2,6) (3,4) (3,5) (4,6) (5,2) (5,4)
Nodi
1
Domanda -3
2
0
3
2
Soluzione
4
0
5
-3
6
4
Dopo l’inserimento del nodo artificiale 7, l’algoritmo del simplesso su reti procede come segue. I
nodi 2 e 4 essendo nodi di transito vanno collegati con l’albero ricoprente, ad esempio utilizzando
gli archi (1,2) e (5,4).
Nella prima iterazione entrerà in base l’arco (1,3), e provocherà l’uscita dell’arco (7,3), il flusso
circolante nel ciclo è 2.
Nella seconda iterazione entrerà in base l’arco (2,6), e provocherà l’uscita dell’arco (1,7) il flusso
circolante nel ciclo è 1.
Nella terza iterazione entrerà in base l’arco (4,6), e provocherà l’uscita dell’arco (7,4) il flusso
circolante nel ciclo è 3.
La soluzione così trovata rappresenta un flusso ammissibile per la rete di flusso.
Esercizio 3
Dato il problema di PL in figura,
1. impostare il problema duale e risolverlo con il metodo grafico;
2. Se il duale ammette una soluzione ottima, dalla soluzione ottima
del duale ricavare la soluzione ottima del primale con le condizioni
di ortogonalità. Se il duale non ammette una soluzione ottima,
risolvere il primale con il metodo del simplesso.
min − 4 x1 + x 2
− 2 x1 + 5 x 2 ≤ 15

5 x1 − 3 x 2 ≥ 10
x ≥ 0

Soluzione
max 15u1 + 10u 2
− 2u1 + 5u 2 ≤ 15
Impostando il problema duale 
e risolvendo con il metodo grafico si trova che il
5u1 − 3u 2 ≤ 10
u ≤ 0 u ≥ 0
2
 1
duale è impossibile. Risolvendo il primale con l'algoritmo del simplesso si riduce il primale in
min − 4 x1 + x 2
− 2 x1 + 5 x 2 + x3 = 15
forma standard: 
, si introduce una variabile artificiale e si imposta il
5 x1 − 3 x 2 − x 4 = 10
x ≥ 0

min
x5
− 2 x1 + 5 x 2 + x3 = 15
. Come base iniziale si può scegliere B = [ A3 A5 ] .
problema artificiale 
5 x1 − 3 x 2 − x 4 + x5 = 10
x ≥ 0

Risolvendo con il simplesso entra x1 esce x5, fine della fase 1. Si inizia la fase 2: entra x2, esce x3,
entra x4, il primale risulta illimitato inferiormente.
Domanda 4
Illustrare l'interpretazione economica del duale e la sensibilità del valore ottimo della funzione
obiettivo, in un problema di PL, alle variazioni dei termini noti e alle variazioni dei costi delle
variabili fuori base, dimostrando le proprietà descritte nel caso particolare dei problemi in forma
standard.
E
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
Il ristorante Vecchia Genova è famoso per i suoi piatti rigorosamente fatti in casa: linguine al pesto
(prezzo al cliente: 7 €/porzione), lasagne al pesto (8 €/porzione) e torta di pinoli (5 € per una
porzione da 200 gr). 1kg di pesto si prepara con 400 gr di olio, 300 gr di basilico, 300 gr di pinoli, e
aglio quanto basta. 1 kg di pasta fatta in casa richiede 800 gr di farina e 4 uova. 1 kg di torta di
pinoli si prepara con 400 gr di farina, 250 gr di zucchero, 4 uova, 100 gr d'olio e 100 gr di pinoli.
Una porzione di linguine al pesto richiede 80 gr di pasta fatta in casa e 100 gr di pesto. Una
porzione di lasagne al pesto richiede 60 gr di pasta fatta in casa, 100 gr di pesto e 50 gr d'olio.
Sapendo che in dispensa ci sono solo 6 kg di farina, 2 kg d'olio, 48 uova e 1kg di basilico, oltre a
tutti i pinoli, aglio e zucchero necessari, formulare il problema di Programmazione Lineare di
decidere cosa preparare per massimizzare l'incasso della giornata (senza risolverlo).
Soluzione
Il problema è una variante del classico problema di allocazione di 6 risorse (farina, olio, uova,
basilico, pesto, pasta fatta in casa) a 5 prodotti (linguine, lasagne, torta di pinoli, pesto, pasta fatta in
casa). Le variabili saranno quindi legate ai livelli di produzione dei 5 prodotti, i vincoli alla
disponibilità delle 6 risorse scarse. In questo modello il pesto e la pasta fatta in casa figurano sia
come prodotti (perché vanno preparati) che come risorse (perché serve a preparare altri prodotti) e
quindi figureranno sia come variabili che come vincoli. Alternativamente si potrebbero vedere solo
come aggregati di risorse elementari (olio e basilico per il pesto, farina e uova per la pasta fatta in
casa) arrivando ad una formulazione con 3 variabili e 4 vincoli. La formulazione che segue si basa
sulla prima impostazione. Le variabili sono:
x1 = porzioni di linguine
x2 = porzioni di lasagne
x5 = kg di pasta fatta in casa
x3 = porzioni di torta di pinoli
x4 = kg di pesto
I vincoli del problema di allocazione delle risorse sono legati alla disponibilità delle 6 risorse
farina consumata in kg: 80 x3 + 800 x5
olio consumato in gr: 50 x2 + 20 x3 + 400 x4
uova consumate: 0,8 x3 + 4 x5
basilico consumato in gr: 300 x4
pesto consumato in gr: 0,1 x1 + 0,1 x2
pasta fatta in casa consumata in gr: 80 x1 + 60 x2
≤
≤
≤
≤
≤
≤
disponibile in kg: 6
disponibile in kg: 2
disponibile in gr: 48
disponibile in gr: 1000
disponibile in kg: x4
disponibile in gr: 1000 x5
I vincoli del problema impongono che il consumo sia non superiore alla disponibilità per ciascuna
risorsa:
max 7 x1 + 8 x 2 + 5 x3
80x 3 + 800x 5 ≤ 6
50x + 20 x + 400 x ≤ 2000
2
3
4

0,8x 3 + 4x 5 ≤ 48

300x 4 ≤ 1000
0,1x + 0,1x ≤ x
1
2
4

80 x1 + 60 x 2 ≤ 1000 x5

x ≥ 0
Esercizio 2
In tabella sono riportati gli archi di un grafo con 9 nodi, e sono dati i costi di ogni arco. Risolvere il
problema del minimo albero ricoprente applicando l’algoritmo di Kruskal. Si specifichi l’ordine in
cui vengono aggiunti gli archi dell’albero ricoprente ed il costo finale dell’albero.
Archi (1,2) (1,3) (2,3) (2,4) (3,4) (3,6) (3,7) (3,8) (4,5) (4,6) (5,6) (6,7) (6,9) (7,8) (7,9)
Costi 6
5
4
3
2
3
4
10
2
1
1
5
6
8
7
Soluzione
Gli archi vengono aggiunti nel seguente ordine (4,6), (6,5), (3,4), (2,4), (3,7), (1,3), (6,9) , (7,8). Il
costo totale dell’albero è 30.
Esercizio 3
È dato il problema di PL in figura.
1. Portare il problema in forma standard.
2. Utilizzando l’algoritmo del simplesso (fase 1 e fase 2)
trovare una soluzione ottima del problema o dimostrare
che il problema è impossibile o illimitato inferiormente.
Applicare la regola di Bland.
max 2 x1 − 5 x 2
 x1 + 2 x 2 + 5 x3 − 2 x 4 − 2 x5 = 12
x + x + 4x + 2x − x = 0
 1
2
3
4
5

x 2 + x3
− x5 = 12

 x ≥ 0
Soluzione
Per portare il problema in forma standard è sufficiente cambiare segno ai coefficienti della funzione
obiettivo (e non agli elementi della matrice A come ha pensato qualcuno).
Per ottenere una SBA è necessario introdurre il problema artificiale aggiungendo una variabile
artificiale a ciascun vincolo.
min y1 + y 2 + y 3
 x1 + 2 x 2 + 5 x 3 − 2 x 4 − 2 x 5 + y1 = 12
x + x + 4x + 2x − x + y = 0
 1
2
3
4
5
2

x
+
x
−
x
+
y
2
3
5
3 = 12

 x, y ≥ 0
Al primo passo entra x1 ed esce y2, al secondo passo entra x2 ed esce x1. Fine della fase 1, poiché
restano in base due variabili artificiali y1 ed y3 con valore 12 diverso da zero, si conclude che il
problema iniziale dato è impossibile.
Domanda 4
Illustrare il problema di Massimo Flusso e dimostrare il teorema di Ford-Fulkerson.
F
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
La ConGelo produce surgelati e deve pianificare la produzione giornaliera per la prossima
settimana (composta da sette giorni lavorativi) nel suo stabilimento. Ogni giorno lo stabilimento
può produrre fino a 2000 chili di verdure surgelate. La verdura fresca viene consegnata
giornalmente allo stabilimento e deve essere lavorata in giornata per evitare deperimenti, mentre
una volta surgelata la verdura può essere conservata nel magazzino frigorifero. Sapendo che:
• il magazzino frigorifero ha capacità di 40 quintali
• nel primo giorno il magazzino frigorifero non contiene verdura surgelata
• a fine settimana è possibile lasciare la verdura congelata all’interno del magazzino
• le spedizioni sono programmate nei seguenti giorni (lunedì, mercoledì, sabato) e sono
effettuate con un camion frigorifero con capacità massima di 3.5 tonnellate.
• gli approvvigionamenti giornalieri saranno di 2000, 1000, 1500, 2000, 2000, 1000, 1000
chili.
Si pianifichi la produzione di surgelati in maniera da utilizzare al meglio l’impianto della ConGelo.
Formulare (senza risolvere) il problema su un grafo opportuno.
Soluzione
Il problema si può formulare come un problema di massimo flusso su una rete composta da sette
nodi (uno per ogni giorno) rappresentanti il quantitativo di verdura surgelata presente nel
magazzino (M1…M7) più un nodo sorgente (S) ed un nodo pozzo (P).
Gli archi (S,M1)…(S,M7) collegheranno il nodo sorgente ai vari nodi giornalieri e rappresentano il
quantitativo di verdura fresca in ingresso allo stabilimento. Questi archi avranno capacità massima
pari al massimo quantitativo di verdura fresca consegnata allo stabilimento.
Gli archi (M1,M2)…(M6,M7) rappresentano il quantitativo di verdura congelata che rimane nel
magazzino da un giorno al successivo. Questi archi hanno capacità massima pari a 4 tonnellate.
Gli archi (M1,P),(M3,P),(M6,P) sono le spedizioni di verdura congelata con capacità massima pari
a 3.5 tonnellate.
Infine un arco (M7,P) rappresenterà la verdura congelata giacente nel magazzino a fine settimana.
Esercizio 2
Dato il problema di PL (primale) in figura,
1. risolvere il problema con il metodo grafico ed impostare il problema duale;
2. Se il primale ammette una soluzione ottima, dalla soluzione ottima del
primale ricavare la soluzione ottima del duale con le condizioni di
ortogonalità. Se il primale non ammette una soluzione ottima, risolvere il
problema duale con il metodo del simplesso.
min 2 x1 + x 2
5 x1 − 3 x 2 ≥ 10

− 2 x1 + 5 x 2 ≥ 15
x ≥ 0

Soluzione
La soluzione ottima del primale è xT=(5 5), la soluzione ottima del duale è uT= (12/19 11/19).
Esercizio 3
In tabella sono riportati i costi unitari degli archi di una rete di flusso con 6 nodi 1…6 ed un flusso
ammissibile iniziale. A partire dal flusso iniziale dato, e utilizzando la fase 2 del simplesso su reti,
determinare il flusso di costo minimo, o dimostrare che il problema è illimitato inferiormente. Se
necessario si aggiunga per completare la base iniziale un arco che collega il nodo di transito con il
nodo pozzo. Si indichi il costo della soluzione ottima.
Archi (1,2) (1,3) (1,5) (2,6) (3,5) (4,3) (4,6) (5,2) (5,4)
Costi
0
3
-10
2
2
-10
2
4
4
Flusso 1
2
0
1
0
0
3
0
3
Soluzione
L’algoritmo del simplesso su reti procede come segue.
Nella prima iterazione entra in base l’arco (1,5), e esce l’arco (1,2) o (1,6) il flusso circolante nel
ciclo è 1.
Nella seconda iterazione entra in base l’arco (4,3), e esce (1,3), il flusso nel ciclo è 2.
Nella seconda iterazione entra in base l’arco (3,5), che provoca un ciclo formato da soli archi
concordi con (5,4) e (4,3). Il problema risulta essere illimitato inferiormente.
Domanda 4
Illustrare la teoria della dualità. Dimostrare i teoremi di dualità debole e forte, il teorema
fondamentale della PL e ricavare da questo le condizioni di ortogonalità.
G
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
La macelleria 3 Porcellini prepara e vende salsicce di maiale a 8 €/kg (contenuto di carne suina
80%) e polpette di maiale a 6 €/kg (contenuto di carne suina 50%).
Il macinato base di carne suina (100% suino) per le salsicce deve contenere almeno il 60% di carne
magra e il 30% di grasso di maiale, il macinato base (100% suino) per le polpette deve contenere
almeno il 50% di carne magra e il 40% di grasso di maiale. I due macinati base si ricavano da
diversi tagli di carne. La spalla costa alla macelleria 4 €/kg e contiene 70% di carne magra e 30% di
grasso, il quarto inferiore costa 6 €/kg e contiene 60% di carne magra e 40% di grasso, il collo costa
3 €/kg e contiene 50% di carne magra e 50% di grasso.
Formulare (senza risolvere) il problema di produrre 50 kg di salsicce e 20 kg di polpette al costo di
produzione totale minimo.
Soluzione
Il problema è una variante del classico problema di miscelazione in cui si vogliono preparare 2
miscele (macinato per le salsicce e per le polpette) miscelando 3 sostanze (spalla, quarto inferiore e
collo). Si vogliono preparare 40 kg di macinato per salsicce e 10 kg di macinato per polpette. Le
variabili saranno quindi legate alle quantità di sostanze presenti in ciascuna miscela:
x1 = kg di spalla per le salsicce
x2 = kg di quarto inferiore per le salsicce
x3 = kg di collo per le salsicce
x4 = kg di spalla per le polpette
x5 = kg di quarto inferiore per le polpette
x6 = kg di collo per le polpette
I vincoli del problema di miscelazione sono legati alle caratteristiche delle miscele, cioè al
contenuto di carne magra e di grasso in ciascuna miscela e alla quantità di macinato da preparare (6
vincoli).
kg di carne magra nel macinato base per le salsicce: 0,7 x1 + 0,6 x2 + 0,5 x3
kg di grasso nel macinato base per le salsicce: 0,3 x1 + 0,4 x2 + 0,5 x3
kg di carne magra nel macinato base per le polpette: 0,7 x4 + 0,6 x5 + 0,5 x6
kg di grasso nel macinato base per le polpette: 0,3 x4 + 0,4 x5 + 0,5 x6
Esprimendo la funzione obiettivo in centesimi spesi, complessivamente si ha:
min 4 x1 + 6 x 2 + 3 x3 + 4 x 4 + 6 x5 + 3 x6
0,7x 1 + 0,6 x 2 + 0,5x 3 ≥ 24
0,3x + 0,4 x + 0,5x ≥ 12
1
2
3

x 1 + x 2 + x 3 = 40

0,7x 4 + 0,6 x 5 + 0,5x 6 ≥ 5
0,3x + 0,4 x + 0,5x ≥ 4
4
5
6

x 4 + x 5 + x 6 = 10

x ≥ 0
Esercizio 2
In tabella sono riportate le attività di un progetto. Individuare la durata minima del progetto, il
cammino critico e tutte le attività critiche.
Attività
Predecessori
Durata
A
6
B
A
26
C
71
D
E
F G H I
L
- C,D B L F,E G D
10 3 40 25 5 10 15
Soluzione
Dopo aver ordinato le attività secondo l’ordinamento topologico, gli EST e LST sono:
Attività
0
A
B
F
C
D
EST
0
0
6
32
0
0
LST
0
2
8
34
0
20
Critica?
Si
No
No
No
Si
No
Attività
E
H
L
G
I
*
EST
71
74
10
25
50
79
LST
71
74
30
45
69
79
Critica?
Si
Si
No
No
No
Si
Esercizio 3
È dato il problema di PL in figura.
1. Portare il problema in forma standard.
2. Utilizzando l’algoritmo del simplesso (fase
1 e fase 2) trovare una soluzione ottima del
problema o dimostrare che il problema è
impossibile o illimitato inferiormente.
Applicare la regola di Bland.
max
x 2 + 2 x3
=2
 x1 − x 2 + 4 x3 + x 4
 − 2x + x − x
=1

2
3
4

+ x5 = 3
 + x 2 − x3
 x ≥ 0
Soluzione
Per portare il problema in forma standard è sufficiente cambiare segno ai coefficienti della funzione
obiettivo (e non agli elementi della matrice A come ha pensato qualcuno).
Per ottenere una SBA è necessario introdurre il problema artificiale. E’ possibile aggiungere una
sola variabile artificiale al secondo vincolo, utilizzando prima e quinta variabile per ottenere una
base iniziale.
min y 2
=2
 x1 − x 2 + 4 x3 + x 4
 − 2x + x − x
+ y2 = 1

2
3
4

+ x5 = 3
 + x 2 − x3
 x ≥ 0
Al primo passo entra x3 ed esce x1. Fine della fase 1. Poiché resta in base la variabile artificiale y2
con valore 1/2 diverso da zero, si conclude che il problema iniziale dato è impossibile.
Domanda 4
Illustrare il problema di Albero ricoprente di costo minimo e descrivere gli algoritmi di Kruskal,
Prim e Prim-Dijkstra, dimostrando la proprietà su cui si basano.
H
UNIVERSITÀ DEGLI STUDI ROMA TRE
Corso di Studi in Ingegneria Informatica
Ricerca Operativa 1 – Primo appello
28 novembre 2007
SOLUZIONI
Esercizio 1
Si formuli senza risolvere, come problema di flusso di costo minimo, il problema di individuare
l’albero dei cammini massimi dal nodo 1 a tutti gli altri nodi nel grafo in tabella, con il seguente
vincolo aggiuntivo: non più di due cammini possono passare sullo stesso arco.
Archi
(1,2) (1,3) (1,4) (2,1) (3,2) (3,4) (4,2)
Lunghezza 26
6
71
10
13
-4
5
Soluzione
Il problema di cammino minimo si può formulare come problema di flusso a costo minimo su rete
capacitata assumendo che il nodo sorgente (in questo caso 1) generi esattamente n-1 unità di flusso,
mentre tutti gli altri nodi sono destinazione di una sola unità di flusso. Il costo degli archi sarà pari
al negativo della lunghezza dell’arco, ovvero l’arco (1,2) di lunghezza 26 avrà costo pari a -26,
mentre l’arco (3,4) avrà costo pari a 4. In questo modo le unità di flusso generate dal nodo sorgente
troveranno la strada meno costosa (ovvero la più lunga) verso tutti gli altri nodi. Inoltre gli archi
avranno un vincolo di capacità pari a due imponendo quindi che al più due cammini passeranno per
lo stesso arco.
Esercizio 2
In tabella sono riportati i costi unitari degli archi di una rete di flusso con 6 nodi 1…6 ed un flusso
ammissibile iniziale. A partire dal flusso iniziale dato, e utilizzando la fase 2 del simplesso su reti,
determinare il flusso di costo minimo, o dimostrare che il problema è illimitato inferiormente. Se
necessario si aggiunga per completare la base iniziale un arco che collega il nodo di transito con il
nodo pozzo. Si indichi il costo della soluzione ottima.
Archi (1,2) (1,3) (1,5) (2,6) (3,4) (3,5) (4,6) (5,2) (5,4)
Costi
0
3
-10
2
-10
2
2
4
4
Flusso 1
2
0
1
0
0
3
0
3
Soluzione
L’algoritmo del simplesso su reti procede come segue.
Nella prima iterazione entrerà in base l’arco (1,5), e provocherà l’uscita dell’arco (2,6) il flusso
circolante nel ciclo è 1.
Nella seconda iterazione entrerà in base l’arco (3,4), e provocherà l’uscita dell’arco (1,5) il flusso
circolante nel ciclo è 1.
Nella terza iterazione entrerà in base l’arco (5,2), e provocherà l’uscita dell’arco (1,2) il flusso
circolante nel ciclo è 0.
La soluzione così trovata è ottima e ha costo 19.
Esercizio 3
Dato il problema di PL in figura,
1. impostare il problema duale e risolverlo con il metodo grafico;
2. Se il duale ammette una soluzione ottima, dalla soluzione ottima del
duale ricavare la soluzione ottima del primale con le condizioni di
ortogonalità. Se il duale non ammette una soluzione ottima, risolvere
il primale con il metodo del simplesso (fase 1 e fase 2).
min
x1 + x 2
5 x1 − 2 x 2 ≥ 15

− 3x1 + 5 x 2 ≤ 10
x ≥ 0

Soluzione
Il problema duale ammette soluzione ottima uT=(1/5 0). Dalle condizioni di ortogonalità si ricava la
soluzione ottima primale xT=(3 0).
Domanda 4
Fornire la definizione di combinazione convessa e insieme convesso. Dimostrare che un poliedro è
un insieme convesso. Facendo uso del teorema di Minkowski-Weyl, dimostrare che nei problemi di
PL si può limitare la ricerca delle soluzioni ottime ai soli vertici del poliedro delle soluzioni
ammissibili