Esercizi scelti
di
Calcolo Matriciale
e
Ricerca Operativa
L’obiettivo di questa raccolta è quello di fornire una panoramica completa degli esercizi
di esame. Per ciascun esercizio si è cercato di fornire il maggior numero di dettagli sui
singoli passaggi. Inoltre ogni esercizio è corredato di uno o più punti di attenzione per
evidenziarne gli aspetti caratteristici.
La raccolta è organizzata in tre parti:
• esercizi di modellazione,
• esercizi di programmazione lineare,
• altri esercizi.
Gli esercizi sono tratti dalle prove d’esame degli ultimi anni. Le relative tracce di soluzione
sono state interamente riviste in modo da correggerne eventuali errori.
Tuttavia, è possibile che qualche errore sia ancora presente. Invitiamo quindi gli studenti
ad utilizzare questa raccolta in modo critico.
Change Log
A.A. 2019-20:
Aggiunto l’esercizio di modellazione “Approvvigionamento dell’impresa edile con sconti”.
A.A. 2017-18:
È stata aggiunta la sezione relativa ai modelli sul “Vecio”(T M ) ; gli esercizi che vertono sul
tema della dualità sono stati taggati con un doppio asterisco (**) in accordo a quanto
fatto per gli appunti del corso.
i
Indice
1 Modellazione 1
Un problema di produzione con approvvigionamento . . . . . . . . . . . . . . . 1
Composizione di fondi di investimento . . . . . . . . . . . . . . . . . . . . . . . 2
Piano di assemblamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Due modelli di PL in sequenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sale Operatorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Problema del resto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Approvvigionamento dell’impresa edile con sconti . . . . . . . . . . . . . . . . . 11
3 Programmazione Lineare 23
Esercizio Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Simplesso con partenza da base data . . . . . . . . . . . . . . . . . . . . . . . . 26
Problema di prima fase ed analisi di sensitività . . . . . . . . . . . . . . . . . . 29
Analisi di sensitività: funzione obiettivo . . . . . . . . . . . . . . . . . . . . . . 31
Analisi di sensitività: vincoli. Soluzione duale con metodo grafico . . . . . . . . 33
Prima fase e sistema di disequazioni . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Altri esercizi 39
PL: vero o falso? /1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
PL: vero o falso? /2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
PL: vero o falso? /3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Gauss-Jordan /1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Gauss-Jordan /2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
iii
Capitolo 1
Modellazione
Esercizio 1.1 (Un problema di produzione con approvvigionamento). Una fabbrica pro-
duce due modelli di giocattoli identificati con A e B. Entrambi i modelli fanno uso di tre
tipi di componenti 1, 2, 3 utilizzati in quantità diverse. Ogni unità del modello A richiede
tre componenti di tipo 1, uno di tipo 2 e 5 di tipo 3. Ogni unità del modello B richiede
un componente di tipo 1, tre di tipo 2 e tre di tipo 3. I fornitori vendono i tre componenti
impaccati in tre tipi di confezioni I, II, III, ognuna delle quali contiene i tre componenti
in differenti quantità ed ha un diverso costo.
Soluzione suggerita. Le decisioni richieste dal problema riguardano sia gli acquisti di
confezioni che i volumi produttivi di giocattoli A e B — queste ultime sono inevitabili
in quanto determinano le quantità da approvvigionare dei singoli componenti. Si posso-
no quindi usare due variabili intere non negative xA , xB per le quantità di giocattoli e
1
2 Capitolo 1. Modellazione
tre variabili intere non negative yI , yII , yIII per le quantità di confezioni di tipo I, II, III
acquistate. Allora la funzione obiettivo del modello si scrive semplicemente come segue:
Bisogna produrre almeno 5000 giocattoli, dove sia A che B non rappresentano meno del
30% del totale.
(1.2) xA + xB ≥ 5000
(1.3) xA ≥ 0.3(xA + xB )
(1.4) xB ≥ 0.3(xA + xB ).
Bisogna inoltre approvvigionarsi dei componenti nelle quantità richieste. In base al testo,
con volumi produttivi pari a xA e xB occorreranno almeno (3xA + xB ) componenti di tipo
1, (xA + 3xB ) di tipo 2 e (5xA + 3xB ) di tipo 3. Quindi:
(1.8) z1 + z2 + z3 ≥ 1
mentre il secondo vincolo mette in relazione tale decisione con le quantità da acquistare
Focus. Questo esercizio si caratterizza per l’uso di due tipi di variabili decisionali
per rappresentare l’approvvigionamento e la produzione, a differenza di altri modelli
sviluppati per problemi simili. Si invita a riflettere sulla necessità di questa scelta.
Esercizio 1.2 (Composizione di fondi di investimento). Il sig. Ibrahim Rossi vuole im-
pegnare del denaro in alcuni fondi di investimento. A tal fine ha selezionato cinque fondi,
dei quali conosce il prezzo unitario delle quote, il rendimento atteso a un anno e un indice
numerico di rischio (più alto il numero, maggiore il rischio). La situazione è rappresentata
nella seguente tabella,
3
3
ci xi ≤ C, i = 1, . . . , 5, differenziare l’investimento,
10
2
c1 x1 + c2 x2 + c4 x4 ≥ C, almeno il 40% con rischio ≤ 3.5,
5
5
X 5
X
qi xi ≤ 2.8 xi , rischio medio pesato.
i=1 i=1
L’ultimo vincolo definisce una media pesata sul numero di quote; volendo mediare sul
capitale si può usare
X 5
qi ci xi ≤ 2.8C
i=1
(entrambe le scelte sono corrette e dipendono dalle assunzioni che si possono fare inter-
pretando diversamente le specifiche nel testo).
Per quanto riguarda invece il punto (2), occorre innanzitutto introdurre un’ulteriore varia-
bile decisionale binaria per modellare la scelta di investimento o meno su un certo fondo,
ovvero zi che assumerà valore 1 se si sceglie di investire nel fondo i, 0 altrimenti, con
i = 1, . . . , 5.
Il primo vincolo modella la volontà di investire su al più 3 fondi
5
X
zi ≤ 3
i=1
mentre il secondo lega la decisione inerente l’investimento su un certo fondo con l’acquisto
delle quote, ovvero
xi ≤ Mi zi , i = 1, . . . , 5.
Si osserva che Mi può esser facilmente stimato per ogni singolo fondo, ovvero
200000
Mi = + 1, i = 1, . . . , 5.
ci
Focus. I tratti caratteristici di questo esercizio sono diversi: l’uso della variabile
decisionale di supporto C per definire il capitale investito in modo da rendere
più pulita la scrittura dei vincoli; la scrittura dei vincoli di “media” e la loro
interpretazione. Infine si osserva che, in relazione al vincolo del 40%, il modello è
generalizzabile sfruttando un parametro 0−−1 determinato in fase di preprocessing,
come discusso nell’esempio 1.4.7 degli appunti.
5
Esercizio 1.3 (Piano di assemblamento). Il sig. Ibrahim Rossi possiede una società di
ingegneria che deve gestire un progetto complesso costituito da una serie di attività inter-
connesse tra loro. Il seguente grafo illustra le precedenze che devono essere garantite tra
tali attività: ogni arco i → j indica che l’attività i deve essere completamente conclusa
prima di cominciare la j.
2 5 8
1 3 6 10
4 7 9
Att. Durata Rilascio Scad. Costo Att. Durata Rilascio Scad. Costo
1 3 6 8 28 2
2 4 2 7 2 45
3 7 15 30 4 8 8 5
4 6 25 2 9 3
5 5 40 3 10 1
(a) Con il suo fedele gatto Purrer, il signor Rossi elabora un programma lineare che
permette di determinare i giorni di inizio delle attività per terminare il progetto il più
presto possibile. Scrivere il programma lineare elaborato dal signor Rossi. (6 punti)
(b) Per alcune attività è specificato anche un costo del lavoro straordinario espresso in
migliaia di euro al giorno (ultima colonna della tabell). Per queste attività, è possibile
ridurne la durata di un numero intero di giorni, allocando loro forza lavoro straordina-
ria al costo giornaliero specificato. Ad esempio l’attività 6, che dura 8 giorni, potrebbe
essere compressa alla durata di 6 giorni pagando 4000 euro di lavoro straordinario.
Nessuna attività può comunque essere ridotta a meno di due giorni. Il signor Rossi
ha un budget per il lavoro straordinario limitato a 30000 euro. Come può modificare
il modello per fargli decidere a quali attività allocare lo straordinario e in che misura?
(5 punti)
Descriviamo prima i vincoli più semplici, ovvero quelli sul rilascio e sulle scadenze delle
varie attività.
Rilascio: x3 ≥ 15, x4 ≥ 25, x6 ≥ 28.
Scadenza: x3 + 7 ≤ 30, x5 + 5 ≤ 40, x7 + 2 ≤ 45.
Introduciamo i vincoli di precedenza, ovvero quei vincoli che determinano l’inizio di
un’attività soltanto dopo la conclusione dell’attività (o delle attività) che la precedono.
Abbiamo quindi:
attività 2: x2 ≥ x1 + 3, x2 ≥ x3 + 7
attività 3: x3 ≥ x1 + 3
attività 4: x4 ≥ x1 + 3
attività 5: x5 ≥ x2 + 4
attività 6: x6 ≥ x2 + 4, x6 ≥ x3 + 7, x6 ≥ x7 + 2
attività 7: x7 ≥ x4 + 6
attività 8: x8 ≥ x6 + 8
attività 9: x9 ≥ x7 + 2
attività 10: x10 ≥ x6 + 8, x10 ≥ x8 + 8, x10 ≥ x9 + 3.
min z = x10
visto che minimizzare il momento di inizio dell’ultima attività corrisponde anche a mini-
mizzare il momento di fine di tutte le attività. Nota che si potrebbe anche fissare il valore
di x1 = 0.
Per la parte (b), introduciamo un’ulteriore variabile decisionale, ovvero
yi ≤ t1 − 2, i = 1, . . . , 10
modella il fatto che ogni attività non può essere ridotta a meno di 2 giorni. Ponendo il
parametro ci uguale al costo dello straordinario delle corrispondenti attività, il vincolo
10
X
ci yi ≤ 30000
i=1
Focus. In quest esercizio, i punti sui quali concentrare l’attenzione sono la scrittura
della funzione obiettivo e dei vincoli di precedenza tra attività, senza e con l’uso
della variabile y.
Esercizio 1.4 (Due modelli di PL in sequenza). (Parte A: 5 punti) Alla luce di garantire
una copertura assistenziale 24 ore al giorno, 7 giorni su 7, è necessaria una riorganizzazione
territoriale dei medici di base riunendoli in ambulatori di quartiere. Immaginiamo quindi
che Torino venga divisa in m quartieri, ciascuno con una popolazione pari a Pj persone,
j = 1, . . . , m. Per servire gli m quartieri, sono stati aperti n ambulatori di quartiere,
ciascuno con capacità di servizio pari a Ci persone, i = 1, . . . , n. Sono date infine le
distanze dij tra ogni coppia “ambulatorio i – quartiere j”.
Scrivere il programma lineare per assegnare la popolazione dei quartieri agli ambulatori
in modo da minimizzare la distanza totale dell’assegnamento.
(Parte B: 6 punti) La soluzione del problema precedente determina un carico di lavoro
Li , in termini di numero di persone da assistere, per ogni ambulatorio i. Sono disponibili
k medici, ciascuno con uno stipendio mensile sh ed una capacità di lavoro, in termini di
pazienti, ℓh , h = 1, . . . , k.
Considerato che un medico può prestare servizio in un unico ambulatorio, scrivere il
programma lineare per assegnare tutti i medici disponibili agli ambulatori in modo da
garantire l’assistenza alla popolazione assegnata minimizzando il massimo costo dell’intero
monte stipendi dei medici assegnati ad un ambulatorio.
La soluzione P
del problema della Parte A determina il carico di lavoro di ogni ambulatorio,
ovvero Li = m j=1 xij . Il problema della Parte B consiste nell’assegnare i medici dispo-
nibili in modo da garantire la copertura del carico di lavoro di ogni ambulatorio. A tale
scopo introduciamo la seguente variabile decisionale:
(
1 se medico h è assegnato all’ambulatorio i
yih = , i = 1, . . . , n e h = 1, . . . , k.
0 altrimenti
Il modello è il seguente:
min z =w
k
X
sh yih ≤ w i = 1, . . . , n
h=1
n
X
yih = 1 h = 1, . . . , k
i=1
k
X
ℓh yih ≥ Li i = 1, . . . , n
h=1
Il problema consiste quindi nel selezionare un certo numero di pazienti dalla lista di attesa
assegnandoli ad una ed una sola sala operatoria in uno dei 5 giorni disponibili in modo
che la durata totale degli interventi assegnati alla sala operatoria (in ciascuno dei giorni
disponibili) non ecceda il tempo massimo a disposizione. Denotiamo con t i giorni da 1 a
5.
L’obiettivo è quello di minimizzare il costo sociale dei pazienti non operati.
Suggerimento: la decisione deve tenere in considerazione le tre dimensioni, ovvero
paziente, sala operatoria s e giorno di intervento.
(a) Scrivere il programma lineare per determinare il piano operatorio. (8 punti)
(b) Modificare il programma tenendo conto del fatto che ogni giorno almeno una sala
operatoria non può operare più di 300 minuti al fine di lasciare spazio libero per
gestire pazienti provenienti dal pronto soccorso. (3 punti)
Il primo vincolo X
xpst ≤ 1 ∀p
st
dice che ogni paziente p può essere selezionato ed assegnato al più una volta. Il secondo
vincolo X
dp xpst ≤ 480 ∀s, ∀t
p
garantisce che la somma dei tempi operatori dei pazienti assegnati alla sala operatoria
s in un dato giorno t non eccedano la soglia massima di 480 minuti. Infine, la funzione
obiettivo è la seguente: !
X X
min cp 1 − xpst .
p st
Per la seconda parte, occorre introdurre una ulteriore variabile decisionale, ovvero
(
1 se sala operatoria s nel giorno t lavora al più 300 minuti
yst = .
0 altrimenti
Il primo vincolo garantisce che ogni giorno una sala operatoria lavora a regime ridotto,
ovvero X
yst ≥ 1 ∀t
s
10 Capitolo 1. Modellazione
mentre il secondo vincolo garantisce la relazione tra i due livelli decisionali, ovvero
X
dp xpst ≤ 480 (1 − yst) + 300yst ∀s, ∀t
p
Focus. In questo esercizio è utile soffermarsi per riflettere sulla definizione di fun-
zione obiettivo, e sull’utilizzo di una variabile a 3 indici. Tale variabile risulta
necessaria per legare insieme paziente, sala operatoria e giorno nella singola deci-
sione. Ovvero, per legare le tre componenti del sistema in esame che sono toccate
dalla singola decisione.
Il primo vincolo impone che si possano usare solo le banconote disponibile per ciascun
taglio
xi ≤ bi i ∈ N
11
Per il punto (b) è necessario introdurre un vincolo che impone l’uso di almeno una banco-
nota da 10 e (il taglio numero 4 dei 5 possibili) quando viene usata almeno una banconota
da 20 e (il taglio numero 3). A tale scopo è necessario introdurre delle variabili binarie
zi a valori in 1 se la banconota di tipo i ∈ N viene utilizzata, 0 altrimenti, e sostituire i
vincoli xi ≤ bi con il seguente
xi ≤ bi zi i ∈ N.
L’uso della banconota da 10 e viene quindi imposta dal vincolo
x4 ≥ z3 .
Nota che la soluzione proposta per il punto (b) è un pelino più generale di quella effetti-
vamente richiesta nell’esercizio.
Infine, per il punto (c) basta imporre il seguente vincolo logico:
1 − z2 ≥ z3 .
Focus. In questo esercizio è utile soffermarsi a riflettere sull’uso dei vincoli logici
per definire l’uso delle banconote, e sull’impiego sia delle quantità di banconote che
del loro valore.
Esercizio 1.7 (Approvvigionamento dell’impresa edile con sconti). Dovete pianificare gli
acquisti per un’impresa edile. Nello specifico, la ristrutturazione di uno stabile richiede
l’acquisto di 3 tipologie differenti di pavimentazione: plance di legno chiaro, piastrelle
medie e piastrelle grandi. La richiesta è di 300 mq di legno chiaro mentre le piastrelle
richieste sono 500 mq per quelle medie e 600 mq per quelle grandi. Ogni tipologia di
pavimentazione è venduta in pacchi che coprono 0.25 mq ognuno. Per l’acquisto vi potete
rifornire da 3 fornitori differenti che sono in grado di fornire tutte le tipologie, i costi sono
riportati in tabella (in euro)
Inoltre, ognuno dei fornitori applica uno sconto ogni volta che vengono acquistati un
numero determinato di pacchi di una specifica tipologia. Il fornitore 1, ogni 4 pacchi
12 Capitolo 1. Modellazione
dove le variabili a singolo apice rappresentano forniture a prezzo pieno e quelle a doppio
apice forniture a prezzo scontato.
Il modello risultante è quindi cosı̀ composto. I seguenti vincoli modellano la misurazione
della scontistica:
min z = 15x′A1 +16xA2 +17xA3 +12x′A1 +9xB1 +8x′B2 +7xB3 +7x′′B2 +10xC1 +12xC2 +11x′C3 +10x′′C3
Per la parte (b), è sufficiente usare tre variabili logiche y1 , y2, y3 che valgono 1 se la
fornitura di plance si ordina dal fornitore 1, 2, 3 rispettivamente, e aggiungere
y1 + y2 + y3 = 1
xA1 ≤ My1
xA2 ≤ My2
xA3 ≤ My3
y1 , y2, y3 ∈ {0, 1}.
Focus. In questo esercizio – standard nella maggior parte delle sue componenti – è
utile riflettere sull’uso delle variabili aggiuntive e dei relativi vincoli per modellare
la misurazione della scontistica.
14 Capitolo 1. Modellazione
Capitolo 2
Lo chef ritiene di aver bisogno per il prossimo periodo di almeno 100 Kg e non più di 140 Kg
complessivi di verdura. Inoltre, sulla base delle richieste passate dei clienti, ritiene che le
verdure acquistate debbano essere cosı̀ ripartite.
• Almeno il 25% in peso di cavoli.
15
16 Capitolo 2. Il caso del Vecio(T M ) : modelli
Soluzione suggerita. Come primo passo, si osserva che i pacchi di verdura portano 19,
18, 16 e 12 chili di verdura. La decisione da rappresentare all’interno del modello è quella
di quanti pacchi di verdura acquistare, a seconda del tipo. Introduciamo la seguente
variabile decisionale, ovvero
Introduciamo una variabile decisionale di supporto P che misura il peso della verdura
acquistata, ovvero
P = 19x1 + 18x2 + 16x3 + 12x4 .
Allora, i vincoli sul minimo e massimo peso di verdura da acquistare si scrivono come
P ≤ 140 e P ≥ 100 .
y1 + y2 + y3 + y4 ≤ 3
xi ≤ Myi , i = 1, . . . , 4 .
per limitare a zero il numero dei pacchi del tipo non scelto.
17
con xij ∈ Z+ e i = 1, . . . , 3 e j = 1, . . . , 3.
I vincoli che modellano il trasporto sono quindi i seguenti:
X3
10 per i = 1 X 3 5 per j = 1
xij = 17 per i = 2 e xij = 12 per j = 2 .
j=1
13 per i = 3 i=1
23 per j = 3
Il vincolo
y1 + y2 + y3 = 1
18 Capitolo 2. Il caso del Vecio(T M ) : modelli
x1j ≤ 10yj , j = 1, 2, 3
mettono in relazione le quantità trasportate con la decisione sul veicolo. Si osserva che
in realtà la bicicletta, per questioni di capacità massima, non può trasportare tutti le
ordinazioni di “Aliento de Fuego”. Quindi nella definizione della variabile yj e nei vincoli
susseguenti si può omettere il caso j = 1 e considerare solo j = 2, 3.
garantisce che ogni avventore, se scelto, venga assegnato ad un solo tavolo mentre il
vincolo
Xm
xij ≤ Mj , j = 1, . . . , n
i=1
max z ≡ y.
Dobbiamo inoltre aggiungere dei vincoli affinché y assuma il valore minimo tra le somme
delle preferenze di ciascun tavolo, ovvero
m
X
pij xij ≥ y, j = 1, . . . , n.
i=1
Soluzione suggerita. Utilizzando variabili binarie xij = 1 iff si apre un locale nel posto
i con dimensione j (i = 1, . . . , 20, j = P, M, G) si può formulare il seguente modello.
20
X 20
X 20
X
min z = 300000 xiP + 400000 xiM + 500000 xiG
i=1 i=1 i=1
soggetto a
G
20 X
X
xij ≤ 12
i=1 j=P
G
X
xij ≤ 1 i = 1, 2, . . . , 20
j=P
G
4 X
X
(TO) xij ≥ 3
i=1 j=P
G
6 X
X
(VC) xij ≥ 1
i=5 j=P
G
8 X
X
(AL) xij ≥ 1
i=7 j=P
G
11 X
X
(NO) xij ≥ 1
i=9 j=P
G
14 X
X
(AT) xij ≥ 1
i=12 j=P
G
18 X
X
(CN) xij ≥ 3
i=15 j=P
G
20 X
X
(VB) xij ≥ 1
i=19 j=P
20
X 20
X 20
X
200 xiP + 500 xiM + 700 xiG ≥ 5000
i=1 i=1 i=1
X X X
200 xiP + 500 xiM + 700 xiG ≤ 1000
i=7,8,12,13,14 i=7,8,12,13,14 i=7,8,12,13,14
xij ∈ {0, 1} .
Per la parte (b), si può usare una variabile logica y che va posta a 1 se si aprono almeno
21
Il Vecio vuole acquistare e usare interamente numeri interi di confezioni, e per farlo è
anche disposto a produrre più di 30 Kg di salsa, ma comunque non più di 40.
(a) Scrivere il programma lineare che permette al Vecio di produrre la salsa a costo
minimo, nelle quantità specificate. (7 punti)
(b) Modificare il programma lineare in modo che il Vecio utilizzi solo tre tipi di confezioni
sulle quattro disponibili. (4 punti)
22 Capitolo 2. Il caso del Vecio(T M ) : modelli
soggetto a
yA + yB + yC + yD ≤ 3
xA ≤ MyA
xB ≤ MyB
xC ≤ MyC
xD ≤ MyD .
Capitolo 3
Programmazione Lineare
23
24 Capitolo 3. Programmazione Lineare
x2 ≥ 0 – è rappresentata in figura:
x2
B
C
A
0(0, 0)
x1
0 D A(0, 1)
B( 34 , 47 )
C(3, 1)
D(3, 0)
Le coordinate dei vertici del politopo 0, A e D sono ottenute in modo intuitivo. Il vertice
C = (3, 1) si ottiene sostituendo x1 = 3. Il vertice B invece si ottiene risolvendo il mini
sistema
( (
x1 + 3x2 = 6 x1 = 6 − 3x2 x1 = 34
=⇒ 7 =⇒
−x1 + x2 = 1 x2 = 1 + 6 − 3x2 ⇐⇒ x2 = x2 = 47
4
Applicando il metodo delle rette di isoprofitto (oppure enumerando i valori dei vertici
visto che la regione ammissibile è un politopo), si trova che la soluzione ottima è il vertice
B, con valore z ∗ = 31
4
.
La forma standard associata al problema dato è la seguente:
Esse sono ottenute sostituendo le coordinate dei vertici (x1 , x2 ) nei vincoli della forma
standard. Ad esempio, la soluzione di base associata al vertice B = ( 43 , 74 ) è ottenuta
come:
3 7 3 7
x1 + 3x2 + x3 = 6 4
+ 3 4
+ x 3 = 6 x3 = 6 − 4 − 3 4
−x1 + x2 + x4 = 1 =⇒ − 34 + 47 + x4 = 1 =⇒ x4 = 1 + 43 − 74
3
x1 + x5 = 3 + x = 3 x5 = 3 − 43
4 5
da cui x3 = x4 = 0 e x5 = 94 , oltre a x1 = 3
4
e x2 = 47 .
L’algoritmo del simplesso si può applicare a partire dalla base {x3 , x4 , x5 } ottenendo
quanto segue.
x3 = 6 − x1 − 3x2
1 3 1 0 0 6
T(B 0 ) = 1 1 0 1 0 1 x4 = 1 + x1 − x2
1 0 0 0 1 3
x5 = 3 − x1
z = 0 + x1 + 4x2
x1 , . . . , x5 ≥ 0
x3 = 3 − 4x1 + 3x4
4 0 1 −3 0 3
T(B 1 ) = −1 1 0 1 0 1 x2 = 1 + x1 − x4
1 0 0 0 1 3
x5 = 3 − x1
z = 4 + 5x1 − 4x4
x1 , . . . , x5 ≥ 0
3 1 3
1 0 14 − 34 0 3
x1 = 4 − 4 x3 + 4 x4
4
T(B 2 ) = 0 1 14 1
4
0 7
4
x2 = 47 − 14 x3 − 41 x4
1 3 9
0 0 −4 4 1
x5 = 94 + 41 x3 − 34 x4
4
31 5 1
z= − x3 − x4
4 4 4
x1 , . . . , x5 ≥ 0
Ovvero, il simplesso si muove dal vertice 0, spostandosi sul vertice A per terminare sul
vertice B.
Il problema duale è
min w =6u1 + u2 + 3u3
soggetto a u1 −u2 +u3 ≥1 (x1 )
3u1 +u2 ≥4 (x2 )
u1 ≥0 (x3 )
u2 ≥0 (x4 )
u3 ≥0 (x5 )
26 Capitolo 3. Programmazione Lineare
Esercizio 3.2 (Simplesso con partenza da base data). È dato il seguente programma
lineare.
1
min z = x1 − x2
2
soggetto a
2x1 + x2 ≥ 3
−x1 + 2x2 ≥ 1
x1 ≤ 3
x1 , x2 ≥ 0.
4
Sa
3 b
2 b
1 b
(1, 1)
−1 1 2 3 4 5
−1
−2
Il problema riformulato in forma standard è il seguente:
1
max z = − x1 + x2
2
soggetto a
2x1 + x2 − x3 = 3
−x1 + 2x2 − x4 = 1
x1 + x5 = 3
x1 , . . . , x5 ≥ 0.
Come si osserva anche dal grafico della regione ammissibile, il punto (1, 1) è un vertice
della regione e quindi ad esso è associata sicuramente una certa base, che ora andiamo a
determinare esplicitando le variabili x1 e x2 nel problema in forma standard. Imponendo
x1 = x2 = 1, le equazioni della forma standard sono soddisfatte solo se x3 = x4 = 0 e
x5 = 2; il vertice in esame corrisponde quindi alla base {A1 , A2 , A5 }. La matrice di base
è quindi
2 1
2 1 0 5
− 5
0
AB = −1 2 0 =⇒ A−1 B =
1 2
0
5 5
2 1
1 0 1 −5 5 1
La riformulazione può essere calcolata direttamente moltiplicando a sinistra la matrice
completa (A | b) per la A−1
b .
0 − 25 15 0
2 1 −1 0 0 3 1 1
A−1
B × −1 2 0 −1 0 1 = 0 1 − 51 − 25 0 1 .
1 0 0 0 1 3 0 0 25 − 15 1 2
28 Capitolo 3. Programmazione Lineare
Dovendo ottenere una matrice identità 3, la stessa base può anche essere ottenuta osser-
vando che in
2 1 −1 0 0 3
−1 2 0 −1 0 1
1 0 0 0 1 3
la colonna A5 è già ridotta con 1 sulla terza riga; che, di conseguenza, l’operazione di
pivot sulla colonna A1 non può che essere fatta sul 2 visto che -1 è negativo; infine, sulla
colonna A2 non resta che il 2 libero, come elemento di pivot.
La riformulazione sulla base data corrisponde a:
x1 = 1 + 52 x3 − 15 x4
x2 = 1 + 51 x3 + 52 x4
x5 = 2 − 25 x3 + 51 x4
z = 21 + 12 x4 .
La base B non è ottima. Quindi x4 entra in base mentre dalla base esce x1 . Si passa
quindi, con un singolo passo di pivot, alla
x4 = 5 − 5x1 +2x3
x2 = 3 − 2x1 + x3
x5 = 3 − x1
z = 3 − 25 x1 + x3
A questo punto si osserva che il problema è illimitato, come d’altronde si sarebbe evinto
studiando le rette di isoprofitto nel metodo grafico.
soggetto a
2u1 − u2 + u3 ≥ − 12
u1 + 2u2 ≥ 1
−u1 ≤ 0
−u2 ≤ 0
u3 ≥ 0.
ζ = −s1 = −6 + x1 + x2 + 3x3
x1 , . . . , x5 , s1 ≥ 0
x4 = 3 − 2x1 − x2
2 1 0 1 0 0 3
1
T(B ) = 31 13 1 0 0 31
2 x3 = 2 − 31 x1 − 31 x2 − 13 s1
1 0 0 0 1 −1 2
x5 = 2 − x1 + s1
ζ = 0 − s1
x1 , . . . , x5 , s1 ≥ 0
z = −2 + 34 x1 + 10
x
3 2
x1 , . . . , x5 ≥ 0
x2 = 3 − 2x1 − x4
2 1 0 1 0 3
T(B 1 ) = − 13 0 1 − 13 0 1 x3 = 1 + 13 x1 + 31 x4
1 0 0 0 1 2
x5 = 2 − x1
z = 8 − 16 x −
3 1
10
3 4
x
x1 , . . . , x5 ≥ 0
Si osserva che essendo i costi ridotti negativi, la soluzione di base rimane ottima per il
problema con funzione obiettivo invariata.
31
Focus. In quest esercizio, i punti sui quali concentrare l’attenzione sono l’impo-
stazione del modello di prima fase, il riuso della matrice T(B 0 ), e lo studio di
sensitività della funzione obiettivo.
4
B
b
3 A b
2
Cb
b b
O D x1
−1 1 2 3 4 5 6
−1
32 Capitolo 3. Programmazione Lineare
Per determinare per quali valori di α la soluzione resta ottima occorre studiare la rifor-
mulazione del problema rispetto la base {A1, A2 , A4 } (si veda esercizio 2.2) ottenendo
3
x1 = 7
− 37 x3 + 72 x5
x4 = 15 − x5
x2 = 23
7
− 27 x3 − 71 x5
z = 72 7
+ 37 α + − 73 α − 97 x3 + 2
7
α − 1
7
x5
La soluzione rimane ottima quando i costi ridotti associati alle variabili fuori base sono
negativi, ovvero quando
(
− 37 α − 79 ≤ 0 1
2 1
⇐⇒ −3 ≤ α ≤ .
7
α− 7 ≤0 2
Esercizio 3.5 (Analisi di sensitività: vincoli. Soluzione duale con metodo grafico). È
dato il seguente programma lineare.
min z = x1 + x2 + x3
soggetto a 2x1 + x2 − 3x3 ≥ 4
− x1 + 3x2 + x3 ≤ 8
x1 , x2 , x3 ≥ 0.
Determiniamo ora una base ammissibile primale usando il simplesso di prima fase sulla
seguente riformulazione:
max ξ = −s1
soggetto a 2x1 + x2 − 3x3 − x4 + s1 = 4
−x1 + 3x2 + x3 + x5 = 8
x1 , x2 , x3 , x4 , x5 , s1 ≥ 0.
Si osserva che è stato sufficiente aggiungere una sola variabile artificiale. La base B 0 =
{s1 , x5 } forma una base ammissibile. Procedendo si ottiene:
0 2 1 −3 −1 0 1 4
T(B ) =
−1 3 1 0 1 0 8
(
s1 =4 − 2x1 − x2 + 3x3 + x4
x5 =8 + x1 − 3x2 − x3
ξ = −4 + 2x1 + x2 − 3x3 − x4
x1 , . . . , x5 , s1 ≥ 0
Facendo pivot sul coefficiente α11 = 4 si ottiene B 1 = B 0 ∪ {x1 } \ {s1 }, ovvero
1
1 2 − 32 − 21 0 21
1 2
T(B ) =
0 72 − 12 − 21 1 21 10
(
x1 =2 − 2 x2 + 2 x3 + 2 x4 − 21 s1
1 3 1
x5 =10 − 27 x2 + 12 x3 + 21 x4 − 12 s1
ξ = −s1
x1 , . . . , x5 , s1 ≥ 0
Considerato che il programma di prima fase termina con una soluzione ottima ξ ∗ = 0 si
può affermare che la base B 1 è una base ammissibile per il problema primale.
Il duale del problema in forma standard risulta:
min w = 4u1 + 8u2
soggetto a 2u1 − u2 ≥ −1
u1 + 3u2 ≥ −1
−3u1 + u2 ≥ −1
−u1 ≥0
u2 ≥ 0.
35
−2 −1 1 2
−1
−2
1
ed individuata dal politopo di vertici (0, 0), (− , 0) e (0, 1).
2
1
Col metodo grafico si individua come punto di ottimo il vertice (− , 0) che determina un
2
valore ottimo w ∗ = −2.
Sul punto di ottimo sono attivi (= soddisfatti con l’uguaglianza) i vincoli (1) e (5) cor-
rispondenti alle variabili x1 e x5 del primale. Gli altri vincoli sono invece non attivi
per cui le corrispondenti variabili del primale sono necessariamente poste a 0, ovvero
x2 = x3 = x4 = 0 per soddisfare le condizioni di complementarietà.
Eliminando le variabili a 0 nei vincoli del primale, otteniamo facilmente che la soluzione
ottima primale è individuata da x∗1 = 2, x∗5 = 10 mentre x∗2 = x∗3 = x∗4 = 0 per un valore
z ∗ = −2.
Infine, per quanto riguarda l’ultimo punto dell’esercizio, si può ripetere il conto appena
effettuato per verificare l’ammissibilità rispetto il parametro t ottenendo x1 = 2 + 12 t e
x5 = 10. Di conseguenza, l’ammissibilità è garantita ponendo x1 ≥ 0, e questo succede
per t ≥ −4.
Per quanto riguarda invece l’ottimalità si può osservare che nella funzione obiettivo non
entra il parametro t. Quindi nella riformulazione, t entrerà solo come coefficiente di
termini noti e mai a moltiplicare una variabile fuori base. Di conseguenza, al variare di
t, ogni soluzione di base ammissibile è anche ottima. Ai fini puramente esplicativi, si
possono recuperare per la riformulazione i conti fatti per il simplesso di prima fase con
36 Capitolo 3. Programmazione Lineare
Esercizio. Ripetere l’ultimo punto partendo dalla soluzione duale. Ovvero il pa-
rametro t cambierebbe la forma della funzione obiettivo senza toccare i vincoli. In
altre parole si può applicare quanto visto nell’esercizio precedente.
Esercizio 3.6 (Prima fase e sistema di disequazioni). Utilizzando la fase 1 del simplesso,
determinare (se esiste) una soluzione ammissibile di base per il sistema di disequazioni
2x1 + x2 + x3 = 8
x1 + x2 ≥ 5
(4 punti)
x3 ≥ 2
x1 , x2 , x3 ≥ 0.
Per la base ammissibile cosı̀ determinata (se esiste), calcolare la matrice di base inversa
A−1
B (2 punti).
dal quale otteniamo il seguente programma lineare per il simplesso di prima fase:
max z = −s1 − s2 − s3
soggetto a
2x1 + x2 +x3 + s1 =8
x1 + x2 − x4 +s2 =5
x3 −x5 +s3 = 2
x1 , . . . , x5 , s1 , . . . , s3 ≥ 0.
1 1 1
1 2 2 0 0 2
0 0 4
(2) T(B 1 ) = 0 12 − 21 −1 0 − 12 1 0 1
0 0 1 0 −1 0 0 1 2
1 1 1
x1 = 4 − 2 x2 − 2 x3 − 2 s1
s2 = 1 − 21 x2 + 21 x3 + x4 + 21 s1
s = 2 − x + x
3 3 5
z = −3 + 21 x2 + 12 x3 − x4 − x5 − 32 s1
x1 , . . . , x5 , s1 , . . . , s3 ≥ 0
1 0 1 1 0 1 −1 0 3
2
(3) T(B ) = 0 1 −1 −2 0 −1 2 0
2
0 0 1 0 −1 0 0 1 2
x1 = 3 − x3 − x4 − s1 + s2
x2 = 2 + x3 + 2x4 + s1 − 2s2
s = 2 − x + x
3 3 5
z = −2 + x3 − x5 − s1 − s2
x1 , . . . , x5 , s1 , . . . , s3 ≥ 0
38 Capitolo 3. Programmazione Lineare
1 0 0 1 1 1 −1 −1 1
3
(4) T(B ) = 0 1 0 −2 −1 −1 2
1 4
0 0 1 0 −1 0 0 1 2
x1 = 1 − x4 − x5 − s1 + s2 − s3
x2 = 4 + 2x4 + x5 + s1 − 2s2 − s3
x3 = 2 + x5 − s3
z = 0 − s1 − s2 − s3
x1 , . . . , x5 , s1 , . . . , s3 ≥ 0
Focus. L’ultimo esercizio è un piccolo gioco per ricordare allo studente la stretta
connessione tra gli argomenti del corso.
Capitolo 4
Altri esercizi
Esercizio 4.1 (PL: vero o falso? /1). Per ognuna delle seguenti affermazioni, dire se è
vera o falsa giustificando la risposta.
(i) Dato un programma lineare max z = cT x : Ax = b, x ≥ 0 , se Sa 6= ∅ e nessun
vertice di Sa è ottimo, allora il programma in oggetto è illimitato. (2 punti)
(ii) Un programma lineare con Sa illimitato può avere una soluzione ottima (non neces-
sariamente unica) che non è una soluzione ottima di base. (1 punto)
(iii) Sia
max z = cT x : Ax = b, x ≥ 0
(P)
un programma lineare e
max w = uT b : uT A ≥ cT
(D)
Soluzione suggerita.
(i) Vero. Un programma lineare può avere solo tre esiti: (a) nessuna soluzione ammis-
sibile, (b) programma illimitato, (c) ottimo finito. L’affermazione esclude il caso (a).
Se ci fosse un ottimo finito dovrebbe anche esserci un vertice ottimo, per il teorema
fondamentale. Quindi si esclude anche il caso (c). Rimane (b).
39
40 Capitolo 4. Altri esercizi
max{z = x2 : x2 ≤ 1, x1 ≥ 2 x1 , x2 ≥ 0}.
Esercizio 4.2 (PL: vero o falso? /2). Sia dato un programma lineare generico
max z = cT x : Ax = b, x ≥ 0 ,
con A ∈ Rm×n . Per ognuna delle seguenti affermazioni dire se essa è vera o falsa,
motivando la risposta.
(i) La regione ammissibile non può mai contenere un’intera retta.
(ii) La regione ammissibile non può mai contenere un’intera semiretta.
(iii) Se il programma ammette due soluzioni ottime distinte, ne ammette infinite altre.
(iv) (**) Se esiste y ∈ Rm tale che yT A > 0 e yT b < 0 allora il programma è privo di
soluzioni ammissibili.
Soluzione suggerita. (i) Vero. Le coordinate di una retta, se si considera una forma
parametrica devono spaziare da −∞ a ∞, e quindi uscire dal primo ortante Rn+ .
(ii) Falso. Come controesempio, un qualunque programma illimitato va bene.
(iii) Vero, per la convessità di della regione ammissibile e la linearità della funzione
obiettivo: l’intero segmento che congiunge le due soluzioni è fatto di punti ottimi e
ammissibili.
(iv) Vero. Il vettore y permette di combinare le equazioni Ax = b in una equazione
(yT A)x = yT b, i cui coefficienti sono le componenti della riga yT A > 0, e il termine
noto yT b < 0. Unita alle condizioni x ≥ 0, l’equazione è assurda.
Esercizio 4.3 (PL: vero o falso? /3). Per ognuna delle seguenti affermazioni, stabilire se
essa è vera o falsa motivando la risposta.
41
Focus. Gli esercizi precedenti pongono l’attenzione su affermazioni delle quali oc-
corre verificarne la veridicità o meno. Si ricorda che per validare un’affermazione
occorre mostrare che questa è sempre vera, per dire che è falsa invece basta un
controesempio.
Esercizio 4.4 (Gauss-Jordan /1). Risolvere il seguente sistema di equazioni lineari con
il metodo di Gauss-Jordan avendo cura di indicare le operazioni elementari svolte ad ogni
passaggio.
− x2 + x4 = 1
2x1 + x2 − x3 + 2x4 = 3
3x
1 + x3 + x4 = 2
Esercizio 4.5 (Gauss-Jordan /2). Risolvere il seguente sistema di equazioni lineari con
il metodo di Gauss-Jordan avendo cura di indicare le operazioni elementari svolte ad ogni
passaggio.
2x1 − x2 + x3 = 1
1x + 1x
=1
2 1 2 2
x1 + x2 + x3 = 3
2x1 + 2x2 + x3 = 5
0 23
2 −1 1 1 1 0
1 1 0 1 0 1 0 43
1 1 1 3 −→ 0 0
2 2
1 1
2 2 1 5 0 0 0 0
= 32
x1
= 43
x2
x3 = 1
0x1 + 0x2 + 0x3 = 0 (ridondante)