Sei sulla pagina 1di 49

Università degli Studi di Torino

Scuola di Scienze della Natura


Corso di Laurea Triennale in Informatica

Esercizi scelti
di
Calcolo Matriciale
e
Ricerca Operativa

Corso A: Andrea Grosso


Corso B: Roberto Aringhieri
Prefazione

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.

Roberto Aringhieri, Andrea Grosso, A.A. 2016-17

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

2 Il caso del Vecio(T M ) : modelli 15


Approvvigionamento di verdure . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Cena a domicilio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Composizione dei tavoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Alla conquista del Piemonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Piccanteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

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.

Tipo Comp. 1 Comp. 2 Comp. 3 Costo


I 2 3 5 20
II 4 8 2 15
III 4 4 3 30

La fabbrica deve approvvigionarsi di componenti al fine di assicurare la produzione di


almeno 5000 unità complessive di giocattoli (A + B), e nel mix produttivo nessuno dei
due tipi deve rappresentare meno del 30% del totale prodotto.
(a) Scrivere il programma lineare per pianificare le quantità di giocattoli da produrre ed
i relativi acquisti di componenti a costo minimo. (8 punti)
(b) Modificare il modello precedente per tenere in considerazionei il fatto che la direzione
acquisti ha inoltre deciso che l’acquisto di almeno uno dei tre tipi di confezioni deve
essere limitato a non più di 500 unità. (4 punti)

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:

(1.1) min z = 20yI + 15yII + 30yIII

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.5) 2yI + 4yII + 4yIII ≥ 3xA + xB


(1.6) 3yI + 8yII + 4yIII ≥ xA + 3xB
(1.7) 5yI + 2yII + 3yIII ≥ 5xA + 3xB .

Per quanto riguarda il punto (b), introduciamo la seguente variabile binaria


(
1 se viene limitato l’acquisto della confezione di tipo i
zi = .
0 altrimenti

Il primo vincolo modella la decisione di quale confezione limitarne l’acquisto

(1.8) z1 + z2 + z3 ≥ 1

mentre il secondo vincolo mette in relazione tale decisione con le quantità da acquistare

(1.9) yi ≤ 500zi + M(1 − zi ), i = I, II, III.

Il “Big-M” è necessario per lasciare libertà di acquisto nel caso zi = 0.

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

Fondo Prezzo quota Rendim. Rischio


1 1000 5% 2.5
2 700 9% 3.2
3 2500 11% 4
4 300 2.5% 1
5 2000 4% 4.5
Per ogni fondo si può solo acquistare un numero intero di quote. Il sig. Rossi dispone di
200000 euro (non è necessario che siano tutti investiti) e vuole
• differenziare l’investimento, investendo in ogni fondo non più del 30% del capitale
impegnato;
• investire almeno il 40% del capitale impegnato in fondi con indice di rischio ≤ 3.5;
• ottenere un indice medio pesato di rischio non superiore a 2.8 per l’investimento
complessivo.
Insieme al suo fedele gatto Purrer, il sig. Rossi scrive il modello di programmazione lineare
per pianificare i suoi investimenti ottenendo il massimo rendimento atteso.
(1) Scrivere il modello lineare sviluppato dal sig. Rossi e da Purrer. (6 punti)
(2) Se il sig. Rossi vuole un piano di investimento che usi al più tre fondi su cinque, come
deve modificare il modello? (4 punti)

Soluzione suggerita. Introduciamo la variabile decisione xi ∈ Z+ che modella la scelta


di quante quote acquistare del fondo i, con i = 1, . . . , 5. Denotiamo poi con ci , ri e
qi rispettivamente il prezzo per quota, il rendimento ed il rischio dell’investimento i =
1, . . . , 5.
Per quanto riguarda il punto (1) abbiamo il seguente modello.
La funzione obiettivo può essere scritta come
5
X
max z = (ri ci )xi
i=1

dove (ri ci ) rappresenta il rendimento in denaro per ogni singola quota.


Per prima cosa occorre determinare il capitale investito che denotiamo con C:
5
X
ci xi = C.
i=1

Successivamente si possono scrivere gli altri vincoli come segue:

C ≤ 200000, il capitale investito non può superare quello disponibile,


4 Capitolo 1. Modellazione

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

Il calendario è espresso in giorni lavorativi numerati a partire da 0. Il progetto comincia


con l’inizio dell’attività 1 e termina con la conclusione dell’attività 10. Le attività iniziate
non vengono interrotte fino alla loro conclusione. Ogni attività ha una durata (in giorni)
specificata dalla seguente tabella, una eventuale data di rilascio prima della quale non può
cominciare e una eventuale scadenza entro la quale deve improrogabilmente terminare.

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)

Soluzione suggerita. Per la parte (a) introduciamo la seguente variabile decisionale,

xi ≡ giorno di inizio attività i con i = 1, . . . , 10.


6 Capitolo 1. Modellazione

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.

Infine la funzione obiettivo risulta:

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 ≡ numero di giorni di compressione dell’attività i con i = 1, . . . , 10.

Ponendo il parametro ti uguale alla durata delle corrispondenti attività, il vincolo

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

modella il vincolo di budget. Infine, tutti i vincoli di precedenza devono considerare i


giorni risparmiati grazie all’acquisto dello straordinario. Per esempio, i vincoli per le
attività 2 e 3 diventano
attività 2: x2 ≥ x1 + 3 − y1 , x2 ≥ x3 + 7 − y3
attività 3: x3 ≥ x1 + 3 − y1 .
7

In pratica, in ogni vincolo si sottrae la corrispondente variabile yi . La funzione obiettivo


rimane invariata perché l’attività 10 ha durata inferiore a 2 e quindi non può essere
compressa. Di conseguenza, per la funzione obiettivo vale il ragionamento fatto per la
prima parte.

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.

Soluzione suggerita. Il problema descritto nella Parte A consiste nell’assegnare tutti


o parte dei pazienti di un quartiere ad uno o più ambulatori. A tale scopo introduciamo
la seguente variabile decisionale:
xij ≡ numero di pazienti del quartiere j assegnati all’ambulatorio i
con xij ∈ Z+ , i = 1, . . . , n, j = 1, . . . , m. La funzione obiettivo è la seguente:
n X
X m
min z = dij xij
i=1 j=1

mentre i vincoli che modellano l’assegnamento dei pazienti sono:


Xn
xij = Pj , j = 1, . . . , m,
i=1
m
X
xij ≤ Ci , i = 1, . . . , n.
j=1
8 Capitolo 1. Modellazione

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

La funzione obiettivo ed il primo vincolo modellano il fatto che si intende


Pkminimizzare
il massimo costo degli stipendi dei medici assegnati ad un ambulatorio ( h=1 sh yih ). Il
secondo dice che un medico può essere assegnato ad un unico ambulatorio. Il terzo infine
modella la copertura del carico di lavoro dell’ambulatorio.

Focus. Questo esercizio mette in sequenza due tipologie di problemi di assegna-


mento. Il primo è analogo all’esempio 1.4.4 degli appunti del corso e verte sull’as-
segnamento di risorse, il secondo invece verte sull’assegnamento di singoli a ruoli o
compiti. È utile infatti osservare le similitudini nei vincoli dei due modelli. Nella
pratica reale, è frequente che un problema complesso possa essere risolto per passi
successivi: questa scelta può dipendere sostanzialmente da due fatti, il primo è la
complessità del problema complessivo, la seconda l’impossibilità di far convergere
decisori diversi sullo stesso problema.

Esercizio 1.5 (Sale Operatorie). In un piccolo ospedale ci si pone il problema di orga-


nizzare il piano operatorio settimanale, ovvero il problema di come selezionare un certo
numero di pazienti dalla lista di attesa.
Supponiamo quindi di avere un insieme di pazienti P . A ciascun paziente p ∈ P è associata
una durata stimata dell’intervento dp espressa in minuti ed un costo cp che misura il costo
sociale di non operare il paziente nella settimana in questione.
Supponiamo inoltre di poter disporre di un insieme S di sale operatorie che lavorano 5
giorni alla settimana. Ciascuna sala operatoria s ∈ S può operare per non più di 480
minuti al giorno. Le sale operatorie sono 3, ovvero |S| = 3
9

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)

Soluzione suggerita. Come suggerito, la decisione consiste nel selezionare un paziente


p dalla lista per assegnarlo ad una sala operatoria s in uno dei giorni di apertura t. Sia
quindi
(
1 se paziente p è assegnato alla sala operatoria s nel giorno t
xpst = .
0 altrimenti

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

modificando il secondo vincolo della prima parte dell’esercizio.

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.

Esercizio 1.6 (Problema del resto). Un cassiere ha a disposizione 10 banconote da 100 e,


100 banconote da 50 e, 200 banconote da 20 e, 500 banconote da 10 ee 1000 banconote
da 5 e.
(a) Scrivere il programma lineare per determinare quante e quali banconote deve usa-
re il cassiere per ottenere l’importo T con il numero minimo di banconote necessa-
rie. (5 punti)
(b) Modificare il modello in modo da tenere in considerazione il seguente vincolo aggiun-
tivo: se si utilizza almeno una banconota da 20 e, allora si deve utilizzare almeno
una banconota da 10 e. (4 punti)
(c) Modificare il modello in modo da tenere in considerazione un secondo vincolo aggiun-
tivo: se si utilizzano banconote da 50 e, allora non si possono utilizzare banconote
da 20 e. (3 punti)

Soluzione suggerita. Siano N l’insieme di tagli di banconote disponibili, un valore vi


per ogni banconota di tipo i ∈ N e un numero bi di banconote disponibili per un dato
taglio i ∈ N.
Si introduce la seguente variabile decisionale, ovvero

xi ∈ Z+ ≡ numero di banconote usate per ciascun taglio i ∈ N.

Allora la funzione obiettivo è la seguente:


X
min z = xi .
i∈N

Il primo vincolo impone che si possano usare solo le banconote disponibile per ciascun
taglio
xi ≤ bi i ∈ N
11

mentre il secondo vincolo garantisce il raggiungimento dell’importo richiesto


X
vi xi = T.
i∈N

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)

Fornitore 1 Fornitore 2 Fornitore 3


Plance 15 16 17
Piastrelle medie 9 8 7
Piastrelle grandi 10 12 11

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

di plance di legno, applica un prezzo per il successivo pacco di 12 euro. Il fornitore 2,


ogni 3 pacchi di piastrelle medie, applica un prezzo per il successivo di 7 euro mentre il
fornitore 3, ogni 5 pacchi di piastrelle grandi applica un prezzo, per il successivo, di 10
euro. Inoltre, per ragioni commerciali, volete che ogni fornitore fornisca almeno il 20%
della commessa totale.
(a) Formulare il modello di programmazione lineare che garantisca la fornitura al prezzo
minore. (8 punti)
(b) Poiché avete notato che le plance di legno dei 3 fornitori non sono esattamente dello
stesso colore, vorreste conoscere quale sia il costo totale qualora, per le plance di
legno, vi riforniste da uno solo dei 3 fornitori. (3 punti)

Soluzione suggerita. Detti A, B, C i tre tipi di materiali forniti, sia xij ∈ Z+ il


numero di pacchi di materiale i ordinati dal fornitore j. La situazione “fondamentale” è
modellabile in modo analogo ai problemi di trasporto (i fornitori hanno capacità infinita,
quindi non ci sono vincoli di disponibilità).
Per la gestione degli sconti si possono decomporre le variabili interessate xA1 , xB2 , xC3 ∈
Z+ in una somma di variabili intere

xA1 = x′A1 + x′′A1 , xB2 = x′B2 + x′′B2 , xC3 = x′C3 + x′′C3 ,

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:

xA1 = x′A1 + x′′A1 , xB2 = x′B2 + x′′B2 , xC3 = x′C3 + x′′C3 ,


xA1 xB2 xC3
x′′A1 ≤ , x′′B2 ≤ , x′′C3 ≤
5 4 6
I seguenti vincoli modellano l’approvvigionamento:
3
X
0.25 xAj ≥ 300
j=1
3
X
0.25 xBj ≥ 500
j=1
3
X
0.25 xCj ≥ 600
j=1
C
X C X
X 3
xik ≥ 0.2 xij k = 1, 2, 3 .
i=A i=A j=1
13

La funzione obiettivo è quindi:

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

Il caso del Vecio(T M ): modelli

Esercizio 2.1 (Approvvigionamento di verdure). La caffetteria/ristorante “Dal Vecio”(T M )


deve approvvigionarsi di verdura per le prossime settimane. Le verdure servite dal Vecio
sono cavoli, melanzane, fagioli e pomodori. I fornitori del Vecio (sono un po’ particolari)
non vendono le varie verdure singolarmente ma in “pacchi” preconfezionati, di quattro
tipi, come da tabella

Tipo Contenuto (Kg) Costo


Cavoli Melanzane Fagioli Pomodori
1 5 7 5 2 12
2 9 0 5 4 15
3 2 4 7 3 20
4 8 2 0 2 11

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.

• Almeno il 20% e non più del 30% di melanzane.

• Non più del 35% di fagioli.

• Almeno il 15% e non più del 30% di pomodori.


(a) Scrivere il programma lineare per pianificare l’acquisto delle confezioni di verdura a
costo minimo, rispettando i vincoli sul mix posti dallo chef. (7 punti)

15
16 Capitolo 2. Il caso del Vecio(T M ) : modelli

(b) Modificare il modello per tenere in considerazione la seguente condizione: il Vecio


vuole acquistare non più di tre tipi di confezioni. (4 punti)

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

xi ≡ numero di pacchi di tipo i acquistati, con i = 1, . . . , 4, ed a valori in Z+ .

La funzione obiettivo vuole minimizzare il costo di acquisto dei pacchi:

min z ≡ 12x1 + 15x2 + 20x3 + 11x4 .

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 .

I vincoli di mix invece si scrivono come:

cavoli: 5x1 + 9x2 + 2x3 + 8x4 ≥ 0.25P ,

melanzane: 0.2P ≤ 7x1 + 4x3 + 2x4 ≤ 0.3P ,


fagioli: 5x1 + 5x2 + 7x3 ≤ 0.35P ,
pomodori: 0.15P ≤ 2x1 + 4x2 + 3x3 + 2x4 ≤ 0.3P .

Per la seconda parte si introduce invece una ulteriore variabile decisionale


(
1 se acquisto pacchi di tipo i
yi = , con i = 1, . . . , 4.
0 altrimenti

I vincoli che modellano la condizione del Vecio sono

y1 + y2 + y3 + y4 ≤ 3

per modellare il tipo di pacchi da acquistare, e

xi ≤ Myi , i = 1, . . . , 4 .

per limitare a zero il numero dei pacchi del tipo non scelto.
17

Esercizio 2.2 (Cena a domicilio). La caffetteria/ristorante “Dal Vecio”(T M ) ha attivato un


servizio di cene a domicilio ed offre tre tipi di menù: (1) “Aliento de Fuego”, (2) “Mañana
digesto” e (3) “Soy un pensionado”. Il primo menù permette un guadagno – dato dalla
differenza tra prezzo e costo – pari a 6e, il secondo pari a 8e, il terzo pari a 7e.
A tale guadagno va anche detratto il costo di trasporto. La cena infatti si ordina entro le
10 e la sua consegna avviene dalle 18 alle 20 utilizzando i 3 mezzi a disposizione, ovvero
(A) una bicicletta, (B) uno scooter e (C) un’auto. In media, nelle due ore previste, la
bicicletta consegna 5 cene, lo scooter 12, l’auto 23. Il costo di trasporto di una cena è
pari a 1e se fatto in bicicletta, 3e in scooter e 4e in auto.
Per oggi sono arrivate 40 prenotazioni: 10 di “Aliento de Fuego”, 17 di “Mañana digesto”
e 13 di “Soy un pensionado”.
(a) Scrivere il programma lineare per pianificare il trasporto delle cene in modo da
massimizzare il guadagno rispettando i vincoli di capacità. (7 punti)
(b) Modificare il modello per tenere in considerazione la condizione aggiuntiva: “Aliento
de Fuego” deve essere consegnato ai clienti utilizzando un unico mezzo di trasporto.
(4 punti)

Soluzione suggerita. La decisione da rappresentare è quella relativa al trasporto delle


cene con uno dei tre mezzi di trasporto. Introduciamo quindi la variabile decisionale

xij ≡ numero di cene di tipo i trasportate col mezzo j

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

La funzione obiettivo è invece la seguente:

max z ≡ (6 − 1)x11 + (6 − 3)x12 + (6 − 4)x13 +


(8 − 1)x21 + (8 − 3)x22 + (8 − 4)x23 +.
(7 − 1)x31 + (7 − 3)x32 + (7 − 4)x33

Per modificare il modello si introducono le variabili decisionali


(
1 se consegno “Aliento de Fuego” con mezzo j = 1, 2, 3
yj = .
0 altrimenti

Il vincolo
y1 + y2 + y3 = 1
18 Capitolo 2. Il caso del Vecio(T M ) : modelli

modella la decisione del veicolo, mentre i vincoli

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.

Esercizio 2.3 (Composizione dei tavoli). La caffetteria/ristorante “Dal Vecio”(T M ) ha


deciso di organizzare una cena a menù fisso in modo alternativo, associando a ciascuno
degli n tavoli un diverso menù. Il numero totale di posti per ogni tavolo j è pari a Mj
(con j = 1, . . . , n). Al momento della prenotazione, ciascun avventore i (con i = 1, . . . , m)
esprime una preferenza pij per ciascun tavolo/menù j (con j = 1, . . . , n) dando un voto
da 1 a 10.
P
(a) Scrivere il programma lineare per selezionare e assegnare ai tavoli gli M ≥ j Mj av-
ventori in modo da massimizzare la somma delle preferenze degli avventori selezionati.
(7 punti)
(b) Modificare il modello in modo da distribuire equamente le preferenze tra ciascun
tavolo/menù (hint: massimizzare [minimizzare] il tavolo con la somma delle preferenze
più basse [alte]). (4 punti)

Soluzione suggerita. La decisione da rappresentare è quella di selezionare un avventore


assegnandolo ad un tavolo. A tale scopo introduciamo la seguente variabile decisionale
binaria, ovvero (
1 se avventore i è assegnato al tavolo j
xij = .
0 altrimenti
Il vincolo
n
X
xij ≤ 1, i = 1, . . . , m
j=1

garantisce che ogni avventore, se scelto, venga assegnato ad un solo tavolo mentre il
vincolo
Xm
xij ≤ Mj , j = 1, . . . , n
i=1

garantisce la selezione di al più M avventori. La funzione obiettivo è quindi


m X
X n
max z ≡ pij xij .
i=1 j=1
19

Per la modifica al modello, consideriamo l’ipotesi di massimizzare le preferenze del ta-


volo che ha somma totale minima. Introduciamo quindi una variabile dummy y ∈ ℜ e
modifichiamo la funzione obiettivo del precedente modello in

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

Esercizio 2.4 (Alla conquista del Piemonte). La caffetteria/ristorante “Dal Vecio”(T M ) si


espande e apre locali a marchio “Dal Vecio”(T M ) in tutte le sette province del Piemonte.
Il Vecio può aprire fino a 12 locali in 20 possibili locazioni candidate 1, 2, . . . , 20, distri-
buite come segue: 1, 2, 3, 4 →TO, 5, 6 →VC, 7, 8 →AL, 9, 10, 11 →NO, 12, 13, 14 →AT,
15, 16, 17, 18 →CN, 19, 20 →VB. Ogni locale può essere dimensionato come piccolo medio
o grande con diversa capacità di coperti/giorno e diversa spesa, come da tabella seguente.

Dimen. Spesa Capacità


Piccolo 300000 200
Medio 400000 500
Grande 500000 700

Il Vecio vuole soddisfare i seguenti requisiti:


• aprire almeno un locale (di qualunque dimensione) in ogni provincia;
• aprire almeno tre locali in provincia di Torino, e non meno di due in provincia di
Cuneo.
• capacità complessiva (su tutta la regione) di almeno 5000 coperti/giorno;
• per le province di Alessandria e Asti, capacità complessiva non superiore ai 1000
pasti/giorno.
(a) Scrivere il programma lineare che permette al vecio di pianificare dove aprire i locali
a costo totale minimo. (7 punti)
(b) Introdurre nel modello il seguente requisito addizionale: se si aprono almeno due locali
in provincia di Asti, allora se ne apre uno solo a Verbania. (4 punti).
20 Capitolo 2. Il caso del Vecio(T M ) : modelli

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

due locali in provincia di Cuneo.


G
14 X
X
2y ≥ xij − 1
i=12 j=P
G
20 X
X
(VB) xij ≤ 2 − y
i=19 j=P

Esercizio 2.5 (Piccanteria). La caffetteria/ristorante “Dal Vecio”(T M ) deve produrre al-


meno 30 Kg del fortissimo condimento piccante del Vecio. Per produrlo, il Vecio mischia
tipicamente diverse varietà di peperoncini: (1) habanero, (2) naga morich, (3) Cayenna,
(4) malese. La ricetta del Vecio prevede un mix con le seguenti caratteristiche (percentuali
in peso):
• almeno il 25% di Cayenna;
• almeno il 25% di habanero;
• non più del 40% di naga morich;
• non più del 50% di malese;
• Cayenna e naga morich insieme non possono superare il 50%.
Essendo passata la stagione dei peperoncini, anziché usare quelli autoprodotti il Ve-
cio sfrutta un mix di condimenti piccanti confezionati che reperisce sul mercato. Sono
reperibili quattro tipi di confezioni A, B, C, D con le seguenti caratteristiche.

Tipo Peso tot. Costo %Habanero %Naga morich %Cayenna %Malese


A 2 20 30 30 20 20
B 3 15 25 30 40 –
C 2.5 18 – 40 40 20
D 3 25 25 25 25 25

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

Soluzione suggerita. Utilizzando le variabili xi = numero di confezioni di tipo i utiliz-


zate (i = A, B, C, D) il modello si può scrivere come segue.

min 20xA + 15xB + 18xC + 25xD

soggetto a

0.2xA + 0.4xB + 0.4xc + 0.25xD ≥ 0.25(xA + xB + xC + xD )


0.3xA + 0.25xB + 0.25xD ≥ 0.25(xA + xB + xC + xD )
0.3xA + 0.3xB + 0.4xC + 0.25xD ≤ 0.4(xA + xB + xC + xD )
0.2xA + 0.2xC + 0.25xd ≤ 0.5(xA + xB + xC + xD )
0.5xA + 0.7xB + 0.8xC + 0.5xD ≤ 0.5(xA + xB + xC + xD )
2xA + 3xB + 52 xC + 3xD ≥ 30
2xA + 3xB + 52 xC + 3xD ≤ 40
xA , xB , xC , xD ∈ Z+ .

Per la parte (b), è sufficiente utilizzare variabili logiche yi = 1 se si utilizza la confezione


i, 0 altrimenti e aggiungere i vincoli

yA + yB + yC + yD ≤ 3
xA ≤ MyA
xB ≤ MyB
xC ≤ MyC
xD ≤ MyD .
Capitolo 3

Programmazione Lineare

Esercizio 3.1 (Esercizio Standard). Si consideri il seguente programma lineare.

max z =x1 + 4x2


soggetto a x1 +3x2 ≤ 6
−x1 +x2 ≤ 1
x1 ≤3
x1 , x2 ≥ 0.

(i) Risolvere il programma con il metodo grafico. (2 punti)

(ii) Trasformare il programma in forma standard. (1 punto)

(iii) Elencare le basi ammissibili del programma in forma standard. (3 punti)

(iv) Determinare la soluzione ottima applicando l’algoritmo del simplesso. (3 punti)

(v) Scrivere il duale del programma in forma standard, e determinarne la soluzione


ottima. (3 punti (**))

Soluzione suggerita. La regione ammissibilesi ottiene tracciando la retta x1 + 3x2 = 6


per i punti (0, 2) e (6, 0), e la retta −x1 + x2 = 1 per i punti (0, 1) e (−1, 0), oltre alla retta
x1 = 3. La regione ammissibile – risultante dall’intersezione delle 3 rette e dalle x1 ≥ 0 e

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:

max z =x1 + 4x2


soggetto a x1 +3x2 +x3 =6
−x1 +x2 +x4 =1
x1 +x5 = 3
x1 , . . . , x5 ≥ 0.

Le basi ammissibili associate ai vertici sono le seguenti:

Vertice Variabili di base


0 x3 = 6 x4 = 1 x5 = 3
A x2 = 1 x3 = 3 x5 = 3
B x1 = 34 x2 = 47 x5 = 49
C x1 = 3 x2 = 1 x4 = 3
D x1 = 3 x3 = 3 x4 = 4
25

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

Le condizioni di complementarietà ci permettono di trasferire informazione dal primale


al duale, ovvero le variabili in base del primale (xj > 0) individuano i vincoli attivi del
duale che be determinano la soluzione ottima. Nel caso specifico abbiamo che le variabili
maggiori di 0 sono x1 , x2 ed x5 . Di conseguenza, il primo, secondo e quinto vincolo del
duale saranno attivi, ovvero soddisfatti con l’uguale. Abbiamo quindi:
  
5

u 1 − u 2 + u 3 = 1 
 u 1 = 1 + u 2 u1 = 4

3u1 + u2 = 4 ⇒ u2 = 4 − 3 − 3u2 ⇐⇒ u2 = 14 ⇒ u2 = 41 ,
  
u3 = 0 u3 = 0 u3 = 0
  

ovvero la soluzione ottima duale risulta u∗1 = 54 , u∗2 = 41 , u∗3 = 0 con w ∗ = 31


4
.

Focus. L’attenzione su questo esercizio è di tipo riassuntivo dei passaggi standard


relativi agli esercizi di programmazione lineare, e di richiamo sugli strumenti base
(come disegnare la regione ammissibile, determinare le coordinate dei vertici, e
cosı̀via.
Nota: tali passaggi verranno omessi negli esercizi successivi. Si suggerisce quindi
allo studente di svolgerli autonomamente.

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.

1. Disegnare nel piano (x1 , x2 ) la regione ammissibile Sa del problema. (2 punti)


2. Trasformare il problema in forma standard. (1 punto)
3. Il punto (1, 1) è un vertice di Sa ; con riferimento alla forma standard, identificare
la base corrispondente a tale vertice, e calcolare la corrispondente matrice di base
inversa A−1
B . (4 punti)
4. Partendo dalla base determinata al punto precedente, determinare la soluzione
ottima del problema applicando l’algoritmo del simplesso. Verificare i risultati
utilizzando anche il metodo grafico. (2 punti)
5. Scrivere il duale del problema e determinarne una soluzione ammissibile. (1 punto
(**))
27

Soluzione suggerita. Riportiamo il grafico che mette in evidenza la regione ammissibile


Sa del problema:

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.

Esercizio. Ripetere i passaggi del simplesso utilizzando le matrici T(B).

Infine, il problema duale risulta:

min w = 3u1 + u2 + 3u3

soggetto a

2u1 − u2 + u3 ≥ − 12
u1 + 2u2 ≥ 1
−u1 ≤ 0
−u2 ≤ 0
u3 ≥ 0.

Questo problema non ha soluzioni ammissibili poiché il primale è illimitato.


29

Focus. Il punto di attenzione di questo esercizio è su come ottenere facilmente la


riformulazione del problema partendo da una base data.

Esercizio 3.3 (Problema di prima fase ed analisi di sensitività). Dato il programma


lineare
min −x1 − 3x2 + x3
soggetto a
2x1 + x2 ≤3
x1 + x2 + 3x3 =6
2x1 + x2 + 3x3 ≤8
x1 , x2 , x3 ≥ 0.
si richiede di:
1. Trasformarlo in forma standard (2 punti);
2. Risolvere il problema con il metodo del simplesso (5 punti);
3. Dire se la base finale risulta ottima cambiando l’obiettivo in max 5x1 + 3x2 . (2 pun-
ti).

Soluzione suggerita. Il programma in forma standard risulta


max x1 + 3x2 − x3
soggetto a
2x1 + x2 + x4 =3
x1 + x2 + 3x3 =6
2x1 + x2 + 3x3 + x5 =8
x1 , . . . , x5 ≥ 0,
con x4 , x5 variabili di slack.
La non esistenza di una base iniziale ammissibile determina la soluzione del seguente
problema di prima fase, cosı̀ formulato:
max −s1
soggetto a
2x1 + x2 + x4 =3
x1 + x2 + 3x3 + s1 =6
2x1 + x2 + 3x3 + x5 =8
x1 , . . . , x5 ≥ 0,
30 Capitolo 3. Programmazione Lineare

Si osserva l’uso di una sola variabile di supporto s1 in modo da ridurre il numero di


iterazioni del simplesso per arrivare ad una eventuale base ammissibile per il problema
originario.
La soluzione del problema di prima fase attraverso il metodo del simplesso è la seguente:
 
x4 = 3 − 2x1 − x2

2 1 0 1 0 0 3 
T(B 0 ) = 1 1 3 0 0 1 6 s1 = 6 − x1 − x2 − 3x3
2 1 3 0 1 0 8

x5 = 8 − 2x1 − x2 − 3x3

ζ = −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

Il problema di prima fase ha soluzione ottima ζ ∗ = 0 e quindi la base trovata è anche


ammissibile per il problema originario. Abbiamo quindi:
 
x4 = 3 − 2x1 − x2

2 1 0 1 0 3 
0 1 1
T(B ) =  3 3 1 0 0 2 x3 = 2 − 31 x1 − 13 x2
1 0 0 0 1 2

x5 = 2 − x1

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

Verificandosi la condizione di ottimalità, risulta la seguente soluzione ottima di valore pari


a z ∗ = 8 e x2 = 3, x3 = 1, x5 = 2 e x1 = x4 = 0.
Infine, per verificare se la base finale rimane ottima con la nuova funzione obiettivo
max 5x1 +3x2 , basta riscrivere la funzione obiettivo rispetto le variabili di base, ottenendo

5x1 + 3x2 = 5x1 + 3(3 − 2x1 − x4 ) = 9 − x1 − 3x4 .

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.

Esercizio 3.4 (Analisi di sensitività: funzione obiettivo). Si consideri il seguente pro-


gramma lineare, dove α è un parametro reale.

max (1 + α)x1 + 3x2


soggetto a
x1 + 2x2 ≤7
2x1 − 3x2 ≤6
− 2x1 + 3x2 ≤ 9
x1 , x2 ≥ 0

(1) Rappresentare la regione ammissibile Sa del programma. (2 punti)


(2) Per α = 0 determinarne una soluzione ottima. (1 punto)
(3) Scrivere la forma standard. (1 punti)
(4) Identificare le soluzioni ammissibili di base (variabili in base e loro valori) del proble-
ma. Qual è la base ottima (per α = 0)? Ci sono basi degeneri? (3 punti)
(5) Scrivere il programma duale e determinare la soluzione ottima duale per α = 0.
(3 punti (**))
(6) Per quali valori di α ∈ R la base ottima determinata ai punti (4) rimane ottima?
(3 punti)

Soluzione suggerita. La regione ammissibile è rappresentata in figura.


5x2

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

L’ottimo per α = 0 si trova (studiando le curve di livello oppure calcolando la funzione


obiettivo nei vertici, trattandosi di regione chiusa e limitata) nel punto B, di coordinate
x∗1 = 37 , x∗2 = 23
7
.

Il programma in forma standard è

max z =(1 + α)x1 + 3x2


soggetto a x1 + 2x2 + x3 = 7
2x1 − 3x2 + x4 = 6
−2x1 + 3x2 + x5 = 9
x1 , . . . , x5 ≥ 0.

Le soluzioni ammissibili di base sono associate ai vertici O, A, B, C, D; i valori delle va-


riabili di slack si deducono sostituendo le corrispondenti coordinate x1 , x2 nei vincoli.
Risultano quindi (elencando solo le variabili in base) le seguenti basi ammissibili.

Vertice Variabili di base


O x3 = 7 x4 = 6 x5 = 9
A x2 = 3 x3 = 1 x4 = 15
B x1 = 73 x2 = 237
x4 = 15 (ottima)
C x1 = 337
x2 = 78 x5 = 15
D x1 = 3 x3 = 1 x5 = 15

Non risultano basi degeneri.

Il programma duale risulta come segue.

min z =7u1 + 6u2 + 9u3


soggetto a u1 + 2u2 − 2u3 ≥1+α
2u1 − 3u2 + 3u3 ≥3
u1 ≥0
u2 ≥0
u3 ≥ 0.

Per α = 0, avendo nella soluzione ottima primale x1 , x2 , x4 > 0 le condizioni di comple-


mentarietà primale-duale richiedono che all’ottimo duale valgano le condizioni
 ∗ ∗ ∗
 u1 + 2u2 − 2u3 = 1

9 1
2u∗1 − 3u∗2 + 3u∗3 = 3 =⇒ u∗1 = , u∗2 = 0, u∗3 = .
 7 7
u∗2 =0

33

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. Al variare di α e considerando la soluzione col metodo grafico, il vertice


D sarà mai vertice ottimo?

Focus. In quest esercizio, il punti sul quale concentrare l’attenzione è l’analisi di


sensitività parametrica in funzione di α.

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.

(1) Trasformare il programma in forma standard. (1 punto)


(2) Scriverne il duale. (2 punti (**))
(3) Per mezzo della fase 1 del simplesso, determinare una base ammissibile del programma
primale. (2 punti)
(4) Risolvere il duale col metodo grafico (attenzione nel disegnare la regione ammissibile
duale!). (2 punti (**))
(5) Determinare la base ottima del primale. (2 punti (**))
(6) Se i termini noti dei due vincoli fossero, anzichè 4 e 8, rispettivamente 4 + t e 8 − 21 t,
per quali valori di t ∈ R la base determinata al punto precedente rimarrebbe ottima
e ammissibile? (2 punti (**))
34 Capitolo 3. Programmazione Lineare

Soluzione suggerita. Il problema in forma standard risulta:


max z = −x1 − x2 − x3
soggetto a 2x1 + x2 − 3x3 − x4 = 4
−x1 + 3x2 + x3 + x5 = 8
x1 , x2 , x3 , x4 , x5 ≥ 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

La regione ammissibile del duale è riportata nella figura


2

−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

l’accortezza di sostituire i termini noti in funzione del parametro t. Si ottiene infatti:


 1
1 2 − 32 − 21 0 2 + 21 t


T(B ) =
0 72 − 12 − 21 1 10
(
x1 =2 + 21 t − 12 x2 + 32 x3 + 21 x4
x5 =10 − 27 x2 + 12 x3 + 21 x4
z = −x1 − x2 − x3 = −2 − 12 t − 21 x2 − 52 x3 − 12 x4
x1 , . . . , x5 ≥ 0

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.

Focus. In questo esercizio è utile soffermarsi per riflettere sull’analisi di sensitività


dei vincoli dovuta alla variazione dei parametri che determinano di fatto una tra-
slazione della retta ed un allargamento / restringimento della regione ammissibile.
È inoltre un esempio di passaggio dal duale al primale che risulta conveniente per
il fatto che il duale si può risolvere col metodo grafico.

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).

Soluzione suggerita. Impostiamo il corrispondente programma lineare in forma stan-


dard:
max z = hqualsiasi funzione obiettivoi
soggetto a
2x1 + x2 +x3 =8
x1 + x2 − x4 =5
x3 −x5 = 2
x1 , . . . , x5 ≥ 0.
37

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.

Abbiamo quindi la sequenza di iterazioni del simplesso applicate al problema di prima


fase dove il pivot ad ogni iterazione è evidenziato in grassetto:
 
2 1 1 0 0 1 0 0 8
(1) T(B 0 ) =  1 1 0 −1 0 0 1 0 5
0 0 1 0 −1 0 0 1 2

s1 = 8 − 2x1 − x2 − x3

s2 = 5 − x1 − x2 + x4

s = 2 − x + x
3 3 5

z = −15 + 3x1 + 2x2 + 2x3 − x4 − x5


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

Di conseguenza, la soluzione x∗1 = 1, x∗2 = 4 e x∗3 = 2 è una soluzione di base ammissibile


per il sistema iniziale.
La matrice inversa si ottiene direttamente leggendo nella riformulazione finale sotto le
colonne che nella formulazione iniziale rappresentavano la matrice identità. Abbiamo
quindi:  
1 −1 −1
A−1
b =
−1 2 1 .
0 0 1

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)

il suo duale. Se (P) ha un ottimo


finito, è possibile scegliere b′ 6= b tale che
T
max z = c x : Ax = b , x ≥ 0 sia un programma illimitato.

(2 punti (**))

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

(ii) Vero. Ad esempio

max{z = x2 : x2 ≤ 1, x1 ≥ 2 x1 , x2 ≥ 0}.

(iii) Falso. Il duale del programma è min{w = uT b : uT A ≥ cT }, e l’affermazione


implica, per la dualità forte, che esso abbia un ottimo finito, quindi sicuramente Da 6=
∅. Cambiando b in b′ si vede che Da non cambia, quindi le soluzioni duali continuano
ad esistere e limitano superiormente anche la funzione obiettivo del programma
primale modificato.

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

(i) Se un programma lineare ha regione ammissibile illimitata, allora non ha soluzioni


ottime. (1 punto)
(ii) Il duale del programma ausiliario della fase 1 del simplesso può essere privo di
soluzioni ammissibili. (2 punti (**))
(iii) Il programma ausiliario della fase 1 può avere regione ammissibile illimitata.(2 punti)

Soluzione suggerita. (i) Falso. Ad esempio min {x1 + x2 : x1 + x2 ≥ 1, x1 , x2 ≥ 0}


ha regione ammissibile illimitata ma ottimo finito.
(ii) Falso. Il programma ausiliario ha sempre per costruzione un ottimo finito, quindi
per la dualità forte deve averlo anche il suo duale.
(iii) Vero. Ad esempio se il programma iniziale ha regione ammissibile illimitata, è
illimitata anche la regione ammissibile del programma ausiliario, poiché la regione
ammissibile dell’ausiliario è un superinsieme di quella del programma originale.

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

Soluzione suggerita. La riduzione di Gauss Jordan porta alla seguente soluzione


0 54 6
   
0 −1 0 1 1 1 0 5
2 1 −1 2 3 −→ 0 1 0 −1 −1 
3 0 1 1 2 0 0 1 − 75 − 58
Il sistema iniziale equivale quindi a

x1
 + 54 x4 = 65
x2 − x4 = −1
x3 − 57 x4 = − 58


42 Capitolo 4. Altri esercizi

che si risolve per ispezione, ottenendo


 6 4
x1 = 5 − 5 x4

x2 = −1 + x4 (x4 ∈ R), libera.

x3 = − 85 + 75 x4

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

Soluzione suggerita. La riduzione di Gauss Jordan porta alla seguente soluzione

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

Il sistema iniziale equivale quindi a

= 32

 x1

= 43

 x2

 x3 = 1

0x1 + 0x2 + 0x3 = 0 (ridondante)

che si risolve per ispezione, ottenendo


 2
x1 = 3

x2 = 34

x3 = 1

Focus. Gli esercizi precedenti hanno l’obiettivo di mostrare come un esercizio di


questo tipo debba essere svolto. Risolvere un sistema di equazioni lineari non
significa effettuare la riduzione di Gauss-Jordan ma, anche e soprattutto, leggere
43

il risultato della riduzione in termini di sistema di equazioni lineari equivalente a


quello originario.

Potrebbero piacerti anche