Sei sulla pagina 1di 81

Capitolo 1

Esercizi di Programmazione
Lineare

1.1 Il metodo del simplesso


Esercizio. Risolvere il seguente problema utilizzando il metodo del simp-
lesso:
max Z = 2x1 + x2 + x3
x1 +3x2 +x3 ≤ 6
2x1 −x2 +x3 ≤ 5
x1 +x2 +4x3 ≤ 10
x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo innanzitutto il problema in forma aumentata

max Z = 2x1 + x2 + x3
x1 +3x2 +x3 +x4 = 6
2x1 −x2 +x3 +x5 = 5
x1 +x2 +4x3 +x6 = 10
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.

Le equazioni da risolvere sono:

(0) Z −2x1 −x2 −x3 = 0


(1) x1 +3x2 +x3 +x4 = 6
(2) 2x1 −x2 +x3 +x5 = 5
(3) x1 +x2 +4x3 +x6 = 10

1
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 2

Iterazione 0
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −2 −1 −1 0 0 0 0
x4 (1) 0 1 3 1 1 0 0 6
x5 (2) 0 2 −1 1 0 1 0 5
x6 (3) 0 1 1 4 0 0 1 10

Iterazione 1
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 0 −2 0 0 1 0 5
x4 (1) 0 0 7
2
1
2 1 − 21 0 7
2

x1 (2) 0 1 − 12 1
2 0 1
2 0 5
2

x6 (3) 0 0 3
2
7
2 0 − 21 1 15
2

Iterazione 2
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
2 4 5
Z (0) 1 0 0 7 7 7 0 7
x2 (1) 0 0 1 1
7
2
7
− 71 0 1
x1 (2) 0 1 0 4
7
1
7
3
7 0 3
x6 (3) 0 0 0 23
7
− 37 − 72 1 6

Soluzione ottima è (3, 1, 0, 0, 0, 6), con Z = 7.


CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 3

Esercizio. Risolvere il seguente problema utilizzando il metodo del simples-


so:
max Z = 3x1 + x2 + 6x3
2x1 +x3 ≤ 10
x1 +x2 −2x3 ≤ 4
3x1 +x2 ≤ 5
x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo il problema in forma aumentata

max Z = 3x1 + x2 + 6x3


2x1 +x3 +x4 = 10
x1 +x2 −2x3 +x5 = 4
3x1 +x2 +x6 = 5
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.

Le equazioni da risolvere sono:

(0) Z −3x1 −x2 −6x3 = 0


(1) 2x1 +x3 +x4 = 10
(2) x1 +x2 −2x3 +x5 = 4
(3) 3x1 +x2 +x6 = 5

Iterazione 0
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −3 −1 −6 0 0 0 0
x4 (1) 0 2 0 1 1 0 0 10
x5 (2) 0 1 1 −2 0 1 0 4
x6 (3) 0 3 1 0 0 0 1 5
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 4

Iterazione 1
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 9 −1 0 6 0 0 60
x3 (1) 0 2 0 1 1 0 0 10
x5 (2) 0 5 1 0 2 1 0 24
x6 (3) 0 3 1 0 0 0 1 5

Iterazione 2
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 12 0 0 6 0 1 65
x3 (1) 0 2 0 1 1 0 0 10
x5 (2) 0 2 0 0 2 1 −1 19
x2 (3) 0 3 1 0 0 0 1 5

Soluzione ottima è (0, 5, 10, 0, 19, 0), con Z = 65.


Esercizio. Risolvere il seguente problema utilizzando il metodo del simp-
lesso:
max Z = 7x1 + x2 + 8x3
3x1 −x2 +x3 +x4 ≤ 6
x2 +3x3 +4x4 ≤ 9
x1 , x2 , x3 , x4 ≥ 0.
Svolgimento. Scriviamo innanzitutto il problema in forma aumentata
max Z = 7x1 + x2 + 8x3
3x1 −x2 +x3 +x4 +x5 = 6
x2 +3x3 +4x4 +x6 = 9
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.
Le equazioni da risolvere sono:
(0) Z −7x1 −x2 −8x3 = 0
(1) 3x1 −x2 +x3 +x4 +x5 = 6
(2) x2 +3x3 +4x4 +x6 = 9
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 5

Iterazione 0
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −7 −1 −8 0 0 0 0
x5 (1) 0 3 −1 1 1 1 0 6
x6 (2) 0 0 1 3 4 0 1 9

Iterazione 1
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
5 32 8
Z (0) 1 −7 3 0 3 0 3 24
x5 (1) 0 3 − 43 0 − 13 1 − 13 3
x3 (2) 0 0 1
3 1 4
3 0 1
3 3

Iterazione 2
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 0 − 13
9 0 89
9
7
3
17
9 31
x1 (1) 0 1 − 49 0 − 19 1
3
− 19 1
x3 (2) 0 0 1
3 1 4
3 0 1
3 3

Iterazione 3
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
13 47 7 10
Z (0) 1 0 0 3 3 3 3 44
x1 (1) 0 1 0 4
3
5
3
1
3
1
3 5
x2 (2) 0 0 1 3 4 0 1 9

Soluzione ottima è (5, 9, 0, 0, 0, 0), con Z = 44.


CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 6

Esercizio. Risolvere il seguente problema utilizzando il metodo del simp-


lesso:
max Z = 5x1 + 2x2 + 2x3 + 4x4
3x1 +x2 −x3 +2x4 ≤ 9
2x1 +5x2 −2x3 −x4 ≤ 8
x1 , x2 , x3 , x4 ≥ 0.
Svolgimento. Scriviamo innanzitutto il problema in forma aumentata
max Z = 5x1 + 2x2 + 2x3 + 4x4
3x1 +x2 −x3 +2x4 +x5 = 9
2x1 +5x2 −2x3 −x4 +x6 = 8
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.
Le equazioni da risolvere sono:
(0) Z −5x1 −2x2 −2x3 −4x4 = 0
(1) 3x1 +x2 −x3 +2x4 +x5 = 9
(2) 2x1 +5x2 −2x3 −x4 +x6 = 8

Iterazione 0
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −5 −2 −2 −4 0 0 0
x5 (1) 0 3 1 −1 2 1 0 9
x6 (2) 0 2 5 −2 −1 0 1 8

Iterazione 1
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 0 − 31 − 11
3
− 23 5
3 0 15
x1 (1) 0 1 1
3
− 13 2
3
1
3 0 3
x6 (2) 0 0 13
3
− 43 − 73 − 32 1 2

Poichè non c’è nessuna variabile candidata ad uscire dalla base significa che
la regione ammissibile e illimitata e quindi
Z = +∞.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 7

1.2 Il metodo del simplesso a due fasi


Esercizio. Risolvere il seguente problema utilizzando il metodo del simplesso
a due fasi:
min Z = 3x1 + x2 + x3

x1 +x2 +x3 ≤ 3
2x1 +x2 +x3 ≥ 4
2x1 +3x2 +x3 = 6

x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo il problema nella forma aumentata introducendo una
variabile slack, una variabile surplus e due variabili artificiali:

min Z = 3x1 + x2 + x3
x1 +x2 +x3 +x4 = 3
2x1 +x2 +x3 −x5 +x6 = 4
2x1 +3x2 +x3 +x7 = 6
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0.

Scriviamo ora i problemi che risolve il metodo del simplesso a due fasi:

I Fase
min Z = x6 + x7
x1 +x2 +x3 +x4 = 3
2x1 +x2 +x3 −x5 +x6 = 4
2x1 +3x2 +x3 +x7 = 6
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0.

II Fase
min Z = 3x1 + x2 + x3
x1 +x2 +x3 +x4 = 3
2x1 +x2 +x3 −x5 = 4
2x1 +3x2 +x3 = 6
x1 , x2 , x3 , x4 , x5 ≥ 0.
Poichè il problema è di minimo dobbiamo trasformarlo in un problema di
massimo cambiando il segno ai due membri della funzione obiettivo in en-
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 8

trambi i problemi:

I Fase
max −Z = −x6 − x7
x1 +x2 +x3 +x4 = 3
2x1 +x2 +x3 −x5 +x6 = 4
2x1 +3x2 +x3 +x7 = 6
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0.

II Fase
max −Z = −3x1 − x2 − x3
x1 +x2 +x3 +x4 = 3
2x1 +x2 +x3 −x5 = 4
2x1 +3x2 +x3 = 6
x1 , x2 , x3 , x4 , x5 ≥ 0.
Le equazioni della I fase sono

(0) −Z +x6 +x7 = 0


(1) x1 +x2 +x3 +x4 = 3
(2) 2x1 +x2 +x3 −x5 +x6 = 4
(3) 2x1 +3x2 +x3 x7 = 6.

Per porre in problema in forma canonica bisogna prima sottrarre dall’e-


quazione (0) l’equazione (2), ottenendo le nuove equazioni

(0) −Z −2x1 −x2 −3x3 +x5 +x7 = −4


(1) x1 +x2 +x3 +x4 = 3
(2) 2x1 +x2 +x3 −x5 +x6 = 4
(3) 2x1 +3x2 +x3 +x7 = 6

e poi sottrarre dall’equazione (0) l’equazione (3), ottenendo le equazioni finali


per la I fase:

(0) −Z −4x1 −4x2 −2x3 +x5 = −10


(1) x1 +x2 +x3 +x4 = 3
(2) 2x1 +x2 +x3 −x5 +x6 = 4
(3) 2x1 +3x2 +x3 +x7 = 6.

Adesso possiamo scrivere il tableau del metodo del simplesso:


CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 9

Iterazione 0
Var. x1 x2 x3 x4 x5
base Eq. Z x6 x7 bi
Z (0) −1 −4 −4 −2 0 1 0 0 −10
x4 (1) 0 1 1 1 1 0 0 0 3
x6 (2) 0 2 1 1 0 −1 1 0 4
x7 (3) 0 2 3 1 0 0 0 1 6

Iterazione 1
Var. x1 x2 x3 x4 x5
base Eq. Z x6 x7 bi
Z (0) −1 0 −2 0 0 −1 2 0 −2
x4 (1) 0 0 1
2
1
2 1 1
2
− 12 0 1
x1 (2) 0 1 1
2
1
2 0 − 12 1
2 0 2
x7 (3) 0 0 2 0 0 1 −1 1 2

Iterazione 2
Var. x1 x2 x3 x4 x5
base Eq. Z x6 x7 bi
1
Z (0) −1 0 0 0 0 0 2 1 0
x4 (1) 0 0 0 1
2 1 0 − 14 − 14 1
2

x1 (2) 0 1 0 1
2 0 1
4
3
4
− 14 3
2

x2 (3) 0 0 1 0 0 − 34 − 12 1
2 1

Soluzione ottima della prima fase è (3/2, 1, 0, 1/2, 0). Dal tableau finale della
prima fase dobbiamo eliminare le colonne relative alle variabili artificiali, so-
stituire la funzione obiettivo e porre il sistema di equazioni in forma canonica.
Il tableau relativo alle prime due operazioni è il seguente:
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 10

II Fase-Tablaeu preliminare
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) −1 3 1 1 0 0 0
x4 (1) 0 0 0 1
2 1 1
4
1
2

x1 (2) 0 1 0 1
2 0 − 43 3
2

x2 (3) 0 0 1 0 0 1
2 1

II Fase-Eliminazione coeff. di x1
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) −1 0 1 − 12 0 9
4
− 92
x4 (1) 0 0 0 1
2 1 1
4
1
2

x1 (2) 0 1 0 1
2 0 − 43 3
2

x2 (3) 0 0 1 0 0 1
2 1

II Fase-Eliminazione coeff. di x2
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) −1 0 0 − 12 0 7
4
− 11
2

x4 (1) 0 0 0 1
2 1 1
4
1
2

x1 (2) 0 1 0 1
2 0 − 43 3
2

x2 (3) 0 0 1 0 0 1
2 1
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 11

II Fase-Iterazione 0
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) −1 0 0 − 21 0 7
4
− 11
2

x4 (1) 0 0 0 1
2 1 1
4
1
2

x1 (2) 0 1 0 1
2 0 − 43 3
2

x2 (3) 0 0 1 0 0 1
2 1

II Fase-Iterazione 1
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) −1 0 0 0 1 2 −5
x3 (1) 0 0 0 1 2 1
2 1
x1 (2) 0 1 0 0 −1 −1 1
x2 (3) 0 0 1 0 0 1
2 1

Esercizio. Risolvere il seguente problema utilizzando il metodo del simplesso


a due fasi:
max Z = x1 + 5x2
x1 −x2 ≤ 3
5x1 −2x2 = 8
−x1 +3x2 ≥ 1
x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo il problema nella forma aumentata introducendo una
variabile slack, una variabile surplus e due variabili artificiali:

max Z = x1 + 5x2
x1 −x2 +x3 = 3
5x1 −2x2 +x4 = 8
−x1 +3x2 −x5 +x6 = 1
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 12

Scriviamo ora i problemi che il metodo a due fasi deve risolvere:

I Fase
max Z = −x4 − x6
x1 −x2 +x3 = 3
5x1 −2x2 +x4 = 8
−x1 +3x2 −x5 +x6 = 1
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0.

II Fase
max Z = x1 + 5x2
x1 −x2 +x3 = 3
5x1 −2x2 = 8
−x1 +3x2 −x5 = 1
x1 , x2 , x3 , x5 ≥ 0.
Le equazioni della I fase sono

(0) Z +x4 +x6 = 0


(1) x1 −x2 +x3 = 3
(2) 5x1 −2x2 +x4 = 8
(3) −x1 +3x2 −x5 +x6 = 1.

Per porre in problema in forma canonica bisogna prima sottrarre dall’equa-


zione (0) l’equazione (2), ottenendo le nuove equazioni

(0) Z −5x1 +2x2 +x6 = −8


(1) x1 −x2 +x3 = 3
(2) 5x1 −2x2 +x4 = 8
(3) −x1 +3x2 −x5 +x6 = 1

e poi sottrarre dall’equazione (0) l’equazione (3), ottenendo le equazioni finali


per la I fase:

(0) Z −4x1 −x2 +x5 = −9


(1) x1 −x2 +x3 = 3
(2) 5x1 −2x2 +x4 = 8
(3) −x1 +3x2 −x5 +x6 = 1.

Adesso possiamo scrivere il tableau del metodo del simplesso:


CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 13

I Fase-Iterazione 0
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
Z (0) 1 −4 −1 0 0 1 0 −9
x3 (1) 0 1 −2 1 0 0 0 3
x4 (2) 0 5 −2 0 1 0 0 8
x6 (3) 0 −1 3 0 0 −1 1 1

I Fase-Iterazione 1
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
Z (0) 1 0 − 13
5 0 4
5 1 0 − 13
5

x3 (1) 0 0 − 35 1 − 15 0 0 7
5

x1 (2) 0 1 − 25 0 1
5 0 0 8
5
13 1 13
x6 (3) 0 0 5 0 5 −1 1 5

I Fase-Iterazione 2
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
Z (0) 1 0 0 0 1 0 1 0
x3 (1) 0 0 0 1 2
− 13 3
− 13 3
13 2
x1 (2) 0 1 0 0 3
13
2
− 13 2
13 2
x2 (3) 0 0 1 0 1
13
5
− 13 5
13 1

Terminata la I Fase del metodo del simplesso si devono eliminare le colonne


relative alle variabili artificiale e deve essere sostituita la funzione obiettivo.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 14

Tableau Finale I Fase con la funzione obiettivo della II Fase


Var. x1 x2 x3 x5
base Eq. Z bi
Z (0) 1 −1 −5 0 0 0
x3 (1) 0 0 0 1 3
− 13 2
x1 (2) 0 1 0 0 2
− 13 2
x2 (3) 0 0 1 0 5
− 13 1

II Fase-Eliminazione coefficiente di x1
Var. x1 x2 x3 x5
base Eq. Z bi
2
Z (0) 1 0 −5 0 − 13 2
x3 (1) 0 0 0 1 3
− 13 2
x1 (2) 0 1 0 0 2
− 13 2
x2 (3) 0 0 1 0 5
− 13 1

II Fase-Eliminazione coefficiente di x2
Var. x1 x2 x3 x5
base Eq. Z bi
Z (0) 1 0 0 0 − 27
13 7
x3 (1) 0 0 0 1 3
− 13 2
x1 (2) 0 1 0 0 2
− 13 2
x2 (3) 0 0 1 0 5
− 13 1

A questo punto non è verificato il test di ottimalità in quanto esiste un coeffi-


ciente negativo nell’equazione (0), tuttavia nessuna variabile in base soddisfa
il test del minimo rapporto perchè nella colonna relativa a x5 , variabile en-
trante in base, tutti i coefficienti sono negativi. Questa situazione si verifica
quando il problema non ha soluzione, cioè la funzione obiettivo è illimitata (il
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 15

valore di x5 , e quindi della funzione obiettivo, può crescere indefinitamente


senza che alcuna altra variabile assuma valore zero).
Esercizio. Risolvere il seguente problema utilizzando il metodo del simplesso
a due fasi:
min Z = 6x1 + 3x2 + 4x3
−4x1 +3x2 +3x3 ≥ 2
7x1 +x2 −2x3 ≥ 6
x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo il problema nella forma aumentata introducendo due
variabili surplus e due variabili artificiali:

min Z = 6x1 + 3x2 + 4x3


−4x1 +3x2 +3x3 −x4 +x5 = 2
7x1 +x2 −2x3 −x6 +x7 = 6
x1 , x2 , x3 , x4 , x6 , x5 , x7 ≥ 0.

Scriviamo ora i problemi che risolve il metodo del simplesso a due fasi:

I Fase
min Z = x5 + x7
−4x1 +3x2 +3x3 −x4 +x5 = 2
7x1 +x2 −2x3 −x6 +x7 = 6
x1 , x2 , x3 , x4 , x6 , x5 , x7 ≥ 0.

II Fase
min Z = 6x1 + 3x2 + 4x3
−4x1 +3x2 +3x3 −x4 = 2
7x1 +x2 −2x3 −x6 = 6
x1 , x2 , x3 , x4 , x6 ≥ 0.
Poichè il problema è di minimo dobbiamo trasformarlo in un problema di
massimo cambiando il segno ai due membri della funzione obiettivo in en-
trambi i problemi:

I Fase
max −Z = −x5 − x7
−4x1 +3x2 +3x3 −x4 +x5 = 2
7x1 +x2 −2x3 −x6 +x7 = 6
x1 , x2 , x3 , x4 , x6 , x5 , x7 ≥ 0.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 16

II Fase
max −Z = −6x1 − 3x2 − 4x3
−4x1 +3x2 +3x3 −x4 = 2
7x1 +x2 −2x3 −x6 = 6
x1 , x2 , x3 , x4 , x6 ≥ 0.
Le equazioni della I fase sono

(0) −Z +x5 +x7 = 0


(1) −4x1 +3x2 +3x3 −x4 +x5 = 2
(2) 7x1 +x2 −2x3 −x6 +x7 = 6.

Per porre in problema in forma canonica bisogna prima sottrarre dall’e-


quazione (0) l’equazione (1), ottenendo le nuove equazioni

(0) −Z +4x1 −3x2 −3x3 +x4 +x7 = −2


(1) −4x1 +3x2 +3x3 −x4 +x5 = 2
(2) 7x1 +x2 −2x3 −x6 +x7 = 6

e poi sottrarre dall’equazione (0) l’equazione (2), ottenendo le equazioni finali


per la I fase:

(0) −Z −3x1 −4x2 −x3 +x4 +x6 = −8


(1) −4x1 +3x2 +3x3 −x4 +x5 = 2
(2) 7x1 +x2 −2x3 −x6 +x7 = 6.

Adesso possiamo scrivere il tableau del metodo del simplesso:

Iterazione 0
Var. x1 x2 x3 x4 x6
base Eq. Z x5 x7 bi
Z (0) −1 −3 −4 −1 1 0 1 0 −8
x5 (1) 0 −4 3 3 −1 1 0 0 2
x7 (2) 0 7 1 −2 0 0 −1 1 6
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 17

Iterazione 1
Var. x1 x2 x3 x4 x6
base Eq. Z x5 x7 bi
Z (0) −1 − 25
3 0 3 − 31 4
3 1 0 − 16
3

x2 (1) 0 − 43 1 1 − 13 1
3 0 0 2
3
25 1
x7 (2) 0 3 0 −3 3
− 13 −1 1 16
3

Iterazione 2
Var. x1 x2 x3 x4 x6
base Eq. Z x5 x7 bi
Z (0) −1 0 0 1 0 1 0 1 0
x2 (1) 0 0 1 13
25
7
− 25 7
25
4
− 25 4
25
38
25

x1 (2) 0 1 0 9
− 25 1
25
1
− 25 3
− 25 3
25
16
25

Soluzione ottima della prima fase è (16/25, 38/25, 0). Dal tableau finale della
prima fase dobbiamo eliminare le colonne relative alle variabili artificiali, so-
stituire la funzione obiettivo e porre il sistema di equazioni in forma canonica.
Il tableau relativo alle prime due operazioni è il seguente:

II Fase-Tablaeu preliminare
Var. x1 x2 x3 x4 x6
base Eq. Z bi
Z (0) −1 6 3 4 0 0 0
x2 (1) 0 0 1 13
25
7
25
4
− 25 38
25

x1 (2) 0 1 0 9
− 25 1
25
3
− 25 16
25
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 18

II Fase-Eliminazione coeff. di x2
Var. x1 x2 x3 x4 x6
base Eq. Z bi
61 21 12
Z (0) −1 6 0 25 25 25
− 114
25

x2 (1) 0 0 1 13
25
7
25
4
− 25 38
25

x1 (2) 0 1 0 9
− 25 1
25
3
− 25 16
25

II Fase-Eliminazione coeff. di x1
Var. x1 x2 x3 x4 x6
base Eq. Z bi
23 3 6
Z (0) −1 0 0 5 5 5
− 42
5

x2 (1) 0 0 1 13
25
7
− 25 4
− 25 38
25

x1 (2) 0 1 0 9
− 25 1
25
3
− 25 16
25

Poichè è verificato il test di ottimalità la BFS trovata trovata al termine della


prima fase è soluzione ottima del problema. Il valore della funzione obiettivo
nella soluzione ottima è Z = 42/5.
Esercizio. Risolvere il seguente problema utilizzando il metodo del simplesso
a due fasi:
min Z = 3x1 + 2x2 + 4x3
x1 −2x2 +2x3 = 3
3x1 +x2 −3x3 ≥ 6
x1 , x2 , x3 ≥ 0.
Svolgimento. Scriviamo il problema nella forma aumentata introducendo una
variabile surplus e due variabili artificiali:

min Z = 3x1 + 2x2 + 4x3


x1 −2x2 +2x3 +x4 = 3
3x1 +x2 −3x3 −x5 +x6 = 6
x1 , x2 , x3 , x5 , x4 , x6 ≥ 0.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 19

Scriviamo ora i problemi che risolve il metodo del simplesso a due fasi:
I Fase
min Z = x4 + x6
x1 −2x2 +2x3 +x4 = 3
3x1 +x2 −3x3 −x5 +x6 = 6
x1 , x2 , x3 , x5 , x4 , x6 ≥ 0.

II Fase
min Z = 3x1 + 2x2 + 4x3
x1 −2x2 +2x3 = 3
3x1 +x2 −3x3 −x5 = 6
x1 , x2 , x3 , x5 ≥ 0.
Poichè il problema è di minimo dobbiamo trasformarlo in un problema di
massimo cambiando il segno ai due membri della funzione obiettivo in en-
trambi i problemi:
I Fase
max −Z = −x4 − x6
x1 −2x2 +2x3 +x4 = 3
3x1 +x2 −3x3 −x5 +x6 = 6
x1 , x2 , x3 , x5 , x4 , x6 ≥ 0.

II Fase
max −Z = −3x1 − 2x2 − 4x3
x1 −2x2 +2x3 = 3
3x1 +x2 −3x3 −x5 = 6
x1 , x2 , x3 , x5 ≥ 0.
Le equazioni della I fase sono
(0) −Z +x4 +x6 = 0
(1) x1 −2x2 +2x3 +x4 = 3
(2) 3x1 +x2 −3x3 −x5 +x6 = 6.
Per porre in problema in forma canonica bisogna prima sottrarre dall’e-
quazione (0) l’equazione (1), ottenendo le nuove equazioni
(0) −Z −x1 +2x2 −2x3 +x6 = −3
(1) x1 −2x2 +2x3 +x4 = 3
(2) 3x1 +x2 −3x3 −x5 +x6 = 6
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 20

e poi sottrarre dall’equazione (0) l’equazione (2), ottenendo le equazioni finali


per la I fase:
(0) −Z −4x1 +x2 +x3 +x5 = −9
(1) x1 −2x2 +2x3 +x4 = 3
(2) 3x1 +x2 −3x3 −x5 +x6 = 6.
Adesso possiamo scrivere il tableau del metodo del simplesso:

Iterazione 0
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
Z (0) −1 −4 1 1 0 1 0 −9
x4 (1) 0 1 −2 2 1 0 0 3
x6 (2) 0 3 1 −3 0 −1 1 6

Iterazione 1
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
7
Z (0) −1 0 3 −3 0 − 31 4
3 −1
x4 (1) 0 0 − 37 3 1 1
3
− 31 1
x1 (2) 0 1 1
3 −1 0 − 13 1
3 2

Iterazione 2
Var. x1 x2 x3 x5
base Eq. Z x4 x6 bi
Z (0) −1 0 0 0 1 0 1 0
x3 (1) 0 0 − 97 1 1
3
1
9
− 19 1
3

x1 (2) 0 1 − 49 0 1
3
− 23 2
9
7
3

Soluzione ottima della prima fase è (7/3, 0, 1/3). Dal tableau finale della
prima fase dobbiamo eliminare le colonne relative alle variabili artificiali, so-
stituire la funzione obiettivo e porre il sistema di equazioni in forma canonica.
Il tableau relativo alle prime due operazioni è il seguente:
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 21

II Fase-Tablaeu preliminare
Var. x1 x2 x3 x5
base Eq. Z bi
Z (0) −1 3 2 4 0 0
x2 (1) 0 0 − 97 1 1
9
1
3

x1 (2) 0 1 − 49 0 − 29 7
3

II Fase-Eliminazione coeff. di x1
Var. x1 x2 x3 x5
base Eq. Z bi
10 2
Z (0) −1 0 3 4 3 −7
x2 (1) 0 0 − 97 1 1
9
1
3

x1 (2) 0 1 − 49 0 − 29 7
3

II Fase-Eliminazione coeff. di x3
Var. x1 x2 x3 x5
base Eq. Z bi
58 2
Z (0) −1 0 9 0 9
− 25
3

x2 (1) 0 0 − 97 1 1
9
1
3

x1 (2) 0 1 − 49 0 − 29 7
3

Poichè è verificato il test di ottimalità la BFS trovata trovata al termine della


prima fase è soluzione ottima del problema. Il valore della funzione obiettivo
nella soluzione ottima è Z = 25/3.
Esercizio. Determinare i prezzi ombra del seguente problema di program-
mazione lineare:
max Z = x1 + 3x2
4x1 +x2 ≤ 24
4x1 +3x2 ≤ 32
x2 ≤ 8
x1 ≥ 0, x2 ≥ 0.
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 22

Svolgimento. Introduciamo tre variabili slack (una per ogni vincolo) e ri-
solviamo il problema aumentato:

max Z = x1 + 3x2
4x1 +x2 +x3 = 24
4x1 +3x2 +x4 = 32
x2 +x5 = 8
xi ≥ 0, i = 1, 2, 3, 4, 5.

Iterazione 0
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) 1 −1 −3 0 0 0 0
x3 (1) 0 4 1 1 0 0 24
x4 (2) 0 4 3 0 1 0 32
x5 (3) 0 0 1 0 0 1 8

Iterazione 1
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) 1 −1 0 0 0 3 24
x3 (1) 0 4 0 1 0 −1 16
x4 (2) 0 4 0 0 1 −3 8
x2 (3) 0 0 1 0 0 1 8
CAPITOLO 1. ESERCIZI DI PROGRAMMAZIONE LINEARE 23

Iterazione 2
Var. x1 x2 x3 x4 x5
base Eq. Z bi
1 9
Z (0) 1 0 0 0 4 4 26
x3 (1) 0 0 0 1 −1 2 8
x1 (2) 0 1 0 0 1
4
− 34 2
x2 (3) 0 0 1 0 0 1 8

Avendo raggiunto la soluzione ottima (2, 8, 8, 0, 0), con Z = 26, sono deter-
minati anche i relativi prezzi ombra
1 9
y1∗ = 0, y2∗ = , y3∗ = .
4 4
Capitolo 2

Problemi di Trasporto e
Assegnamento

2.1 Il problema del trasporto


Esercizio. Risolvere il problema del trasporto con 2 sorgenti, con offerta
rispettivamente 80 e 40 e 3 destinazioni con domanda 25, 50 e 30 e con
matrice dei costi  
10 40 15
C= .
20 25 30
determinando le quantità di merci da inviare dalle sorgenti alle destinazioni
affinchè il costo sia minimo.
Svolgimento. Innanzitutto osserviamo che è necessario introdurre una desti-
nazione fittizia, 4D, poichè
X X
si = 120 6= dj = 105
i j

che serva ad assorbire l’offerta eccedente pari a 15. I costi relativi a tale
destinazione saranno posti tutti uguali a zero, quindi la matrice dei costi
diviene:  
10 40 15 0
C= .
20 25 30 0
Scriviamo la tabella dei dati e applichiamo la regola di Nord-Ovest per trovare
la BFS iniziale:

24
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 25

1 2 3 4D si ui
10 40 15 0
1 25 50 5 80

20 25 30 0
2 25 15 40

dj 25 50 30 15 Z = 3075
vj

La BFS iniziale è:


(25, 50, 5, 0, 0, 0, 25, 25)
per la quale il valore della funzione obiettivo è Z = 3075. Applichiamo ora
il metodo del simplesso partendo dal seguente tableau:

1 2 3 4D si ui
10 40 15 0
1 25 50 5 +15 80 0

20 25 30 0
2 −5 −30 25 15 40 15

dj 25 50 30 15 Z = 3075
vj 10 40 15 −15

Variabile entrante x22 , variabile uscente x23 , celle riceventi x22 e x13 , celle
donatrici x12 e x23 , quantità donata 25.

1 2 3 4D si ui
10 40 15 0
1 25 25 30 −15 80 0

20 25 30 0
2 +25 25 +30 15 40 −15

dj 25 50 30 15 Z = 2625
vj 10 40 15 15
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 26

Variabile entrante x14 , variabile uscente x24 , celle riceventi x22 e x14 , celle
donatrici x12 e x24 , quantità donata 15.

1 2 3 4D si ui
10 40 15 0
1 25 10 30 15 80 0

20 25 30 0
2 +25 40 +30 +15 40 −15

dj 25 50 30 15 Z = 2400
vj 10 40 15 0

Soluzione ottima è il vettore (25, 10, 30, 15, 0, 40, 0, 0) ed il valore minimo del
costo è Z = 2400.
Esercizio. Risolvere il problema del trasporto con 2 sorgenti, con offerta
rispettivamente 60 e 40 e 4 destinazioni con domanda 25, 15, 28 e 32 e
matrice dei costi  
20 40 20 10
C= .
30 20 60 10
Svolgimento. Scriviamo la tabella dei dati e applichiamo la regola di Nord-
Ovest per trovare la BFS iniziale:

1 2 3 4 si ui
20 40 20 10
1 25 15 20 +40 60 0

30 20 60 10
2 −30 −60 8 32 40 40

dj 25 15 28 32 Z = 2300
vj 20 40 20 −30

Variabile entrante x22 , variabile uscente x23 , celle riceventi x22 e x13 , celle
donatrici x12 e x23 , quantità donata 8.
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 27

1 2 3 4 si ui
20 40 20 10
1 25 7 28 −20 60 0

30 20 60 10
2 +30 8 +60 32 40 −20

dj 25 15 28 32 Z = 1820
vj 20 40 20 30

Variabile entrante x14 , variabile uscente x12 , celle riceventi x22 e x14 , celle
donatrici x12 e x24 , quantità donata 7.

1 2 3 4 si ui
20 40 20 10
1 25 +20 28 7 60 0

30 20 60 10
2 +10 15 +40 25 40 0

dj 25 15 28 32 Z = 1680
vj 20 20 20 10

La soluzione ottima è il vettore (25, 0, 28, 7, 0, 15, 0, 25) ed il valore minimo


del costo è Z = 1680.
Esercizio. Si vuole risolvere il problema del trasporto con tre sorgenti, con
offerta rispettivamente 20, 60 e 30 e tre destinazioni con domanda 15, 50 e
10. La matrice dei costi è la seguente
 
4 3 2
C =  1 5 − .
1 2 4

Si vogliono determinare le quantità di merci da inviare dalle sorgenti alle


destinazioni affinchè il costo sia minimo.
Svolgimento. Innanzitutto osserviamo che
X X
si = 110, dj = 75,
i j
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 28

quindi è necessario introdurre una destinazione fittizia, 4D, che serva ad


assorbire l’offerta eccedente pari a 35. I costi relativi a tale destinazione
saranno posti tutti uguali a zero. Inoltre si deve mettere in evidenza che la
sorgente 2 non deve inviare merce alla destinazione 3, pertanto dobbiamo
introdurre una penalizzazione per la variabile x23 ponendo c23 = M. La
matrice dei costi diviene pertanto la seguente:
 
4 3 2 0
C =  1 5 M 0 .
1 2 4 0

Scriviamo la tabella dei dati e applichiamo la regola di Nord-Ovest per trovare


la BFS iniziale:

1 2 3 4D si ui
4 3 2 0
1 15 5 4−M +2 20 −2

1 5 M 0
2 −5 45 10 5 60 0

1 2 4 0
3 −5 −3 4−M 30 30 0

dj 15 50 10 35 Z = 300 + 10M

vj 6 5 M 0

Variabile entrante x33 , variabile uscente x23 , celle riceventi x33 e x24 , celle
donatrici x23 e x34 , quantità donata 10.
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 29

1 2 3 4D si ui
4 3 2 0
1 15 5 0 +2 20 −2

1 5 M 0
2 −5 45 M−4 15 60 0

1 2 4 0
3 −5 −3 10 20 30 0

dj 15 50 10 35 Z = 340

vj 6 5 4 0

Variabile entrante x21 , variabile uscente x11 , celle riceventi x12 e x21 , celle
donatrici x11 e x22 , quantità donata 15.

1 2 3 4D si ui
4 3 2 0
1 +5 20 0 +2 20 −2

1 5 M 0
2 15 30 M−4 15 60 0

1 2 4 0
3 0 −3 10 20 30 0

dj 15 50 10 35 Z = 265
vj 1 5 4 0

Variabile entrante x32 , variabile uscente x34 , celle riceventi x32 e x24 , celle
donatrici x22 e x34 , quantità donata 20.
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 30

1 2 3 4D si ui
4 3 2 0
1 +5 20 −3 +6 20 −2

1 5 M 0
2 15 10 M−7 35 60 0

1 2 4 0
3 +3 20 10 +3 30 −3

dj 15 50 10 35 Z = 205
vj 1 5 7 0

Variabile entrante x13 , variabile uscente x33 , celle riceventi x13 e x32 , celle
donatrici x12 e x33 , quantità donata 10.

1 2 3 4D si ui
4 3 2 0
1 +5 10 10 +2 20 −2

1 5 M 0
2 15 10 M−4 35 60 0

1 2 4 0
3 +3 30 +3 +3 30 −3

dj 15 50 10 35 Z = 175
vj 1 5 4 0

La soluzione ottima è il vettore (0, 10, 10, 0, 15, 10, 0, 35, 0, 30, 0, 0) ed il valore
minimo del costo è Z = 175.
Esercizio. Si consideri un problema del trasporto con 3 nodi sorgente, cias-
cuno con offerta pari a 20 e 3 destinazioni con domanda 10, 15 e 35. La
matrice dei costi è la seguente
 
1 3 2
C =  5 4 1 .
1 2 3
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 31

Si vuole determinare le quantità di merci da inviare dai nodi sorgente a quelli


destinazione affinchè il costo sia minimo.
Svolgimento.

1 2 3 si ui
1 3 2
1 10 10 +2 20 0

5 4 1
2 +3 5 15 20 1

1 2 3
3 −3 −4 20 20 3

dj 10 15 35 Z = 135
vj 1 3 0

Variabile entrante x32 , variabile uscente x22 , celle riceventi x32 e x23 , celle
donatrici x22 e x33 , quantità donata 5.

1 2 3 si ui
1 3 2
1 10 10 −2 20 0

5 4 1
2 +1 +4 20 20 −3

1 2 3
3 +1 5 15 20 −1

dj 10 15 35 Z = 115
vj 1 3 4

Variabile entrante x13 , variabile uscente x12 , celle riceventi x32 e x13 , celle
donatrici x12 e x33 , quantità donata 10.
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 32

1 2 3 si ui
1 3 2
1 10 +2 10 20 0

5 4 1
2 +5 +4 20 20 −1

1 2 3
3 −1 15 5 20 1

dj 10 15 35 Z = 95
vj 1 1 2

Variabile entrante x31 , variabile uscente x33 , celle riceventi x31 e x13 , celle
donatrici x11 e x33 , quantità donata 5.

1 2 3 si ui
1 3 2
1 5 +1 15 20 0

5 4 1
2 +5 +3 20 20 −1

1 2 3
3 5 15 +1 20 0

dj 10 15 35 Z = 90
vj 1 2 2

La soluzione ottima è il vettore (5, 0, 15, 0, 0, 20, 5, 15, 0) ed il valore minimo


del costo è Z = 90.
Esercizio. Risolvere il problema del trasporto con 3 origini, 4 destinazioni,
definito dalla seguente matrice dei costi:
 
4 2 1 3
C =  5 1 2 2 .
3 2 1 3
con offerta pari rispettivamente a 30, 40 e 30 e domanda 20, 30, 40 e 10,
ed utilizzando il metodo di approssimazione di Russell per trovare la BFS
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 33

iniziale.
Svolgimento.

1 2 3 4 si ui
4 2 1 3
1 −5 −4 −5 −4 30 4

5 1 2 2
2 −5 −6 −5 −6 40 5

3 2 1 3
3 −5 −3 −5 −3 30 3

dj 20 30 40 10
vj 5 2 2 3

Scegliamo x24 = 10 e cancelliamo la quarta colonna.

1 2 3 si ui
4 2 1
1 −5 −4 −5 30 4

5 1 2
2 −5 −6 −5 30 5

3 2 1
3 −5 −3 −4 30 3

dj 20 30 40
vj 5 2 2

Scegliamo x22 = 30 e cancelliamo la seconda riga.


CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 34

1 2 3 si ui
4 2 1
1 −4 −4 −4 30 4

3 2 1
2 −4 −3 −3 30 3

dj 20 0 40
vj 4 2 1

Scegliamo x13 = 30 e cancelliamo la prima riga, cosicchè le altre variabili in


base sono quelle restanti, cioe x31 = 20, x32 = 0 e x33 = 10.
La BFS trovata applicando il metodo di Russell è (0, 0, 30, 0, 0, 30, 0, 10, 20, 0, 10, 0),
ora risolviamo il problema del trasporto con il metodo del simplesso.

1 2 3 4 si ui
4 2 1 3
1 +1 0 30 0 30 0

5 1 2 2
2 +3 30 +2 10 40 −1

3 2 1 3
3 20 0 10 0 30 0

dj 20 30 40 10 Z = 150
vj 3 2 1 3

La BFS trovata con il metodo di Russell coincide con la soluzione ottima.


Esercizio. Trovare la BFS iniziale del problema di trasporto definito dalla
seguente matrice dei costi
 
1 6 5
C =  5 4 1 .
3 3 4
e con offerte pari rispettivamente a 10, 50 e 20 e domande 30, 40 e 10,
utilizzando i metodi di Vogel e di Russell.
Svolgimento. Applicando il metodo di Vogel si ha la seguente situazione
iniziale
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 35

Destinazioni
1 2 3 si Differ. Righe
Sorgenti 1 1 6 5 10 4
2 5 4 1 50 3
3 3 3 4 20 0
dj 30 40 10
Diff. Col. 2 1 3
Si sceglie come variabile in base x11 , si pone x11 = 10 e si cancella la prima
riga.
Destinazioni
1 2 3 si Differ. Righe
Sorgenti 2 5 4 1 50 3
3 3 3 4 20 0
dj 20 40 10
Diff. Col. 2 1 3
Si sceglie come variabile in base x23 , si pone x23 = 10 e si cancella la terza
colonna.
Destinazioni
1 2 si Differ. Righe
Sorgenti 2 5 4 40 1
3 3 3 20 0
dj 20 40
Diff. Col. 2 1
Si sceglie come variabile in base x31 , si pone x31 = 20 e si cancella la prima
colonna.
Destinazioni
2 si Differ. Righe
Sorgenti 2 4 40 −
3 3 0 −
dj 40
Diff. Col. −
Le restanti variabili in base sono x22 = 40 e x32 = 0.
La BFS trovata con il metodo di Vogel è:
(10, 0, 0, 0, 40, 10, 20, 0, 0).
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 36

Per applicare il metodo di Russell scriviamo la consueta tabella:

1 2 3 si ui
1 6 5
1 −10 −6 −6 10 6

5 4 1
2 −5 −7 −9 50 5

3 3 4
3 −6 −7 −5 20 4

dj 30 40 10
vj 5 6 5

Scegliamo x11 = 10 e cancelliamo la prima riga.

1 2 3 si ui
5 4 1
2 −5 −5 −8 50 5

3 3 4
3 −6 −5 −4 20 4

dj 20 40 10
vj 5 4 4

Scegliamo x23 = 10 e cancelliamo la terza colonna.

1 2 si ui
5 4
2 −5 −5 40 5

3 3
3 −5 −4 20 3

dj 20 40
vj 5 4
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 37

Scegliamo x31 = 20, cancelliamo la prima colonna, in modo tale che le vari-
abili rimaste sono entrambe in base: x22 = 40 e x32 = 0.
La BFS trovata con il metodo di Russell è:

(10, 0, 0, 0, 40, 10, 20, 0, 0).

Osserviamo che i due metodi hanno fornito la stessa soluzione iniziale.


Esercizio. Trovare la BFS iniziale del problema di trasporto definito dalla
seguente matrice dei costi
 
4 5 7
C =  4 4 5 .
4 4 4

e con offerte pari rispettivamente a 100, 110 e 90 e domande 95, 85 e 120,


utilizzando i metodi di Vogel e di Russell.
Svolgimento. Applicando il metodo di Vogel si ha la seguente situazione
iniziale
Destinazioni
1 2 3 si Differ. Righe
Sorgenti 1 4 5 7 100 1
2 4 4 5 110 0
3 4 4 4 90 0
dj 95 85 120
Diff. Col. 0 0 1

Si sceglie come variabile in base x33 , si pone x33 = 90 e si cancella la terza


riga.
Destinazioni
1 2 3 si Differ. Righe
Sorgenti 1 4 5 7 100 1
2 4 4 5 110 0
dj 95 85 30
Diff. Col. 0 1 2

Si sceglie come variabile in base x23 , si pone x23 = 30 e si cancella la terza


colonna.
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 38

Destinazioni
1 2 si Differ. Righe
Sorgenti 1 4 5 100 1
2 4 4 80 0
dj 95 85
Diff. Col. 0 1
Si sceglie come variabile in base x11 , si pone x11 = 95 e si cancella la prima
colonna, quindi le restanti variabili in base sono x12 = 5 e x22 = 80.
La BFS trovata con il metodo di Vogel è:
(95, 5, 0, 0, 80, 30, 0, 0, 90).
Per applicare il metodo di Russell scriviamo la tabella:
1 2 3 si ui
4 5 7
1 −7 −7 −7 100 7

4 4 5
2 −7 −6 −7 110 5

4 4 4
3 −4 −5 −7 90 4

dj 95 85 120
vj 4 5 7

Scegliamo x11 = 95 e cancelliamo la prima colonna.


2 3 si ui
5 7
1 −7 −7 5 7

4 5
2 −6 −7 110 5

4 4
3 −5 −7 90 4

dj 85 120
vj 5 7
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 39

Scegliamo x33 = 90 e cancelliamo la terza riga.

2 3 si ui
5 7
1 −7 −7 5 7

4 5
2 −6 −7 110 5

dj 85 30
vj 5 7

Scegliamo x23 = 30, cancelliamo la terza colonna, in modo tale che le variabili
rimaste sono entrambe in base: x24 = 80 e x12 = 5.
La BFS trovata con il metodo di Russell è:

(95, 5, 0, 0, 80, 30, 0, 0, 90).

2.2 Il problema di assegnamento


Esercizio. Trovare l’assegnamento ottimo per il problema definito dalla
seguente matrice dei costi, usando il metodo ungherese:
 
8 8 5 7
 9 7 3 8 
C=  9 8 4 8 .

6 6 5 6
Svolgimento.

8 8 5 7 3 3 0 2
9 7 3 8 6 4 0 5
9 8 4 8 5 4 0 4
6 6 5 6 1 1 0 1
Tabella iniziale Si sottrae il minimo da ogni riga
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 40

2 2 0 1
5 3 0 4
4 3 0 3
0 0 0 0
Si sottrae il minimo da ogni colonna

2 2 0 1
5 3 0 4
4 3 0 3
0 0 0 0
Gli elementi uguali a zero cono coperti da due linee

1 1 0 0
4 2 0 3
3 2 0 2
0 0 1 0
Si sottrae 1 da tutti gli elementi non coperti
Si aggiunge 1 all’elemento coperto da due linee

1 1 0 0
4 2 0 3
3 2 0 2
0 0 1 0
Gli elementi uguali a zero cono coperti da tre linee
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 41

1 1 2 0
2 0 0 1
1 0 0 0
0 0 3 0
Si sottrae 2 da tutti gli elementi non coperti
Si aggiunge 2 agli elementi coperti da due linee

1 1 2 0
2 0 0 1
1 0 0 0
0 0 3 0
Gli elementi uguali a zero cono coperti da 4 linee
L’assegnamento ottimo è possibile

1 1 2 0
2 0 0 1
1 0 0 0
0 0 3 0
Poniamo x14 = 1

1 1 2 0
2 0 0 1
1 0 0 0
0 0 3 0
Poniamo x41 = 1
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 42

1 1 2 0
2 0 0 1
1 0 0 0
0 0 3 0
Poniamo x22 = 1 e x33 = 1.

Il valore della funzione obiettivo nella soluzione ottima è

Z = 7 + 7 + 4 + 6 = 24.

Esercizio. Risolvere il problema di assegnamento definito dalla seguente


matrice dei costi:  
6 4 2 1 −
 3 − 4 4 2 
 
 − 6 6 4 2 
C=  7
.
 4 5 1 1  
 6 3 2 2 2 
6 4 5 6 4
Svolgimento. Innanzitutto dobbiamo aggiungere una colonna alla matrice
dei costi ed inserire il valore M per i costi non definiti:
 
6 4 2 1 M 0
 3 M 4 4 2 0 
 
 M 6 6 4 2 0 
C=  7 4 5 1 1 0 .

 
 6 3 2 2 2 0 
6 4 5 6 4 0

Applichiamo il metodo ungherese a tale problema:


CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 43

6 4 2 1 M 0 3 1 0 0 M 0
3 M 4 4 2 0 0 M 2 3 1 0
M 6 6 4 2 0 M 3 4 3 1 0
7 4 5 1 1 0 4 1 3 0 0 0
6 3 2 2 2 0 3 0 0 1 1 0
6 4 5 6 4 0 3 1 3 5 3 0
Tabella iniziale Matrice ottenuta sottraendo il
minimo da tutte le colonne
Il numero minimo di linee che coprono gli elementi uguali a zero è 5, come
si evince dalla seguente figura:

3 1 0 0 M 0
0 M 2 3 1 0
M 3 4 3 1 0
4 1 3 0 0 0
3 0 0 1 1 0
3 1 3 5 3 0

Eseguiamo quindi un’altra iterazione, sottraendo 1 dagli elementi non coperti


e sommandolo agli elementi coperti da due linee:
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 44

3 1 0 0 M 1
0 M 2 3 1 1
M 2 3 2 0 0
4 1 3 0 0 1
3 0 0 1 1 1
2 0 2 4 2 0

Ora è possibile effettuare l’assegnamento ottimo:

3 1 0 0 M 1 3 1 0 0 M 1
0 M 2 3 1 1 0 M 2 3 1 1
M 2 3 2 0 0 M 2 3 2 0 0
4 1 3 0 0 1 4 1 3 0 0 1
3 0 0 1 1 1 3 0 0 1 1 1
2 0 2 4 2 0 2 0 2 4 2 0
x21 = 1 x13 = 1

3 1 0 0 M 1 3 1 0 0 M 1
0 M 2 3 1 1 0 M 2 3 1 1
M 2 3 2 0 0 M 2 3 2 0 0
4 1 3 0 0 1 4 1 3 0 0 1
3 0 0 1 1 1 3 0 0 1 1 1
2 0 2 4 2 0 2 0 2 4 2 0
x52 = 1 x66 = 1
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 45

3 1 0 0 M 1 3 1 0 0 M 1
0 M 2 3 1 1 0 M 2 3 1 1
M 2 3 2 0 0 M 2 3 2 0 0
4 1 3 0 0 1 4 1 3 0 0 1
3 0 0 1 1 1 3 0 0 1 1 1
2 0 2 4 2 0 2 0 2 4 2 0
x35 = 1 x44 = 1

La soluzione ottima è la seguente


 
0 0 1 0 0 0
 1 0 0 0 0 0 
 
 0 0 0 0 1 0 
X=  0

 0 0 1 0 0 

 0 1 0 0 0 0 
0 0 0 0 0 1

mentre il costo minimo è

Z = 3 + 2 + 3 + 2 + 1 = 11.

Esercizio. Risolvere il problema di assegnamento con 5 task e 5 risorse


definito dalla seguente matrice dei costi:
 
5 4 6 5 4
 3 7 4 6 3 
 
C=  5 2 3 2 3 .

 6 4 4 3 2 
7 3 2 3 3

Svolgimento. Applichiamo il metodo ungherese a tale problema:


CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 46

5 4 6 5 4 1 0 2 1 0
3 7 4 6 3 0 4 1 3 0
5 2 3 2 3 3 0 1 0 1
6 4 4 3 2 4 2 2 1 0
7 3 2 3 3 5 1 0 1 1
Tabella iniziale Matrice ottenuta sottraendo il
minimo da tutte le righe
Non si procede a togliere il minimo da ogni colonna in quanto tale valore è
zero. Inoltre poichè il numero minimo di linee che coprono gli elementi uguali
a zero è uguale a cinque allora si può procedere all’assegnamento ottimo.

1 0 2 1 0 1 0 2 1 0
0 4 1 3 0 0 4 1 3 0
3 0 1 0 1 3 0 1 0 1
4 2 2 1 0 4 2 2 1 0
5 1 0 1 1 5 1 0 1 1
x21 = 1 x53 = 1

1 0 2 1 0 1 0 2 1 0
0 4 1 3 0 0 4 1 3 0
3 0 1 0 1 3 0 1 0 1
4 2 2 1 0 4 2 2 1 0
5 1 0 1 1 5 1 0 1 1
x45 = 1 x12 = 1
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 47

1 0 2 1 0
0 4 1 3 0
3 0 1 0 1
4 2 2 1 0
5 1 0 1 1
x34 = 1

La soluzione ottima è la seguente


 
0 1 0 0 0

 1 0 0 0 0 

X=
 0 0 0 1 0 

 0 0 0 0 1 
0 0 1 0 0
mentre il costo minimo è
Z = 4 + 3 + 2 + 2 + 2 = 13.
Esercizio. Risolvere il problema di assegnamento definito dalla seguente
matrice dei costi:  
6 3 − 4 5 6
 4 2 1 6 5 6 
 
C=  7 4 3 3 2 4 .

 2 1 10 8 4 5 
7 5 6 4 3 2
Svolgimento. Innanzitutto dobbiamo aggiungere una colonna alla matrice
dei costi ed inserire il valore M per i costi non definiti:
 
6 3 M 4 5 6
 4 2 1 6 5 6 
 
 7 4 3 3 2 4 
C=  2 1 10 8 4 5  .

 
 7 5 6 4 3 2 
0 0 0 0 0 0
Applichiamo il metodo ungherese a tale problema:
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 48

6 3 M 4 5 6 3 0 M 1 2 3
4 3 1 6 5 6 3 2 0 5 4 5
7 4 3 3 2 4 5 2 1 1 0 1
2 1 10 8 4 5 1 0 9 7 3 4
7 5 6 4 3 2 5 3 4 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0
Tabella iniziale Matrice ottenuta sottraendo il
minimo da tutte le righe
Non si procede a togliere il minimo da ogni colonna in quanto tale valore è
zero. Inoltre poichè il numero minimo di linee che coprono gli elementi uguali
a zero è uguale a cinque, come risulta dalla seguente figura

3 0 M 1 2 3
3 2 0 5 4 5
5 2 1 1 0 1
1 0 9 7 3 4
5 3 4 2 1 0
0 0 0 0 0 0

allora è necessario procedere ad un’altra iterazione.


CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 49

2 0 M 0 2 3
2 2 0 4 4 5
4 2 1 0 0 1
0 0 9 6 3 4
4 3 4 1 1 0
0 1 1 0 1 1

Poichè il numero minimo di linee che coprono gli elementi uguali a zero è
uguale a sei allora è possibile effettuare l’assegnamento ottimo.

2 0 M 0 2 3 2 0 M 0 2 3
2 2 0 4 4 5 2 2 0 4 4 5
4 2 1 0 0 1 4 2 1 0 0 1
0 0 9 6 3 4 0 0 9 6 3 4
4 3 4 1 1 0 4 3 4 1 1 0
0 1 1 0 1 1 0 1 1 0 1 1
x56 = 1 x35 = 1

2 0 M 0 2 3 2 0 M 0 2 3
2 2 0 4 4 5 2 2 0 4 4 5
4 2 1 0 0 1 4 2 1 0 0 1
0 0 9 6 3 4 0 0 9 6 3 4
4 3 4 1 1 0 4 3 4 1 1 0
0 1 1 0 1 1 0 1 1 0 1 1
x23 = 1 x12 = 1
CAPITOLO 2. PROBLEMI DI TRASPORTO E ASSEGNAMENTO 50

2 0 M 0 2 3 2 0 M 0 2 3
2 2 0 4 4 5 2 2 0 4 4 5
4 2 1 0 0 1 4 2 1 0 0 1
0 0 9 6 3 4 0 0 9 6 3 4
4 3 4 1 1 0 4 3 4 1 1 0
0 1 1 0 1 1 0 1 1 0 1 1
x41 = 1 x64 = 1

La soluzione ottima è la seguente


 
0 1 0 0 0 0
 0 0 1 0 0 0 
 
 0 0 0 0 1 0 
X=  1

 0 0 0 0 0 

 0 0 0 0 0 1 
0 0 0 1 0 0

mentre il costo minimo è

Z = 3 + 1 + 2 + 2 + 2 = 10.
Capitolo 3

L’algoritmo di
Branch-and-Bound

3.1 Problemi di programmazione binaria


Esercizio. Risolvere il seguente problema di programmazione lineare bina-
ria:
max Z = 9x1 + 5x2 + 6x3
−x1 +3x3 ≤ 1
2x2 −x3 ≤ 1
xj variabile binaria per j = 1, 2, 3.
Svolgimento. Il primo passo dell’algoritmo è quello di risolvere il rilassamento
lineare del problema completo:

max Z = 9x1 + 5x2 + 6x3


(1) −x1 +3x3 ≤ 1
(2) 2x2 −x3 ≤ 1
(3) x1 ≤ 1
(4) x2 ≤ 1
(5) x3 ≤ 1
x1 , x2 , x3 ≥ 0.

Applichiamo il metodo del simplesso introducendo 5 variabili slack.

51
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 52

Iterazione 0
Var. x1 x2 x3 x4 x5 x6 x7 x8
base Eq. Z bi
Z (0) 1 −9 −5 −6 0 0 0 0 0 0
x4 (1) 0 −1 0 3 1 0 0 0 0 1
x5 (2) 0 0 2 −1 0 1 0 0 0 1
x6 (3) 0 1 0 0 0 0 1 0 0 1
x7 (4) 0 0 1 0 0 0 0 1 0 1
x8 (5) 0 0 0 1 0 0 0 0 1 1

Iterazione 1
Var. x1 x2 x3 x4 x5 x6 x7 x8
base Eq. Z bi
Z (0) 1 0 −5 −6 0 0 9 0 0 9
x4 (1) 0 0 0 3 1 0 1 0 0 2
x5 (2) 0 0 2 −1 0 1 0 0 0 1
x1 (3) 0 1 0 0 0 0 1 0 0 1
x7 (4) 0 0 1 0 0 0 0 1 0 1
x8 (5) 0 0 0 1 0 0 0 0 1 1
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 53

Iterazione 2
Var. x1 x2 x3 x4 x5 x6 x7 x8
base Eq. Z bi
Z (0) 1 0 −5 0 2 0 11 0 0 13
x3 (1) 0 0 0 1 1
3 0 1
3 0 0 2
3

x5 (2) 0 0 2 0 1
3 1 1
3 0 0 5
3

x1 (3) 0 1 0 0 0 0 1 0 0 1
x7 (4) 0 0 1 0 0 0 0 1 0 1
x8 (5) 0 0 0 0 − 31 0 − 31 0 1 1
3

Iterazione 3
Var. x1 x2 x3 x4 x5 x6 x7 x8
base Eq. Z bi
17 5 71 103
Z (0) 1 0 0 0 6 2 6 0 0 6

x3 (1) 0 0 0 1 1
3 0 1
3 0 0 2
3

x2 (2) 0 0 1 0 1
6
1
2
1
6 0 0 5
6

x1 (3) 0 1 0 0 0 0 1 0 0 1
x7 (4) 0 0 0 0 − 61 − 21 − 61 1 0 1
6

x8 (5) 0 0 0 0 − 13 0 − 13 0 1 1
3

Soluzione è (1, 5/6, 2/3, 0, 0, 0, 1/6, 1/3) con valore della funzione obiettivo
Z = 103/6 = 17 + 1/6. Poichè la funzione obiettivo deve assumere un valore
reale, possiamo assumere Z = 17 come valore ottimo del rilassamento lineare.
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 54

Consideriamo x1 come variabile di branching e definiamo i due sottoproblemi:


Sottoproblema 1
Fissiamo x1 = 1
max Z = 5x2 + 6x3 + 9
3x3 ≤ 2
2x2 −x3 ≤ 1
x2 , x3 variabili binarie
e
Sottoproblema 2
Fissiamo x1 = 0
max Z = 5x2 + 6x3
3x3 ≤ 1
2x2 −x3 ≤ 1
x2 , x3 variabili binarie
Poichè nella soluzione ottima del rilassamento lineare del problema completo
il valore della variabile di branching x1 è 1, si può naturalmente dedurre che
la soluzione ottima del sottoproblema 1 è la stessa di quello completo.
Per risolvere il sottoproblema 2 consideriamo che il primo vincolo viene sod-
disfatto solo se x3 = 0, per cui deve essere necessariamente x2 = 0. In questo
caso la soluzione ottima è (0, 0, 0), soluzione binaria, quindi il sottoproblema
viene tagliato applicando il terzo criterio di fathoming e Z ∗ = 0 diviene la
soluzione incombente. Poichè esiste un sottoproblema che non è stato taglia-
to allora scegliamo la successiva variabile di branching, cioè x2 , e definiamo
i seguenti sottoproblemi.
Sottoproblema 3
Fissiamo x2 = 1
max Z = 6x3 + 14
3x3 ≤ 2
−x3 ≤ −1
x3 variabile binaria,
e
Sottoproblema 4
Fissiamo x2 = 0
max Z = 6x3 + 9
3x3 ≤ 2
−x3 ≤ 1
x3 variabile binaria.
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 55

Il sottoproblema 3 non ammette soluzione ammissibile quindi viene taglia-


to applicando il secondo criterio di fathoming. Il sottoproblema 2 invece
ammette x3 = 0 come soluzione ammissibile cui corrisponde il valore della
funzione obiettivo Z = 9. Soluzione completa è (1, 0, 0), con valore della
funzione obiettivo Z = 9, che diventa la nuova soluzione incombente. Il sot-
toproblema viene quindi tagliato applicando il terzo criterio di fathoming e,
non essendoci alcun altro sottoproblema da risolvere la soluzione incombente
è quella ottima. Riassumiamo la soluzione del problema nel seguente albero
delle soluzioni.

Completo Z = 17
(1, 5/6, 2/3)

x1 1 Z = 17
0 Z∗ = 0
(1, 5/6, 2/3) (0, 0, 0)
F(3)

x2 1 0 Z∗ = 9
(1, 0, 0)

F(2) F(3)

Esercizio. Cosndiderara il seguente vincolo su variabili binarie:

5x1 + 4x2 + 2x3 + 9x4 ≤ 10.

Individuare i vertici ammissibili e l’insieme delle coperture minime che i ver-


tici ammissibili soddisfano come uguaglianze.
Svolgimento. I possibili vertici sono 16, elencandoli e verificando se sod-
disfano o meno il vincolo assegnato si scopre che quelli ammissibili sono
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 56

8:
vertici ammissibili vertici non ammissibili
(0, 0, 0, 0) (0, 0, 1, 1)
(0, 0, 0, 1) (0, 1, 0, 1)
(0, 0, 1, 0) (0, 1, 1, 1)
(0, 1, 0, 0) (1, 0, 0, 1)
(0, 1, 1, 0) (1, 0, 1, 1)
(1, 0, 0, 0) (1, 1, 0, 1)
(1, 0, 1, 0) (1, 1, 1, 0)
(1, 1, 0, 0) (1, 1, 1, 1)
Considerando prima gli insiemi composti da due variabili e poi quelli com-
posti da tre, si scopre che i seguenti insiemi sono coperture minime

{x1 , x4 } {x2 , x4 } {x3 , x4 } {x1 , x2 , x3 }.

Di conseguenza i vincoli sono i seguenti:

x1 + x 4 ≤ 1 x2 + x4 ≤ 1
x3 + x 4 ≤ 1 x1 + x2 + x3 ≤ 2.

Verifichiamo ora che i vertici ammissibili appartengono alla frontiera di al-


meno uno dei quattro vincoli definiti dalle coperture minime, come si evince
dalla presente tabella:

Vertici Appartenenza ai Vincoli


ammissibili x 1 + x4 ≤ 1 x2 + x4 ≤ 1 x3 + x4 ≤ 1 x1 + x2 + x3 ≤ 2
(0, 0, 0, 0) no no no no
(0, 0, 0, 1) si si si no
(0, 0, 1, 0) no no si no
(0, 1, 0, 0) no si no no
(0, 1, 1, 0) no si si si
(1, 0, 0, 0) si no no no
(1, 0, 1, 0) si no si si
(1, 1, 0, 0) si si no si
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 57

3.2 Problemi di programmazione intera e mista


Esercizio. Risolvere il seguente problema di programmazione lineare intera
mista:
max Z = 3x1 + 5x2 + x3
2x1 +x3 ≤ 6
x1 +2x2 +x3 ≤ 8
x1 , x 2 , x 3 ≥ 0
x1 , x2 variabili intere.
Svolgimento. Poniamo innanzitutto Z ∗ = −∞ come prima soluzione in-
combente. Il primo passo dell’algoritmo è quello di risolvere il rilassamen-
to lineare del problema completo, cancellando il vincolo di interezza delle
viariabili.

Tableau iniziale
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) 1 −3 −5 −1 0 0 0
x4 (1) 0 2 0 1 1 0 6
x5 (2) 0 1 2 1 0 1 8

Iterazione 1
Var. x1 x2 x3 x4 x5
base Eq. Z bi
Z (0) 1 − 21 0 3
2 0 5
2 20
x4 (1) 0 2 0 1 1 0 6
x2 (2) 0 1
2 1 1
2 0 1
2 4
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 58

Iterazione 2
Var. x1 x2 x3 x4 x5
base Eq. Z bi
7 1 5 43
Z (0) 1 0 0 4 4 2 2

x1 (1) 0 1 0 1
2
1
2 0 3
x2 (2) 0 0 1 1
4
− 12 1
2
5
2

Soluzione è (3, 5/2, 0) mentre il valore della funzione obiettivo è Z = 43/2.


Scegliamo x2 come variabile di branching in quanto è la prima variabile intera
a non avere un valore intero nella soluzione del rilassamento lineare. La parte
intera del valore di x2 è 2 quindi definiamo due sottoproblemi, uno con il
vincolo:
x2 ≤ 2
e l’altro con
x2 ≥ 3.
Riscriviamo i due sottoproblemi:

Sottoproblema 1
max Z = 3x1 + 5x2 + x3
2x1 +x3 ≤ 6
x1 +2x2 +x3 ≤ 8
x2 ≤ 2

x1 , x 2 , x 3 ≥ 0
e
Sottoproblema 2
max Z = 3x1 + 5x2 + x3
2x1 +x3 ≤ 6
x1 +2x2 +x3 ≤ 8

x1 , x3 ≥ 0, x2 ≥ 3.
Risolviamo il Sottoproblema 1 con il metodo del simplesso introducendo 3
variabili slack.
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 59

Iterazione 0
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −3 −5 −1 0 0 0 0
x4 (1) 0 2 0 1 1 0 0 6
x5 (2) 0 1 2 1 0 1 0 8
x6 (3) 0 0 1 0 0 0 1 2

Iterazione 1
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
Z (0) 1 −3 0 −1 0 0 5 10
x4 (1) 0 2 0 1 1 0 0 6
x5 (2) 0 1 0 1 0 1 −2 4
x2 (3) 0 0 1 0 0 0 1 2

Iterazione 2
Var. x1 x2 x3 x4 x5 x6
base Eq. Z bi
1 3
Z (0) 1 0 0 2 2 0 5 19
x1 (1) 0 1 0 1
2
1
2 0 0 3
x5 (2) 0 0 0 1
2
− 21 1 −2 5
2

x2 (3) 0 0 1 0 0 0 1 2

Soluzione è (3, 2, 0) mentre il valore della funzione obiettivo è Z = 19. Il


problema soddisfa il terzo criterio di fathoming e viene tagliato, mentre il
valore della funzione obiettivo diventa la nuova soluzione incombente:

Z ∗ = 19.
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 60

Per risolvere il sottoproblema 2 si deve effettuare il seguente cambio di


variabile
x02 = x2 − 3 ⇒ x2 = x02 + 3, x02 ≥ 0,
cosicchè il sottoproblema può essere riscritto nel seguente modo:

max Z = 3x1 + 5(x02 + 3) + x3


2x1 +x3 ≤ 6
x1 +2(x02 + 3) +x3 ≤ 8
x1 , x02 , x3 ≥ 0,
ovvero
max Z = 3x1 + 5x02 + x3 + 15
2x1 +x3 ≤ 6
x1 +2x2 +x3 ≤ 2
0

x1 , x2 , x03 ≥ 0.
Applichiamo il metodo del simplesso introducendo due variabili slack.

Iterazione 0
Var. x1 x3 x4 x5
base Eq. Z x02 bi
Z (0) 1 −3 −5 −1 0 0 15
x4 (1) 0 2 0 1 1 0 6
x5 (2) 0 1 2 1 0 1 2

Iterazione 1
Var. x1 x3 x4 x5
base Eq. Z x02 bi
Z (0) 1 − 21 0 3
2 0 5
2 20
x4 (1) 0 2 0 1 1 0 6
1 1 1
x02 (2) 0 2 1 2 0 2 1
CAPITOLO 3. L’ALGORITMO DI BRANCH-AND-BOUND 61

Iterazione 2
Var. x1 x3 x4 x5
base Eq. Z x02 bi
Z (0) 1 0 1 2 0 3 21
x4 (1) 0 0 −4 −1 1 −1 4
x1 (2) 0 1 2 1 0 2 2

Soluzione è (2, 0, 0), cioè (2, 3, 0), mentre il valore della funzione obietti-
vo è Z = 21. Il problema soddisfa il terzo criterio di fathoming e viene
tagliato mentre il valore della funzione obiettivo diventa la nuova soluzione
incombente:
Z ∗ = 21.
Inoltre poichè non ci sono altri sottoproblemi da risolvere la soluzione in-
combente appena trovata è anche quella ottima. Possiamo scrivere pertanto
il seguente albero delle soluzioni:

Completo Z = 21.5
(3, 5/2, 0)

∗ Z ∗ = 21
x2 ≤ 2 Z = 19 x2 ≥ 3
(3, 2, 0) (2, 3, 0)

F(3) F(3)
Capitolo 4

Esercizi di Ottimizzazione su
Reti

4.1 Il problema di minimo albero ricoprente


Esercizio. Sia assegnata una rete non orientata composta da 7 nodi indi-
viduati con lettere da A a G, tale che le distanze tra i questi sono riportate
nella seguente tabella:
A B C D E F G
A 10 8 6 4 4 5
B 10 11 10 4 5
C 7 4 10 6
D 3 7 2
E 8 5
F 6
Svolgimento. Identifichiamo innanzitutto il collegamento più breve, cioè
DG, quindi questo è il primo arco dell’albero che stiamo cercando

62
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 63

Il nodo più vicino a D o a G è in nodo E, quindi l’arco DE viene aggiunto


all’albero.
G

I nodi più vicini sono C e A, entrambi connessi a E, scegliamo l’arco EC.


CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 64

D C

3 4

E adesso scegliamo l’arco EA:

D C

3 4

E A
4
Adesso si sceglie il nodo F , connesso al nodo A da un arco di lunghezza 4.
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 65

D C

3 4

E A F
4 4
Resta il nodo B il cui collegamento più vicino è con il nodo F .

D C B

3 4 4

E A F
4 4

4.2 Il problema di cammino minimo


Esercizio. Determinare il cammino minimo della seguente rete che unisce i
nodi O e T :
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 66

3 4
A D G

5 4 2 9
6 3 3

8 2 6 8
O C F H T

4 6 2 5
5 1 2

B E I
7 6
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 67

Nodi scelti k−esimo


direttamente Nodi Distanza nodo Distanza Ultimo
k connessi ai nodi candidati totale vicino minima arco
non scelti
1 O B 4 B 4 OB
2 O A 5 A 5 OA
B C 4+5=9
3 O C 8 C 8 OC
A D 3+5=8 D AD
B C 4+5=9
4 B E 4 + 7 = 11 F 10 CF
C F 8 + 2 = 10
D F 8 + 3 = 11
5 B E 4 + 7 = 11 E 11 BE
C E 8 + 6 = 14
D G 8 + 4 = 12
F G 10 + 2 = 12
6 D G 8 + 4 = 12 G 12 DG
F G 10 + 2 = 12 FG
E H 11 + 2 = 13
7 F H 10 + 6 = 16 H 13 EH
E H 11 + 2 = 13
G H 12 + 3 = 15
8 E I 11 + 6 = 17 I 17 EI
G T 12 + 9 = 21
H T 13 + 8 = 21
9 G T 12 + 9 = 21 T 21 GT
H T 13 + 8 = 21 HT
I T 17 + 5 = 22

Abbiamo trovato tre possibili cammini minimi di lunghezza 21:

O −→ A −→ D −→ G −→ T
O −→ C −→ F −→ G −→ T
O −→ B −→ E −→ H −→ T.
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 68

Esercizio. Determinare il cammino minimo della stessa rete dell’esercizio


precedente supponendo che gli archi non siano orientati:
3 4
A D G

5 4 2 9
6 3 3

8 2 6 8
O C F H T

4 6 2 5
5 1 2

B E I
7 6
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 69

Nodi scelti k−esimo


direttamente Nodi Distanza nodo Distanza Ultimo
k connessi ai nodi candidati totale vicino minima arco
non scelti
1 O B 4 B 4 OB
2 O A 5 A 5 OA
B C 4+5=9
3 O C 8 C 8 OC
A D 3+5=8 D AD
B C 4+5=9
4 B E 4 + 7 = 11 F 10 CF
C F 8 + 2 = 10
D F 8 + 3 = 11
5 B E 4 + 7 = 11 E 11 BE
C E 8 + 6 = 14 FE
D G 8 + 4 = 12
F E 10 + 1 = 11
6 D G 8 + 4 = 12 G 12 DG
F G 10 + 2 = 12 FG
E H 11 + 2 = 13
7 F H 10 + 6 = 16 H 13 EH
E H 11 + 2 = 13
G H 12 + 3 = 15
8 E I 11 + 6 = 17 I 15 HI
G T 12 + 9 = 21
H I 13 + 2 = 15
9 G T 12 + 9 = 21 T 20 IT
H T 13 + 8 = 21
I T 15 + 5 = 20

Abbiamo trovato due possibili cammini minimi di lunghezza 20:


O −→ B −→ E −→ H −→ I −→ T
O −→ C −→ F −→ E −→ H −→ I −→ T
Rispetto all’esercizio precedente osserviamo che il cammino minimo ha lunghez-
za inferiore ma attraversa un numero di archi superiore.
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 70

Esercizio. Determinare il cammino minimo della seguente rete che unisce i


nodi O e T :
6
A C
3
3 4
4 F
4 6
3
O D T
2
2 5
5
3 G
7
3
B E
8

Nodi scelti k−esimo


direttamente Nodi Distanza nodo Distanza Ultimo
k connessi ai nodi candidati totale vicino minima arco
non scelti
1 O B 2 B 2 OB
2 O A 3 A 3 OA
B C 2+5=7
3 A D 3+4=7 D 7 AD
A E 3+4=7 E AE
B C 2+5=7 C BC
4 C F 7 + 3 = 10 G 9 DG
D G 7+2=9
E F 7 + 3 = 10
E G 7 + 3 = 10
5 C F 7 + 3 = 10 F 10 CF
D F 7 + 3 = 10 DF
E F 7 + 3 = 10 EF
G T 9 + 5 = 14
6 F T 10 + 6 = 16 T 14 GT
G T 9 + 5 = 14
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 71

Abbiamo trovato un unico cammino minimo di lunghezza 14:


O −→ A −→ D −→ G −→ T.
Esercizio. Determinare il cammino minimo della seguente rete che unisce i
nodi O e T :
2
A D

3 2 2 5
5

4 2
O B E 7 T

4 2 3 5
6

C F
6

Nodi scelti k−esimo


direttamente Nodi Distanza nodo Distanza Ultimo
k connessi ai nodi candidati totale vicino minima arco
non scelti
1 O A 3 A 3 OA
2 O B 4 B 4 OB
C 4 C 4 OC
A D 3+2=5
E 3+2=5
3 A D 3+2=5 D 5 AD
E 3+2=5 E 5 AE
B E 4+2=6
C E 4+2=6
4 C F 4 + 6 = 10 F 8 EF
E F 5+3=8
D T 5 + 5 = 10
5 D T 5 + 5 = 10 T 10 DT
F T 8 + 5 = 13
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 72

Abbiamo trovato un unico cammino minimo di lunghezza 10:

O −→ A −→ D −→ T.

4.3 Il problema di massimo flusso


Esercizio. Determinare il massimo flusso nella seguente rete:
5
A G
3 5
7 8
D
6 6
6 6
O B F T
2 6
9 8
E
5 5

4
C H

Innanzitutto riscriviamo la medesima rete evidenziando il flusso residuo in-


iziale su ogni arco (che scriviamo all’inizio di ciascun arco), e che inizialmente
coincide con la capacità massima dell’arco stesso, con il flusso utilizzato (che
scriviamo al termine di ciascun arco), e che inizialmente è uguale a zero per
tutti gli archi.
5 0
A 3 0 G
0 8
0 5
0 D 6
7 0
6 0
6 0 6 0
O B 2 0 F T
9 0 6 0
0 E 5

5 0
0 8
C H
4 0
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 73

I Iterazione: Cammino aumentante: O − C − H − T , c∗ = min{9, 4, 8} = 4:


5 0
A 3 0 G
0 8
0 5
0 D 6
7 0
6 0
4 6 0 6 0 4
O B 2 0 F T
5 0 6 4
0 E 5

5 0
4 4
C H
0 4
II Iterazione: Cammino aumentante: O−C−E−H−T , c∗ = min{5, 5, 5, 4} =
4:
5 0
A 3 0 G
0 8
0 5
0 D 6
7 0
6 0
8 6 0 6 0 8
O B 2 0 F T
1 0 6 8
4 E 1

1 4
8 0
C H
0 4
III Iterazione: Cammino aumentante: O−C−E−F −T , c∗ = min{1, 1, 6, 6} =
1:
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 74

5 0
A 3 0 G
0 8
0 5
0 D 6
7 0
6 0
9 6 0 5 1 9
O B 2 1 F T
0 0 5 8
5 E 1

0 4
9 0
C H
0 4
IV Iterazione: Cammino aumentante: O−B−E−F −T , c∗ = min{6, 2, 5, 5} =
2:
5 0
A 3 0 G
0 8
0 5
0 D 6
7 0
6 0
11 4 2 3 3 11
O B 0 3 F T
0 2 3 8
5 E 1

0 4
9 0
C H
0 4
V Iterazione: Cammino aumentante: O−B−D−F −T , c∗ = min{3, 6, 6, 3} =
3:
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 75

5 0
A 3 0 G
0 8
0 5
3 D 3
7 0
3 3
14 1 5 0 6 14
O B 0 3 F T
0 2 3 8
5 E 1

0 4
9 0
C H
0 4
VI Iterazione: Cammino aumentante: O−B−D−G−T , c∗ = min{1, 3, 5, 8} =
1:
5 0
A 3 1 G
0 7
0 4
4 D 3
7 1
2 3
15 0 6 0 6 15
O B 0 3 F T
0 2 3 8
5 E 1

0 4
9 0
C H
0 4
VII Iterazione: Cammino aumentante: O − A − G − T , c∗ = min{7, 5, 7} = 5:
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 76

0 5
A 3 1 G
5 2
0 4
4 D 3
2 6
2 3
20 0 6 0 6 20
O B 0 3 F T
0 2 3 8
5 E 1

0 4
9 0
C H
0 4
VIII Iterazione: Cammino aumentante: O−A−D−G−T , c∗ = min{2, 3, 4, 2} =
2:
0 5
A 1 3 G
7 0
2 2
4 D 3
0 8
2 3
22 0 6 0 6 22
O B 0 3 F T
0 2 3 8
5 E 1

0 4
9 0
C H
0 4
Il flusso trovato è ottimo perchè esiste un taglio (esattamente OA−OB −OC
che ha flusso residuo zero), anzi per la verità ne esiste anche un altro (cioè
GT − F T − HT ) che ha flusso residuo nullo.
Esercizio. Determinare il massimo flusso nella seguente rete:
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 77

C
9 5

5
A F
7 4 8 3

2 7
O D T
8 3 3 5

3
B G
4 1

Riscriviamo la rete evidenziando il flusso residuo che, inizialmente coincide


con la capacità massima degli archi.

0
C 5

9 0
5 0
0
A 4 0
F 3

7 0 8 0
2 0 7 0
O D T
8 0 3 0

3 0
0 5
3 0
B 4 0
G

0 1

E
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 78

I Iterazione: Cammino aumentante: O − B − G − T , c∗ = min{8, 3, 5} = 3:

0
C 5

9 0
5 0
0
A 4 0
F 3

7 0 8 0
3 2 0 7 0 3
O D T
5 0 3 3

3 0
3 2
0 3
B 4 0
G

0 1

II Iterazione: Cammino aumentante: O−B−D−G−T , c∗ = min{5, 3, 3, 2} =


2:
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 79

0
C 5

9 0
5 0
0
A 4 0
F 3

7 0 8 0
5 2 0 7 0 5
O D T
3 2 1 5

1 2
5 0
0 3
B 4 0
G

0 1

III Iterazione: Cammino aumentante: O − B − D − T , c∗ = min{3, 1, 7} = 1:

0
C 5

9 0
5 0
0
A 4 0
F 3

7 0 8 0
6 2 0 6 1 6
O D T
2 3 1 5

0 2
6 0
0 3
B 4 0
G

0 1

E
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 80

IV Iterazione: Cammino aumentante: O − D − T , c∗ = min{2, 6} = 2:

0
C 5

9 0
5 0
0
A 4 0
F 3

7 0 8 0
8 0 2 4 3 8
O D T
2 3 1 5

0 2
6 0
0 3
B 4 0
G

0 1

V Iterazione: Cammino aumentante: O − A − D − T , c∗ = min{7, 4, 4} = 4:

0
C 5

9 0
5 0
4
A 0 0
F 3

3 4 8 0
12 0 2 0 7 12
O D T
2 3 1 5

0 2
6 0
0 3
B 4 0
G

0 1

E
CAPITOLO 4. ESERCIZI DI OTTIMIZZAZIONE SU RETI 81

VI Iterazione: Cammino aumentante: O − A − F − T , c∗ = min{3, 5, 3} = 3:

0
C 5

9 0
2 3
7
A 0 0
F 0

0 4 8 3
15 0 2 0 7 15
O D T
2 3 1 5

0 2
6 0
0 3
B 4 0
G

0 1

Potrebbero piacerti anche