Sei sulla pagina 1di 82

Appunti di Ricerca Operativa

v1.0

SegmentationFault Team
Indice

I Programmazione Lineare 8
1 Un po’ di glossario 9

2 I poliedri 11
2.1 Riflessioni sparse sui poliedri . . . . . . . . . . . . . . . . . . . 11
2.2 Rappresentazione algebrica . . . . . . . . . . . . . . . . . . . . 11
2.3 Soluzioni di base . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Teoria della dualità 15

4 Algoritmo del simplesso 17


4.1 Simplesso primale . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Simplesso duale . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5 Complementi 21
5.1 Cono di competenza . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Problema duale ausiliario . . . . . . . . . . . . . . . . . . . . . 21

II Programmazione Lineare su reti 23


6 Introduzione 24
6.1 Reti malprogettate . . . . . . . . . . . . . . . . . . . . . . . . 25

7 Problemi di PL su reti non capacitate 26


7.1 Flusso su una rete . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.2 Potenziale di una rete . . . . . . . . . . . . . . . . . . . . . . . 27
7.3 Simplesso per flussi . . . . . . . . . . . . . . . . . . . . . . . . 28

8 Cammini minimi 30

1
9 Problemi di PL su reti capacitate 31
9.1 Ricerca dell’ottimo . . . . . . . . . . . . . . . . . . . . . . . . 32
9.2 Simplesso per flussi su reti capacitate . . . . . . . . . . . . . . 33
9.2.1 Arco entrante proveniente da L . . . . . . . . . . . . . 34
9.2.2 Arco entrante proveniente da U . . . . . . . . . . . . . 35
9.3 Max flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

10 Algoritmi su reti 38
10.1 Algoritmo di Ford-Fulkerson . . . . . . . . . . . . . . . . . . . 38
10.2 Algoritmo di Dijkstra . . . . . . . . . . . . . . . . . . . . . . . 39
10.3 Algorimto di Kruskal . . . . . . . . . . . . . . . . . . . . . . . 40

III Programmazione Lineare Intera 41


11 Introduzione 42

12 Valutazioni superiori ed inferiori 43


12.1 Determinazione delle valutazioni . . . . . . . . . . . . . . . . . 44
12.2 Equivalenza tra PL e PLI . . . . . . . . . . . . . . . . . . . . 45

13 Riduzione del gap 46


13.1 Rilassamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
13.1.1 Rilassamento continuo . . . . . . . . . . . . . . . . . . 46
13.1.2 Rilassamento per eliminazione di un vincolo . . . . . . 46
13.1.3 Rilassamento per fusione di vincoli . . . . . . . . . . . 46
13.2 Piani di taglio di Gomory . . . . . . . . . . . . . . . . . . . . 46
13.2.1 Piani di taglio di Gomory . . . . . . . . . . . . . . . . 47

14 Travelling Salesman Problem 48


14.1 T.S.P. asimmetrico . . . . . . . . . . . . . . . . . . . . . . . . 49
14.2 T.S.P. simmetrico . . . . . . . . . . . . . . . . . . . . . . . . . 50

15 Algoritmo del Branch and Bound 52


15.1 Applicazione al T.S.P. simmetrico . . . . . . . . . . . . . . . . 52
15.2 Applicazione allo zaino binario . . . . . . . . . . . . . . . . . . 53

IV Programmazione Non Lineare 54


16 Richiami di Analisi II 55
16.1 Strumenti da usare . . . . . . . . . . . . . . . . . . . . . . . . 55

2
16.1.1 Gradiente . . . . . . . . . . . . . . . . . . . . . . . . . 55
16.1.2 Matrice hessiana . . . . . . . . . . . . . . . . . . . . . 56
16.1.3 Teoremi sui punti stazionari . . . . . . . . . . . . . . . 56
16.2 Funzione obiettivo . . . . . . . . . . . . . . . . . . . . . . . . 56
16.2.1 Regolarità . . . . . . . . . . . . . . . . . . . . . . . . . 57
16.2.2 Concavità e convessità . . . . . . . . . . . . . . . . . . 57
16.2.3 Direzione . . . . . . . . . . . . . . . . . . . . . . . . . 57
16.2.4 Coercività . . . . . . . . . . . . . . . . . . . . . . . . . 58
16.3 Tipologia dei punti cercati . . . . . . . . . . . . . . . . . . . . 58

17 Ricerca dei punti stazionari liberi 59


17.1 Metodi di ascesa di ricorrenza . . . . . . . . . . . . . . . . . . 60
17.2 Direzione di ascesa . . . . . . . . . . . . . . . . . . . . . . . . 61
17.3 Metodo del gradiente con passo ideale . . . . . . . . . . . . . . 61

18 Ricerca di punti stazionari vincolati 63


18.1 Insiemi regolari . . . . . . . . . . . . . . . . . . . . . . . . . . 63
18.2 Moltiplicatori di Lagrange . . . . . . . . . . . . . . . . . . . . 64
18.3 Analisi locale . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
18.4 Funzione lagrangiana . . . . . . . . . . . . . . . . . . . . . . . 65

19 Metodi ricorsivi per la PNL 67


19.1 Metodo di Franke-Wolfe . . . . . . . . . . . . . . . . . . . . . 68
19.2 Ricerca inesatta . . . . . . . . . . . . . . . . . . . . . . . . . . 68
19.3 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . . . 70
19.4 Metodo del gradiente proiettato . . . . . . . . . . . . . . . . . 70

V Modelli matematici 72
20 Modelli per problemi di PL 73
20.1 Produzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
20.2 Dieta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
20.3 Miscelazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

21 Modelli per problemi di PL su reti 75


21.1 Trasporto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
21.2 Assegnamento di costo minimo . . . . . . . . . . . . . . . . . 75
21.3 Assegnamento di massima cardinalità . . . . . . . . . . . . . . 76
21.4 Flusso di costo minimo . . . . . . . . . . . . . . . . . . . . . . 76
21.4.1 Reti non capacitate . . . . . . . . . . . . . . . . . . . . 76
21.4.2 Reti capacitate . . . . . . . . . . . . . . . . . . . . . . 76

3
21.5 Taglio di massima capacità . . . . . . . . . . . . . . . . . . . . 77
21.6 Albero dei cammini minimi . . . . . . . . . . . . . . . . . . . 77
21.7 Cammini minimi con vincoli di budget . . . . . . . . . . . . . 77
21.8 T.S.P. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
21.8.1 T.S.P. asimmetrico . . . . . . . . . . . . . . . . . . . . 78
21.8.2 T.S.P. simmetrico . . . . . . . . . . . . . . . . . . . . . 78

22 Modelli per problemi di PLI 79


22.1 Zaino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
22.1.1 Intero . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
22.1.2 Binario . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
22.2 Set covering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
22.3 Dislocazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
22.4 Plant location . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
22.5 Dimensionamento . . . . . . . . . . . . . . . . . . . . . . . . . 81

4
Lista delle definizioni

1 Definizione (Problema di Programmazione Lineare (PL)) . . . 9

2 Definizione (Poliedro) . . . . . . . . . . . . . . . . . . . . . . . 11
3 Definizione (Combinazione convessa) . . . . . . . . . . . . . . 11
4 Definizione (Combinazione conica) . . . . . . . . . . . . . . . 12
5 Definizione (Vertice di un poliedro) . . . . . . . . . . . . . . . 12
6 Definizione (Soluzione di base primale) . . . . . . . . . . . . . 13
7 Definizione (Soluzione di base duale) . . . . . . . . . . . . . . 14

8 Definizione (Costo ridotto) . . . . . . . . . . . . . . . . . . . . 28

9 Definizione (Taglio di una rete) . . . . . . . . . . . . . . . . . 37


10 Definizione (Archi diretti del taglio) . . . . . . . . . . . . . . . 37
11 Definizione (Capacità di taglio) . . . . . . . . . . . . . . . . . 37

12 Definizione (Grafo residuo) . . . . . . . . . . . . . . . . . . . . 38


13 Definizione (Cammino aumentante) . . . . . . . . . . . . . . . 38

14 Definizione (Problema rilassato continuo) . . . . . . . . . . . . 44

15 Definizione (k-albero) . . . . . . . . . . . . . . . . . . . . . . . 50

16 Definizione (convessità) . . . . . . . . . . . . . . . . . . . . . . 57
17 Definizione (coercività) . . . . . . . . . . . . . . . . . . . . . . 58

18 Definizione (Vincoli attivi) . . . . . . . . . . . . . . . . . . . . 63


19 Definizione (Punto regolare) . . . . . . . . . . . . . . . . . . . 63
20 Definizione (Dominio regolare) . . . . . . . . . . . . . . . . . . 63
21 Definizione (Dominio convesso) . . . . . . . . . . . . . . . . . 65
22 Definizione (Funzione lagrangiana) . . . . . . . . . . . . . . . 65

23 Definizione (Matrice di proiezione) . . . . . . . . . . . . . . . 70

5
Lista dei teoremi

1 Teorema (di Weyl o di rappresentazione dei poliedri) . . . . . 12


2 Teorema (fondamentale della PL) . . . . . . . . . . . . . . . . 13
3 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5 Teorema (di Bland) . . . . . . . . . . . . . . . . . . . . . . . . 19

6 Teorema (del duale ausialiario) . . . . . . . . . . . . . . . . . 22

7 Teorema (di caratterizzazione delle basi su reti non capacitate) 26


8 Teorema (di Bellman per reti non capacitate) . . . . . . . . . 28

9 Teorema (di caratterizzazione delle basi su reti capacitate) . . 32


10 Teorema (di Bellman su reti capacitate (dato il flusso)) . . . . 33
11 Teorema (di Bellman su reti capacitate (dato il potenziale)) . 33

12 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
13 Teorema ((Lemma)) . . . . . . . . . . . . . . . . . . . . . . . 45
14 Teorema (di equivalenza tra PL e PLI) . . . . . . . . . . . . . 45

15 Teorema (di Gomory) . . . . . . . . . . . . . . . . . . . . . . . 47

16 Teorema (di Fermat) . . . . . . . . . . . . . . . . . . . . . . . 56


17 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
18 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
19 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

20 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
21 Teorema (di convergenza) . . . . . . . . . . . . . . . . . . . . 61
22 Teorema (di convergenza (bis)) . . . . . . . . . . . . . . . . . 61

23 Teorema (LKKT (minimo)) . . . . . . . . . . . . . . . . . . . 64


24 Teorema (LKKT (massimo)) . . . . . . . . . . . . . . . . . . . 64

6
25 Teorema (LKKTsuf f (minimo)) . . . . . . . . . . . . . . . . . 65
26 Teorema (LKKTsuf f (massimo)) . . . . . . . . . . . . . . . . . 65
27 Teorema (Teorema del secondo ordine) . . . . . . . . . . . . . 66

28 Teorema (di Franke-Worlfe) . . . . . . . . . . . . . . . . . . . 68


29 Teorema (di Armijo-Goldstein-Wolfe) . . . . . . . . . . . . . . 69
30 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
31 Teorema (di proiezione) . . . . . . . . . . . . . . . . . . . . . 70
32 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

7
Parte I

Programmazione Lineare

8
Capitolo 1

Un po’ di glossario

Definizione preliminare di alcuni concetti:

1. Funzione obiettivo (F.O.): funzione da massimizzare o minimizzare


in un problema di ottimizzazione

2. Vincoli: limiti sulle risorse disponibili

3. Problema decisionale: problema in cui si deve prendere una decisio-


ne

4. Soluzione ammissibile: soluzione che rispetti i vincoli del problema

5. Soluzione ottima: soluzione che fornisce il minimo o il massimo tra


le soluzioni ammissibili

La decisione da prendere che ottimizzi la f.o. e rispetti i vincoli


è un vettore di Rn

Definizione: Problema di Programmazione Lineare (PL)


Problema di minimo o di massimo di una funzione obiettivo lineare, soggetta
a vincoli lineari di tipo , =, o

I problemi trattati in questo capitolo tratteranno tutti beni divisibili.


Il problema di programmazione lineare
(
max cx
Ax  b

riveste un ruolo fondamentale e viene perciò chiamato problema di pro-


grammazione lineare primale standard

9
Il problema di programmazione lineare
8
>
> min cx
>
>
>
> Xn
>
< xij = rj 8j
i=1
>
>
>
> Xm
>
> xij  pi 8i
>
:
j=1

viene invece chiamato problema di programmazione lineare non pri-


male standard
Il problema primale assume questo aggettivo in quanto ciascun problema
di PL può essere ricondotto ad esso poiché:

• una funzione minimo può essere ricondotta in una funzione massimo e


viceversa

• un vincolo di = può essere ricondotto ad un sistema di una disequazione


 ed una

• un vincolo di  può essere ricondotto in un vincolo di e viceversa

10
Capitolo 2

I poliedri

Definizione: Poliedro
Intersezione di un numero finito di semispazi chiusi
oppure
Soluzioni del sistema di disequazioni lineari Ax  b

2.1 Riflessioni sparse sui poliedri


• La soluzione non è necessariamente unica
• Se la soluzione non è unica, allora ne esistono infinite
• Il poliedro potrebbe essere vuoto (troppi vincoli)
• La soluzione ottima, se esiste, non è interna
• La soluzione ottima può non esistere anche se il poliedro non è vuoto
• I poliedri sono insiemi convessi

2.2 Rappresentazione algebrica


Definizione: Combinazione convessa
y 2 Rn si dice combinazione convessa di x1 ...xk 2 Rn se
k
X k
X
i
y= ix con i 2 [0, 1] e i =1
i=1 i=1

Si dice conv{x1 ...xk } l’insieme di tutte le possibili combinazioni convesse su


x1 ...xk

11
Definizione: Combinazione conica
y 2 Rn si dice combinazione conica di x1 ...xk 2 Rn se
k
X
i
y= ix con i 0
i=1

Si dice cone{x1 ...xk } l’insieme di tutte le possibili combinazioni coniche su


x1 ...xk

Definizione: Vertice di un poliedro


Un punto x̄ 2 P si dice vertice se non si può ottenere come combinazione
convessa propria (i.e. i 6= 1) di altri punti del poliedro.

Teorema di Weyl o di rappresentazione dei poliedri


Dato un poliedro P ⇢ Rn , allora

9V = {v 1 ...v k } v i 2 P

9E = {e1 ...ep } ⇢ Rn
tali che
P = convV coneE
I vettori e1 ...ek vengono spesso chiamati direzioni di recessione. Il simbolo
indica la somma insiemistica: A B = {x : 9a 2 A, b 2 B : x = a + b}
In parole povere, tutti i poliedri si possono scomporre come somma
di combinazioni convesse di elementi di V e coniche di elementi di
E.

Osservazioni:

• I poliedri limitati hanno sempre E = (0, 0)

• I poliedri possono non avere vertici (es. retta, striscia e semipiano)

• Se il poliedro ha vertici, l’insieme V è costituito dai vertici. Esso può


essere sovrabbondante, ma i vertici sono indispensabili

• Non c’è unicità di rappresentazione: quando ci sono i vertici, essi sono


il numero minimo

• Tutti i poliedri delimitati da x 0 hanno vertici

12
Teorema fondamentale della PL
Dato un problema di PL (
max cx
Ax  b
Supponendo che P 6= ? e che la soluzione ottima esista finita, allora

9r 2 {1...k} : max cx = cv r , x 2 P

Dato x 2 P :

max cx = +1 () 9r 2 [1...p] : cer > 0

max cx ha ottimo f inito () cej  0 8j

2.3 Soluzioni di base


Definizione: Soluzione di base primale
Sia B ✓ {1...m} e |B| = n
Sia AB sottomatrice quadrata estratta da A relativa alle righe di B
Sia bB sottovettore estratto da b relativo alle righe di b
Sia detAB 6= 0
Allora la soluzione di AB x̄ = bB ) x̄ = AB1 bB si chiama soluzione di base
primale
L’insieme B viene chiamato base, mentre la matrice AB matrice di base

Le soluzioni di base si dividono in 2 categorie:

• ammissibili: appartengono al poliedro

• non ammissibili: non appartengono al poliedro

Teorema
Un punto x 2 P è un vertice del poliedro se e solo se è una soluzione di
base ammissibile

Una soluzione di base si dice degenere se viene generata da più ba-


si; non degenere altrimenti. Degenere non vuol dire necessariamente
superfluo.
Fissando N come l’insieme degli indici non di base, si testa la condizione
di ammissibilità primale come segue

bi Ai (AB1 bB ) 0 8i 2 N

13
Per testare se sia degenere

9i 2 N : bi Ai (AB1 bB ) = 0

Il problema 8
>
<min yb
yA = c
>
:
y 0
prende il nome di problema duale standard, ovvero problema di PL con
tutti vincoli di uguaglianza e le cui variabili sono vincolate in segno ad essere
positive. L’attributo standard sottolinea che qualsiasi problema di PL può
essere ricondotto in questa forma, attraverso le seguenti tecniche:

1. Trasformazione di minimo in massimo e viceversa

2. Introduzione di variabili di scarto (slack variables)

3. Imposizione equivalente del vincolo di positività attraverso l’introdu-


zione della di↵erenza tra numeri positivi:
zi = zi0 zi00
zi0 , zi00 0

Definizione: Soluzione di base duale


Sia B ✓ {1...m} e |B| = n
Sia AB sottomatrice quadrata estratta da A relativa alle righe di B
Sia (yB , yN ) una partizione di y attraverso gli indici di base (B) e non di base
(N )
Sia detAB 6= 0
Allora si chiama soluzione di base duale il vettore ȳ che si ottiene ponendo
a 0 le variabili non di base e risolvendo yB = cAB1
y¯N = 0 , yB = cAB1
ȳ = (cAB1 , 0)

Si definisce soluzione di base duale ammissibile una soluzione di base


le cui coordinate sono tutte non negative, non ammbissibile viceversa.
Si definisce soluzione di base duale degenere una soluzione di base in
cui almeno una componente di base è nulla, non degenere altrimenti.

Teorema
Un punto y è vertice del poliedro duale se e solo se esso è una soluzione
di base duale ammissibile.

14
Capitolo 3

Teoria della dualità

Supponiamo di avere un problema di PL primale standard


(
max cx
Ax  b

e associamogli formalmente un problema di PL duale standard


8
>
<min yb
yA = c
>
:
y 0

dove i vettori b, c e la matrice A sono gli stessi per entrambi i problemi.

Portare un problema di PL primale standard in forma duale vuol dire


operare una trasformazione attraverso le tecniche viste (può essere utile
per semplificare i calcoli o per trasformare il problema prima di darlo
in pasto ad un algoritmo risolutore). Costruire il duale di un problema
primale è un’operazione puramente formale che è alla base del metodo
del simplesso.

Dato un problema di ricerca operativa, possono accadere 4 cose mutua-


mente esclusive (con P e D poliedro primale e duale rispettivamente):

1. P = ? e D = ?

2. P = ? e min yb = 1
y2D

3. D = ? e max cx = +1
x2P

15
4. P, D 6= ? e max cx = min yb
x2P y2D

Il quarto caso è proprio quello di interesse in quanto ottengo la soluzione


ottima.
Passo 1
Prendiamo un punto x̄ soluzione di base ammissibile del poliedro primale P ,
quindi (
x̄ = AB1 bB
AN x̄  bN
Passo 2
Costruiamo ȳ solzione di base complementare (generata dalla stessa base
nel poliedro duale)

yB AB = c ! yB = cAB1 ! ȳ = (cAB1 , 0)

Passo 3
Calcoliamo cx̄ e ȳb
cx̄ = c(AB1 bB )
✓ ◆
b
ȳb = (cAB , 0) B = (cAB1 )bB
1
bN
da cui il valore calcolato nella soluzione ammissibile e nella comple-
mentare è uguale.
Ottengo cosı̀ un test di ottimalità primale: cAB1 0
Tutto quello che si è detto vale, mutatis mutandis, partendo da un pro-
blema di PL duale standard. Ciò vuol dire che, per testare l’ottimalità di
una soluzione, mi basta testare l’ammissibilità della complementare.

16
Capitolo 4

Algoritmo del simplesso

Questo algoritmo, sviluppato da G. Duntzig negli ’40/’50, permette di de-


terminare con facilità la soluzione ottima di un problema di PL. Dati i passi
enunciati precedentemente, è facile notare come uno dei conti più costosi sia
il calcolo dell’inversa della matrice dei coefficienti ad ogni iterazione. L’idea
di base sta nel semplificare tale conto sostituendo di volta in volta un vincolo
della base con uno che costituisce uno spigolo ad esso adiacente. Inoltre, pas-
sando da un vertice ad uno che ha un valore migliore dalla f.o. sono sicuro
di non tornare mai indietro.
Questo algoritmo ha quindi un’efficienza strabiliante:

• numero finito di passi

• no loop

• inversa facile

4.1 Simplesso primale


Sia data l’equazione degli spigoli
(
x( ) = x̄ + W i
0

con x̄ il vertice d’interesse, i l’indice di base che si abbandona, W = AB1


e W i la colonna di indice i estratta da W

cx( ) = c(x̄ + W i ) = cx̄ + (cW i )

17
dove cx̄ è la soluzione calcolata nel vertice in cui mi trovo. Essendo i
tutti non negativi, il segno di cW i = c( AB1 ) = ȳi mi determinerà la
direzione in cui muovermi per raggiungere la soluzione ottima.
Riassumendo: Se sono partito da una soluzione che non era ottima, al-
meno un indice del vettore ȳ complementare a x̄ è negativa. Calcolando
cW i = c( AB1 ) = ȳi , tutti i valori cambiano di segno, quindi le compo-
nenti negative (ce ne deve essere almeno una, altrimenti sarei all’ottimo),
diventano positive e trovo almeno una direzione con valori crescenti della
funzione obiettivo. Proseguendo in quella direzione mi avvicinerò all’ottimo.
Regola dell’indice uscente h 2 B: h = min{i 2 B : ȳi < 0}

Per scegliere l’indice entrante, cerco il massimo spostamento che mi fa


rimanere dentro il poliedro: x( ) = x̄ + W h , con h ancora indice uscente.
Per quali valori di si ha che Ax( )  b? Svolgendo i calcoli

A(x̄ + W h ) = Ax̄ + AW h  b
Ai x̄ + Ai W h  bi 8i = 1...m

Per i 2 B
Essendo Ai x̄ = bi e 0 necessariamente Ai W h deve essere non positivo per
rispettare la disequazione. In particolare, essendo quest’ultimo il prodotto
scalare di una riga di una matrice per una colonna della sua inversa cambiata
di segno, tale prodotto potrà valere solamente o 0 o 1.

Per i 2 N
In questo caso il prodotto può assumere qualunque valore. Esplicitando :
bi Ai x̄
 , ri (Ai W h > 0, i 2 N )
Ai W h
I rapporti ri prendono il nome di rapporti del simplesso. Dalla disequazione
precedente si ha che 0   min ri
L’indice k sarà appunto l’indice in cui il minimo è raggiunto. Dalla dise-
quazione precedente si ottiene anche la condizione d’uscita nel caso in
cui l’ottimo non esista finito:
Ai W h  0
Ad ogni passo del simplesso è necessario calcolare m n prodotti Ai W h
(tanti quanti gli indici non di base) e al più m n rapporti ri , in quanto
alcuni di essi potrebbero essere non positivi.

18
Geometricamente, il valore mi dice dopo quanto tempo, percorrendo lo
spigolo, ”sbatto” contro un altro vincolo. Viene preso il minimo in quanto
esso è l’ultimo entro il quale continuo ad essere nel poliedro.
Nel caso in cui ci siano più rapporti con lo stesso valore, viene preso come
k il più piccolo indice i dei rapporti.
Nel caso in cui Ai x̄ = bi , il rapporto ri risulta nullo. Mi trovo di fronte
ad una soluzione degenere. Una soluzione degenere potrebbe comunque non
avere ri = 0 in quanto, se Ai W h  0, essa non entra a far parte dei ri .
Teorema di Bland
La doppia regola anticiclo
• primo degli indici uscenti
• primo degli indici entranti
mi assicura che non si vengono a creare cicli su vertici degeneri e che l’algo-
ritmo termina in un numero finito di passi.
Data una matrice di base, ci si può trovare di fronte ad uno di questi casi:
1. x̄ e ȳ ammissibili ! ottimo
2. x̄ ammissibile e ȳ non ammissibile ! simplesso primale
3. x̄ non ammissibile e ȳ ammissibile ! simplesso duale
4. x̄ e ȳ non ammissibili ! cambio base

4.2 Simplesso duale


Quello studiato precendentemente prende appunto il nome di simplesso pri-
male. Prendendo invece come base di partenza ammissibile una del problema
duale, si dà vita a quello che prendi il nome di simplesso duale. Presa ap-
punto ȳ ammissibile per il duale, viene calcolata la soluzione complementare
x̄ e ne viene testata l’ammissibilità attraverso la disequazione
bN AN (AB1 bB ) 0
Qualora non venisse verificata vorrebbe dire che
9k 2 N : bk Ak (AB1 bB ) < 0
e questo k sarà appunto l’indice entrante. Anche in questo caso si determina
la matrice W = AB1 e si calcolano i prodotti scalari Ak W i con i 2 B e
prendere in considerazione quelli per i quali vale la disequazione Ak W i < 0:

19
• se sono tutti non negativi allora il (P) = 1
y¯i
• altrimenti si calcolano i rapporti del simplesso ri = Ak W i
e l’indice del
minimo dei rapporti sarà l’indice uscente

Anche nel caso duale valgono le due regole anticiclo di Bland.


Nel caso degenere in base ho degli 0, quindi gli ri corrispondenti saranno
nulli.

20
Capitolo 5

Complementi

5.1 Cono di competenza


Un utile strumento per determinare l’ammissibilità di una soluzione duale è
il cono di competenza. Data la base B = {i, j}, la soluzione duale da essa
generata è ammissibile se il vettore c appartiene al cono formato dai vettori
Ai e Aj , ovvero dai vettori ortogonali ai vincoli di base. Se questo non vale
la soluzione è non ammissibile.

5.2 Problema duale ausiliario


Questo metodo permette di determinare una base di partenza, e quindi am-
missibile, per il simplesso duale. Si inserisce una variabile ausiliaria "i in cia-
scun vincolo del problema duale, imponendo che sia positiva, e si sostituisce
la funzione obiettivo con il minimo della somma degli "i .
Il problema duale ausiliario (DA) diventa quindi
8 n
> X
>
> min "i
>
>
>
< i=0
yA + "I = c
>
>
>
> y 0
>
>
:
" 0
Il vettore c deve essere a componenti non negative: questo non è lesivo del-
la generalità della trattazione, in quanto è sufficiente moltiplicare l’intero
vincolo per 1 per rispettare questa condizione.
E↵ettuando un simplesso duale sul problema ausiliario si ottiene una base
ammissibile per il problema di partenza. Il simplesso sul duale ausiliario inizia

21
prendendo come base quella costituista dalle variabili "i . Il valore ottimo del
P
n
problema ausiliario (0  vott  ci ) stabilisce se esiste una base ammissibile
i=1
per il problema duale.

Teorema del duale ausialiario


Se vott > 0, allora (D) non ha soluzioni ammissibili.
Se vott = 0, allora c’è una base ammissibile per (D) che si ottiene a partire
da una base ottima per (DA).

22
Parte II

Programmazione Lineare su
reti

23
Capitolo 6

Introduzione

Particolare interesse in alcuni problemi di Programmazione Lineare viene


riservato alle reti: esse sono rappresentate attraverso grafi valutati, ovvero
grafi orientati ai cui archi viene associato un costo cij ed una portata massima
uij . Ai nodi viene anche associato anche un bilancio bi : per convenzione
alle sorgenti (produttori) è associato un bilancio negativo, mentre ai pozzi
(consumatori), un peso positivo.
In definitiva, la rete viene valutata nel seguente modo:

• n nodi

• m archi

• il vettore b 2 Rn

• il vettore c 2 Rm

• il vettore u 2 Rm

Date queste premesse sarà possibile risolvere problemi di distribuzione di


flusso sulle reti.
Un’importante ipotesi di lavoro è
n
X
bi = 0
i=1

in quanto, se fosse positiva, si avrebbe più domanda che o↵erta ed il poliedro


sarebbe vuoto, mentre se fosse negativa avrei un’eccedenza di produzione e
potrei introdurre dei nodi fittizzi (magazzini) ed i loro eventuali costi.
Ad ogni grafo è poi possibili associare la matrice di incidenza della rete E
avente sulle righe i nodi, sulle colonne gli archi e per ogni coppia (nodo, arco)

24
il valore -1 se l’arco è uscente, 1 se entrante e 0 se scollegato. Il modello
generale di un problema di PL su reti è quindi
8
>
<min cx
Ex = b
>
:
0xu

che prende il nome di problema di PL su reti capacitate.


Nel caso in cui non ci siano vincoli sulla portata il problema prende il
nome di problema di PL su reti non capacitate e diventa
8
>
<min cx
Ex = b
>
:
x 0

6.1 Reti malprogettate


Per verificare che una rete sia ben progettata bisogna e↵ettuare:

• Analisi dei costi: in quanto un ciclo orientato di costo negativo


porterebbe il problema a non avere soluzione

• Analisi dei bilanci: in quanto potrebbe essere sbilanciata positiva-


mente (troppi pozzi), negativamente (troppi archi) o avere bilanci non
compatibili con l’orientamento degli archi

• Analisi delle capacità: in quanto la somma delle capacità dei nodi


deve essere sufficiente a far passare tutto il flusso

25
Capitolo 7

Problemi di PL su reti non


capacitate

Dato il problema 8
>
<min cx
Ex = b
>
:
x 0
si evince che esso ha una forma molto simile ad un problema di PL duale
standard 8
>
<min yb
yA = c
>
:
y 0
il cui studio è sempre stato trattato supponendo A non singolare.
Nel caso delle reti abbiamo che la matrice E T = A non ha rango massimo,
in quanto una colonna è combinazione lineare delle altre e, secondo quanto
detto, sembrerebbe non avere soluzioni di base.
Nello studio delle reti il concetto di base viene rimpiazzato da quello di
albero di copertura: si definisce albero di copertura T quell’albero che
collega tutti i nodi senza creare cicli. Siano n i nodi di una rete, un albero
di copertura avrà sempre n 1 archi.
Rimuovendo un vincolo (ridondante in quanto il sistema è sovradetermi-
nato) e utilizzando un albero di copertura come base, è possibile costruire la
matrice di una visita posticipata per foglie: questà sarà sempre una matrice
triangolare con elementi non nulli sulla diagonale, la quale è non singolare
ed ammette soluzione unica.

26
Teorema di caratterizzazione delle basi su reti non capacitate
Una sottomatrice quadrata (n 1) ⇥ (n 1) di E è invertibile se e solo se si
selezionano n 1 archi relativi ad un albero di copertura.

Nel caso degenere, posso avere due alberi di copertura diversi che
generano lo stesso flusso.

7.1 Flusso su una rete


Dato il modello di un problema di PL su reti, il vettore x prende il nome
di flusso. Dato un albero di copertura T , esso può essere calcolato sempli-
cemente attraverso una visita anticipata per foglie. Di fatto, il flusso è una
soluzione duale, quindi la sua classificazione risulta molto semplice

• ammissibile: tutte le componenti sono non negative

• non ammissibile: almeno una componente negativa

• degenere: almeno una componente di base nulla

• non degenere: tutte le componenti di base non nulle

Data la bipartizione T (albero di copertura) e L (archi vuoti), il flusso avrà


la forma
x = (ET xT = b, |{z}
0 )
| {z }
xT xL

7.2 Potenziale di una rete


Ad ogni problema di flusso è possibile associare un problema primale cosı̀
costituito: (
max ⇡b
⇡E  c
Dato un albero di copertura T , il potenziale di base si ottiene risolvendo il
sistema
⇡ET = cT
Data la struttura della matrice E, le equazioni di base del potenziale risultano

⇡i + ⇡j = cij

27
Prendendo il potenziale di un nodo come riferimento (⇡ = 0), il potenziale
di base si ottiene risolvendo un sistema di n 1 equazioni (archi dell’albero
di copertura) in n 1 incognite (tutti i nodi escluso quello a potenziale asse-
gnato). Esiste tuttavia una tecnica ad ispezione diretta molto più rapida per
la costruzione del potenziale, e↵ettuando una visita anticipata dalla radice:
partendo dalla radice (potenziale assegnato), si aggiunge ad ogni arco che si
incontra il costo dell’arco se concorde, mentre si sottrae se discorde.
La condizione di ammissibilità del potenziale si ottiene studiando gli archi
che non fanno parte dell’albero di copertura: la di↵erenza di potenziale degli
archi di L deve essere inferiore al costo dell’arco
⇡i + ⇡j  cij 8(i, j) 2 L
Se il potenziale eguaglia il costo dell’arco, il potenziale si dice degenere,
non degenere altrimenti.
Definizione: Costo ridotto
Dato un albero di copertura T ed il suo potenziale associato ⇡, si definisce
costo ridotto di un arco (i, j)
c⇡ij , cij + ⇡i ⇡j
Teorema di Bellman per reti non capacitate
Supponiamo di avere un albero di copertura T che generi un flusso di ba-
se ammissibile. Se i costi ridotti degli archi di L sono 0, allora siamo
all’ottimo.

7.3 Simplesso per flussi


Supponiamo di avere un flusso di base ammissibile e calcoliamone il poten-
ziale: rispetta le condizioni di Bellman? Se no, allora
9(i, j) 2 L : c⇡ij < 0
Il primo arco che viola la condizione di Bellman sarà l’arco entrante. Inse-
rendo tale arco nell’albero di copertura T si viene a creare un ciclo C. Per
determinare l’arco uscente di opera la cosiddetta tecninca della rottura del
ciclo: si divide il cilco C in due insiemi C + , costituito dall’arco entrante e da
quelli del ciclo ad esso concordi, e C , costituito dagli archi ad esso discordi.
Si opera poi la seguente trasformazione (con ✓ 0 intero)
8
> +
<x¯ij + ✓ 8ij 2 C
xij (✓) = x¯ij ✓ 8ij 2 C
>
:
x¯ij altrimenti

28
Per determinare l’arco uscente studio come si modifica la funzione obiet-
tivo
cx(✓) = cx̄ + ✓c⇡ij
con ✓ 0 e c⇡ij < 0 in quanto viola Bellman. Posso sottrarre quindi flusso
finché un arco non si svuota (se diventasse negativo non sarebbe ammissible),
quindi
✓ = min{x¯ij }
C
Questa operazione rispetta sia i bilanci che la positività del flusso: l’arco che
si svuota sarà l’arco uscente dell’algoritmo del simplesso per flussi.

Interezza del flusso


Data una matrice di incidenza E ed un albero di copertura T , la ma-
trice ETT sarà una matrice triangolare inferiore il cui determinante varrà
±1. Una matrice con determinante unitario prende il nome di matrice
modulare: queto è molto importante in quanto ci assicura l’interezza del
flusso. Questo implica che la PL su reti va bene sia per problemi divisibili
che indivisibili, e che questi problemi fanno da ponte tra PL e PLI.

29
Capitolo 8

Cammini minimi

Uno dei problemi più noti nella letteratura sui grafi è quello dei cammini
minimi. Dato un grafo, qual è il percorso che costa meno per andare da una
parte ad un’altra? Il grafo in questione non ha né bilanci, né capacità, ma
può essere leggermente modificato per trasformarlo in un problema di PL su
reti.
Assegnamo alla sorgente il bilancio n + 1 e a tutti gli altri nodi 1.
8
>
<min cx
Ex = b
>
:
x 0

dove (
(n 1) i = radice
bi =
1 altrimenti
Questo è a tutti gli e↵etti un problema di PL su reti non capacitate: proble-
ma dell’albero orientato di costo minimo (che è un albero di copertura
in quanto il minimo è in un vertice del poliedro). Esso è un albero radica-
to nella sorgente e orientato dai padri verso i figli. Le soluzioni di base
dell’albero dei cammini minimi non sono mai degeneri. Non essendo
mai degeneri, posso prendere il costo ridotto più negativo senza possibilità di
loop. Questo implica che la velocità di queso simplesso è di gran lunga mag-
giore di quello standard. Per scrivere il flusso mi basta contare i nodi eredi
del nodo da cui esce l’arco (i bilanci sono unitari per tutti i nodi apparte la
radice). Per vedere se la soluzione è ammissibile calcolo tutti i costi ridotti.
Quello che viola Bellman con modulo massimo sarà l’arco entrante. L’arco
uscente sarà quello appartenente al vecchio albero di copertura sullo stesso
nodo dell’arco entrante.

30
Capitolo 9

Problemi di PL su reti
capacitate

Un prblema su reti capacitate, in generale, si presenta come segue


8
>
<min cx
Ex = b
>
:
0xu

che non è né primale, né duale. È comunque possibile trasformare il vincolo
di disequazione sulle capacità in un vincolo di equazione attraverso variabili
di scarto definite positive (
x+w =u
w 0
che rappresentano quanto manca a saturare l’arco. Il problema diventa quindi
8
>
> min cx + 0w
>
<Ex = b
>
> x+w =u
>
:
x, w 0

dove la matrice ha 2m righe e m + n 1 colonne.


Le matrici di base per problemi di flusso di costo minimo su reti capacitate
risultano quindi di dimensione (n+m 1)⇥(n+m 1). Per la costruzuzione
di tale base si usa un metodo di tripartizione degli archi: prendiamo tutti
gli archi della rete e dividiamoli in 3 gruppi: T contentente gli n 1 archi
dell’albero, L contentente gli archi vuoti, U quelli saturi. L o U potrebbe
essere un insieme vuoto.

31
La matrice risulta quindi esapartizionata negli insiemi T , L, U , T 0 , L0 e
0
U.
Teorema di caratterizzazione delle basi su reti capacitate
Tutte e sole le basi sono quelle che si ottengono dalla tripartizione scegliando
T , U , T 0 , L0 . La matrice ottenuta è quadrata ed invertibile.
Il flusso si dirà
• non ammissibile se possiede componenti negative, ammissibile al-
trimenti

• degenere se il flusso su un arco è nullo o eguaglia la portata, non


degenere altrimenti

9.1 Ricerca dell’ottimo


Dato il problema di PL su reti capacitate
8
>
> min cx + 0w
>
<Ex = b
>x + w = u
>
>
:
x, w 0

il flusso ammissibile x̄ generato dalla tripartizione è quello ottimo? Per


rispondere a questa domanda studiamo il primale associato
8
>
<max ⇡b + µu
⇡E + µI  c
>
:
µ0

Considerando la tripartizione precedente, il sistema diventa


8 T T
>
> ET ⇡ + H µH
T = cT
>
<E T ⇡ T + µ = c
U U U
>
> µT = 0
>
:
µL = 0

Semplificando il semplificabile, dalla prima equazione si vede come il poten-


ziale si calcola esattamente come nelle reti non capacitate, e quindi

⇡ET = cT

32
Per testare l’ammissibilità è necessario verificare
(
⇡EL + H L  cL
µH
µU  0

anche qui, semplificando il semplificabile e vedendo che µU = cU ⇡EU , il


tutto si riduce a (
⇡EL  cL
⇡EU cU
Di fatto, si arriva alle condizioni di Bellman su reti capacitate:
(
c⇡ij 0 8(ij) 2 L
c⇡ij  0 8(ij) 2 U

Teorema di Bellman su reti capacitate (dato il flusso)


Sia data una tripartizione che generi un flusso di base ammissibile. Se valgono
le condizioni di Bellman, ovverso se i costi ridotti sugli archi di L sono positivi
e quelli sugli archi di U sono negativi, allora sono all’ottimo.

Teorema di Bellman su reti capacitate (dato il potenziale)


Sia data una tripartizione che generi un potenziale di base ammissibile. Se
il flusso associato è ammissibile, ovvero se tutte le componenti 0  x  u,
allora sono all’ottimo.

Un potenziale di base è degenere quando un costo ridotto di U o di L


vale 0.

9.2 Simplesso per flussi su reti capacitate


Supponiamo di avere una tripartizione che fornisca un flusso x̄ ammissibile ed
un potenziale ⇡
¯ non ammissibile. Queste sono le premesse per un simplesso
per flussi (simplesso duale). Ovviamente saranno violate le condizioni di
Bellman, quindi verrà verificata una delle seguenti relazioni

1. 9(ij) 2 L : c⇡ij < 0

2. 9(ij) 2 U : c⇡ij > 0

dunque l’arco entrante apparterrà o ad L o ad U . Nel caso in cui ci siano


più archi violanti Bellman, si procede seguendo le regole anticiclo di Bland.

33
9.2.1 Arco entrante proveniente da L
Inserendo l’arco entrante in base, si viene a create un ciclo C formato dall’u-
nione degli insiemi C + (archi concordi) e C (archi discordi). Successiva-
mente, si ridistribuisce il flusso nel seguente modo
8
> +
<x¯ij + ✓ (ij) 2 C
x(✓) = x¯ij ✓ (ij) 2 C
>
:
x¯ij altrimenti
Questa redistribuzione del flusso viola qualche vincolo? Porta a migliorare
la soluzione?

Tecnica della rottura del ciclo


I bilanci non vengono violati, in quanto, indipendentemente dal vaolre di ✓ e
dal verso del ciclo, tante unità di flusso entrano quante ne escono.
Per calcolare come varia la funzione obiettivo, è possibile applicare il
seguente teorema
cx(✓) = cx̄ + ✓c⇡ij (ij) 2 L
Essendo ✓ 0 e c⇡ij < 0 in quanto l’arco entrante che viola Bellman proviene
da L, si vede come la f.o. diminuisca. Per ”massimizzare” il risultato voglio
✓ il più grande possibile. Definendo
0  ✓  min{x¯ij }
C
e
0  ✓+  min
+
{uij x¯ij }
C
si ha che
0  ✓  min{✓ , ✓+ }
ma, volendo il ✓ più grande possibile
✓ = min{✓ , ✓+ }
Proprio da quest’ultima scelta, si possono avere 2 possibilità anche per la
determinazione dell’arco uscente.

Arco uscente per ✓ = ✓


In questo caso, si ha che un arco di L (arco entrante) è andato in T , mentre
un arco di T (arco uscente) si è svuotato a causa della ridistribuzione di flusso
ed è andato in L. Non è possibile che l’arco sia lo stesso, in quanto l’arco
entrante appartiene a C + , mentre l’arco uscente appartiene a C .

34
Arco uscente per ✓ = ✓+
In questo caso, si ha che un arco di L (arco entrante) è andato in T , mentre
un arco di T (arco uscente) si è saturato a causa della ridistribuzione di flusso
ed è andato in U . È possibile che l’arco sia lo stesso, ma questo non è un
problema: la base è data dalla tripartizione, quindi il passaggio da un insieme
all’altro provoca un cambio di base anche se l’arco non resta in T .

Osservazioni
Se ✓ = 0 ci troviamo al caso degenere, mentre non è vero che nel caso degenere
✓ = 0 in quanto l’arco degenere potrebbe non essere nel ciclo.
Se C è vuoto ci troviamo nel caso in cui min ! 1: siamo davanti ad
un ciclo con costi negativi, ovvero con guadagni.
Non può accadere che ✓ = +1 in quanto nel ciclo ci sarà sempre almeno
un arco (insieme chiuso e limitato, ammette massimo e minimo).

9.2.2 Arco entrante proveniente da U


Inserendo l’arco entrante in base, si viene a create un ciclo C formato dal-
l’unione degli insiemi C + (archi discordi) e C (archi concordi)1 . Succes-
sivamente, si ridistribuisce il flusso nel seguente modo
8
> +
<x¯ij + ✓ (ij) 2 C
x(✓) = x¯ij ✓ (ij) 2 C
>
:
x¯ij altrimenti

Questa redistribuzione del flusso viola qualche vincolo? Porta a migliorare


la soluzione?

Tecnica della rottura del ciclo


I bilanci non vengono violati, in quanto, indipendentemente dal vaolre di ✓ e
dal verso del ciclo, tante unità di flusso entrano quante ne escono.
Per calcolare come varia la funzione obiettivo, è possibile applicare il
seguente teorema
cx(✓) = cx̄ ✓c⇡ij (ij) 2 U
1
Tra gli archi concordi c’è ovviamente l’arco entrante, che, appartenendo ad U , è un
arco saturo: sono costretto a invertire il senso in quanto da esso posso solo sottrarre flusso,
e non aggiungerlo

35
Essendo ✓ 0 e c⇡ij > 0 in quanto l’arco entrante che viola Bellman proviene
da U , si vede come la f.o. diminuisca. Per ”massimizzare” il risultato voglio
✓ il più grande possibile.
Definendo
0  ✓  min{x¯ij }
C
e
0  ✓+  min
+
{uij x¯ij }
C
si ha che
0  ✓  min{✓ , ✓+ }
ma, volendo il ✓ più grande possibile

✓ = min{✓ , ✓+ }

Proprio da quest’ultima scelta, si possono avere 2 possibilità anche per la


determinazione dell’arco uscente.

Arco uscente per ✓ = ✓+


In questo caso, si ha che un arco di U (arco entrante) è andato in T , mentre
un arco di T (arco uscente) si è saturato a causa della ridistribuzione di flusso
ed è andato in U . Non è possibile che l’arco sia lo stesso, in quanto l’arco
entrante appartiene a C , mentre l’arco uscente appartiene a C + .

Arco uscente per ✓ = ✓


In questo caso, si ha che un arco di U (arco entrante) è andato in T , mentre
un arco di T (arco uscente) si è svuotato a causa della ridistribuzione di
flusso ed è andato in L. È possibile che l’arco sia lo stesso, ma questo non
è un problema: la base è data dalla tripartizione, quindi il passaggio da un
insieme all’altro provoca un cambio di base anche se l’arco non resta in T .

Osservazioni
Se sul ciclo ho un arco vuoto o saturo sono al caso degere.

9.3 Max flow


Data una rete, qual è la quantità massima di flusso che posso far passare da
un nodo sorgente ad un nodo destinazione? Questo problema è conosciuto in

36
letteratura col nome di problema di flusso massimo o max flow. Per stu-
diarlo sono di interesse solo le capacità superiori degli archi, mentre possono
essere cancellati bilanci e costi. Si introducono poi un nodo fittizio sorgente
con archi uscenti e connessi alle sorgenti reali della rete, ed un nodo fittizio
destinatario con archi entranti dai nodi pozzi della rete. Le capacità degli
archi appena inseriti sono +1. Se il flusso sulla rete cosı̀ costruita è maggio-
re o uguale alla somma dei bilanci dei pozzi, allora la rete è ben progettata,
e l’ottimo esiste finito.
Eliminando i nodi fittizi e inserendo bilanci nulli su tutti i nodi, si ottiente
il seguente problema di PL
8
>
<max v + 0x
Ex = b
>
:
0  x  u, v 0
con 8
>
<0 i 6= s, t
bi = v i=s
>
:
v i=t
Di fatto, portando i termini noti v e v al primo membro delle varie
equazioni, ho aggiunto una colonna alla matrice di incidenza; il che equivale
ad aver aggiunto un arco dal target alla sorgente di costo 1 e di capacità
+1.
Dato il problema, non è però necessario sviluppare un simplesso su reti
vero e proprio, in quanto è un problema particolare e sono stati sviluppati
algoritmi ad hoc.
Definizione: Taglio di una rete
Si definisce taglio di una rete una partizione dei nodi in 2 blocchi: uno che
contiene almeno l’origine (NS ) e uno almeno il target (NT ). N = NS [ NT
Definizione: Archi diretti del taglio
Dato un taglio (NS , NT ) si definiscono archi diretti del taglio A+ (NS , NT )
tutti gli archi aventi origine in NS e coda in NT .
Definizione: Capacità di taglio
Si definisce capacità di taglio la quantità
X
u(NS , NT ) , uij
(ij)2A+ (N S ,NT )

La minima capacità prende il nome di min cut ed è il collo di bottiglia


della rete.
Il teorema del max flow/min cut a↵erma che questi due sono uguali. In
e↵etti sono uno il duale dell’altro.

37
Capitolo 10

Algoritmi su reti

Data l’ampia di↵usione e la semplicità delle reti, sono stati sviluppati algo-
ritmi semplici ed efficienti per risolvere problemi di varia natura.

10.1 Algoritmo di Ford-Fulkerson


Tutti i possibili tagli di una rete sono 2n 2 . Per questo motivo, viene presen-
tato un algoritmo per trovare il max flow senza passare ad una enumerazione
totale. Tale algoritmo prende il nome di Algoritmo di Ford-Fulkerson, nella
versione di Edmonds-Karp. Per ottenere la soluzione corretta è necessario
fare riferimento ad alcuni concetti:

Definizione: Grafo residuo


Dato un grafo su cui voglio calcolare il max flow, si definisce grafo residuo
Gres il grafo a cui aggiungo gli archi ji. Data la capacità residua

rij = uij xij + xji

dove xij è il flusso al passo corrente (ed è nullo al passo iniziale).

Definizione: Cammino aumentante


Si definisce cammino aumentante Caum un cammino su Gres orientato
s ! t composto da archi a rij > 0. Si definisce portata di un cammino
aumentante la quantità
= min rij
(ij)2Caum

L’algoritmo consiste essenzialmente di due operazioni:

1. ricerca di un cammino aumentante: se lo trovo, salto al passo


successivo, altrimenti mi fermo.

38
2. aggiorno x secondo la seguente regola (r viene aggiornato di conse-
guenza) (
xij + (ij) 2 Caum
x=
xij altrove

Definita la stella uscente dal nodo i F S(i) come l’insieme dei nodi j
raggiungibili attraverso gli archi uscenti da i, viene ora introdotto l’algoritmo
della croce per la determinazione dei cammini aumentanti. Tracciata una
corce, si inserisce nella colonna di sinistra il nodo di partenza, e su quella di
destra la stella uscente da quel nodo.
Considerando l’elenco di sinistra come una FIFO, si prende il primo nodo
e si trascrive nella colonna di sinistra e si determina la sua stella uscente. In
questo caso, bisogna considerare tutti gli archi a capacità non nulla, anche
quelli fittizzi, ma stando attenti a non inserire nodi che erano già stati inseriti
precedentemente nella croce. Proseguo cosı̀ finche nella colonna di destra non
raggiungo l’ultimo nodo. Partendo da esso e risalendo a ritroso tutti i nodi
che mi hanno permesso di raggiungerlo, ottengo un cammino aumentante.
L’algoritmo termina in un numero finito di passi.
L’uscita dell’algoritmo è corretta per il teorema del max flow/min cut. Gli
archi fittizzi ji sono necessari per eventuali ”ripensamenti”: posso ridistrui-
buire alcune unità di flusso cosı̀ da trovare il taglio corretto. Rimuovendoli
potrei non trovare la soluzione corretta. All’ultimo passo l’algoritmo della
croce si interromperà prima di raggiungere l’ultimo nodo: questo notifica
che ho ottenuto il taglio desiderato: l’insieme NS sarà formato dai nodi che
compaiono nella colonna di sinistra, mentre NT da tutti gli altri.

10.2 Algoritmo di Dijkstra


Questo algoritmo permette di determinare l’albero radicato ed orientato
dei cammini minimi. Viene applicato a reti che hanno solo costi (no
capacità o bilanci). Esso utilizza il vettore ⇡ 2 Rn delle etichette e p 2 Rn
dei predecessori, lista l’elenco N dei nodi da visitare e consiste, ad ogni passo,
di rimuovere da N il nodo di etichetta ⇡ minore. L’algoritmo termina sempre
in n passi e non crea cicli. Ad ogni passo seleziona il nodo e aggiorna p e ⇡:
in ⇡j avrò il costo del cammino minimo da r a j ed in pj avrò il vettore dei
predecessori del nodo j nell’albero di costo minimo.

Inizializzazione
p = 1 0 0 ... 0

39
⇡ = 0 +1 +1 . . . +1

Passo k-esimo
Seleziono il nodo j: 8i 2 F S(j) testo la seguente condizione

⇡i > ⇡j + cji

se non è verificata non faccio nulla, altrimenti aggiorno le etichette ed i


predecessori come segue (
⇡i = ⇡j + cji
pi = j
In realtà non si fa riferimento alla lista N , ma alla coda Q: all’inizio questa
è vuota, mentre passo dopo passo viene estesa inserendo i nodi della stella
uscente dal nodo in considerazione. Il nodo pescato ad ogni iterazione sarà
sempre quello minimo in Q. Per determinare il flusso x, per ogni arco ap-
partenente all’albero dei cammini minimi, si prende come valore il numero
di nodi figli dell’arco in esame. Per gli archi non appartenenti al suddetto
albero il flusso vale 0.

10.3 Algorimto di Kruskal


Si supponga di avere una rete con archi bidirezionali, aventi ognuno un co-
sto. L’algoritmo di Kruskal permette di ottenere l’albero di copertura
di minimo costo (Minimum Spanning Tree - MST) attraverso il seguente
algoritmo: si parte prendendo l’arco di costo minimo; si itera questo procedi-
mento prendendo di volta in volta il nuovo arco di costo minimo, solo se esso
non crea un ciclo nell’albero che si sta costruendo. L’albero ottenuto sarà
l’albero non orientato di copertura di minimo costo. Il costo dell’albero
sarà la somma dei costi dei singoli archi che lo compongono: esso non ha
nulla a che vedere con il flusso, in quanto quest’ultimo, per sua natura, è
riferito ad alberi orientati.

40
Parte III

Programmazione Lineare Intera

41
Capitolo 11

Introduzione

Dato il problema di PL 8
>
<max cx
Ax  b
>
:
x 2 Zn
il vincolo x 2 Zn è il vincolo di interezza. Questi sono problemi mol-
to complessi dal punto di vista computazionale (problemi NP-hard ) e, nella
maggior parte dei casi, non ottengo l’ottimo, ma una sua approssimazio-
ne. Per n sufficientemente piccolo è possibile trovare l’ottimo, ma, essendo
algoritmi a complessità esponenziale, al crescere di n si giunge rapidamente
a soluzioni difficili da calcolare in maniera esatta.

42
Capitolo 12

Valutazioni superiori ed
inferiori

Il metodo classico per avere stime sull’ottimo per un problema di PLI consiste
nella stima delle valutazioni inferiori VI e delle stime superiori VS . Definito

VPott ott
LI = cxP LI

con xott
P LI la soluzione ottima del problema di PLI.
Sarà sempre verificata la seguente relazione

VI  VPott
LI  VS

dove la di↵erenza VS VI prende il nome di gap.


Per avere senso, nei nostri problemi i vettori b e c e la matrice A avranno
coefficienti razionali1 .

Osservazioni
• Se VIP LI è una valutazione inferiore, allora anche dVI e è una valutazione
inferiore

• Se VSP LI è una valutazione superiore, allora anche bVS c è una valuta-


zione superiore

Dai due punti precedenti, tra tutte le valutazioni superiori la migliore è


la minima, mentre tra quelle inferiori la migliore è la massima: in questo
modo si restringe il gap. Di fatto, genero di volta in volta valutazioni
superiori ed inferiori, aggiornando i valori se questi riducono il gap. In e↵etti
1
Moltiplicando per il minimo comune multiplo è possibile riportarli in forma intera.

43
è lo stesso che viene fatto nel simplesso primale (genero di volta in volta
valutazioni inferiori) o nel simplesso duale (genero di volta in volta valutazioni
superiori).

12.1 Determinazione delle valutazioni


Per trattare i problemi di PLI non si può ricorrere alla teoria della dualità
e non ha quindi senso costruire il duale associato. Per questo motivo è
necessario trovare un modo ”facile” per calcolare le valutazioni. Si deve
quindi ricorrere al problema rilassato continuo ad esso associato
Definizione: Problema rilassato continuo
(
max cx
Ax  b
ovvero è un problema di PLI in cui si rimuove il vincolo di interezza.
Definedo le seguenti quantità
• VPott ott
L = cxP L

• VPamm
L = cxamm
PL

• VPott ott
LI = cxP LI

• VPamm amm
LI = cxP LI

si può osservare che


1. VPott
L è una VS perché il poliedro con vincolo di interezza è contenuto
nel poliedtro rilassato continuo
2. supponendo che sia facile trovare VPammLI , essa sarà una VI in quanto è
una tra tutte le soluzioni in cui cerco il massimo
3. VPamm
L non dà informazioni a riguardo in quanto può essere sia VI che
VS
Come detto precedentemente, devo trovare un modo semplice per calcolare le
valutazioni superiori ed inferiori. Non esiste un metodo standard, ma bisogna
studiare caso per caso quale sia il modo migliore. Alla soluzione ottenuta è
possibile associare l’errore commesso secondo la formula
VS VI
err =
VI

44
In realtà ci sono casi in cui il punto 3 delle osservazioni precedenti non è
del tutto inutile. Infatti
Teorema
Dato il problema di PLI avente Ax  b con aij , bi 0 allora i valori bxamm
PL c
sono sempre interni al poliedro.
Questo teorema è molto utile in problemi come quello di produzione o lo
zaino, in cui la matrice A ed il vettore b sono a coefficienti positivi.
Il gap è la di↵erenza tra i coefficienti angolari delle linee di iso-guadagno.

Se prendo bxott
P L c anche se per problemi di produzione è ammissibili,
non è l’ottimo. Non è nemmeno il più vicino, ma il vero ottimo può
essere del tutto diverso.

12.2 Equivalenza tra PL e PLI

Un problema di PLI può avere una regione ammissibile vuota? Sı̀, se


il poliedro legato al rilassato continuo fosse vuoto. Se anche non lo fosse,
potrebbe svuotarsi a causa del vincolo di interezza.
Un algoritmo greedy non implica che la soluzione trovata sia l’ottimo.
Non c’è, anzi, nessun legame tra soluzione di un algoritmo greedy e
ottimo.

Sia P il poliedro del rilassato continuo, S , P \ Zn la ”griglia” del PLI e


convS il più piccolo poliedro che contiene S, valgono le seguenti relazioni
S ✓ convS ✓ P
max cx  max cx  max cx
S convS P
Teorema (Lemma)
I vertici di convS sono tutti a componenti intere.
Teorema di equivalenza tra PL e PLI

max cx = max cx = cx⇤


S convS
Quindi i problemi di PL e PLI sono equivalenti, il problema è che
non si sa come trovare convS. Su questo risultato si basano gli algoritmi di
riduzione del gap. Inoltre, se l’ottimo del rilassato continuo è a componenti
intere, allora quello è l’ottimo del problema di PLI.

45
Capitolo 13

Riduzione del gap

13.1 Rilassamento
Dato un problema di PLI di cui si sono trovate una VI ed una VS , il con-
cetto che sta alla base degli algoritmi per la riduzione del gap è quello di
rilassamento.

13.1.1 Rilassamento continuo


Questo tipo di rilassamento consiste nel rimuovere il vincolo di interezza del
problema di PLI, riconducendolo di fatto ad un problema di PL.

13.1.2 Rilassamento per eliminazione di un vincolo


Si studia il problema rimuovendo un vincolo. In alcuni casi si semplifica enor-
memente: nel caso dei problemi dei cammini minimi con vincolo di budget,
per esempio, rimuovendo quest’ultimo ottengo una valutazione inferiore.

13.1.3 Rilassamento per fusione di vincoli


Si sostituiscono due vincoli con la loro somma, allargando e restringendo
di conseguenza il poliedro. Anche in questo caso alcuni problemi possono
risultare più semplici.

13.2 Piani di taglio di Gomory


L’idea alla base degli algoritmi di riduzione del gap è quella, pur non cono-
scendo convS, di riuscire a tagliare il poliedro rimuovendo parti di regione

46
ammissibile del rilassato continuo non contententi punti a coordinate inte-
re. Si cercano dei vincoli che riducano il gap tra VI e VS e che rispettino le
seguenti proprietà

1. x 0 8x 2 S, ovvero deve essere una disugaglianza valida

2. xott
PL > 0, ovvero deve essere un cosiddetto piano di taglio

Ottenuto un piano di taglio, esso viene inserito nel problema di PLI, del quale
si calcola l’ottimo del rilassato continuo. La regione ammissible si è ridotta,
e l’ottimo è sceso. Ho ottenuto una nuova VS e quindi il gap si è ridotto.

13.2.1 Piani di taglio di Gomory


Teorema di Gomory
Siano

• xott
RC il vertice ottimo del rilassato continuo

• AB la matrice di base

• AN la matrice non di base


e , A 1 AN
• A B

• a 2 R, {a} , a bac

• r una delle componenti frazionarie di xott


RC

allora X
{e
arj }xj {(xott
RC )r }
j2N

è, fissato r, un piano di taglio

Bisogna ricordare che Gomory ha previsto il partizionamento della


matrice A in A = (AB , AN )

I piani di Gomory si possono usare solo se la VS è stata calcolata attraverso


un rilassamento continuo. Più avanti verranno trattate altre tecniche.

47
Capitolo 14

Travelling Salesman Problem

Questo è un problema molto noto in letteratura col nome di Travelling Sale-


sman Problem (T.S.P. ) o Problema del commesso viaggiatore: qual è il modo
ottimo per consegnare i pacchi in tutte le città passando una sola volta in
ciascuna di esse e tornando in qualla di partenza? Questo problema è legato
al concetto matematico di ciclo hamiltoniano, ovvero un ciclo di un grafo
che attraversa ogni nodo una sola volta.
Supponendo che ogni arco abbia un costo cij , il problema si riduce al
risolvere il ciclo hamiltoniano di costo minimo.
Supponiamo di avere un grafo completo e con n nodi. La completezza
del grafo non è limitativa in quanto, se nel grafo un arco non ci fosse, potrei
introdurlo in maniera fittizia associandogli un costo elevatissimo.
Il numero di cicli hamiltoniani in un grafo di n nodi è di (n 1)! se fisso
la sorgente. L’enumerazione totale non è una via adatta, ma si hanno a
disposizione algoritmi specifici a seconda che si tratti di T.S.P. simmetrico
o T.S.P. asimmetrico.

48
14.1 T.S.P. asimmetrico
Problemi T.S.P. in cui il termine asimmetrico deriva dal fatto che cij 6= cji .
Un problema di T.S.P. asimmetrico si prensenta nella seguente forma
8
>min cx
>
>
>
> X n
>
>
>
> xij = 1 8i
>
>
>
> j=1
>
<X n

> xij = 1 8j
>
>
>
> i=1
X
>
>
>
> xij 1 8S 2 N
>
>
>
> i2S,j 2S
/
>
:
xij 2 {0, 1}

con S ⇢ N sottoinsieme di nodi.


Dalle prime due sommatorie si può notare come i cicli hamiltoniani siano
un sottoinsieme degli assegnamenti. La terza sommatoria serve ad imporre
che non si vengano a creare cicli disgiunti. Proprio a causa di questa ultima
sommatoria, nel T.S.P. asimmetrico si ha un blocco con un numero esponen-
ziale di vincoli. Questo rende difficile (se non impossibile) l’uso del rilassato
continuo per una VI . Rimuovendo quel blocco di vincoli ed e↵ettuando un
rilassamento continuo, si ha comunque un’ottima VI .

Valutazione inferiore
Si opera alla costruzione di un assegnamento di costo minimo.

Valutazione superiore
Si parte dall’assegnamento di costo minimo e si applica l’algoritmo delle
toppe: siano dati due cicli disgiunti (ma l’algoritmo vale anche per più
cicli, applicandolo iterativamente), si rimuovano un arco dal primo ciclo,
supponiamo ij, ed uno dal secondo, supponiamo kl. A questo punto si ”ricuce
la toppa” inserendo gli archi il e kj. Quello ottenuto è un ciclo hamiltoniano
e quindi una soluzione ammissibile. Necessariamente il valore del ciclo è
maggiore di quello dell’assegnamento di partenza, altrimenti esisterebbe un
assegnamento di costo minore di quello trovato precedentemente.

49
14.2 T.S.P. simmetrico
Problemi T.S.P. in cui il termine simmetrico deriva dal fatto che cij = cji .
Un problema di T.S.P. simmetrico si prensenta nella seguente forma
8
>
> min cx
>
> X X
>
>
>
> x hi + xik = 2
<
h<i i<k
X X
>
> x + xij 2 8S
>
> ij
>
> i2S,j 2S
/ i 2S,j2S
/
>
>
:x 2 {0, 1}
ij

La prima sommatoria dà luogo a n vicoli di grado, mentre la seconda a


2n vincoli di connessione. Anche in questo caso, dato l’enorme numero
di vincoli, non si può usare il rilassamento continuo. Per questo motivo si
cambia strategia e si opera una rimozione di vincoli : elimino n 1 vincoli
di grado. Il rilassamento consiste quindi nel trovare una struttura connessa
di costo minimo in cui un nodo in particolare abbia grado 2: tale struttura
prende il nome di k-albero.

Definizione: k-albero
Data una rete completa non orientata con n nodi ed n2 archi, si chiama
k-albero un sottoinsieme di archi cosı̀ formato: isolato il nodo k, si cerca
un albero di copertura per i restanti nodi. Fatto ciò, si connette il nodo k
all’albero di copertura attraverso 2 archi.

I cicli hamiltoniani sono tutti e soli i k alberi per ogni k

Valutazione inferiore
Per ottenere una VI si cerca quindi il k-albero di costo minimo. Posso far-
ne tanti e poi prendere il maggiore. Il k-albero di consto minimo si ottiene
costruendo un k-albero in cui l’albero di copertura è ottenuto a partire dal-
l’algoritmo d Kruskal, ed il nodo k è connesso attraverso gli archi disponibili
di costo minore.

Valutazione superiore
La soluzione ammissibile per la VS si ottiene attraverso l’algoritmo del no-
do più vicino: scelto un nodo, ci si sposta di volta in volta al successivo

50
prendendo l’arco di costo minore (ovviamente senza creare sottocicli). Pos-
so farlo scegliendo diversi nodi di partenza e, tra tutti i risultati ottenuti,
prendere quello minore.

51
Capitolo 15

Algoritmo del Branch and


Bound

Per semplicità si vedrà solamente applicato a problemi binari, ma vale in


generale per tutti i problemi di PLI, in quanto non è legato a come le valu-
tazioni siano state trovate, ma solo alla loro determinazione. Bisognerebbe
partire con un gap piccolo, altrimenti è molto lento.
Si fonda sull’albero dell’enumerazione totale e, associata ad un nodo una
variabile del problema, il ramo di sinistra sarà il problema Pij considerando
la variabile con valore 0, quello di sinistra considerandola come 1. Ad ogni
piano si avranno 2i nodi, fino a scendere alle foglie in cui si avranno 2n nodi.
Tra di essi ci saranno tante soluzioni non ammissibili, alcune ammissibili ed
una o più ottime.
L’algoritmo si basa su una visita dell’albero e, ad ogni passo, mi inter-
rogo se posso o meno tagliare, aggiornando di volta in volta la VI o la VS a
secondo del tipo di problema. Il taglio dei sottoalberi permette di analizza-
re meno delle 2n possibili soluzioni, riducendo notevolmente la complessità
computazionale.

15.1 Applicazione al T.S.P. simmetrico


Dato un problema (P) di T.S.P. simmetrico, se ne calcolano la VI attraverso
un k albero e la VS attraverso l’algoritmo del nodo più vicino.
Scegliendo di volta in volta quale variabile istanziare, si calcola ad ogni
passo la VI (Pij ) attraverso lo stesso k albero, controllando le seguenti regole
di taglio

1. VI (Pij ) VS (P) ! taglio al nodo corrente

52
2. VI (Pij ) < VS (P) ed è un ciclo hamiltoniano (soluzione ammissibile)
! aggiorno VS (P) dei nodi aperti e taglio al nodo corrente (taglio
post-aggiornamento)

3. si viene a creare un sottociclo o un nodo non può avere cardinalità 2


(violazione di vincoli ) ! taglio al nodo corrente (taglio per vuo-
tezza)

15.2 Applicazione allo zaino binario


Dato un problema (P) di zaino binario, se ne calcolano la VI attraver-
so l’algoritmo dei rendimenti e la VS attraverso l’algoritmo dei rendimenti
rilassato.
Istanziando di volta in volta la variabile frazionaria della soluzione al
passo precedente, si calcola ad ogni passo la VS (Pij ) attraverso il rilassato,
controllando le seguenti regole di taglio

1. VS (Pij )  VI (P) ! taglio al nodo corrente

2. VS (Pij ) > VI (P) ed ho un assegnamento ammissibile (soluzione am-


missibile) ! aggiorno VI (P) dei nodi aperti e taglio al nodo corrente
(taglio post-aggiornamento)

3. scendendo nella parte destra eccedo la capacità dello zaino (violazione


di vincoli ) ! taglio al nodo corrente (taglio per vuotezza)

53
Parte IV

Programmazione Non Lineare

54
Capitolo 16

Richiami di Analisi II

Finora abbiamo studiato problemi di ottimizzazione


(
min/max f (x)
x2D

con funzione obiettivo f (x) lineare e dominio D soggetto a vincoli lineari.


Molti problemi di ricerca operativa hanno però funzioni obiettivo non lineari,
dando vita alla Programmazione Non Lineare (PNL).
In questi richiami ci concentreremo su 4 aspetti:

1. Dominio: chiusura, limitatezza, convessità

2. Funzione obiettivo: regolarità, convessità, casi particolari, coercività

3. Strumenti da usare: derivate direzionali e parziali, gradiente, matri-


ce hessiana

4. Tipologia dei punti cercati: massimi e minimi locali e assoluti, selle

16.1 Strumenti da usare


Due strumenti fondamentali per i problemi di PNL sono

16.1.1 Gradiente
✓ ◆
@f @f
rf (x̄) , (x̄), . . . , (x̄)
@x1 @xn

55
16.1.2 Matrice hessiana
0 1
@2f @2f
@x21
(x̄) ... @x1 xn
(x̄)
B . .. .. C
Hf (x̄) = B
@ .. . . C
A
@2f @2f
@xn x1
(x̄) . . . @x2
(x̄)
n

La matrice hessiana si dice

• definita positiva se tutti i suoi autovalori sono positivi

• semidefinita positiva se tutti i suoi autovalori sono positivi o al più nulli

• definita negativa se tutti i suoi autovalori sono negativi

• semidefinita negativa se tutti i suoi autovalori sono negativi o al più


nulli

• indefinita altrimenti

16.1.3 Teoremi sui punti stazionari


Teorema di Fermat
Sia f : Rn ! R, f 2 C 1
se x̄ è un punto stazionario, allora rf (x̄) = 0

Teorema
Sia f : Rn ! R, f 2 C 2 e rf (x̄) = 0
allora

1. Hf (x̄) definita positiva =) x̄ punto di minimo locale

2. x̄ punto di minimo locale =) Hf (x̄) semidefinita positiva

3. Hf (x̄) definita negativa =) x̄ punto di massimo locale

4. x̄ punto di massimo locale =) Hf (x̄) semidefinita negativa

16.2 Funzione obiettivo


Di seguito vengono illustrate alcune interessanti proprietà riguardo la fun-
zione obiettivo

56
16.2.1 Regolarità
La regolarità di una funzione è definita rispetto a gradiente e matrice
hessiana. Una funzione avente gradiente e matrice hessiana appartiene a
C 2.

16.2.2 Concavità e convessità


Definizione: convessità
Una funzione si dice convessa se, 8x, y 2 Rn , 8 2 [0, 1]

f ( x + (1 )y)  f (x) + (1 )f (y)

Una funzione si dirà concava se la sua opposta è convessa. Le funzioni


concave e convesse hanno per noi un’importante proprietà:
Teorema
Sia f : Rn ! R convessa, allora
• non ha massimi assoluti
• non ha massimi locali
• non ha minimi locali
• non ha selle
Sia f : Rn ! R concava, allora
• non ha minimi assoluti
• non ha minimi locali
• non ha massimo locali
• non ha selle

16.2.3 Direzione
Data una direzione d, una funzione f , un punto x̄ ed un 0, si definisce
la restrizione della funzione lungo la direzione d

( ) = f (x̄ + d)

Di fatto, restringendo la funzione lungo una direzione, si ottiene una funzione


nel solo parametro (funzione di una sola variabile). Studiando questa, è
possibile caratterizzare meglio i punti stazionari.

57
16.2.4 Coercività
Definizione: coercività
Una funzione si dice coerciva se

lim f (x) = +1
kxk!+1

Teorema
Le funzioni continue e coercive hanno sempre minimo assoluto.
Le funzioni continue e con opposta coerciva hanno sempre massimo
assoluto.

16.3 Tipologia dei punti cercati


Nel caso lineare questo punto non è importante, in quanto esistono solo mas-
simi e minimi assoluti. Nel caso non lineare, invece, è importante classificare
il punto trovato in quanto si possono incontrare massimi e minimi assoluti e
locali, oppure punti di sella.

58
Capitolo 17

Ricerca dei punti stazionari


liberi

Supponendo di avere il problema


(
max f (x)
x 2 Rn

con f : Rn ! R e f 2 C 1 e supponendo che il massimo esista, come lo trovo?


Tutti gli algoritmi che studieremo sono ricorsivi e costruiscono una suc-
cessione di punti che convergono alla soluzione ottima. Per fare questo è
necessario di↵erenziare tra test d’ottimalità e criterio di stop.
Un criterio di stop è un test che viene e↵ettuato per evitare che un al-
goritmo possa non terminare mai e si basa sul controllo delle condizioni più
disparate: numero di iterazioni, tempo trascorso, errore commesso,...
Un test d’ottimalità è un caso particolare di criterio di stop, in quanto,
se verificato, ci assicura l’ottimalità della soluzione trovata.
Supponendo di utilizzare un algoritmo di ascesa (per esempio il simplesso)

f (xk ) < f (xk+1 )

In questo caso è possibile escludere i punti di minimo, in quanto vale la


condizione (
f (xk ) < f (xk+1 )
rf (x̄) = 0
Per determinare se si tratta di una sella è possibile generare un po’ di punti
nell’intorno di x̄ e vedere se la funzione sale e scende in direzioni diverse. Il
problema resta quindi discriminare tra massimi locali ed assoluti.

59
Tutti gli algoritmi iterativi avranno questa forma

xk+1 = xk + tk dk

dove dk è la direzione di ascesa e tk è il passo.

La programmazione lineare, di fatto, è un caso particolare di quello


che viene trattato in queste pagine, in quanto

• dk ! W h di ascesa se cW h > 0

• tk ! , ovvero il minimo dei rapporti del simplesso

• xk+1 ! xk+1 = xk + ¯ W h

• criterio di stop ! ammissibilità della complementare (CNS nel


caso non degenere1 )

È necessario, a questo punto, trovare un modo per determinare la dire-


zione di ascesa.

17.1 Metodi di ascesa di ricorrenza


Un metodo di ascesa di ricorrenza è cosı̀ definito
(
f (xk+1 ) > f (xk )
xk+1 = xk + tk dk

Per il criterio di stop si hanno diverse possibilità

1. tempo: mi fermo dopo k iterazioni e vedo di quanto è migliorata la


stima

2. di↵erenza tra iterazioni successive: |f (xk+1 ) f (xk )| < "¯

3. norma del gradiente: krf (xk )k < "¯

Inoltre, per migliorare l’efficienza, conviene controllare l’hessiana non a tutte


le iterazioni, ma solo nel punto in cui mi fermo.
1
In realtà, anche nel caso degenere, essiterà almeno una base ammissibile e quindi da
CS torna ad essere CNS

60
17.2 Direzione di ascesa
Data la direzione x̄ + td¯ (con t ¯ la restrizione
0), sia (t) , f (x̄ + td)
della funzione lungo quella direzione. 0 (0) si dice direzione di ascesa
locale, ovvero spostandomi di poco lungo quella direzione ho la certezza
che la funzione aumenti. Dal teorema delle funzioni composte si ottiene che
0 ¯
(0) = rf (x̄)d.

Teorema
Sia rf (x̄)d > 0, allora quella presa in considerazione è una direzione d’ascesa

Per massimizzare il precedente prodotto viene scelta d = rf , dando vita


al cosiddetto metodo del gradiente.

17.3 Metodo del gradiente con passo ideale


Sia f 2 C 1 , la definizione per ricorrenza del metodo del gradiente è la seguente
(
xk+1 = xk + tk rf (xk )
tk 2 argmax f (xk + trf (xk ))
t 0

Teorema di convergenza
Sia {xk } la successione del metodo del gradiente con ricerca esatta. Si sup-
ponga f coerciva, allora ogni punto di accumulazione di {xk } è stazionario,
indipendentemente dal punto iniziale x0

Un punto si dice d’accumulazione per la successione se, in un suo


intorno, ci sono infiniti punti della successione

Quindi, se la successione converge, converge ad un punto stazionario. A


questo punto si controlla l’hessiana in questo punto per catalogarlo.

Teorema di convergenza (bis)


Sia f concava e f coerciva2 . La successione {xk } del metodo del gradiente
con ricerca esatta converge a x̄ massimo assoluto, indipendentemente dal
punto iniziale x0 .
2
La coercività non è limitante in quanto verrà eliminata studiando domini chiusi e
limitati

61
Il problema di questi metodi è che non danno una netta distizione tra
massimi locali e massimi assoluti. Inoltre, partendo da un punto stazionario,
la successione si ferma. Si può provare a rimediare a questo inconveniente
piastrellando il dominio: lo si suddivide in una griglia e si applica il metodo
del gradiente a partire dal centro di ogni casella; tra tutti i punti trovati si
prende quello in cui la funzione obiettivo ha il valore maggiore.

62
Capitolo 18

Ricerca di punti stazionari


vincolati

18.1 Insiemi regolari


Sia dato il dominio
D = {x 2 Rn : g(x)  0, h(x) = 0} con g, h 2 C 1
introduciamo alcune definizioni.
Definizione: Vincoli attivi
Dato x̄ 2 D si definiscono vincoli attivi
I(x̄) = {i : gi (x̄) = 0}
Se si hanno dei vincoli di uguaglianza, questi sono ovviamente
attivi.
Definizione: Punto regolare
Un punto x̄ 2 D si dice regolare se l’insieme dei gradienti dei vincoli
attivi
{rgi (x̄), i 2 I(x̄), rhj (x̄), j = 1...p}
è costituito da vettori linearmente indipendenti.
Definizione: Dominio regolare
Un dominio D si dice regolare se 8x̄ 2 D, x̄ è regolare.
I punti interni di un dominio D sono sempre regolari. Un proble-
ma sarebbe dato dal vettore nullo: esso è linearmente dipendente da qualsiasi
altro vettore. Se questo però è attivo solo per un vincolo, il problema non si
pone.

63
18.2 Moltiplicatori di Lagrange
Dato il problema di ottimizzazione
8
>
<min/max f#(x)
g(x)  0
>
: D
h(x) = 0

Nel caso vincolato, non è sufficiente studiare i punti in cui si annulla il


gradiente, ma ci vengono in soccorso due importanti teoremi

Teorema LKKT (minimo)


Sia D regolare. Se x̄ 2 D è punto di minimo locale allora

9( ¯ 1 , ..., ¯ m ) 0 e µ̄ = (µ̄1 , ..., µ̄p )

tali che
8 m p
> X X
>
> rf (x̄) + ¯ rg (x̄) + µ̄j rhj (x̄) = 0
>
< i i
i=1 j=1
>
> ¯ i gi (x̄) = 0 8i = 1...m
>
>
:
hj (x̄) = 0 8j = 1...p

Teorema LKKT (massimo)


Sia D regolare. Se x̄ 2 D è punto di massimo locale allora

9( ¯ 1 , ..., ¯ m )  0 e µ̄ = (µ̄1 , ..., µ̄p )

tali che
8 m p
> X X
>
> ¯
<rf (x̄) +
> i rgi (x̄) + µ̄j rhj (x̄) = 0
i=1 j=1
>
> ¯ i gi (x̄) = 0 8i = 1...m
>
>
:
hj (x̄) = 0 8j = 1...p

I sistemi dei due teoremi precedenti sono di n + m + p equazioni in


n + m + p incognite, ma non posso sapere quante soluzioni hanno poiché
sono sistemi non lineari.

Per i problemi di ottimizzazione sono importanti i domini convessi.

64
Definizione: Dominio convesso
Un dominio si dice convesso quando

x̄, ȳ 2 D =) x̄ + (1 )ȳ ✓ D 8 2 [0, 1]

Condizione sufficiente per avere un dominio convesso è che i vincoli


gi siano convessi e che i vincoli hj siano lineari.

I teoremi LKKT, quando siamo di fronte a domini convessi, diventano


condizioni sufficienti.

Teorema LKKTsuf f (minimo)


Sia D regolare e convesso
Sia f convessa, allora
le soluzioni di LKKT con ¯ 0 sono minimi assoluti.

Teorema LKKTsuf f (massimo)


Sia D regolare e convesso
Sia f concava, allora
le soluzioni di LKKT con ¯  0 sono massimi assoluti.

18.3 Analisi locale


Sia x̄ 2 D un punto stazionario di cui si deve determinare la natura tra
massimo (o minimo) locale e sella.
Se esiste una restrizione (t) ⇢ D per cui f | (t) non ha massimo (o minimo)
locale in x̄, allora x̄ è una sella.

18.4 Funzione lagrangiana


Il teorema LKKT (nelle sue varie versioni) può essere riscritto in forma più
compatta utilizzando la funzione lagrangiana. Dati x 2 Rn , 2 Rm e
µ 2 Rp , essa è una funzione L : Rn+m+p ! R definita come segue

Definizione: Funzione lagrangiana

L(x, , µ) = f (x) + g(x) + µh(x)

65
Derivando la funzione lagrangiana rispetto alla variabile (vettoriale) x si
ottiene
rx L(x, , µ) = rf (x) + rg(x) + µrh(x)
dove 0 1 0 1
rg1 (x) rh1 (x)
B .. C B C
rg(x) , @ . A, rh(x) , @ ... A
rgm (x) rhp (x)
sono le matrici iacobiane (o iacobiani) rispettivamente delle funzioni g e
h.
Il sistema del teorema LKKT può quindi essere riscritto come
8
> ¯
<rx L(x̄, , µ̄) = 0
rµ L(x̄, ¯ , µ̄) = h(x̄) = 0
>

g(x̄) = 0 (condizione di complementarità)

Nel caso non vincolato (libero) posso dire che in un punto di minimo
(o di massimo) il gradiente della funzione si annulla. Nel caso vincolato
non è il gradiente della funzione ad annullarsi, bensı̀ il gradiente della
funzione lagrangiana.

Teorema Teorema del secondo ordine


Sia (x̄, ¯ , µ̄) una terna LKKT, se

rxx L(x̄, ¯ , µ̄) > 0

allora x̄ è minimo locale.

Il precedente teorema prende anche il nome di CS del secondo ordine.

66
Capitolo 19

Metodi ricorsivi per la PNL

Il teorema LKKT costituisce un importantissimo strumento per la risoluzione


di problemi di PNL, ma non è sempre possibile usarlo: a volte risulta davvero
difficile riuscire a risolvere il sistema non lineare ad esso associato. In questi
casi si passa a metodi ricorsivi (come quello del gradiente visto precedente-
mente) che, a partire da uno starting point x0 costruiscono la successione
{xk } con
xk+1 = xk + tk dk
Data (t) , f (xk + tk dk ), il passo ideale (exact line search) equivale al
massimo passo che posso prendere per incontrare il massimo della fuzione
sulla restrizione
tk = argmax (t)
t 0

Quanto proposto funziona nel caso di ricerca di massimi e minimi liberi; nel
caso vincolato non è applicabile, in quanto il passo esatto potrebbe farmi
uscire dal dominio.
Dato il problema
(
max f (x) f : Rn ! R
x2P P ⇢ Rn

Per semplicità studieremo domini costituiti da poliedri limitati, ma tutto si


può estendere a domini convessi di qualsiasi forma. I poliedri sono insiemi
regolari. Parlando di poliedri, per trovare lo starting point potrei pensare
di fare un problema ausialiario e prendere il vertice ottenuto come x0 .

67
19.1 Metodo di Franke-Wolfe
Questo metodo consiste nel calcolare, ad ogni iterazione, rf (xk ) e di risolvere
il problema linearizzato nel punto xk
(
max rf (xk )x
Ax  b
Tale problema è un semplice problema di Pl. Sia y k la sua soluzione, allora
dk = y k xk
che è sicuramente una direzione d’ascesa in quanto forma col gradiente un an-
golo acuto. Come restrizione su cui calcolare il massimo si prende il segmento
che congiunge i punti xk e y k
xk + t(y k xk )
| {z }
dk

con t 2 [0, 1]. La restrizione su questo segmento assicura che non si esca mai
dal poliedro. Per determinare il passo
tk+1 2 argmax f (xk + tdk )
t2[0,1]
La correttezza di questo metodo è garantita dal
Teorema di Franke-Worlfe
La successione {xk } costruita attraverso il metodo iterativo di Franke-Worlfe
converge a x̄, con x̄ soluzione di LKKT. Se la f fosse concava, allora x̄ sarebbe
punto di massimo assoluto.

19.2 Ricerca inesatta


A volte può essere davvero complicato determinare un passo esatto; in questi
frangenti si usa una ricerca inesatta, trovando un punto che rispetti le regole
di Armijo-Goldstein-Wolfe
f (x)  f (0) + ↵f 0 (0)x (19.1)
f 0 (x) f 0 (0) (19.2)
con 0 < ↵ < < 1.
Supponiamo di avere un problema di minimo e che f sia la restrizione della
funzione obiettivo lungo una direzione di decrescita: f 0 (0) risulterà quindi
minore di zero, e i punti che verificano la disequazione 19.1 formeranno un
intervallo [0, a]; i punti che invece rispettano la disequazione 19.2 saranno
quelli dal punto di tangenza in poi, formando l’intervallo [b, +1[.

68
Teorema di Armijo-Goldstein-Wolfe
Se f è limitata dal basso, esiste un intervallo [b, a] in cui le condizioni sono
verificate entrambe

Teorema
Se scelgo come passo tk dell’algoritmo del gradiente un qualunque punto
dell’intervallo [b, a] che soddisfi che condizioni di Armijo-Goldstein-Wolfe,
allora esso converge ad un punto stazionario

Il passo esatto cade sempre all’interno dell’intervallo [b, a]

Un modo semplice per ottenere un punto interno a tale intervallo è il


seguente: si prenda una stima superiore molto grande, per esempio M , ot-
tenendo l’intervallo [0, M ]. Si applichi iterativamente il metodo di bisezione
e, per ogni punto trovato, si verifichino le regole di Armijo-Goldstein-Wolfe:
se sono verificate entrambe allora quel punto fa parte dell’intervallo [b, a] e
può essere scelto come passo; se non è verificata la 19.1, allora mi sposto nel
semintervallo di sinistra, se non è verificata la 19.2 mi sposto in quello di
destra. Nel caso vincolato la ricerca non sarà tra [0, M ] ma tra [0, 1].
La potenza del teorema sta nel fatto che si trova tutto un intervallo
continuo in cui le condizioni sono rispettate: se i punti fossero isolati sa-
rebbe difficilissimo, se non impossibile, trovarli. Inoltre rende il metodo del
gradiente molto flessibile, in quanto per passare dalla ricerca esatta a quella
inesatta basta sostituire l’argmin con un punto qualsiasi dell’intervallo [b, a].

Caso multivariabile
Nel caso di più variabili le regole di Armijo-Goldstein-Wolfe possono essere
riscritte come
(t ) (0) 0 (0)
z }|k { z }| { z }| {
f ( xk tk rf (x ))  f (x ) ↵ krf (xk )k2 tk
k k
(19.3)

rf (xk tk rf (xk ))rf (xk ) krf (xk )k2 (19.4)


| {z } | {z }
0 (t 0 (0)
k)

dove la (t) non è altro che la f (x) del caso mono variabile in quanto è la
restrizione della funzione obiettivo lungo la direzione di massima discesa.

69
19.3 Metodo di Newton
Fino ad ora sono stati presentati solo metodi del primo ordine. Il metodo
di Newton è invece un metodo del secondo ordine, definito come segue
Hf (xk )
z }| {
xk+1 = xk [r2 f (xk )] 1 rf (xk )

con f 2 C 2 e x0 vicino alla soluzione. Questo metodo ha una velocità di


convergenza molto elevata, ma ad ogni passo è necessario invertire la matrice
hessiana.

19.4 Metodo del gradiente proiettato


Questo è un altro metodo del primo ordine, che viene presentato per problemi
di minimo. Dato che seguendo la direzione del gradiente potrei uscire dal
poliedro, l’idea è quella di proiettare il vettore gradiente sul vincolo: l’angolo
tra il gradiente ed il vincolo è minore di ⇡/2 e quindi, se il gradiente è una
direzione di crescita, la proiezione continua ad essere una direzione di crescita.
Definizione: Matrice di proiezione
Si definisce matrice di proiezione

H=I M T (M M T ) 1 M

con M : Rn ! Rk
Teorema di proiezione
Hy è la proiezione di y sulla varietà M y = 0
Supponiamo x0 2 P come starting point. Ad ogni iterazione definiamo
l’insieme dei vincoli attivi

I = {i : Ai xk = bi }

e la matrice di proiezione
(
I se I = ?
H=
I M T (M M T ) 1 M 6 ?
se I =

La direzione dk sarà quella di proiezione dell’opposto del gradiente attraverso


la matrice H
dk = H( rf (xk ))

70
Per quanto riguarda il massimo spostamento tmax , basta risolvere un proble-
ma di PL in una variabile, ovvero
(
max t
A(xk + tdk )  b

I termini noti di A(xk +tdk ) devono ovviamente essere minori o uguali


a quelli di b e posso depennare i vincoli con coefficienti di t negativi, poiché
si studia il problema con t 0 e quindi risolvono sempre la disequazione

Sia t̄k la soluzione del suddetto problema, il passo tk sarà

tk 2 argmin f (xk + tdk )


0ttmax

Teorema
Sia 2 Rk il vettore cosı̀ definito

= (M M T ) 1 M rf (xk )

Se 0 allora mi fermo. I coefficienti di tale vettore sono infatti i moltiplica-


tori del sistema LKKT: sono arrivato ad un punto stazionario che sicuramente
non è un massimo. Nel caso in cui non valga la precedente disequzione, si
prende il più piccolo i negativo e si rimuove l’i esimo vincolo della matrice
M , iterando nuovamente il metodo.

71
Parte V

Modelli matematici

72
Capitolo 20

Modelli per problemi di PL

20.1 Produzione
Supponiamo di dover produrre n oggetti, ciascuno composto da m diverse
materie prime in proporzioni diverse tra loro. La composizione va a costituire
la matrice A, in cui l’elemento aij indica la quantità di materia prima i
necessaria per il prodotto j. Ogni materia prima è disponibile in quantità bi
ed ogni prodotto viene venduto ad un prezzo cj . Il vettore x rappresenta che
quantità produrre di ciascuno prodotto. Si intende massimizzare il profitto.
8 n
> X
>
> max cj xj
>
>
>
>
< j=1
Xn
>
> aij xj  bi 8i = 1 . . . m
>
>
>
> j=1
>
:
xj 0 8j = 1 . . . n

20.2 Dieta
Supponiamo di avere a disposizione n cibi contenenti m principi nutrizionali
essenziali. Supponiamo di conoscere la quantità aij dell’i esimo principio
nutrizionale contenuta ed il costo unitario cj del j esimo cibo. Si vuole de-
terminare una dieta giornaliera, ovvero un piano nutrizionale che minimizzi il
costo totale e che soddisfi il fabbisogno giornaliero minimo bi di ciascun prin-
cipio nutrizionale. Il vettore x rappresenta la quantità di cibo da introdurre

73
nella dieta. 8 n
> X
>
>min cj xj
>
>
>
>
< j=1
Xn
>
> aij xj bi 8i = 1 . . . m
>
>
>
> j=1
>
:
xj 0 8j = 1 . . . n

20.3 Miscelazione
Supponiamo di avere a disposizione alcuni prodotti che devono essere misce-
lati al fine di ottenerne altri. Nella produzione di nuovi materiali si suppone
che la miscela debba contenere almeno una certa quantità percentuale di cia-
scuno dei prodotti di base.I costi di miscelazione si suppongono proporzionali,
ed è normalmente fissata una quantità di partenza disponibile di ognuno dei
prodotti di base.

74
Capitolo 21

Modelli per problemi di PL su


reti

21.1 Trasporto
Supponiamo di avere m luoghi di produzione collegati a n luoghi di raccolta.
Supponiamo siano note le capacità produttive oi e le domande dj ed il costo
di trasporto dal luogo di produzione i a quello di raccolta j cij . Si indichi
con xij la quantità da trasportare da i a j. Si intende minimizzare il costo
di trasporto. 8
X m X n
>
>
>
> min cij xij
>
>
>
> i=1 j=1
>
> m
>
> X
< xij = dj 8j = 1 . . . n
> i=1
>
> Xn
>
>
>
> xij  oi 8i = 1 . . . m
>
>
>
> j=1
>
:
x 0

21.2 Assegnamento di costo minimo


Supponiamo di dover eseguire n lavori avendo a disposizione n lavoratori,
ciascuno dei quali è in grado di svolgere qualsiasi lavoro. Si conoscono inoltre
i costi cij che si sosterrebbero nell’assegnare il lavoro j al lavoratore i. Si

75
intende minimizzare il costo complessivo.
8 n X n
> X
>
> min cij xij
>
>
>
> i=1 j=1
>
>
>
> Xn
>
< xij = 1 8j = 1 . . . n
> i=1
>
> Xn
>
>
>
> xij = 1 8i = 1 . . . m
>
>
>
> j=1
>
:
xij 2 {0, 1}

21.3 Assegnamento di massima cardinalità


Supponiamo di avere n lavori ed m lavoratori, ciascuno dei quali sa svolgere
più compiti, ma gliene può essere assegnato solo uno. Si vuole massimizzare
il numero di lavori svolti.
Il problema può essere trasformato in un problema di PL su reti, co-
struendo un grafo utilizzando come sorgenti i lavoratori, come pozzi i lavori
ed introducendo i due nodi fittizi s e t. Il nodo s viene collegato a tutte le
sorgenti, tutti i pozzi vanno collegati a t e ogni lavoratore va connesso con i
lavori che sa svolgere. Ogni arco deve avere capacità superiore 1. A questo
punto si determina il flusso massimo sulla rete.

21.4 Flusso di costo minimo


Il problema del flusso di costo minimo è stato trattato precedentemente in
queste dispense. Vengono qui presentati solo i modelli matematici.

21.4.1 Reti non capacitate


8
>
<min cx
Ex = b
>
:
x 0

21.4.2 Reti capacitate


8
>
<min cx
Ex = b
>
:0  x  u

76
21.5 Taglio di massima capacità
Il problema del taglio di capacità massima è stato trattato precedentemente
in queste dispense. Viene qui presentato solo il modello matematico.
8
>
> max v + 0x
>
> 8
>
> > i 6= s, t
< <0
Ex = b bi = v i=s
>
> >
:
>
> v i=t
>
>
:0  x  u, v 0

21.6 Albero dei cammini minimi


Il problema dell’albero dei cammini minimi è stato trattato precedentemente
in queste dispense. Viene qui presentato solo il modello matematico.
8
>
> max cx
>
> (
< n+1 i=s
Ex = b bi =
>
> 1 i 6= s
>
>
:x 0

21.7 Cammini minimi con vincoli di budget


Supponiamo di voler trovare il cammino minimo dalla sorgente alla destina-
zione, ma non voler sostenere un costo complessivo superiore ad un budget
prefissato. Il modello diventa
8
>
>min lx (cammino minimo)
>
> 8
>
> >
>
> < 1 i=s
>
>
>
<Ex = b bi = 1 i=t
>
:
0 altrimenti
>
>
>
> x 0
>
>
>
> cx  C (vincolo di budget)
>
>
>
:x 2 {0, 1}
ij

21.8 T.S.P.
Il problema del T.S.P. è stato trattato precedentemente in queste dispense.
Vengono qui presentati solo i modelli matematici.

77
21.8.1 T.S.P. asimmetrico
8
>
> min cx
>
>
>
> X n
>
> xij = 1 8i
>
>
>
>
>
>
j=1
<X n

> xij = 1 8j
>
>
>
> i=1
X
>
>
>
> xij 1 8S 2 N
>
>
>
> i2S,j 2S
/
>
:
xij 2 {0, 1}

21.8.2 T.S.P. simmetrico


8
>
> min cx
>
> X X
>
>
>
> x hi + xik = 2
<
h<i i<k
X X
>
> x + xij 2 8S
>
> ij
>
> i2S,j 2S
/ i2S,j2S
/
>
>
:x 2 {0, 1}
ij

78
Capitolo 22

Modelli per problemi di PLI

22.1 Zaino
Dato un contenitore di volume b ed n oggetti, ciascuno di valore ci e volu-
me ai , vogliamo scegliere quali oggetti inserire nel contenitore in modo da
massimizzare il valore complessivo.

In questa sezione viene presentato lo zaino indivisibile. Rimuovendo


il vincolo di interezza si ottiene lo zaino divisibile, ovvero visto come
problema di PL

22.1.1 Intero
Il valore xi indica quante unità del bene i sono state selezionate.
8 n
>
> X
>
> max ci xi
>
>
>
< i=1
X n
>
> ai x i  b
>
>
>
> i=1
>
: x 2 Zn

79
22.1.2 Binario
Il valore xi indica se l’i esimo bene è selezionato o meno
8 n
>
> X
>
> max ci xi
>
>
>
< i=1
Xn
>
> ai x i  b
>
>
>
> i=1
>
:x 2 {0, 1}
i 8i = 1 . . . n

22.2 Set covering


Supponiamo di voler coprire un insieme con il minor numero possibile di
risorse. 8 n
>
> X
>
> min xi
>
>
>
> i=1
>
< 0 1
1
B C
>Ax e
>
> e = @ ... A
>
>
>
> 1
>
>
:
xi 2 {0, 1}
La matrice A viene chiamata matrice del set covering: è una matrice con-
tenente solo 0 e 1 ed ha sulle righe gli elementi da coprire e sulle colonne il
mezzo con cui vengono coperti.

22.3 Dislocazione
Supponiamo di voler minimizzare il numero di postazioni da dislocare sul
territorio, scegliendo tra fisse (x con costo c) e mobili (y con costo d). Il
costo delle postazioni mobili è superiore di quello delle postazioni fisse. È
necessario coprire tutto il territorio, e le postazioni fisse possono controllare
solo il posto in cui si trovano, mentre quelle mobili anche le postazioni a
distanza unitaria. Il modello diventa
8
>
> min cx + dy
>
< X
xi + yi + yj 1 8i
>
> j2 (i)
>
:
xi 2 {0, 1}, yj 2 {0, 1}

80
22.4 Plant location
Supponiamo di avere un impianto costituito da n terminali e k concentratori.
Sostengo un costo cij per connettere un terminale i ad un concentratore j.
Voglio connettere tutti i terminali ad almeno un concentratore, minimizzando
i costi. Esiste anche un costo fj che sostengo nell’attivare il concentratore j.
8
>
> min cx + f y
>
>
>
> Xk
>
< xij = 1 8i
> j=1
>
>
>
>
> xij  yj 8i, 8j
>
:
xi , yj 2 {0, 1}

22.5 Dimensionamento
Supponiamo di avere n progetti da realizzare, ciascuno dei quali richiede di
rispettare determinati requisiti, ma posso rispettarli tutti. Quali requisiti mi
conviene rispettare per massimizzare il guadagno generato dalla realizzazione
dei progetti?
8
>
> max gx
>
> m
>
> X
< yi  C (C = capacità massima)
> i=1
>
>
>
> xi  yj 8i, 8j 2 requisiti(i)
>
:
xi , yj 2 {0, 1}

81