ricerca operativa - xoomer.virgilio.itxoomer.virgilio.it/appuntinweb/elemro/esercizi.pdf · ricerca...

24
Ricerca Operativa Esercizi e temi d’esame svolti 1 Modelli di programmazione lineare Esercizio 1.1 [Tema del 7/9/99] Un’azienda agricola produce mais, soia e grano in tre tenute A, B, C. La tenuta A dispone di 600 ettari di terreno e di una riserva di 8 × 10 6 m 3 di acqua. La tenuta B ha 700 ettari di terreno e5 × 10 6 m 3 di acqua. La terza dispone di 450 ettari e di 6 × 10 6 m 3 . Le produzioni di mais, soia e grano garantiscono rispettivamente profitti di 5, 7 e 6 Mlire/ettaro. I consumi di acqua sono di 20000 m 3 /ha per il mais, 10000 m 3 /ha per la soia e 10000 m 3 /ha per il grano. Le direttive della comunit` a europea richiedono che: almeno una tenuta lasci 200 ettari di terreno incolto, e l’estensione complessiva del terreno coltivato a soia dall’azienda non superi il 40% del totale del suolo coltivato. Formulare il programma lineare per la massimizzazione del profitto. Soluzione Lo scenario descrive tre tenute (A,B,C ) e tre coltivazioni (M,S,G) (Mais, Soia, Grano). Una scelta naturale di variabili che descrive la coltiva- zioni da effettuare ` e x AM ,x AS ,x AG , x BM ,x BS ,x BG , x CM ,x CS ,x CG , dove x ij = ettari dedicati alla coltivazione j nella tenuta i. Tenuto conto dei profitti espressi in MLit./ha la funzione obiettivo ` e f (x) = 5(x AM + x BM + x CM ) + 7(x AS + x BS + x CS ) + 6(x AG + x BG + x CG ). I vincoli descritti dal testo richiedono di: rispettare le disponibilit`a di acqua di ogni tenuta; 1

Upload: nguyenthuy

Post on 15-Feb-2019

246 views

Category:

Documents


0 download

TRANSCRIPT

Ricerca Operativa

Esercizi e temi d’esame svolti

1 Modelli di programmazione lineare

Esercizio 1.1 [Tema del 7/9/99] Un’azienda agricola produce mais, soia egrano in tre tenute A, B, C. La tenuta A dispone di 600 ettari di terreno edi una riserva di 8 × 106 m3 di acqua. La tenuta B ha 700 ettari di terrenoe 5 × 106 m3 di acqua. La terza dispone di 450 ettari e di 6 × 106 m3. Leproduzioni di mais, soia e grano garantiscono rispettivamente profitti di 5,7 e 6 Mlire/ettaro. I consumi di acqua sono di 20000 m3/ha per il mais,10000 m3/ha per la soia e 10000 m3/ha per il grano. Le direttive dellacomunita europea richiedono che:

• almeno una tenuta lasci 200 ettari di terreno incolto, e

• l’estensione complessiva del terreno coltivato a soia dall’azienda nonsuperi il 40% del totale del suolo coltivato.

Formulare il programma lineare per la massimizzazione del profitto.

Soluzione Lo scenario descrive tre tenute (A,B,C) e tre coltivazioni (M,S,G)(Mais, Soia, Grano). Una scelta naturale di variabili che descrive la coltiva-zioni da effettuare e

xAM ,xAS,xAG,

xBM ,xBS,xBG,

xCM ,xCS,xCG,

dove xij = ettari dedicati alla coltivazione j nella tenuta i. Tenuto conto deiprofitti espressi in MLit./ha la funzione obiettivo e

f(x) = 5(xAM + xBM + xCM) + 7(xAS + xBS + xCS) + 6(xAG + xBG + xCG).

I vincoli descritti dal testo richiedono di:

• rispettare le disponibilita di acqua di ogni tenuta;

1

• rispettare l’estensione territoriale della tenuta;

• rispettare le norme CEE.

Il rispetto della norma sul terreno incolto viene gestito con tre variabililogiche yA,yB,yC ; yi = 1 se la tenuta i lascia 200 ha di terreno incolto. Ilmodello risultante e

max 5(xAM + xBM + xCM) + 7(xAS + xBS + xCS) + 6(xAG + xBG + xCG)

soggetto a(Approvvigionamento idrico — migliaia di litri)

20xAM + 10xAS + 10xAG ≤ 8000

20xBM + 10xBS + 10xBG ≤ 8000

20xCM + 10xCS + 10xCG ≤ 8000

(Terreno disponibile)

xAM + xAS + xAG ≤ 600

xBM + xBS + xBG ≤ 700

xCM + xCS + xCG ≤ 450

al piu 40% del terreno a soia

xAS + xBS + xCS ≤ 0.4(xAM + xAS + xAG + xBM + xBS + xBG + xCM + xCS + xCG)

(Vincolo logico)

yA + yB + yC ≥ 1

xAM + xAS + xAG ≤ 600− 200yA

xBM + xBS + xBG ≤ 700− 200yB

xCM + xCS + xCG ≤ 450− 200yC

xij ≥ 0, ∀i,j yA,yB,yC ∈ {0,1}.

Nota: gli ultimi tre vincoli rendono superflui i precedenti sul terreno dispo-nibile.

Esercizio 1.2 [Tema del 24/07/00] Una ditta che si occupa di riparazionideve pianificare le assunzioni per i prossimi 5 mesi. All’inizio la ditta disponedi 20 operai esperti; ogni operaio esperto fornisce 150 ore di lavoro al mese epercepisce uno stipendio mensile di 2 MLit. Un operaio neoassunto, durante

2

il primo mese di servizio percepisce uno stipendio di 1 MLit. e non forniscein pratica lavoro utile; per questo primo mese gli viene invece affiancato unlavoratore esperto per insegnargli il mestiere. Ogni lavoratore esperto chesvolge affiancamento rende per 70 ore di lavoro al mese (anziche 150). Dopoil mese di apprendistato i lavoratori neoassunti diventano esperti, con pariabilita lavorativa e stipendio. Le quantita di ore/lavoro da coprire per i pros-simi 5 mesi sono rispettivamente di 2000, 4000, 7000, 3000, 3500 ore. Infine,se si assumono almeno 10 persone nel corso dei primi due mesi, l’aziendapuo incassare un contributo statale di 100 MLit. Formulare il programmalineare che consente di pianificare le assunzioni riducendo al minimo i costidel personale nei prossimi cinque mesi.

Soluzione Il problema richiede in pratica di gestire un pool di assun-ti/neoassunti che varia di mese in mese: e un problema multiperiodale. Unasoluzione e un “piano di assunzioni” che permetta di coprire comunque ilmonte-ore richiesto nei vari mesi compatibilmente con lo svolgimento dell’af-fiancamento da parte degli esperti. Possiamo modellare la situazione condieci variabili:

y1,y2,y3,y4,y5,

x1,x2,x3,x4,x5,

dove yi = disponibilita di esperti al mese i e xi = numero di persone assunteal mese i. Modelliamo con una variabile logica z la scelta di ottenere o nonottenere il contributo statale. Come ulteriore considerazione, si noti che lax5 e superflua in quanto assumere all’ultimo mese e un costo, non fornisceforza lavoro sfruttabile entro l’orizzonte temporale coperto dal modello e noninfluisce sulla possibilita di ottenere il contributo statale. In ogni soluzioneottima si avra x5 = 0.

In base alle variabili definite il costo del personale (assunzioni e stipendi)totale nei cinque mesi e:

f(x) = (x1 + x2 + x3 + x4 + x5) + 2(y1 + y2 + y3 + y4 + y5)− 100z.

Il modello complessivo risulta essere:

min (x1 + x2 + x3 + x4 + x5) + 2(y1 + y2 + y3 + y4 + y5)− 100z

soggetto a(Mese 1)

y1 = 20

x1 ≤ y1

150(y1 − x1) + 70x1 ≥ 2000

3

(Mese 2)

y2 = y1 + x1

x2 ≤ y2

150(y2 − x2) + 70x2 ≥ 4000

(Mese 3)

y3 = y2 + x2

x3 ≤ y3

150(y3 − x3) + 70x3 ≥ 7000

(Mese 4)

y4 = y3 + x3

x4 ≤ y4

150(y4 − x4) + 70x4 ≥ 3000

(Mese 5)

y5 = y4 + x4

x5 ≤ y5

150(y5 − x5) + 70x5 ≥ 3500

(Vincolo logico)

x1 + x2 ≥ 10z

xi,yi ∈ Z+ ∀i, z ∈ {0,1}Esercizio 1.3 [Tema del Gennaio 1998 (rielaborato)] Una raffineria producebenzina verde e super a partire da due tipi di greggio A e B, usando treimpianti. Il primo impianto puo produrre 2 barili di verde e 3 di super apartire da 4 barili di greggio tipo A e 3 barili di greggio tipo B. Il secondoimpianto puo produrre 4 barili di verde e 2 di super a partire da 3 barili diA e 4 barili di B. Il terzo puo produrre 2 barili di verde e 2 barili di super apartire da 3 barili di A e 3 barili di B.

Gli impianti lavorano sempre con le proporzioni specificate. La benzinaverde viene venduta a 40$/barile, la super a 50$/barile. Sono disponibili perquesto mese 5000 barili di greggio A e 6000 barili di greggio B. Per esigenzelegate ad altre lavorazioni, almeno uno tra gli impianti deve produrre nonpiu di 1000 barili.

Formulare il programma lineare per massimizzare il profitto legato allaproduzione mensile.

4

Soluzione 1 Il problema richiede di formulare un piano di produzione dibenzina verde/super con l’obiettivo di massimizzare il profitto senza sforaredalle scorte di magazzino e garantendo (particolare importante) l’alimenta-zione degli impianti con il corretto mix di greggio, ed il limite di 1000 bariliper almeno un impianto (vincolo logico). Una possibile scelta di variabili e:

xv1,xv2,xv3,

xs1,xs2,xs3,

yA1,yA2,yA3,

yB1,yB2,yB3,

dove xij = barili di verde e super prodotti dall’impianto j, e yij = numerodi barili di greggio tipo i che vanno ad alimentare l’impianto j. Le varia-bili xij permettono di scrivere in modo immediato la funzione obiettivo, lealtre servono per gestire l’alimentazione degli impianti. Tre variabili logichez1,z2,z3 decideranno quali impianti dovranno produrre meno di 1000 barili.Il profitto totale e:

f(x) = 40(xv1 + xv2 + xv3) + 50(xs1 + xs2 + xs3),

quindi il modello complessivo risulta:

max 40(xv1 + xv2 + xv3) + 50(xs1 + xs2 + xs3)

soggetto a(Scorte di magazzino)

yA1 + yA2 + yA3 ≤ 5000

yB1 + yB2 + yB3 ≤ 6000

(Alimentazione impianti)

3yA1 = 4yB1 ingresso 1: yA1 : yB1 = 4 : 3 (1)

3xv1 = 2xs1 uscita 1: xv1 : xs1 = 2 : 3

2yA1 = 4xv1 ingresso/uscita 1: yA1 : xv1 = 4 : 2

4yA2 = 3yB2 ingresso 2

2xv2 = 4xs2 uscita 2

4yA2 = 3xv2 ingresso/uscita 2

yA3 = yB3 ingresso 3

xv3 = xs3 uscita 3

2yA3 = 3xv3 ingresso/uscita 3

5

(Vincolo logico)

z1 + z2 + z3 ≥ 1

xv1 + xs1 ≤ 1000 + M(1− z1)

xv2 + xs2 ≤ 1000 + M(1− z2)

xv3 + xs3 ≤ 1000 + M(1− z3)

xij,yij ≥ 0∀i,j z1,z2,z3 ∈ {0,1}

Soluzione 2 Per questo problema una scelta di variabili leggermente me-no ovvia permette di ottenere un modello drasticamente meno complesso.La definizione delle variabili si basa proprio sull’osservazione che gli impiantilavorano sempre con rapporti nei mix di ingresso e di uscita ben determinati.Siano

x1,x2,x3

il numero (anche frazionario) di “lavorazioni” svolte agli impianti 1, 2 e 3rispettivamente. Queste tre variabili, unite alle tre variabili logiche z1, z2

e z3 sono sufficienti a modellare il problema. Il modello e il seguente:

max 40(2x1 + 4x2 + 2x3) + 50(3x1 + 2x2 + 2x3)

soggetto a(Scorte di magazzino)

4x1 + 3x2 + 3x3 ≤ 5000

3x1 + 4x2 + 3x3 ≤ 6000

(Vincolo logico)

z1 + z2 + z3 ≥ 1

5x1 ≤ 1000 + M(1− z1)

6x2 ≤ 1000 + M(1− z2)

4x3 ≤ 1000 + M(1− z3)

x1,x2,x3 ≥ 0, z1,z2,z3 ∈ {0,1}Nota: in questo modello il rispetto delle proporzioni nell’alimentazione enell’uscita degli impianti e garantito automaticamente dalla definizione dellevariabili.

6

Esercizio 1.4 [Tema del 10/07/00] Uno stabilimento chimico produce perconto terzi tre tipi di polveri A, B e C. Tutta la produzione e acquistatain blocco dal committente a fine mese. Lo stabilimento ha tre impianti 1,2e 3 con caratteristiche diverse. L’impianto 1 produce polveri B e C nellaproporzione di 2:3 fino a un totale di 4 tonnellate di polvere al mese; l’im-pianto 2 produce fino a 2 tonn./mese di polveri A e C nella proporzione 1:2;l’impianto 3 produce polveri A e B fino ad un totale di 5 tonn./mese, in pro-porzione 1:3. Per lo stoccaggio della produzione mensile sono disponibili duemagazzini M1 ed M2, della capacita di 4 e 5 tonnellate rispettivamente. Perragioni di sicurezza le polveri A e C non possono essere stoccate nello stessomagazzino. Formulare il programma lineare per massimizzare la produzionecomplessiva di polveri.

Soluzione Analogamente al modello precedente, la definizione delle varia-bili che produce un modello semplice e:

x1,x2,x3,

dove xi = totale di polvere (di qualunque tipo) prodotta dall’impianto i(altre scelte, equivalenti, sono possibili); inoltre per gestire lo stoccaggio neimagazzini (dove le polveri vanno trattate in modo distinto) introduciamo:

xA1,xA2,xB1,xB2,xC1,xC2

dove xij = quantita di polvere di tipo i stoccata al magazzino j. Due variabilelogiche y1, y2 discriminano il magazzino nel quale viene stoccata la polveredi tipo A (yi = 1 iff Ava al magazzino i).

Il problema chiede di produrre un piano di produzione e stoccaggio com-patibile con le capacita dei due magazzini e con il vincolo di sicurezza.

La funzione obiettivo e data da:

f(x) = x1 + x2 + x3,

ed il modello risulta:

max x1 + x2 + x3

soggetto a(Tutto cio che viene prodotto va stoccato)

1

3x2 +

1

4x3 = xA1 + xA2 (polvere A)

2

5x1 +

3

4x3 = xB1 + xB2 (polvere B)

3

5x1 +

2

3x2 = xC1 + xC2 (polvere C)

7

(Capacita dei magazzini)

xA1 + xB1 + xC1 ≤ 4

xA2 + xB2 + xC2 ≤ 5

(Capacita impianti)

x1 ≤ 4, x2 ≤ 2, x3 ≤ 5

(Vincolo logico)

xA1 ≤ My1 xA2 ≤ My2

xC1 ≤ M(1− y1) xC2 ≤ M(1− y2) (2)

xi,xij ≥ 0,∀i,j y ∈ {0,1}Esercizio 1.5 [Tema del 25/07/2000] L’azienda PC4All produce pc e deveacquistare le scorte di materie prime necessarie per la produzione dei case.Per produrre i case nel mese corrente sono necessari i seguenti materiali:

• viti: 15000 unita;

• plastica: 1300 kg.;

• acciaio: 2900 kg.

Per effettuare gli acquisti l’azienda si puo appoggiare a quattro fornitori,i quali le forniscono le materie prime in lotti contenenti le seguenti quantitadi materiale:

viti plastica acciaioF1 50 3 5F2 30 4 7F3 25 1 3F4 10 8 1

Nell’ottica di gestire al meglio il proprio magazzino, la PC4All intendeavere, alla fine del mese, la minor quantita di materiale non utilizzato possi-bile e, a tal fine, e disposta anche a comprare una quantita di materie primeinferiore alle proprie necessita. Il costo per lo stockaggio o per il mancatoacquisto di una unita di materiale e il seguente:

Viti 0.2 Euro/pezzoPlastica 1 Euro/kg.Acciaio 3 Euro/kg.

8

Per motivi commerciali l’azienda, se acquista dei lotti di materiale dalfornitore F1, e impossibilitata a rifornirsi dai fornitori F2 ed F4.

Formulare il modello di programmazione lineare che minimizzi i costiderivanti dallo scostamento tra le quantita di materiali acquistate e quellenecessarie, tenendo conto che non e possibile comprare porzioni di lotto dimateriali.

Soluzione L’azienda in questione, a detta del testo, paga un costo sia perlo stoccaggio che per il mancato acquisto di materiali. Quindi, tenuto contodei quantitativi richiesti e del fatto che si puo anche comprare meno delfabbisogno, una funzone obiettivo possibile e:

0.2|V − 15000|+ |P − 1300|+ 3|A− 2900|,

dove V , P , A sono rispettivamente i quantitativi totali di viti, plastica e ac-ciaio acquistati. I valori assoluti introducono caratteristiche di non linearitanel modello che devono essere opportunamente gestite.

Siccome i fornitori hanno a disposizione lotti dai contenuti standard, unascelta naturale di variabili per descrivere il “piano di approvvigionamento”e:

x1,x2,x3,x4,

dove xi = numero di lotti acquistati dal fornitore Fi. Per gestire i valoriasoluti sono necessarie tre variabili ausiliarie yV , yP , yA. Si noti che |X| =max(X,−X), quindi i valori assoluti si gestiscono con tecniche simili a quelleusate per i problemi min / max. La scelta tra i fornitori F2 + F4 e F1 emodellata con una variabile logica z1; z1 = 1 iff l’azienda si rifornisce pressoF1.

Il modello e il seguente:

min 0.2yV + yP + 3yA

soggetto a:(Vincoli per gestire i valori assoluti)

50x1 + 30x2 + 25x3 + 10x4 − 15000 ≤ yV

−50x1 − 30x2 − 25x3 − 10x4 + 15000 ≤ yV

3x1 + 4x2 + x3 + 8x4 − 1300 ≤ yP

−3x1 − 4x2 − x3 − 8x4 + 1300 ≤ yp

5x1 + 7x2 + 3x3 + x4 − 2900 ≤ yA

−5x1 − 7x2 − 3x3 − x4 + 2900 ≤ yA

9

(Vincolo logico — grande M)

x2 + x4 ≤ M(1− z1)

x1 ≤ Mz1

x1,x2,x3,x4 ∈ Z+, yV ,yP ,yA ∈ Z+, z1 ∈ {0,1}

2 Algoritmo del simplesso

Esercizio 2.1 Risolvere il seguente programma lineare.

min x1 + 3x2 + x3 + x4

s.t. x1 + 2x2 + x3 ≥ 22x1 − x2 + x3 − 2x4 ≤ 8

Soluzione Il programma espresso in forma standard e

min x1 + 3x2 + x3 + x4

s.t. x1 + 2x2 + x3 − x5 = 22x1 − x2 + x3 − 2x4 + x6 = 8x1, . . . ,x6 ≥ 0

dove x5 e una variabile di surplus e x6 e una variabile di slack. Poiche unasoluzione ammissibile di base non e immediatamente identificabile dal sistemadei vincoli ricorriamo alla fase 1 del simplesso. E necessaria la sola variabileartificiale x7 aggiunta al secondo vincolo; il problema artificiale risulta:

min x7

s.t. x1 + 2x2 + x3 − x5 + x7 = 22x1 − x2 + x3 − 2x4 + x6 = 8x1, . . . ,x7 ≥ 0

A questo punto occorre creare il tableau iniziale, ricordando che i costiridotti devono essere resi coerenti con la base iniziale che sara [x7,x6].

x1 x2 x3 x4 x5 x6 x7

x7 1 2 1 0 −1 0 1 2

x6 2 −1 1 −2 0 1 0 8

z 0 0 0 0 0 0 1 0

=⇒x1 x2 x3 x4 x5 x6 x7

x7 1 2 1 0 −1 0 1 2

x6 2 −1 1 −2 0 1 0 8

z −1 −2 −2 0 1 0 −1 −2

Entra in base x2, esce x7 (scelta pivot):

x1 x2 x3 x4 x5 x6 x7

x7 1 2 1 0 −1 0 1 2

x6 2 −1 1 −2 0 1 0 8

z −1 −2 −1 0 1 0 0 −2

=⇒x1 x2 x3 x4 x5 x6 x7

x2 1/2 1 1/2 0 −1/2 0 1/2 1

x6 5/2 0 3/2 −2 −1/2 1 1/2 9

z 0 0 0 0 0 0 1 0

10

La fase 1 e terminata con successo; tornando al programma iniziale e rica-vando la riga corretta dei costi ridotti:

x1 x2 x3 x4 x5 x6

x2 1/2 1 1/2 0 −1/2 0 1

x6 5/2 0 3/2 −2 −1/2 1 9

z 1 3 1 1 0 0

=⇒x1 x2 x3 x4 x5 x6

x2 1/2 1 1/2 0 −1/2 0 1

x6 5/2 0 3/2 2 −1/2 1 9

z −1/2 0 −1/2 1 3/2 0 −3

La soluzione non e ottima (ci sono costi ridotti < 0). Entra in base x1, escex2.

x1 x2 x3 x4 x5 x6

x2 1/2 1 1/2 0 −1/2 0 1

x6 5/2 0 3/2 −2 −1/2 1 9

z −1/2 0 −1/2 1 3/2 0 −3

=⇒x1 x2 x3 x4 x5 x6

x1 1 2 1 0 −1 0 2

x6 0 −5 −1 −2 2 1 4

z 0 1 0 1 1 1 −2

Poiche tutti i costi ridotti dell’ultimo tableau sono non negativi siamo allasoluzione ottima.

Soluzione 2 Poiche tutti i coefficienti della funzione obiettivo sono nonnegativi, e possibile risolvere il programma lineare operando con il simplessoduale. Partiamo dalla forma standard; cambiando segno al primo vincolo iltableau iniziale diventa:

x1 x2 x3 x4 x5 x6

x5 −1 −2 −1 0 1 0 −2

x6 2 −1 1 −2 0 1 8

z 1 3 1 1 0 0 0

=⇒x1 x2 x3 x4 x5 x6

x1 1 2 1 0 −1 0 2

x6 0 −5 −1 −2 2 1 4

z 0 1 0 1 1 1 −2

Esercizio 2.2 Dato il seguente programma lineare

min x1 + 2x2

s.t. x1 + 2x2 − x3 = 22x1 + x2 − x4 = 3x2 − x5 = 1x1,x2,x3,x4,x5 ≥ 0,

e la base [x3,x1,x2], corrispondente alla

B−1 =

−1 1

232

0 12−1

2

0 0 1

si chiede di:

11

• verificare l’ottimalita della base;

• data la perturbazione dei costi relativi a [c1,c2] espressa da θ(t) = [t,2t],verificare per quali valori di t la base rimane ottima.

Soluzione Tenuto conto che c1 = 1, c2 = 2, c3 = c4 = c5 = 0, i costi ridottisono dati da:

rTD = cT

D − cTBB−1D = −[0 1 2]

−1 1

232

0 12−1

2

0 0 1

0 0−1 0

0 −1

=

=[

12

32

]

Imponendo la condizione di ottimalita sotto perturbazione:

−[0 (1 + t) (2 + 2t)]

−1 1

232

0 12−1

2

0 0 1

0 0−1 0

0 −1

≥ 0

ovvero,

[0 t 2t]

−1

232

−12

12

0 −1

[1

2

3

2

].

Risolvendo, risulta t ≥ −1.

Esercizio 2.3 Si risolva il seguente programma lineare con l’algoritmo delsimplesso primale-duale, usando la soluzione ammissibile duale di partenzaλ1 = 1, λ2 = 0.

min x1 + 2x2 − 3x3

s.t. x1 + x2 − 4x3 − x4 = 22x1 + x2 + 2x3 = 8x1, . . . ,x4 ≥ 0

Soluzione I programmi primale e duale risultano:

(P )

min x1 + 2x2 − 3x3

s.t. x1 + x2 − 4x3 − x4 = 22x1 + x2 + 2x3 = 8x1, . . . ,x4 ≥ 0

(D)

max 2λ1 + 8λ2

s.t. λ1 + 2λ2 ≤ 1λ1 + λ2 ≤ 2−4λ1 − 2λ2 ≤ −3−λ1 ≤ 0

12

La soluzione λ1 = 1, λ2 = 0 soddisfa i vincoli di (D) risultando in slack dualici − λT ai = (0,1,1,1). Il tableau (esteso) iniziale risulta:

x1 x2 x3 x4 y1 y2

y1 1 1 −4 −1 1 0 2y2 2 1 2 0 0 1 8

−uT ai 0 0 0 0 1 1 0ci −λT ai 0 1 1 1

Esprimendo i costi ridotti in funzione delle variabili x1, . . . ,x4, e tenendoconto che dobbiamo considerare per la valutazione dell’ottimalita solo le co-lonne i tali che ci − λT ai = 0:

x1 x2 x3 x4 y1 y2

y1 1 1 −4 −1 1 0 2y2 2 1 2 0 0 1 8

−uT ai −3 −2 2 1 0 0 −10ci −λT ai 0 1 1 1

=⇒

x1 x2 x3 x4 y1 y2

x1 1 1 −4 −1 1 0 2y2 0 −1 10 2 −2 1 4

−uT ai 0 1 −10 −2 3 0 −4ci −λT ai 0 1 1 1

L’ultimo tableau e ottimo (per il primale ristretto). Poiche la funzione obiet-tivo del primale ristretto e strettamente positiva, cerchiamo un ε per aggior-nare la soluzione duale.

ε = minuT ai>0

{ci − λT ai

uT ai

}= min

{1

10,1

2

}=

1

10.

Per aggiornare direttamente gli slack duali sul tableau e sufficiente moltipli-care per ε la penultima riga e sommarla algebricamente all’ultima (limitan-dosi alle posizioni sotto le variabili x). Quindi:

x1 x2 x3 x4 y1 y2

x1 1 1 −4 −1 1 0 2

y2 0 −1 10 2 −2 1 4−uT ai 0 1 −10 −2 3 0 −4

ci −λT ai 0 1110

0 45

=⇒

x1 x2 x3 x4 y1 y2

x1 1 35

0 −15

15

25

185

x3 0 − 110

1 15−1

5110

25

−uT ai 0 0 0 0 1 1 0ci −λT ai 0 11

100 4

5

Avendo un primale ristretto con funzione obiettivo nulla, la soluzione ottimadel programma lineare originale e x1 = 18

5, x3 = 2

5.

13

3 Trasporti e flusso

Esercizio 3.1 Risolvere per mezzo dell’algoritmo di Dantzig il seguente pro-blema di trasporto.

1 2 3 4 ai

1 20 25 15 5 1252 12 14 18 30 1803 19 11 40 12 70bj 100 150 50 75

Soluzione Il problema ha tre origini (righe) e quattro destinazioni (co-lonne); esso risulta bilanciato, in quanto

∑i ai =

∑j bj = 375. Possiamo

allora cominciare subito. La prima soluzione ammissibile di base si ricavamediante il metodo dell’angolo NW; i moltiplicatori ed i costi ridotti (tabellaa fianco) si ricavano:

• ponendo un moltiplicatore ad un valore arbitrario (qui v4 = 0);

• applicando sulle variabili in base la relazione fondamentale

cij = ui + vj;

• calcolando i costi ridotti come rij = cij − (ui + vj).

1 2 3 4 ai

1 100 25− + 1252 125+ 50 5− 1803 70 70bj 100 150 50 75

1 2 3 4 ai

1 × × −14 −36 412 3 × × × 303 28 15 40 × 12

vj −21 −16 −12 0

Si ha δ = min(25,5) = 5; entra in base x14, esce x24.

1 2 3 4 ai

1 100 20− 5+ 1252 130 50 1803 + 70− 70bj 100 150 50 75

1 2 3 4 ai

1 × × −14 × 52 3 × × 36 −63 −8 −21 4 × 12

vj 15 20 24 0

δ = min(20,70) = 20; entra in base x33, esce x12.

1 2 3 4 ai

1 −100 +25 1252 + −130 50 1803 +20 −50 70bj 100 150 50 75

1 2 3 4 ai

1 × 27 3 × 52 −14 × × 19 −63 −8 × 21 × 12

vj 15 3 7 0

14

δ = min(50,100,130) = 50; entra x21, esce x34. Si noti che il ciclo di + e −in questa iterazione ha una forma meno “ovvia”.

1 2 3 4 ai

1 −50 + 75 1252 +50 80 −50 1803 70 70bj 100 150 50 75

1 2 3 4 ai

1 × 3 −11 × 52 × × × 33 −33 10 × 25 18 −6

vj 15 17 21 0

δ = min(50,50) = 50;entra x13, esce x23. Si noti che in questo caso eranodue le variabili candidate ad uscire (x11 e x23), ma una sola (scelta arbitra-riamente) esce effettivamente. La nuova base risulta degenere, con x11 = 0.

1 2 3 4 ai

1 0 50 75 1252 100 80 1803 70 70bj 100 150 50 75

1 2 3 4 ai

1 × 3 × × 52 × × 11 33 −33 10 × 36 18 −6

vj 15 17 10 0

Essendo rij ≥ 0∀i,j, la soluzione ottenuta e ottima.

Esercizio 3.2 Risolvere per mezzo dell’algoritmo di Dantzig il seguente pro-blema di trasporto.

1 2 3 ai

1 10 5 20 1002 7 2 8 1503 9 8 4 75bj 150 75 25

Soluzione Il problema non e bilanciato in quanto∑

i ai = 325 >∑

j bj =250, quindi introduciamo una destinazione supplementare con b4 = 75.

1 2 3 4 ai

1 10 5 20 0 1002 7 2 8 0 1503 9 8 4 0 75bj 150 75 25 25

Applicando il metodo dell’angolo NW so ottiene la prima soluzione am-missibile di base. Moltiplicatori e costi ridotti seguono dalle solite regole.

1 2 3 4 ai

1 100− + 1002 50+ 75 25− 1503 0+ 75− 75bj 150 75 25 25

1 2 3 4 ui

1 × 0 9 −7 72 × × × −4 43 6 10 × × 0

vj 3 −2 4 0

15

Entra in base la variabile x14, δ = min{100,25,75} = 25. Quindi esce x23 ela nuova base risulta la seguente.

1 2 3 4 ai

1 75− 25+ 1002 75 75 1503 + 25 50− 75bj 150 75 25 25

1 2 3 4 ui

1 × 0 16 × 02 × × 7 3 −33 −1 3 × × 0

vj 10 5 4 0

Entra in base la variabile x31, δ = min{50,75} = 50, quindi esce x34. Effet-tuando il cambio di base si ottiene:

1 2 3 4 ai

1 25 75 1002 75 75 1503 50 25 75bj 150 75 25 25

1 2 3 4 ui

1 × 0 15 × 02 × × 6 3 −33 × 4 × 1 −1

vj 10 5 5 0

I costi ridotti tutti non negativi certificano l’ottimalita della base.

1

2

3

4

5

6

7

8

16

6

10

8

6

4

14

10

8

3

5

15

5

10

20

−5

−25

Figure 1. Rete di flusso, esercizio 3.3

Esercizio 3.3 Dato il grafo riportato in figura 1, con costi associati agliarchi e disponibilita (> 0) e domande (< 0) associate ai nodi, calcolare ilflusso di costo minimo partendo dalla base (x13 = 10, x32 = 0, x35 = 10,x45 = 20, x56 = 5, x57 = 25, x78 = 25).

Soluzione La base di partenza e rappresentata dall’albero in figura 2. Imoltiplicatori sono stati calcolati applicando la regola fondamentale λi−λj =

16

cij su ogni arco (i,j) della base. Uno dei moltiplicatori (in questo caso λ8) estato posto arbitrariamente a 0. I costi ridotti degli archi fuori base sono poicalcolati come:

rij = cij − (λi − λj).

1

2

3

4

5

6

7

810

0

10

5

25

δ

20 25

λ1 = 23

λ2 = 9

λ3 = 17

λ4 = 18

λ5 = 13

λ6 = 3

λ7 = 5

λ8 = 0

r14 = 10− (23− 18) = 5r47 = 14− (18− 5) = 1r12 = 16− (23− 9) = 2

r52 = 3− (13− 9) = −1r26 = 6− (9− 3) = 0r68 = 15− (3− 0) = 12

Figure 2. Base iniziale, esercizio 3.3

1. Entra in base l’arco con il costo ridotto piu negativo, in questo casol’arco (5,2) con r52 = −1. In base al ciclo che esso forma con la base,calcoliamo la variazione di flusso δ = min(0,10) = 0. Quindi x52 entrain base con flusso nullo, mentre esce x32.

2. La nuova base e rappresentata dall’ albero in figura 1, con relativimoltiplicatori. Entra in base l’arco con costo ridotto piu negativo. Inquesto caso entra in base x26; in base al ciclo che esso forma con la baseil suo valore di flusso viene posto a δ = min(5) = 5. La nuova base erappresentata dall’albero in figura 3. I costi ridotti tutti non negativine certificano l’ottimalita.

17

1

2

3

4

5

6

7

810

δ

10

5

25

0

20 25

λ1 = 23

λ2 = 10

λ3 = 17

λ4 = 18

λ5 = 13

λ6 = 3

λ7 = 5

λ8 = 0

r12 = 16− (23− 10) = 3r14 = 10− (23− 18) = 5r26 = 6− (10− 3) = −1

r47 = 14− (18− 5) = 1r32 = 8− (17− 10) = 1r68 = 15− (3− 0) = 12

Figure 3. Nuova base, esercizio 3.3

1

2

3

4

5

6

7

810

5

10

25

5

20 25

λ1 = 23

λ2 = 10

λ3 = 17

λ4 = 18

λ5 = 13

λ6 = 4

λ7 = 5

λ8 = 0

Figure 4. Base finale, esercizio 3.3

r12 = 16− (23− 10) = 3r14 = 10− (23− 18) = 5r32 = 8− (17− 10) = 1

r47 = 14− (18− 5) = 1r56 = 10− (13− 4) = 1r56 = 15− (4− 0) = 11

18

1

2

3

4

5

6

7

1

4

3

9

2

6

2

1

3

4

Figure 5. Grafo capacitato, esercizio 3.4

Esercizio 3.4 Dato il grafo capacitato di figura 5 con sorgente al nodo 1 epozzo al nodo 7, trovare il massimo flusso partendo dalla soluzione iniziale(x12 = 1, x14 = 2, x23 = 1, x35 = 1, x46 = 2, x57 = 1, x67 = 2).

Soluzione Dalla soluzione iniziale con flusso v = 3 otteniamo la situazionedi figura 6(a) (flussi in neretto), alla quale corrisponde il grafo di scarto difigura 6(b).

1

2

3

4

5

6

7

1,1

4,2

3,1

9

2

6,1

2,2

1

3,1

4,21

2

3

4

5

6

7

1

2

2

21

9

2

51

1

2

2

1

2

2

(a) (b)

Figure 6. Grafo con flusso (a) e corrispondente grafo di scarto (b), eser-cizio 3.4

1. Un possibile cammino aumentante e (1,4,3,2,5,7), che contiene l’arcoinverso (3,2). La quantita ε della quale possiamo aumentare il flussolungo tale cammino e ε = min(2,9,1,2,2) = 1. Aumentano quindi gliarchi (1,4), (4,3), (2,5), (5,7); diminuisce l’arco (2,3).

19

2. La nuova situazione (flusso v = 4) e rappresentata in figura 7(a), conil relativo grafo di scarto (figura 7(b)). A questo punto un possibile

1

2

3

4

5

6

7

1,1

4,3

3

9,1

2,1

6,1

2,2

1

3,2

4,21

2

3

4

5

6

7

1

1

3

3

8 1

1

15

11

2

1

2

2

2

(a) (b)

Figure 7. Grafo con flusso (a) e corrispondente grafo di scarto (b), eser-cizio 3.4

cammino aumentante e dato da (1,4,3,5,7), con ε = 1.

3. Ripetendo il passo di incremento del flusso arriviamo alla situazione difugura 8(a), nella quale il grafo di scarto (figura 8(b)) certifica l’otti-malita (non ci sono piu cammini orientati che collegano 1 a 7 sul grafodi scarto). Il massimo flusso e quello corrente (v = 4).

1

2

3

4

5

6

7

1,1

4,4

3

9,2

2,1

6,2

2,2

1

3,3

4,21

2

3

4

5

6

7

1

4

3

7 2

1

14

21

2

3

2

2

(a) (b)

Figure 8. Grafo con flusso (a) e corrispondente grafo di scarto (b), eser-cizio 3.4

20

4 Project scheduling

Esercizio 4.1 Si consideri il grafo orientato di figura 9, nel quale i nodirappresentano le attivita di un progetto e gli archi precedenze temporali traattivita. Le durate delle attivita (in giorni) sono specificate dalle etichettedei nodi. Si richiede di calcolare il grafo di rank, i tempi al piu presto ed alpiu tardi di tutte le attivita ed il cammino critico del progetto.

Che conseguenze avrebbe per il progetto un allungamento dell’attivita Cdi due giorni?

α

A

B C

D

E

F G ω0

2 5

3

7 8

3

7 0

Figure 9. Grafo delle precedenze per un progetto, esercizio 4.1

Soluzione L’algoritmo per determinare il grafo di rank, nel quale i no-di appaiono ordinati per livello, e simile all’algoritmo di Gondran-Minoux.L’applicazione a questo esempio fornisce:

S0 = {α} S4 = {F}S1 = {A,B} S5 = {G}S2 = {E,C} S6 = {ω}S3 = {D}

Il grafo di rank e rappresentato in figura 10.Per ottenere i tempi al piu presto associati alle attivita si assegna tα = 0,

quindi si scandiscono gli altri nodi in ordine di rank crescente, applicando laformula

ti = maxj∈Γ−1

i

{tj + pj},

dove pj = durata dell’attivita j. In questo caso risulta:

tA = 0, tB = 0, tC = 7, tE = 2,

tD = max{tA + 2,tB + 7,tE + 5} = 7, tF = max{tD + 3,tC + 8} = 15,

21

α

A

B C

D

E

F G ω0

2 5

3

7 8

3

7 0

Livello 0 1 2 3 4 5 6

Figure 10. Grafo di rank, esercizio 4.1

tG = max{tE + 5,tC + 8,tF + 7} = 22, tω = 25.

Il valore tω = 25 e il minimo tempo di completamento del progetto.Per il calcolo dei tempi al piu tardi si pone Tω = tω e, scandendo i nodi

in ordine di rank decrescente, si applica la formula

Ti = minj∈Γi

{Tj} − pi.

Quindi risulta

Tω = 25, TG = 22, TF = 15, TD = 12,

TE = min{TG,TD} − 5 = 7, TC = min{TF ,TG} − 8 = 7

TB = min{TD,TC} − 7 = 0, TA = min{TE,TD} − 2 = 5, Tα = 0.

Le attivita critiche del progetto sono quelle i per le quali risulta ti = Ti.Esse identificano il cammino critico sul grafo delle precedenze, che nel nostrocaso risulta essere (α,B,C,F,G,ω). Qualunque aumento delle attivita su talecammino si ripercuote sul minimo tempo di completamento del progetto.Quindi, se l’attivita C (critica) subisce un allungamento di due giorni, iltempo di completamento del progetto passa da 25 a 27.

22

5 Branch and bound

Esercizio 5.1 Risolvere il seguente problema dello zaino 0/1 usando la tec-nica del branch and bound.

max 10x1 + 12x2 + 5x3 + 7x4 + 9x5

s.t. 5x1 + 8x2 + 6x3 + 2x4 + 7x5 ≤ 14x1, . . . ,x5 ∈ {0,1}.

Soluzione Come primo passo costruiamo la lista delle variabili ordinateper rapporti profitto-ingombro decrescenti.

var. x4 x1 x2 x5 x3

pi 7 10 12 9 5wi 2 5 8 7 6pi/wi 3.5 2.0 1.5 1.2 0.8

L’albero di branch e riportato in figura 11. Le valutazioni dei nodi sono leseguenti.

Nodo 1 La soluzione ottima del rilassamento continuo si ottiene per x4 = 1,x1 = 1, x2 = 7

8, x5 = x3 = 0. Quindi

UB1 = 7 + 10 +⌊12 · 7

8

⌋= 27, LB = 17 ⇒ z = 17.

Nodo 2 Al nodo 2 si e imposto x2 = 1. La soluzione ottima del rilas-samento continuo si ottiene per x2 = 1, x4 = 1, x1 = 4

5, x5 = x3 = 0,

quindi

UB2 = 12 + 7 +⌊10 · 4

5

⌋= 27, LB = 19 ⇒ nuova z = 19.

Nodo 3 Al nodo 3 si e imposto x2 = 0; la soluzione ottima del rilassamentocontinuo e data da x4 = x1 = x5 = 1, x2 = x3 = 0. Quindi

UB3 = LB3 = 7 + 10 + 9 = 26 ⇒ nuova z = 26.

Nodo 4 Qui si impone x2 = x1 = 1. I due oggetti occupano uno spaziocomplessivo di 8 + 5 = 13 unita. Nessuno dei rimanenti oggetti puo es-sere inserito per intero nello spazio residuo di 14 − 13 = 2 unita. Pertantonon si possono generare altre soluzioni ammissibili da questo nodo. Questaconsiderazione ci permette di chiuderlo.

23

Nodo 5 Qui si e imposto x2 = 1, x1 = 0. La soluzione ottima del rilassa-mento continuo si ottiene per x2 = x4 = 1, x5 = 4

7, x1 = x3 = 0. Quindi

UB5 = 12 + 7 +⌊9 · 4

7

⌋= 24 < z.

Il nodo viene chiuso. La ricerca ha termine in quanto abbiamo chiuso tutti inodi. L’ottimo risulta essere z = 26, con x1 = x4 = x5 = 1,x2 = x3 = 0.

1

2 3

4 5

[27, 17]

[27, 19]UB3 = LB3 = 26

UB5 < z

x2 x2

x1 x1

Figure 11. Albero di branch, esercizio 5.1

24