Sei sulla pagina 1di 231

Dispense del corso

RICERCA OPERATIVA
per i corsi di Laurea in Ingegneria BTRR e MMER

a cura di Laura Palagi


www.dis.uniroma1.it/~ palagi

29 Novembre 2012
Corso: Ricerca Operativa (Laurea e Laurea Magistrale)
Settore: MAT09 - Crediti: 6
Sapienza Università di Roma
A.A. 2012-2013

Obiettivi. Introdurre gli studenti alla programmazione matematica e alla


loro applicazione in campo ingegneristico, logistico, economico, organizza-
tivo. Fornire gli strumenti per: riconoscere classi di modelli standard (in
particolare di programmazione lineare sia continua che a variabili intere, di
programmazione convessa), individuare le soluzioni ottime utilizzando con-
dizioni di ottimo.
Programma
Docente: Laura Palagi

Programma.
Il programma coincide con il contenuto delle dispense.
La parte relativa alla modellistica matematica non è argomento in sede di
esame scritto. È soprattutto utile ai fini della prova di laboratorio di RO.
NON sono in programma le seguenti dimostrazioni/teoremi:

1. dimostrazione del Lemma 4.1.1

2. dimostrazione dei teoremi 5.1.6, 5.1.11, 5.3.2, 5.3.3

3. dimostrazione dei teoremi 6.2.4, 6.3.10, 6.3.11

4. il paragrafo 7.4

5. la dimostrazione del teorema 8.2.1 (Lemma di Farkas)

6. il teorema 10.2.1

7. il teorema 12.4.4, il teorema 12.4.6

1
Capitolo 1

Introduzione

La Ricerca Operativa è una disciplina relativamente giovane. Il termine Ricerca Operativa


è stato coniato in ambito militare verso la fine degli anni ‘30 e deriva dal termine inglese
“Operational Research”, ovvero la ”ricerca sulle operazioni (militari)”.
La Ricerca Operativa (di seguito indicata con l’acronimo RO) si occupa dello sviluppo e
dell’applicazione di metodi quantitativi per la soluzione di problemi di decisione che si presen-
tano nella gestione di imprese e organizzazioni.
Quando la complessità dei sistemi era relativamente contenuta, e la quantità di dati disponi-
bili estremamente limitata, il personale esperto era sufficiente a prendere le decisioni necessarie
alla conduzione dell’impresa.
La crescente complessità dei sistemi aziendali congiuntamente all’enorme quantità di dati
messa a disposizione dall’informatizzazione capillare ha reso indispensabile l’utilizzo di stru-
menti automatici di decisione che attraverso la modellazione matematica permettano la soluzione
di problemi di grandi dimensioni.
La RO, quindi, è caratterizzata dall’uso di modelli matematici definiti e risolti al fine di
fornire indicazioni ai “decisori” nell’atto della scelta. Non a caso, la RO è anche nota come
management science, e cioè la Scienza della Gestione, definizione che ne sintetizza finalità e
ambizioni.

1.1 Breve storia della Ricerca Operativa


Il termine Ricerca Operativa, si è detto, è legato alle prime applicazioni della RO per aumentare
l’efficienza di operazioni militari della Seconda Guerra Mondiale. Tuttavia esistono esempi im-
portanti di anticipazione dei metodi della RO in anni più lontani; il più famoso risale a F. Taylor
che nel 1885 elaborò uno studio sui metodi di produzione; prima ancora, nel 1776, G. Monge
aveva studiato un problema di trasporti. Tuttavia la nascita della RO è legata agli studi che
negli anni immediatamente precedenti alla Seconda Guerra Mondiale vennero condotti in Gran
Bretagna per risolvere problemi strategici e tattici in operazioni militari. Più in particolare
questi studi erano legati all’uso efficiente di un nuovo strumento di difesa: il radar. Infatti nel
0
A questo paragrafo sono associate le slide della lezione disponibili sul sito
http://www.dis.uniroma1.it/~ or/meccanica/slide prima lezione09-10.pdf

1
1937 la Royal Air Force iniziò degli esperimenti di un sistema di controllo della difesa aerea
basato sull’uso di una stazione radar situata a Bawdsey Research Station, nella costa est; già dai
primi esperimenti si resero conto che era molto difficile gestire efficientemente le informazioni
provenienti dal radar. Nel luglio 1938 furono compiuti altri esperimenti con l’aggiunta di quat-
tro stazioni radar lungo la costa nella speranza che il sistema di controllo migliorasse sia in
copertura sia in efficienza; invece non fu cosı̀ ; dai nuovi esperimenti emersero seri problemi:
c’era la necessità di coordinare e correlare le tante informazioni, spesso anche in conflitto tra di
loro, che venivano ricevute dalle stazioni radar aggiunte. Nell’imminenza della Guerra si rese
necessario tentare qualche nuovo approccio; perciò il sovrintendente della Bawdsey Research
Station propose di sviluppare un programma di ricerca che riguardasse gli aspetti operativi del
sistema e non più solamente quelli prettamente tecnici che erano da considerare soddisfacenti.
Il termine “Operational Research” – Ricerca nelle operazioni (militari) – fu coniato per descri-
vere questa nuova branca delle scienze applicate. Fu quindi selezionato un gruppo di scienziati
di vari discipline per costituire un “OR team”; il progetto fu diretto dal comandante in capo
della Royal Air Force, Air Chief Marshal Sir Hugh Dowding. Nell’estate del 1939 la Gran
Bretagna effettuò l’ultima esercitazione pre-bellica dove si evidenziò un notevole miglioramento
nelle operazioni di difesa aerea grazie al contributo del gruppo di scienziati. Nacque quindi una
vera e propria sezione che più tardi, nel 1941, prese il nome formale di “Operational Research
Section”. Durante il conflitto mondiale furono molteplici e importanti i contributi strategici di
questa sezione permettendo di salvare piloti e aerei.
Al termine della guerra, alcuni degli scienziati coinvolti nel progetto formarono nuclei di
ricercatori per lo sviluppo post bellico e la loro attività si estese a campi diversi da quello
militare; in particolare, con l’espandersi delle iniziative industriali e con l’avvento dei com-
puter che sono uno strumento essenziale per la risoluzione dei problemi, c’è stata un’espansione
dell’utilizzo della RO all’interno di diverse realtà applicative.
Dagli anni ’60 in poi le applicazioni della RO hanno avuto diffusione crescente, inizialmente
nell’ambito di grandi gruppi industriali e succesivamente, grazie anche alla disponibilità di
grandi potenze di calcolo a costi contenuti, in quasi ogni settore industriale, nei servizi e nelle
amministrazioni pubbliche.

1.2 La Ricerca Operativa oggi


Ai nostri giorni la rilevanza applicativa delle tecniche della RO è riconosciuta e apprezzata
in ambito industriale. Negli ultimi cinque anni il numero di addetti del settore è infatti cresciuto
di un fattore 100. Contestualmente, si è allargata la richiesta di esperti di RO nelle imprese
manifatturiere e di servizi: un laureato, esperto di tecniche della RO può ragionevolmente
aspirare, per esempio, a ricoprire incarichi di responsabilità nelle industrie manifatturiere, nella
assicurazioni, nel marketing, nelle società di consulenza aziendale, nella pianificazione e, sempre
di più, nelle telecomunicazioni.
Alcuni esempi di problemi possono essere risolti per mezzo delle tecniche della RO sono i
seguenti:

• Finanza e Investimenti;
si vuole rispondere a domande del tipo: quanto dobbiamo investire, e come? Dove
rimediare i capitali necessari? Quanto ci costerà? Alcuni esempi sono:

2
– Selezione degli investimenti:
si tratta di scegliere, fra un vasto insieme di alternative di investimento, quali atti-
vare e quali no in presenza di vincoli di budget e con l’obiettivo di massimizzare i
ricavi.
– Scelta del portafoglio;
consiste nel decidere in quali titoli e con quali quote investire i nostri capitali in
modo da massimizzare il ricavo atteso, oppure minimizzare il rischio, etc.
– Determinazione del prezzo di derivati finanziari;
si vuole determinare il prezzo di un prodotto derivato finanziario (per esempio
di un’opzione o di un future) in funzione del tempo e dell’andamento del titolo
sottostaste.
• pianificazione della produzione;
come assegnare la forza lavoro alle varie attività della nostra impresa? Su quali macchine
e per quanto tempo ci conviene effettuare i nostri processi?
Si tratta di pianificare i livelli di produzione e/o l’utilizzazione di risorse; si hanno spesso
problemi di allocazione ottima di risorse cioè problemi riguardanti la distribuzione di
risorse limitate tra alternative concorrenti in modo da minimizzare il costo complessivo o
massimizzare il guadagno totale; tali risorse possono essere materie prime, manodopera,
tempi di lavoro su macchine, capitali investiti.
• gestione ottima delle scorte;
si tratta di determinare i livelli di produzione e di scorte nella gestione di materiali grezzi,
prodotti in lavorazione etc.; quando e quanto conviene riordinare materiali o beni in modo
da ottenere il miglior compromesso fra costi di riordino e di produzione/acquisto e costi di
immagazzinamento. Conviene, cioè, ordinare o produrre più spesso minori quantità per
far fronte alla domanda corrente, oppure ordinare/produrre maggiori quantità e lasciarle
in magazzino per soddisfare anche la domanda futura?
• localizzazione e dimensionamento di impianti;
Quanti depositi di un’impresa di distribuzione alimentare costruire e dove localizzarli per
servire i negozi a dettaglio in un’area d’interesse? Dove costruire degli ospedali (o scuole
o stazioni dei vigili del fuoco) in modo da ottimizzare il servizio fornito? Dove conviene
costruire le stazioni di base di una rete GSM/UMTS per coprire soddisfacentemente
territorio e traffico, e con che potenza dovranno trasmettere? In senso lato, si tratta
di problemi in cui si deve decidere dove istallare “impianti di produzione” in modo da
“rifornire” in modo ottimale aree distribuite su un territorio.
• progetto di reti di comunicazione / telecomunicazione;
si tratta di definire i collegamenti e dimensionare le capacità di una rete stradale, di
telecomunicazione, di trasmissione dati, etc., in modo da garantire il traffico tra le varie
origini e destinazioni e minimizzare il costo complessivo; ad esempio, per instradare le
comunicazioni telefoniche e dati fra Roma e Venezia, conviene costruire una nuova linea
ad alta velocità in fibra ottica fra Firenze e Bologna oppure istallare un ponte radio a
larga banda?
• determinazione di flussi ottimi; si devono inviare merci (informazioni, telecomunicazioni,
corrente elettrica, etc.) da alcune sorgenti (origini) a un certo numero di destinazioni
utilizzando una rete di strade (fibre ottiche, doppini telefonici, cavi coassiali, emettitori)
in modo da soddisfare le richieste minimizzando i costi di trasporto.

3
• assegnazione di frequenze di trasmissione;
quali frequenze (prese da una banda limitata) devo assegnare a una rete di trasmetti-
tori radio-televisivi in modo da minimizzare le interferenze reciproche o massimizzare la
copertura del territorio?
• sequenziamento;
quali processo o operazione effettuare prima e quali dopo? Per esempio, come sequenziare
i treni sulla rete in modo da evitare conflitti sulle tratte e minimizzare i tempi morti, le
attese alle stazioni, etc.?
• project planning;
come sequenziare le molteplici attività di un progetto? Quanto durerà il progetto? Come
devono essere gestite le risorse?
• allocazione ottima di componenti elettronici (VLSI design);
come disegnare una piastra madre in modo da minimizzare le lunghezze dei percorsi
seguiti dai segnali elettrici?
• determinazione dei turni del personale;
si tratta, ad esempio, di assegnare ai convogli il personale viaggiante sui treni (conducenti,
bigliettai, etc.) in modo da minimizzare il numero di viaggi ”a vuoto” (necessari per
riportare il personale alla loro sede). Un problema analogo si presenta nell’assegnazione
di equipaggi (piloti, hostess, stewart) a voli.
• manutenzione di beni;
cioè il problema di decidere quando e se effettuare la manutenzione di alcuni beni soggetti
ad usura, in modo da minimizzare il costo complessivo.
• istradamento di veicoli;
quali percorsi devono seguire i veicoli di una flotta di automezzi per, ad esempio, rac-
cogliere l’immondizia, o rifornire una rete di negozi, in modo da minimizzare le distanze
complessive percorse?
• studi sulla struttura del DNA;
come assegnare sequenze a geni minimizzando la probabilità dell’errore sperimentale?
Come determinare un albero filogenetico massimizzando la verosimiglianza?
• progettazione di forme ottime;
che forma deve avere una macchina in modo da presentare meno resistenza possibile
all’aria? Che profilo deve evere l’ala di un aereo in modo da massimizzare la portanza?
• calcolo delle traiettorie ottime;
qual è la traiettoria che permette ad un veicolo spaziale di arrivare sulla luna e tornare
usando la quantità minima di carburante?
• ricostruzione di immagini;
come si possono visualizzare le informazioni fornite, per esempio, da una TAC in modo
da renderle più leggibili possibili per il medico?
• progettazione strutturale ;
qual è il progetto di un ponte o di un grattacielo che resiste meglio a venti molto forti o
alle sollecitazioni derivanti da un terremoto?

4
• yield management ;
Letteralmente traducibile come ”Gestione del ritorno economico”. In una azienda carat-
terizzata da varietà di servizi e di prezzi, domanda variabile nel tempo, stabilire quanti e
quali servizi vendere avendo incertezza sulla domanda futura, allo scopo di massimizzare
il profitto globale. Si tratta di un problema diffuso tra le compagnie di trasporto aereo,
ferroviario, marittimo, ma anche per catene alberghiere e di noleggio auto.

Questa lista, lungi dall’essere esaustiva, serve a mettere in evidenza le potenzialità degli
strumenti della RO nella risoluzione di problemi applicativi complessi e disparati.
In Italia la penetrazione della RO è stata piuttosto lenta. La situazione è rovesciata negli
Stati Uniti e nell’Europa Centro-Settentrionale ove la crescita del settore è stata formidabile. Le
ragioni del ritardo sono in primo luogo culturali: mancanza di conoscenze approfondite da parte
delle aziende, insufficente disseminazione dei risultati da parte dell’accademia. Lentamente,
questa situazione va modificandosi anche in Italia, e la sensibilità delle aziende è fortemente
cresciuta negli ultimi due-tre anni. In particolare ci si è resi conto che l’informatizzazione capil-
lare e l’accresciuta potenza di calcolo non sono sufficienti a risolvere i problemi dell’organizzazione
aziendale in modo ottimale.
A confermare questo asserto si consideri il seguente, illuminante esempio (dovuto a G. B.
Dantzig1 ): si supponga di essere a capo di un’azienda che impiega 70 dipendenti e deve assegnare
ciascuno di essi a 70 differenti mansioni; poiché le capacità lavorative di ogni singolo dipendente
sono diverse, non è indifferente per l’azienda come effettuare l’assegnamento. Naturalmente si
deve fare in modo che ciascun dipendente sia assegnato ad una sola mansione e che ciascuna
mansione sia svolta esattamente da un dipendente. Il problema consiste nel confrontare le
70! possibilità che ci sono per selezionare quella migliore nel senso che permetta di ottenere il
maggiore utile per l’azienda. Le possibilità sono un numero molto grande, più grande di 10100 .
Ora si supponga di disporre di un calcolatore capace di effettuare un milione di calcoli al secondo
e che sia in funzione dal tempo del big bang; avrebbe questo calcolatore oggi nell’anno 2000
esaminato tutte le 70! combinazioni possibili ? La risposta è no. Supponiamo allora di disporre
di un calcolatore che possa effettuare un bilione di assegnamenti per ogni nano secondo; la
risposta sarebbe ancora no. Supponiamo allora di riempire la superficie terrestre di calcolatori
di questo tipo che lavorano in parallelo; la risposta sarebbe ancora no. Si dovrebbe disporre in
verità di 1040 terre ciascuna ricoperta di calcolatori di questo tipo, in funzione dal tempo del
big bang fino a quando il sole si raffredderà.
Da questo esempio facile da enunciare si deduce come in certe situazioni sia assolutamente
impossibile esaminare tutti i casi possibili per determinare qual è il migliore. Per questo,
prima dell’avvento della RO, l’unica possibilità era affidarsi al buon senso di persone guidate
dall’esperienza che stabilivano regole “ad hoc” di base che dovevano essere seguite per risolvere
i problemi (“ad hoc” ground-rule approach).
A questo tipo di approccio si contrappone la RO, il cui contributo centrale consiste nell’introduzione
del cosiddetto approccio modellistico-ottimizzatorio per la soluzione di un problema di decisione.
In questo approccio si organizza l’analisi di un problema reale in due fasi:

• la rappresentazione del problema attraverso un modello matematico che ne astragga gli


1
G.B. Dantzig - Linear Programming the story about it began: some legends, a little about historical
significance, and comments about where its many mathematical programming extensions may be headed
in History of Mathematical programming - a collection of personal reminiscences, J.K. Lenstra, A.H.G.
Rinnooy Kan and A. Schrijver eds., NOrth Holland (1991).

5
aspetti essenziali e che schematizzi le interrelazioni esistenti tra i diversi aspetti del
fenomeno che si sta studiando;
• lo sviluppo di metodi matematici efficienti (algoritmi di soluzione) per determinare una
soluzione ottima del problema o una sua buona approssimazione.

Naturalmente, per costruire correttamente un modello matematico-ottimizzatorio che rap-


presenti un particolare fenomeno, si devono individuare i parametri di controllo significativi e
un criterio per la valutazione della qualità della soluzione. La determinazione del modello è
un’attività complessa e non completamente formalizzabile, che deve far ricorso da una parte
a una conoscenza approfondita delle caratteristiche del problema in esame e dall’altra a stru-
menti che provengono da diverse branche della matematica. Una volta determinato il modello
corretto, la RO si occupa di fornire una procedura esplicita per determinare una soluzione di
un problema; tale procedura può essere rappresentata da metodi matematici analitici o, come
più spesso accade, da metodi numerici che determinano la soluzione del problema mediante
specifici algoritmi di calcolo. Da quanto detto si può capire come la RO sia una metodologia
tipicamente interdisciplinare, applicabile nei più svariati contesti e come proprio dagli stimoli
provenienti da campi anche molto distanti tra di loro tragga una delle principlai ragioni della
sua attuale vitalità.

6
1.3 L’approccio modellistico
Il termine modello è di solito usato per indicare una costruzione artificiale realizzata per ev-
idenziare proprietà specifiche di oggetti reali. Esistono modelli concreti (come ad esempio i
prototipi di aerei o automobili), ma più spesso, come nella Ricerca Operativa, si considerano
modelli astratti cioè modelli matematici che usano il simbolismo dell’algebra per mettere in
evidenza le relazioni principali dell’oggetto che deve essere modellato. I modelli di cui si trat-
terà in seguito sono quindi modelli matematici, e sono costituiti da un insieme di relazioni che
descrivono in modo semplificato, ma rigoroso, uno o più fenomeni del mondo reale. La nozione
di modello matematico per rappresentare il mondo reale non è certo nuova: già Pitagora nel IV
secolo a.C. tentava di costruire un modello matematico dell’Universo. L’interesse per la mod-
ellistica matematica è notevolmente cresciuto e attualmente si confida che attraverso modelli
matematici sia possibile rappresentare molteplici aspetti del mondo reale e studiarne le pro-
prietà. Ciò ha portato ad un enorme sviluppo delle applicazioni della modellistica matematica
anche al di fuori delle tradizionali applicazioni alle scienze fisiche. Si è cosı̀ avuta di fatto una
vasta utilizzazione di modelli matematici in settori lontani dagli ambiti più tradizionali come,
ad esempio, le scienze sociali, la biologia, le scienze ambientali, la psicologia. Come esempi
concreti, si pensi agli studi sulla dinamica della popolazione, sulla diffusione delle epidemie,
sul risanamento ambientale. Questa notevole diffusione della modellistica matematica è anche
dovuta al fatto che l’evoluzione di un modello matematico può essere rapidamente studiata
grazie all’uso di moderni calcolatori elettronici.
È evidente come in molti casi le situazioni rappresentate da un modello sono molto complesse
e alcune volte influenzate da fenomeni di natura aleatoria; per questa ragione, sono state definite
diverse classi di modelli matematici: modelli stocastici che considerano grandezze che possono
essere influenzate da fenomeni aleatori e modelli deterministici che considerano grandezze esatte;
inoltre a seconda che le interazioni tra le grandezze sono immediate o distribuite nel tempo, si
parla di modelli statici e di modelli dinamici.
L’approccio modellistico per risolvere un problema di decisione o, più in generale, l’impiego
di metodi matematici per la soluzione di problemi applicativi, viene di solito realizzato at-
traverso diverse fasi. Tali fasi possono essere schematizzate nel seguente modo:
• Descrizione e Analisi del problema
• Costruzione del modello
• Analisi del modello
• Selezione di “buone” soluzioni (simulazione e/o ottimizzazione)
• Validazione del modello

Descrizione e Analisi del problema


La prima fase consiste nell’analisi della struttura del problema e nell’individuazione dei dati
necessari per una descrizione per una corretta definizione del problema. Si tratta cioè di in-
dividuare i parametri di controllo e di individuare i legami logico-funzionali che definiscono il
problema e lo/gli obiettivi.

Costruzione di un modello matematico


Nella fase di costruzione del modello matematico si deve fornire una descrizione formalizzata
del problema di decisione facendo uso del linguaggio della matematica. Si dovrà cercare, quindi,

7
una corrispondenza tra relazioni del mondo reale (relazioni tecnologiche, leggi fisiche, vincoli di
mercato, etc.) e relazioni matematiche (equazioni, disequazioni, dipendenze logiche, etc.).

relazioni del mondo reale ←→ relazioni matematiche

La costruzione di un modello richiede valutazioni e scelte non facilmente codificabili in un pro-


cedimento standard. In particolare, per la costruzione di modelli soddisfacente è necessaria
una conoscenza approfondita dell’applicazione d’interesse e dei metodi matematici di soluzione.
La conoscenza dell’applicazione assicura che il modello sia soddisfacente e risponda alle do-
mande concrete che l’utilizzatore gli porrà. La conoscenza dei metodi permette la definizione
di modelli ”risolvibili”, cioé per i quali è possibile (al termine del processo di modellazione) la
determinazione di soluzioni di buona ”qualità”.
È importante ribadire che un modello è definito per mezzo delle relazioni che lo costituiscono
ed è quindi necessario che tali relazioni siano il più possibile indipendenti dai dati introdotti
nel modello; questo perché uno stesso modello deve poter essere usato in differenti occasioni
con dati (cioè costi, disponibilità di risorse, limiti tecnologici, etc.) diversi. Lo studio di questo
aspetto, come già detto, rientra nella fase di analisi del modello sotto il nome di analisi della
stabilità del modello rispetto ai dati introdotti.
In generale, la costruzione formale di un modello di Programmazione Matematica si può sinte-
tizzare come segue:

1. Associare opportune variabili di decisione alle grandezze reali. Tali variabili costi-
tuiscono le incognite del problema.
2. Esprimere quantitativamente i legami esistenti tra le variabili e le limitazioni
derivanti da considerazioni di carattere fisico, economico, etc. Tali legami e limi-
tazioni definiscono i vincoli. L’insieme dei valori delle variabili per cui i vincoli sono
soddisfatti costituisce l’insieme ammissibile.
3. Esprimere formalmente l’obiettivo che si intende minimizzare o massimizzare.

Analisi del modello matematico


Segue l’analisi del modello che prevede la deduzione per via analitica, in riferimento a determi-
nate classi di problemi, di alcune importanti proprietà; le principali sono:
– esistenza della soluzione ottima;
– condizioni di ottimalità, cioè una caratterizzazione analitica della soluzione ottima;
– stabilità delle soluzioni al variare dei dati o di eventuali parametri presenti.
Lo studio delle condizioni di ottimalità ha sia motivazioni di natura teorica, sia motivazioni
di natura algoritmica. Dal punto di vista teorico, una condizione di ottimalità può servire a

8
caratterizzare analiticamente le soluzioni di un problema di ottimo e quindi consentire di svol-
gere analisi qualitative, anche in assenza di soluzioni numeriche esplicite; un esempio è l’analisi
della sensibilità delle soluzioni di un problema di ottimo rispetto a variazioni parametriche.

Selezione di “buona” soluzione


La successiva fase di selezione di “buona” soluzione corrisponde alla possibilità di determinare
tra tutte le scelte possibili costituite dalle soluzioni ammissibili, quella ottima o una sua buona
approssimazione.
I problemi di ottimizzazione che si presentano nella pratica sono di solito cosı̀ complessi
che non è possibile determinarne una soluzione per via analitica. La complessità è determinata
innanzi tutto dal numero di variabili e di vincoli, che definiscono la dimensione del problema;
e poi dalla eventuale presenza di funzioni non lineari tra le funzioni che definiscono l’obiettivo
e/o i vincoli.
Se il modello è molto semplice può essere possibile risolvere le relazioni e utilizzare i dati a
disposizione per determinare una soluzione analitica. La soluzione analitica è possibile solo nel
caso di poche variabili e di funzioni estremamente semplici, e cioè solo nei casi che si utilizzano
come esempi ed esercizi nei testi e sulla lavagna. Molto spesso, anche se esiste una soluzione
analitica è estremamente complessa e la sua determinazione richiede molte risorse di calcolo; ad
esempio invertire una matrice è un banale esempio per il quale esiste una formula analitica, ma
che dal punto di vista numerico può per certe istanze non essere affatto banale. Quindi, nella
pratica, per determinare una “buona” soluzione di un problema di ottimizzazione occorre fare
ricorso all’uso del calcolatore.
I due aspetti più importanti e in qualche modo complementari nella ricerca Operativa dell’uso
del calcolatore per la soluzione di un modello matematico sono la simulazione e l’ottimizzazione.
Il processo di simulazione utilizza un modello matematico che consente di visualizzare
l’effetto di alcune decisioni sul sistema in esame senza che queste debbano essere realizzate
effettivamente sul processo reale. La simulazione consiste quindi nella valutazione numerica
delle funzioni che definiscono il modello per alcuni valori delle variabili di interesse allo scopo
di verificare come influenzino alcune misure di performance dell’uscita. Molto spesso, i modelli
per i quali si utilizza la simulazione includono qualche aspetto di natura stocastica e anche
dinamica (di evoluzione nel tempo).
La simulazione può essere usata come strumento per l’ottimizzazione nel senso che colui che
prende le decisioni può procedere per tentativi e scegliere la “migliore” tra varie alternative
possibile. Il modello matematico implementato nel simulatore consente di valutare l’effetto delle
sue decisioni sul sistema nel suo complesso. Questo tipo di approccio è detto analisi di scenari.
L’analisi di scenari è particolarmente utile nel caso di sistemi estremamente complessi e per i
quali una rappresentazione analitica di tutti i legami logico-funzionali può non essere possibile.
La soluzione determinata tramite l’analisi di scenari possibili non ha però alcuna garanzia
di essere quella ottima o una sua approssimazione. L’uso della simulazione come strumento
di ottimizzazione può essere poco significativo sebbene estremamente flessibile; viceversa può
avere un ruolo molto significativo nella successiva fase di validazione del modello in quanto
consente di individuare imprecisioni e/o errori nel modello stesso.
Non si deve confondere quindi il ruolo di ottimizzazione e simulazione. Dato un modello, il
processo di ottimizzazione consiste nella determinazione della soluzione ottima, se esiste, o
almeno di una sua buona approssimazione. Nella pratica, per risolvere un problema di ottimiz-
zazione occorre fare ricorso ad un algoritmo iterativo, cioè ad un programma di calcolo che, a
partire da una approssimazione iniziale x0 della soluzione, determina, con una appropriata se-

9
quenza di operazioni che definiscono una successione di valori {xk }, una nuova approssimazione
x∗ . La possibilità di realizzazione di algoritmi è fortemente legata alla capacità di definire
condizioni di ottimalità che caratterizzano la soluzione ottima di un certo modello.
L’analisi del modello matematico e la definizione di un algoritmo per la sua soluzione sono
aspetti fortemente legati tra di loro.
Molto spesso software di ottimizzazione e di simulazione sono integrati con software statistico
o con fogli elettronici (spreadsheets). La combinazione di simulazione e/o ottimizzazione con
la “visualizzazione” dei risultati è una combinazione vincente. La visualizzazione rende l’uscita
del processo di simulazione e/o di ottimizzazione molto più comprensibile e aggiunge spesso
maggior credibilità al modello, soprattutto nei confronti di un pubblico non tecnico.
L’uso di fogli elettronici per la costruzione di modelli per l’uso di simulazione e di ottimizzazione
sarà discusso in un capitolo successivo.

Validazione del modello


La soluzione numerica ottenuta al passo precedente deve poi essere valutata praticamente.
Questa fase di costruzione del modello non deve essere sottovalutata. I motivi di inattendibilità
di un modello possono essere molti; in particolare la maggior difficoltà consiste nell’ottenere dati
e/o informazioni validi. Spesso questo è legato al diverso linguaggio utilizzato dagli esperti del
problema reale e dagli esperti di ottimizzazione. Informazioni essenziali sono spesso trascurate
perché talmente scontate per l’esperto del problema da non dover essere raccontate. O viceversa
modelli matematici troppo dettagliati possono produrre soluzioni incomprensibili.
La “validazione” del modello può avvenire attraverso una verifica sperimentale oppure con
metodi di simulazione, allo scopo di ottenere, in questa fase di interazione con l’esperto, un
modello matematico sempre più attendibile.
La definizione di un modello si configura quindi come un processo di raffinamento iterativo,
che può essere schematizzato come rappresentato in Figura 1.1.

10
ANALISI
DEL PROBLEMA

COSTRUZIONE
DEL MODELLO

ANALISI
DEL MODELLO

SOLUZIONE
NUMERICA

VALIDAZIONE
DEL MODELLO

Figura 1.1: Fasi dell’approccio modellistico

Vantaggi dell’approccio modellistico


Esistono diverse ragioni per adottare l’approccio modellistico per la soluzione di problemi: si
riassumono di seguito le principali.

– Maggiore comprensione del problema.


Il modello è una rappresentazione semplificata del problema e spesso la sua costruzione
consente di individuare proprietà strutturali del problema che altrimenti non sarebbero
affatto evidenti.
– Possibilità di risolvere matematicamente il problema.
Grazie al modello è possibile analizzare matematicamente il problema ed ottenere cosı̀ una
soluzione che, soprattutto in riferimento a scopi di pianificazione, permette di adottare
strategie che da una sola analisi strutturale del problema non apparirebbero evidenti o
che a volte potrebbero essere perfino controintuitive.
– Deduzione analitica di importanti proprietà.
Nella fase di analisi del modello è possibile dedurre per via analitica alcune importanti
proprietà del problema sulla base dei risultati disponibili per la classe di problemi a cui
si fa riferimento.

11
– Possibilità di simulazioni.
Con un modello è possibile effettuare esperimenti che spesso non è possibile effettuare di-
rettamente nella realtà. La fase di simulazione è un passo fondamentale nella costruzione
di un modello che può essere utilizzata per verificare l’effetto di una decisione, non nec-
essariamente quella ottima, su un prototitpo del sistema e non sul sistema stesso; ad
esempio, l’uso di un modello consente di studiare gli effetti dell’adozione di una partico-
lare misura economica in un paese senza la necessità di sperimentarla direttamente. Il
decision maker ha uno strumento che gli consente di valutare l’effetto di una sua decisione
senza essere necessariamente in grado di capire l’aspetto modellistico del problema.

Critiche all’approccio modellistico


Le principali critiche all’approccio modellistico possono essere sintetizzate nei seguenti due
punti:

– Impossibilità di quantificare soddisfacentemente con opportuni valori numerici alcuni dati


richiesti dal modello; questo accade, ad esempio, nel tentativo di quantificare con un costo
o con un profitto alcuni valori sociali soprattutto in relazione a scopi di pianificazione.
– La qualità delle risposte che un modello produce potrebbero dipendere profondamente
dall’accuratezza dei dati introdotti.

La qualità delle risposte fornite dal modello dipende dall’accuratezza della sua definizione:
la fase di validazione é cruciale per valutare la soluzione numerica ottenuta e completare il
modello introducendo elementi trascurati in una prima fase.

1.4 Un primo esempio di costruzione di un modello matem-


atico
Come primo esempio di costruzione di un modello matematico analizziamo un semplice prob-
lema di pianificazione degli investimenti.

Esempio 1.4.1 – Capital Budgeting. Supponiamo di dover investire £1000 sul mercato
finanziario. Supponiamo inoltre che il mercato offra tre tipi diversi di investimenti A, B, C
ciascuno caratterizzato da un prezzo d’acquisto e da un rendimento netto, che sono riassunti
nella seguente tabella:
A B C
costo 750 200 800
rendimento 20 5 10
Si vuole decidere quali degli investimenti effettuare per massimizzare il rendimento sapendo che
gli investimenti A, B, C non si possono effettuare in modo parziale cioà non sono frazionabili.

Analisi del problema e costruzione del modello.


Si tratta di un problema di pianificazione degli investimenti. Si devono definire formalmente le
variabili di decisione, l’insieme delle soluzioni ammissibili e la funzione obiettivo.

12
– Variabili di decisione. In questo caso il decisore vuole semplicemente sapere, per ogni investi-
mento, se tale investimento deve essere effettuato oppure no. Una scelta naturale delle variabili
di decisione è la seguente:
n
0 non si effetua l’investimento i−esimo
xi = i = A, B, C (1.1)
1 si effettua l’investimento i−esimo
– Insieme ammissibile. In base alla definizione delle variabili, le possibili scelte compatibili con
il nostro budget sono:
(0) non si effettuano investimenti xA = xB = xC = 0
(1) si effettua l’investimento A; xA = 1, xB = xC = 0
(2) si effettua l’investimento B; xA = 0, xB = 1, xC = 0
(3) si effettua l’investimento C; xA = xB = 0, xC = 1
(4) si effettuano gli investimenti A e B; xA = xB = 1, xC = 0
(5) si effettuano gli investimenti B e C; xA = 0, xB = xC = 1.
(6) si effettuano gli investimenti A e C; xA = 1, xB = 0, xC = 1.
(7) si effettuano gli investimenti A, B e C; xA = xB = xC = 1.
Tra queste solo alcune sono compatibili con il nostro budget. In particolare, notiamo che le
possibilità A, C e A, B, C non sono ammissibili in quanto il costo supera la nostra disponibilità,
come si evince dalla Tabella 1.4.
L’insieme ammissibile oè costituito dalle scelte (0) − (5) ed è dato da:
           
 0 1 0 0 1 0 
S =  0 ,  0 ,  1 ,  0 ,  1 ,  1 
 
0 0 0 1 0 1

Si tratta quindi di un sottoinsieme dei vettori di IR3 a componenti 0 − 1 ovvero

S ⊆ {0, 1}3

– Funzione obiettivo. L’obiettivo che ci proponiamo è la massimizzazione del rendimento totale.


Quindi dobbiamo esprimere la funzione obiettivo che corrisponde al rendimento netto relativo
alla scelta di x = (xA , xB , xC )T in S È possibile ottenere la soluzione ottima valutando esausti-
vamente la funzione obiettivo per ogni elemento di S, ottenendo in relazione alle possibili scelte
i valori riportati nella Tabella 1.4.
La soluzione ottima è ovviamente quella corrispondente alla scelta (4), cioè all’effettuare gli
investimenti A e B, con valore della funzione obiettivo pari a £25.
Questo rappresentazione del problema ha alcuni difetti, in particolare:
1. L’insieme ammissibile S è rappresentato in modo estensivo, cioè elencando tutte le
soluzioni ammissibili. In questo caso la cardinalità dell’insieme ammissibile è al più
quella di {0, 1}3 cioè 23 , ma in generale, se la dimensione del problema fosse più grande
sarebbe impossibile valutare esaustivamente le soluzioni del problema. Se, ad esempio, il
numero degli investimenti fosse stato 100 (che dal punto di vista delle applicazioni reali
è del tutto verosimile) la cardinalità dell’insieme ammissibile sarebbe stata 2100 e per la

13
Investimento
(0) (1) (2) (3) (4) (5) (6) (7)
costi 0 750 200 800 950 1000 1550 1750
rendimento 0 20 5 10 25 15 30 35

Tabella 1.1: Tabella costi e rendimenti relativi a tutte le possibili combinazioni di


investimento

valutazione di 2100 possibilità anche supponendo di utilizzare un calcolatore che effet-


tui 1010 valutazioni al secondo (velocità superiore a quella raggiungibile dai calcolatori
attuali) occorrerebbero 1020 secondi, cioè 3000 miliardi di anni !
2. Il modello non è indipendente dai dati del problema, cioè cambiando i dati del problema
(prezzi e/o rendimenti) sarebbe necessario cambiare completamente il modello.
In genere si cerca di dare una rappresentazione intensiva dell’insieme ammissibile S, cioè
individuare le proprietà P (x) che consentono di distinguere le soluzioni ammissibili dagli ele-
menti dell’insieme {0, 1}3 che non lo sono. Si vuole quindi scrivere l’insieme S in una forma del
tipo: © ª
S = x ∈ {0, 1}3 : vale la proprietà P (x) .
Nell’esempio, la proprietà distintiva degli elementi di S è il costo complessivo che non deve
essere superiore a £1000. Possiamo esprimere matematicamente questa relazione come:

P (x) : 750xA + 200xB + 800xC ≤ 1000

e quindi l’insieme ammissibile si può scrivere


© ª
S = x = (xA , xB , xC )T ∈ {0, 1}3 : 750xA + 200xB + 800xC ≤ 1000 .

Anche la funzione obiettivo può essere scritta in forma più sintetica come:

f (x) = 20xA + 5xB + 10xC .

In conclusione, il problema di decisione può essere posto nella forma:

max (20xA + 5xB + 10xC )


750xA + 200xB + 800xC ≤ 1000
xi ∈ {0, 1} i = A, B, C.

14
Capitolo 2

Modelli di Ottimizzazione

2.1 Introduzione
In questo capitolo ci occuperemo più nel dettaglio di quei particolari modelli matematici noti
come Modelli di Ottimizzazione che rivestono un ruolo centrale nella RO. In termini generali,
data una funzione f : IRn −→ IR, ed S ⊆ IRn , un problema di Ottimizzazione può essere formulato
nella forma:
min f (x)
(P O)
x ∈ S.

Quindi un problema di Ottimizzazione consiste nel determinare, se esiste, un punto di minimo


della funzione f tra i punti dell’insieme S. I problemi di ottimizzazione sono spesso denominati,
con terminologia equivalente, problemi di Programmazione Matematica.
Osserviamo subito che un problema di massimo si può sempre ricondurre a un problema di
minimo, cambiando di segno la funzione obiettivo. Infatti, i punti di massimo (ove esistano)
del problema
max f (x)
x∈S
coincidono con i punti di minimo del problema

min −f (x)
x∈S

e risulta: max f (x) = − min(−f (x)).


x∈S x∈S

In base a tale osservazione ci si può riferire esclusivamente, senza perdita di gene-


ralità, a problemi di minimizzazione.

La funzione f viene chiamata funzione obiettivo e l’insieme S insieme ammissibile cioè


l’insieme delle possibili soluzioni del problema. Un punto x ∈ S si chiama soluzione ammissibile.

15
L’insieme ammissibile S è un sottoinsieme di IRn e quindi x = (x1 , x2 , . . . , xn )T è una
variabile vettoriale n-dimensionale e la funzione obiettivo f è una funzione di n variabili reali
f (x1 , x2 , . . . , xn ).

2.2 Definizioni preliminari


Si riportano di seguito alcune definizioni fondamentali riguardanti i problemi di Ottimizzazione.

Definizione 2.2.1 (Problema inammissibile) Il problema di ottimizzazione (PO) si dice


inammissibile se S = ∅, cioè se non esistono soluzioni ammissibili.

Definizione 2.2.2 (Problema illimitato) Il problema di ottimizzazione (PO) si dice il-


limitato (inferiormente) se comunque scelto un valore M > 0 esiste un punto x ∈ S tale che
f (x) < −M .

Un esempio di PO illimitato inferiormente è dato da f (x) = x3 e S = {x : x ≤ 2}. Infatti, al


tendere di x a −∞ la funzione obiettivo tende anch’essa a −∞. Notiamo che se, con la stessa
funzione obiettivo, si cambia l’insieme S, e si pone S = {x : x ≥ 0}, il problema non è più
illimitato inferiormente.

Definizione 2.2.3 (Punto di minimo globale) Si dice che il problema di ottimizzazione


(PO) ammette soluzione ottima (finita) se esiste un x? ∈ S tale che risulti

f (x∗ ) ≤ f (x), per ogni x ∈ S.

Il punto x? è detto soluzione ottima o minimo globale e il corrispondente valore f (x? ) di dice
valore ottimo.

Per esempio, se si pone f = x2 e S = IR, l’ottimo è l’origine, e il corrispondente valore ottimo


è zero. Se si prende S = {x : x ≥ 2}, l’ottimo è 2 e il valore ottimo 4.
In molti problemi di ottimo, in cui la ricerca di soluzioni globali può risultare difficile, può
avere interesse anche la ricerca di soluzioni di tipo “locale”. Indichiamo allora con U (x) un
intorno di un punto x e consideriamo la definizione seguente.

16
Definizione 2.2.4 (Punto di minimo locale) Un punto x∗ ∈ S si dice punto di minimo
locale di f su S se esiste un intorno U (x∗ ) di x∗ tale che:

f (x∗ ) ≤ f (x), per ogni x ∈ S ∩ U (x∗ ),

e, in tal caso, si dice che f (x∗ ) è un minimo locale di f su S.


Si dice che x∗ ∈ S è un punto di minimo locale stretto di f su S se esiste un intorno U (x∗ )
di x∗ tale che:
f (x∗ ) < f (x), per ogni x ∈ S ∩ U (x∗ ), x =
6 x∗ .

Per esempio, se si pone f = −x2 e S = {x : −2 ≤ x ≤ 1}, l’ottimo (minimo globale) è x = −2


di valore ottimo -4, ed il punto x = 1 è un minimo locale di valore pari a 1.
È immediato rendersi conto del fatto che
un punto di minimo globale è anche un punto di minimo locale, ma non è vero in generale il
viceversa.
Naturalmente si può anche presentare il caso in cui la funzione obiettivo è limitata inferiormente
su S ossia:
inf f (x) > −∞,
x∈S

ma tuttavia non esistono punti di minimo globale di f su S.


“Risolvere” un problema di ottimizzazione significa quindi, in pratica:
- stabilire se l’insieme ammissibile è non vuoto, oppure concludere che non esistono soluzioni
ammissibili;
- stabilire se esistono soluzioni ottime, oppure dimostrare che il problema non ammette
soluzioni ottime;
- determinare (eventualmente in modo approssimato) una soluzione ottima.
All’interno dei problemi di Ottimizzazione si possono distinguere le seguenti importanti
classi di problemi:

17
• Problemi di Ottimizzazione Continua.
Le variabili possono assumere tutti i valori reali (x ∈ IRn ); ed inoltre si parla di
problemi di ottimizzazione continua
– vincolata se S ⊂ IRn
– non vincolata se S = IRn .
• Problemi di Ottimizzazione Discreta.
Le variabili sono vincolate ad essere numeri interi (x ∈ Zn ); si possono distinguere
all’interno di questa classe di problemi altre due classi:
– programmazione a numeri interi se S ⊆ Zn
– ottimizzazione booleana se S ⊆ {0, 1}n .
• Problemi misti.
Solo alcune delle variabili sono vincolate ad essere intere.

2.3 Problemi di Programmazione Matematica


Di solito l’insieme ammissibile S viene descritto da una numero finito di diseguaglianze del
tipo g(x) ≤ 0, dove g è una funzione definita su IRn a valori reali. Cioè, formalmente, date m
funzioni gi : IRn → IR, i = 1, . . . , m si esprime S nella forma

S = {x ∈ IRn | g1 (x) ≤ 0, g2 (x) ≤ 0, . . . , gm (x) ≤ 0} .


Ogni diseguaglianza gi (x) ≤ 0 prende nome di vincolo e l’insieme ammissibile è quindi
formato da tutti quei punti x ∈ IRn che sono soluzione del sistema di diseguaglianze

g1 (x) ≤ 0
g2 (x) ≤ 0
g3 (x) ≤ 0
..
.
gm (x) ≤ 0

Osservazione 2.3.1 In questa formulazione dell’insieme S si sono utilizzati vincoli di dis-


eguaglianza nella forma di minore o uguale, ma è chiaro che questa notazione include i casi in
cui i vincoli sono espressi con vincoli di disuguaglianza nella forma di maggiore o uguale e vin-
coli di uguaglianza; infatti si può sempre trasformare un vincolo di maggiore o uguale del tipo
g(x) ≥ 0 in un vincolo di minore o uguale semplicemente riscrivendolo nella forma −g(x) ≤ 0.
Inoltre un vincolo di uguaglianza g(x) = 0 può essere riscritto nella forma equivalente delle due
diseguaglianze g(x) ≤ 0 e −g(x) ≤ 0.

18
Quindi si può riscrivere il problema di ottimizzazione (PO) nella forma

min f (x)
(2.1)
gi (x) ≤ 0, i = 1, . . . , m.

Un problema di questo tipo viene chiamato problema di Programmazione Matematica.


I problemi di Programmazione Matematica si possono classificare in base alle proprietà della
funzione obiettivo e dei vincoli prendendo in considerazione, tra le più significative la linearità,
la convessità.
Una prima distinzione è quella che fa riferimeno all’ipotesi di linearità. Da tale punto di vista,
possiamo distinguere:
- problemi di Programmazione Lineare (PL), in cui l’obiettivo è una funzione lineare del
tipo
c1 x1 + c2 x2 + · · · + cn xn ,
e i vincoli sono espressi da un sistema di equazioni e disequazioni lineari, cioè esprimibili
nella forma
ai1 x1 + . . . + ain xn ≥ (≤ / =)bi
- problemi di Programmazione Non Lineare (PNL), in cui l’obiettivo oppure i vincoli non
sono tutti lineari.
I problemi di PNL corrispondono alla situazione più generale. I problemi non vincolati rientrano
nella classe di PNL, infatti, in tal caso f è necessariamente una funzione non lineare da Rn in
R; è facile verificare che se f fosse lineare il problema non ammetterebbe soluzione.
Inoltre, in linea di principio, possono essere formulati come problemi di PNL anche i problemi
combinatori.
La classificazione dei problemi di Programmazione Matematica in base alla proprietà di
convessità sarà affrontata nel Capitolo 5.
Alcuni esempi di problemi di Programmazione Matematica sono i seguenti:
Esempio 2.3.2 Si consideri una funzione obiettivo di due variabili f (x1 , x2 ) = 2x1 + x2 che
si vuole minimizzare, con i vincoli 2x1 + x2 ≤ 1, x1 ≥ 0, x2 ≥ 0. Si ottiene il problema
min 2x1 + x2
x1 + x2 ≤ 1
x1 ≥ 0
x2 ≥ 0
che è nella forma (2.1) dove g1 (x1 , x2 ) = x1 + x2 − 1, g2 (x1 , x2 ) = −x1 , g3 (x1 , x2 ) = −x2 .
L’insieme ammissibile è descritto attraverso da tre vincoli. Poiché tutte le funzioni che com-
paiono sono lineari nella variabili x1 e x2 , questo problema è un problema di Programmazione
Lineare.
Esempio 2.3.3 Si consideri una funzione obiettivo f (x1 , x2 ) = (x1 − 12 )2 + (x2 − 12 )2 che si
vuole massimizzare, con i vincoli x1 + x2 ≥ 1, x1 ≤ 1, x2 ≤ 1. Si ottiene il problema
min −(x1 − 21 )2 − (x2 − 21 )2
x1 + x2 ≥ 1
x1 ≤ 1
x2 ≤ 1

19
che è nella forma (2.1) dove g1 (x1 , x2 ) = 1 − x1 − x2 , g2 (x1 , x2 ) = x1 − 1, g3 (x1 , x2 ) = x2 − 1.
L’insieme ammissibile è un poliedro; la funzione obiettivo è quadratica. Si tratta quindi di un
problema di Programmazione Non Lineare.

Esempio 2.3.4 Si consideri una funzione obiettivo f (x1 , x2 ) = 3x31 + 7x21 + x2 che si vuole
minimizzare, con vincoli x1 + x2 ≤ 21 , x1 ≥ 0, x2 ≥ 1. Si ottiene il problema
min 3x31 + 7x21 + x2
x1 + x2 ≤ 12
x1 ≥ 0
x2 ≥ 1
che è un problema di Programmazione Non Lineare che può essere facilmente ricondotto nella
forma (2.1) riscrivendo gli ultimi due vincoli nella forma −x1 ≤ 0 e −x2 ≤ −1.

Esempio 2.3.5 Si consideri una funzione obiettivo f (x1 , x2 ) = x1 +x2 che si vuole minimizzare
sulla regione ammissibile descritta dal vincolo di uguaglianza 4x1 − x2 = −2. Il problema
risultante è:
min x1 + x2
4x1 − x2 = −2
che è un problema di Programmazione Lineare con un solo vincolo di uguaglianza.

2.4 Esempi di modelli di Programmazione Matematica


Come primi esempi di costruzione di modelli verranno ora analizzati dei semplici problemi di
pianificazione della produzione e un problema di progettazione industriale.

Esempio 2.4.1 (Un problema di produzione (allocazione di risorse)) Un colorificio pro-


duce due tipi di coloranti C1 e C2 utilizzando 3 preparati base in polvere P1, P2, P3 che ven-
gono sciolti in acqua. La differente concentrazione dei preparati base dà origine ai due diversi
tipi di coloranti. Le quantità (in ettogrammi) di preparati base necessarie per produrre un litro
di colorante di ciascuno dei due tipi è riportato nella seguente tabella
C1 C2
P1 1 1
P2 1 2
P3 - 1

Ogni giorno la quantità di ciascuno dei preparati base (in ettogrammi) della quale il colorificio
può disporre è la seguente
P1 P2 P3
750 1000 400

Il prezzo di vendita del colorante C1 è di 7 Euro al litro, mentre il colorante C2 viene venduto
a 10 Euro al litro. Determinare la strategia ottimale di produzione giornaliera in modo da
massimizzare i ricavi ottenuti dalla vendita dei due coloranti.

20
Formulazione.
Si vuole costruire il modello di Programmazione Lineare che rappresenti il problema in analisi
considerando le limitazioni date dalle produzioni effettivamente realizzabili.
È immediato associare le variabili di decisione ai quantitativi di coloranti prodotti. Siano,
quindi, rispettivamente x1 e x2 i quantitativi (in litri) da produrre giornalmente dei due col-
oranti.
Nel formulare il modello di Programmazione Lineare si deve verificare che siano soddisfatte
le ipotesi fondamentali:
• Proporzionalità.
I consumi dei preparati base e i ricavi ottenibili sono proporzionali ai quantitativi di col-
oranti prodotti. Ad esempio, per produrre una quantità x2 di colorante C2 si consumano
2x2 ettogrammi di P2 e dalla vendita di x2 litri di C2 si ricavano 10x2 migliaia di lire
indipendentemente dalla quantità prodotta e venduta dell’altro tipo di colorante.
• Additività.
I consumi dei preparati base e i ricavi rispettivamente associati alla produzione dei due
coloranti sono additivi, nel senso che per produrre x1 litri di colorante C1 e x2 di C2 si
consumano x1 +2x2 ettogrammi di preparato di base P2 e si ricavano 7x1 +10x2 migliaia
di lire.
• Continuità.
Ogni variabile introdotta nel modello può assumere tutti i valori reali nell’intervallo di
ammissibilità.

– Variabili. Come già detto, prendiamo come variabili di decisione x1 e x2 , rispettivamente i


quantitativi (in litri) di colorante C1 e C2 da produrre giornalmente.
– Funzione obiettivo. È rappresentata dal profitto totale che per le ipotesi fatte è dato (in Euro)
da 7x1 + 10x2 .
– Vincoli. Poiché il consumo di preparati base non può essere superiore alla disponibilità si
deve avere

x1 + x2 ≤ 750
x1 + 2x2 ≤ 1000
x2 ≤ 400.

Inoltre si deve esplicitare il vincolo di non negatività sulle variabili

x1 ≥ 0, x2 ≥ 0.

Quindi la formulazione finale è

max 7x1 + 10x2


x1 + x2 ≤ 750
x1 + 2x2 ≤ 1000
x2 ≤ 400
x1 ≥ 0, x2 ≥ 0.

21
Esempio 2.4.2 (Un problema di pianificazione della produzione industriale)) Un’industria
chimica fabbrica 4 tipi di fertilizzanti, Tipo 1, Tipo 2, Tipo 3, Tipo 4, la cui lavorazione
è affidata a due reparti dell’industria: il reparto produzione e il reparto confezione. Per ot-
tenere fertilizzante pronto per la vendita è necessaria naturalmente la lavorazione in entrambi i
reparti. La tabella che segue riporta, per ciascun tipo di fertilizzante i tempi (in ore) necessari
di lavorazione in ciascuno dei reparti per avere una tonnellata di fertilizzante pronto per la
vendita.
Tipo 1 Tipo 2 Tipo 3 Tipo 4
Reparto produzione 2 1.5 0.5 2.5
Reparto confezionamento 0.5 0.25 0.25 1

Dopo aver dedotto il costo del materiale grezzo, ciascuna tonnellata di fertilizzante dà i seguenti
profitti (prezzi espressi in Euro per tonnellata)
Tipo 1 Tipo 2 Tipo 3 Tipo 4
profitti netti 250 230 110 350

Determinare le quantità che si devono produrre settimanalmente di ciascun tipo di fertilizzante


in modo da massimizzare il profitto complessivo, sapendo che settimanalmente il reparto pro-
duzione può lavorare al più 100 ore mentre il reparto confezionamento può lavorare al più 50
ore settimanali.

Analisi del problema e costruzione del modello.


Si tratta di un problema di pianificazione della produzione industriale. Costruiamo un mod-
ello di Programmazione Matematica rappresentante il problema in analisi supponendo di voler
pianificare la produzione settimanale.
– Variabili di decisione. La scelta delle variabili di decisione é molto delicata: infatti la qualitá
dell’intero modello dipenderá da essa. In genere, per stabilire l’opportuno insieme di variabili
di decisione, conviene porsi la seguente domanda: che cosa vuole sapere il decisore alla fine del
processo di ottimizzazione? Ancora meglio, cosa gli é sufficiente sapere, per prendere le sue
decisioni? In questo caso, ad esempio, tutto ció che il decisore deve conoscere sono le quantitá di
fertilizzante da produrre per ciascun tipo. Dunque introduciamo le variabili reali x1 , x2 , x3 , x4
rappresentanti rispettivamente le quantità di prodotto del Tipo 1, Tipo 2, Tipo 3, Tipo 4
da fabbricare in una settimana.
– Funzione Obiettivo. Ciascuna tonnellata di fertilizzante contribuisce al profitto totale secondo
la tabella data. Quindi il profitto totale sarà
250x1 + 230x2 + 110x3 + 350x4 . (2.2)
L’obiettivo dell’industria sarà quello di scegliere le variabili x1 , x2 , x3 , x4 in modo che l’espressione
(2.2) del profitto sia massimizzata. La (2.2) rappresenta la funzione obiettivo.
– Vincoli. Ovviamente la capacità produttiva della fabbrica limita i valori che possono assumere
le variabili xj , j = 1, . . . , 4; infatti si ha una capacità massima lavorativa in ore settimanali di
ciascun reparto. In particolare per il reparto produzione si hanno a disposizione al più 100 ore
settimanali e poiché ogni tonnellata di fertilizzante di Tipo 1 utilizza il reparto produzione per
2 ore, ogni tonnellata di fertilizzante di Tipo 2 utilizza il reparto produzione per 1.5 ore e cosı̀
via per gli altri tipi di fertilizzanti si dovrà avere
2x1 + 1.5x2 + 0.5x3 + 2.5x4 ≤ 100. (2.3)

22
Ragionando in modo analogo per il reparto confezionamento si ottiene

0.5x1 + 0.25x2 + 0.25x3 + x4 ≤ 50. (2.4)

Le espressioni (2.3), (2.4) costituiscono i vincoli del modello. Si devono inoltre esplicitare
vincoli dovuti al fatto che le variabili xj , j = 1, . . . 4 rappresentando quantità di prodotto non
possono essere negative e quindi vanno aggiunti i vincoli di non negatività

x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0.

La formulazione finale sarà quindi

max 25x1 + 23x2 + 11x3 + 35x4


2x1 + 1.5x2 + 0.5x3 + 2.5x4 ≤ 100
0.5x1 + 0.25x2 + 0.25x3 + x4 ≤ 50
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0.

Questa formulazione è un problema matematico ben definito e costituisce il modello di Program-


mazione Matematica rappresentante il problema di pianificazione della produzione industriale
in analisi. Si tratta, in questo caso, di un problema di programmazione lineare.

Esempio 2.4.3 (Dimensionamento ottimo) Un’industria deve costruire un silos di forma


cilindrica. Tale silos deve essere posto in un magazzino appoggiato su una delle basi. Tale
magazzino è a pianta rettangolare di dimensioni metri 20 × 10 ed ha un tetto spiovente lungo il
lato di 10 metri, che ha altezza massima di metri 5 e altezza minima di metri 3. Per costruire
questo silos deve essere usato del materiale plastico sottile flessibile che può essere tagliato,
modellato e incollato saldamente. Sapendo che si dispone di non più di 200 m2 di tale materiale
plastico si costruisca un modello che permetta di determinare le dimensioni del silos (raggio di
base ed altezza) in modo da massimizzare la quantità di liquido che può esservi contenuto.

Analisi del problema e costruzione del modello.


Si tratta di determinare il dimensionamento ottimale di un contenitore cilindrico per uso in-
dustriale cercando di massimizzare il suo volume tenendo presente che deve essere contenuto in
un magazzino di dimensioni fissate.
Si devono definire formalmente le variabili di decisione, l’insieme delle soluzioni ammissibili
e la funzione obiettivo.
– Variabili di decisione. È immediato introdurre due variabili x e y che rappresentano rispet-
tivamente la lunghezza (in metri) del raggio di base e dell’altezza del contenitore cilindrico.
– Funzione obiettivo. La funzione obiettivo è rappresentata dal volume del contenitore cilindrico
ed è data da
πx2 y.

– Vincoli. Il diametro della base non può superare le dimensioni del magazzino e quindi deve
essere
2x ≤ 10.

23
La limitazione dell’altezza del contenitore varia al variare del diametro di base in quanto il tetto
è spiovente. Dato che la pendenza del tetto è del 20%, dovrà risultare

y ≤ 5 − 0.2 · 2x.

Inoltre disponendo solo di una quantità limitata di materiale plastico la superficie totale del
contenitore cilindrico non può superare 200m2 e quindi deve risultare

2πx2 + 2πxy ≤ 200.

Si devono infine esplicitare i vincoli di non negatività x ≥ 0, y ≥ 0.


La formulazione complessiva risulta quindi

max x2 y
x≤5
y ≤ 5 − 0.2 · 2x
2πx2 + 2πxy ≤ 200
x ≥ 0, y ≥ 0.

Il modello è quindi un modello di programmazione non lineare.

Esempio 2.4.4 (Discriminazione del prezzo)


Consideriamo un monopolista che operi su due mercati distinti (ad es. nazionale ed estero)
ciascuno con una diversa funzione di domanda. Indichiamo con xi l’offerta sul mercato i = 1, 2
e con Pi = fi (xi ) la funzione di domanda inversa sul mercato i. Supponiamo inoltre che il costo
di produzione sia proporzionale con una costante c alla offerta complessiva x1 + x2 . Il problema
consiste nel massimizzare il profitto del monopolista.

Analisi del problema e costruzione del modello.


– Variabili di decisione. È immediato considerare le due variabili x1 , x2 che rappresentano
l’offerta sui due mercati distinti del bene.
– Funzione obiettivo. Su vuole massimizzare il profitto, ovvero ricavo meno costi. La funzione
ricavo è
x1 f1 (x1 ) + x2 f (x2 ),
mentre il costo è c(x1 + x2 ). Il profitto totale sarà quindi

f (x) = x1 f1 (x1 ) + x2 f (x2 ) − c(x1 + x2 ).

– Vincoli. Poiché le due variabili rappresentano un’offerta si tratta di quantità non negative
xi ≥ 0 per i = 1, 2.
Più in generale nel caso di n mercati distinti, posto x = (x1 , . . . , xn )T si ha l’insieme ammissibile:

S = {x ∈ Rn : x ≥ 0} .

Il problema di ottimizzazione corrispondente è


n
X n
X
max xi fi (xi ) − c xi .
x∈S
i=1 i=1

24
Molto spesso le funzioni fi (xi ) hanno un andamento lineare del tipo

fi (xi ) = ai − mi xi con mi > 0.

La funzione ricavo risulta essere quindi una funzione quadratica del tipo
n
X
xi (ai − mi xi ) = −xT M x + aT x
i=1

con M matrice diagonale ad elementi positivi diag{mi }ni=1 e a = (a1 . . . , an )T .

Esempio 2.4.5 (Problemi di approssimazione o di curve fitting)


Supponiamo di conoscere i valori φ(ti ) che una funzione continua φ : R → R assume in punti
ti con i = 1, . . . , N in un intervallo [tmin , tmax ]. Si vuole approssimare φ(t) su un intervallo
assegnato [tmin , tmax ] per mezzo di un polinomio di grado n:
n
X
pn (t; x) = xk tk ,
k=0

in cui xk , per k = 0, . . . , n sono i coefficienti (incogniti) del polinomio e in cui si é posto

x = (x0 , x1 , . . . , xn ) ∈ Rn+1 .

Si possono definire gli errori

ei (x) = φ(ti ) − pn (ti ; x), i = 1, . . . , m,

che rappresentano la differenza tra il valore effettivo della funzione φ(ti ) e il valore ottenuto con
la funzione approssimante pn (ti ; x). È allora possibile considerare diverse funzioni di ottimo
1. minimizzazione dell’errore quadratico medio
m
X
min ei (x)2 ,
i=1

2. minimizzazione del massimo valore assoluto dell’errore

min max |ei (x)|.


1≤i≤m

3. minimizzazione della somma dei valore assoluto dell’errore


m
X
min |ei (x)|.
i=1

Si tratta di problemi di ottimizzazione non vincolata. Osserviamo che nel caso 1, la funzione
obiettivo é quadratica nelle incognite x (si veda l’esempio 6.5.2). I problemi del tipo 2 e 3
hanno funzione obiettivo che non è continuamente differenziabile. Nel paragrafo 3.3.4 si vedrà
che problemi del tipo 2 e 3 possono essere ricondotti a problemi di programmazione lineare.

25
A titolo di esempio numerico sia φ(t), t ∈ R una funzione nota sperimentalmente che assume i
valori seguenti:
t 0 1 2 3
Φ(t) 0 1 4 9
Si vuole approssimare la funzione y = φ(t) con un polinomio di primo grado (ovvero una retta)
del tipo y = x1 t + x0 in cui x0 , x1 sono le incognite. Si definiscono gli errori

ei (xi ) = yi − (x1 ti + x0 ), i = 1, . . . , 4.

I tre problemi diventano:


£ ¤
min x20 + (x1 + x0 − 1)2 + (2x1 + x0 − 4)2 + (3x1 + x0 − 9)2
x
© ª
min max |x0 |, |x1 + x0 − 1|, |2x1 + x0 − 4|, |3x1 + x0 − 9|
x
£ ¤
min |x0 | + |x1 + x0 − 1| + |2x1 + x0 − 4| + |3x1 + x0 − 9|
x

26
Capitolo 3

Modelli di Programmazione
Lineare

In questo capitolo esaminiamo in modo più dettagliato la Programmazione Lineare. In parti-


colare saranno presentati alcuni modelli di PL più o meno classici.

3.1 Struttura di un problema di Programmazione Lineare


Come abbiamo già visto nel Capitolo 2 un problema di Programmazione Lineare è caratterizzato
da una funzione obiettivo lineare (da minimizzare o massimizzare) della forma
n
X
f (x) = c1 x1 + . . . + cn xn = cj xj
j=1

e da un numero finito m di vincoli lineari della forma

a11 x1 + ... +a1n xn ' b1


a21 x1 + ... +a2n xn ' b2
.. .. .. (3.1)
. ... . .
am1 x1 + ... +amn xn ' bm .
dove con ' intendiamo ≤, ≥ oppure =.
Introducendo il vettore c ∈ IRn , definito c = (c1 , . . . , cn )T , x ∈ IRn definito x = (x1 , . . . , xn )T ,
il vettore b = (b1 , . . . , bm )T e la matrice (m × n)
 
a11 ... a1n
 .. .. 
A= . .
am1 . . . amn

un generico problema di Programmazione Lineare può essere scritto nella forma

min cT x
Ax ' b.

27
Si osservi che, indicando con aTi , i = 1, . . . , m, le righe della matrice A, ciascun vincolo del
problema, ovvero ciascuna disuguaglianza della (3.1) può essere scritto nella forma aTi x ' bi ,
i = 1, . . . , m con ' pari a ≤, ≥ oppure =.

Un problema di PL consiste nel minimizzare (massimizzare) una funzione obiettivo lineare su


un poliedro.

Tra le forme di poliedri più usate nella definizione di problemi di PL abbiamo le seguenti:
(a) S = {x ∈ Rn : Ax = b}
(b) S = {x ∈ Rn : Ax ≥ b}
(c) S = {x ∈ Rn : Ax = b, x ≥ 0} (forma standard)
In R2 sono poliedri, ad esempio, gli insiemi definiti come segue.

x2

x2
x2
3 3
3

S
x1 3
3 1 x1 3 x1
S

a) b) c)

Figura 3.1: Esempi di poliedri in IR2 .

(a) S = {x ∈ R2 : x1 + x2 = 3} rappresentato in a) di Figura 3.1. La matrice A = (1 1) e


b = 3.
(b) S = {x ∈ R2 : x1 + x2 ≤ 3, x1 ≥ 1} rappresentato in b) di Figura 3.1.
µ ¶ µ ¶
1 1 3
La matrice A = eb=
1 0 0

28
(c) (forma standard) S = {x ∈ R2 : x1 + x2 = 3, x1 ≥ 0, x2 ≥ 0} rappresentato in c) di
Figura 3.1. La matrice A = (1 1) e b = 3.

In generale però è sempre possibile sempre riportarsi ad una delle forme (b) o (c) con
semplici trasformazioni dei vincoli o delle variabili. È da notare che non è possibile ricondursi
nel caso generale a problemi con soli vincoli di uguaglianza del tipo

min cT x
Ax = b.

Tali problemi sono in effetti di scarsa rilevanza pratica in quanto è possibile dimostrare che se
esiste una soluzione ammissibile e il problema non è illimitato allora tutte le soluzioni ammissibili
sono ottime. In particolare vale il teorema 10.2.1.

Trasformazioni dei vincoli Osserviamo che si può sempre supporre che il secondo mem-
bro di un vincolo di uguaglianza o disuguaglianza sia non negativo. Infatti, se cosı̀ non fosse,
basta moltiplicare per (−1) (ovvero cambiare di segno) ad entrambi i membri del vincolo e,
eventualmente cambiare il verso della disuguaglianza. Supponiamo quindi nel seguito, senza
perdere di generalità che bj ≥ 0.

Da disuguaglianza a uguaglianza Con l’introduzione di opportune variabili aggiuntive


non negative, ogni vincolo di disuguaglianza può sempre essere posto nella forma di vincolo di
uguaglianza. Infatti un vincolo del tipo

aTj x ≤ bj , (3.2)

può essere riscritto nella forma

aTj x + xn+1 = bj , con xn+1 ≥ 0

ove la variabile xn+1 rappresenta la differenza, non negativa, tra il secondo e il primo membro
della disuguaglianza (3.2), e viene detta variabile di slack. D’altra parte una disuguaglianza del
tipo
aTj x ≥ bj , (3.3)
può essere posta nella forma

aTj x − xn+1 = bj , con xn+1 ≥ 0

ove la variabile xn+1 rappresenta la differenza, non negativa, tra il primo e il secondo membro
della disuguaglianza (3.3), e viene detta variabile di surplus. Quando la distinzione non è
necessaria, le variabili slack e di surplus vengono chiamate variabili ausiliarie.

Esempio 3.1.1 Il sistema di vincoli

3x1 + 4x3 ≤ 5
−5x1 + x2 − 6x3 = −7
8x1 + 9x3 ≥ 2

29
può essere riscritto nella forma

3x1 + 4x3 + x4 = 5
5x1 − x2 + 6x3 = 7
8x1 + 9x3 − x5 = 2
x4 ≥ 0
x5 ≥ 0

avendo introdotto la variabile slack x4 e la variabile di surplus x5 , entrambe non negative. 2

Da uguaglianza a disuguaglianza È anche possibile trasformare vincoli di uguaglianza in


vincoli di disuguaglianza. Considerato il vincolo aTj x = bj si pu]‘o trasformare in due vincoli di
disuguaglianza
aTj x ≤ bj
−aTj x ≤ −bj

Trasformazioni delle variabili Nei problemi di programmazione lineare si può sempre


assumere che le variabili di decisione siano non negative, e cioè che per ogni i risulti xi ≥ 0.
Infatti se per qualche i deve risultare xi ≤ 0, basta effettuare la sostituzione xi = −x0i ,
con x0i ≥ 0; se per qualche i la variabile xi non è vincolata in segno, basta sostituire ad
essa la differenza tra due variabili aggiuntive entrambe vincolate in segno, cioè basta porre
xi = x+ − + −
i − xi , con xi ≥ 0, e xi ≥ 0.

Esempio 3.1.2 Sia dato il vincolo


x1 + 0.5x2 ≤ 3
con x2 ≤ 0 e con x1 non vincolata.
Ponendo x1 = x1 − x3 e x2 = −x2 , equivale al vincolo

x1 − 0.5x2 − x3 ≤ 3

con xi ≥ 0, i = 1, 2, 3. 2

3.2 Trasformazioni equivalenti


Consideriamo alcune formulazioni equivalenti di PL relative ad alcune importanti classi di
problemi. In particolare, analizziamo il caso in cui la funzione obiettivo è il massimo tra
funzioni lineari oppure nella funzione obiettivo sono presenti dei valori assoluti.

3.2.1 Funzione obiettivo di tipo max


Si consideri il problema
µ ¶
min max {cTi x + di } (3.4)
x∈S 1≤i≤m

in cui S è un poliedro e cTi x + di , i = 1, . . . , m sono assegnate con x ∈ IRn , ci ∈ IRn . Il problema


(3.4) ha una funzione obiettivo che è della forma max1≤i≤m hi (x) con hi : Rn → R che, in
generale, risulta non differenziabile e dunque non lineare. Un esempio di funzione di questo

30
20

15

10

0
-10 -5 0 5 10

© ª
Figura 3.2: max 2x, −x, 12 x + 9

tipo per n = 1 e m = 3 è rappresentato in Figura 3.2. I problemi di questo tipo sono di solito
chiamati problemi minimax.
Aggiungendo una variabile v ∈ R è possibile mostrare che tale problema è equivalente al
problema di Programmazione Lineare:

minx,v v
x∈S (3.5)
cTi x + di ≤ v, i = 1, . . . , m.

Per dimostrare l’equivalenza dei problemi (3.4) e (3.5), dobbiamo fare vedere che data una
soluzione x∗ del problema (3.4) possiamo determinare una soluzione (x, v)∗∗ del problema (3.5)
e viceversa.
Supponiamo di avere una soluzione x∗ del problema (3.4). Posto x∗∗ = x∗ e v ∗∗ =
max1≤i≤m {cTi x∗ + di } abbiamo che la coppia (x, v)∗∗ è ammissibile per il problema (3.5),
infatti
x∗∗ = x∗ ∈ S cTi x∗∗ + di ≤ v ∗∗ = max {cTi x∗∗ + di }.
1≤i≤m
∗∗
Inoltre v ≤ v per ogni (x, v) ammissibile.
Viceversa, sia data una soluzione ottima (x, v)∗ del problema (3.5), una soluzione ammissibile
del problema (3.4) è x∗∗ = x∗ ∈ S. Si tratta anche della soluzione ottima perche‘

v ≥ v ∗ = max {cTi x∗ + di }
1≤i≤m

31
3.2.2 Funzione modulo
Si consideri il problema
min |cT x| (3.6)
x∈S

con x ∈ IRn , c ∈ IRn . Il problema (3.6) può essere equivalentemente scritto nella forma

20

15

10

0
10
5
-10 0
-5
0 -5
5 -10
10

Figura 3.3: Curve di livello della funzione f (x, y) = |x + y|

min max{cT x, −cT x} (3.7)


x∈S

e dunque applicando la trasformazione descritta per il problema (3.4), si ottiene il problema


equivalente
minx,v v
cT x ≤ v
(3.8)
cT x ≥ −v
x ∈ S.

Sono inoltre equivalenti i seguenti problemi:


µ ¶ minx,v v
min max |hi (x)| −v ≤ hi (x) ≤ v, i = 1, . . . , m
x∈S 1≤i≤m
x ∈ S.

32
3.3 Semplici esempi di problemi di programmazione lin-
eare
Chiariremo meglio i concetti finora esposti con alcuni esempi. I problemi descritti hanno una
funzione essenzialmente esemplificativa. In casi concreti, un problema di programmazione lin-
eare può avere un numero di variabili di decisione e un numero di vincoli dell’ordine delle decine
e centinaia di migliaia.

3.3.1 Problemi di miscelazione.


Si tratta di problemi in cui si hanno a disposizione un certo numero di sostanze ciascuna delle
quali ha un certo costo ed un determinato contenuto di componenti utili. Si vuole ottenere la
miscela più economica di queste sostanze tale che contenga una certa quantità di ciascuno dei
componenti.
vediamo un semplice esempio.

Un problema di miscelazione
Un’industria conserviera deve produrre succhi di frutta mescolando polpa di frutta e dolcificante
ottenendo un prodotto finale che deve soddisfare alcuni requisiti riguardanti il contenuto di
vitamina C, di sali minerali e di zucchero. La polpa di frutta e il dolcificante vengono acquistati
al costo rispettivamente di Lire 400 e Lire 600 ogni ettogrammo. Inoltre dalle etichette si ricava
che 100 grammi di polpa di frutta contengono 140 mg di vitamina C, 20 mg di sali minerali e
25 grammi di zucchero, mentre 100 grammi di dolcificante contengono 10 mg di sali minerali,
50 grammi di zucchero e non contengono vitamina C. I requisiti che il prodotto finale (cioè
il succo di frutta pronto per la vendita) deve avere sono i seguenti: il succo di frutta deve
contenere almeno 70 mg di vitamina C, almeno 30 mg di sali minerali e almeno 75 grammi di
zucchero. Si devono determinare le quantità di polpa di frutta e di dolcificante da utilizzare
nella produzione del succo di frutta in modo da minimizzare il costo complessivo dell’acquisto
dei due componenti base.
Formulazione.
Si vuole costruire un modello di Programmazione Lineare che rappresenti il problema in analisi
tenendo presente i requisiti di qualità richiesti. Si verifica facilmente che le ipotesi fondamentali
di un modello di Programmazione Lineare sono soddisfatte.
– Variabili. È naturale associare la variabili di decisione alle quantità di polpa di frutta e di
dolcificante da utilizzare per la produzione del succo di frutta. Quindi siano x1 e x2 rispettiva-
mente le quantità espresse in ettogrammi di polpa di frutta e di dolcificante che devono essere
utilizzate.
– Funzione obiettivo. È rappresentata dal costo complessivo dell’acquisto dei due componenti
base e quindi è data da 400x1 +600x2 . Questa espressione naturalmente deve essere minimizzata.
– Vincoli. Poiché un ettogrammo di polpa contiene 140 mg di vitamina C e il dolcificante non
contiene vitamina C, il primo vincolo da considerare riguardante il contenuto di vitamina C del
succo di frutta si può scrivere nella forma

140x1 ≥ 70.

33
Analogamente per rispettare il requisito sul contenuto di sali minerali del succo di frutta si
dovrà imporre il vincolo
20x1 + 10x2 ≥ 30.
Infine il vincolo sul contenuto di zucchero del succo di frutta si può esprimere nella forma

25x1 + 50x2 ≥ 75.

Infine si deve esplicitare il vincolo di non negatività sulle variabili cioè

x1 ≥ 0, x2 ≥ 0.

Quindi la formulazione finale è

min 400x1 + 600x2


140x1 ≥ 70
20x1 + 10x2 ≥ 30
25x1 + 50x2 ≥ 75
x1 ≥ 0, x2 ≥ 0

Formalmente, supponiamo di disporre di n sostanze diverse che indichiamo con S1 , S2 , . . . , Sn


ciascuna delle quali contenga una certa quantità di ciascuno degli m componenti utili che
indichiamo con C1 , C2 , . . . , Cm . Supponendo che ogni sostanza Sj abbia costo unitario cj ,
j = 1, . . . , n
S1 S2 · · · Sn
c1 c2 · · · cn
si desidera ottenere la miscela più economica che soddisfi alcuni requisiti qualitativi, cioè con-
tenga una quantità non inferiore a bi di ciascun Ci , i = 1, . . . , m

C1 C2 ··· Cm
b1 b2 ··· bm .

Si indichi con aij , i = 1, . . . , m, j = 1, . . . , n la quantità di componente Ci presente nella sostanza


Sj . Si può cosı̀ costruire la seguente tabella
S1 ··· Sj ··· Sn
C1 a11 ··· a1j ··· a1n
.. .. .. ..
. . . .
Ci ai1 ··· aij ··· ain
.. .. .. ..
. . . .
Cm am1 ··· amj ··· amn

Supponendo che valgano le ipotesi di proporzionalità, additività ed inoltre assumendo che le


quantità di sostanze da utilizzare siano frazionabili, si può formulare questo problema in termini
di un problema di Programmazione Lineare.

34
Generalizzando quanto fatto nell’esempio,è naturale introdurre le variabili di decisione x1 , x2 , . . . , xn
rappresentanti la quantità di ciascuna sostanza S1 , S2 , . . . , Sn da utilizzare nella miscela. In-
troducendo come spazio delle variabili lo spazio delle n−uple reali IRn si può considerare un
x ∈ IRn definendo x = (x1 , . . . , xn )T .
La funzione obiettivo può essere scritta
n
X
z = c1 x1 + . . . + cn xn = cj xj .
j=1

Introducendo c ∈ IRn , definito c = (c1 , . . . , cn )T , la funzione obiettivo può essere scritta in


notazione vettoriale
z = cT x.

Si devono introdurre i seguenti vincoli:


• Vincoli di qualità.
Tenendo conto del fatto che la miscela deve contenere una quantità non inferiore a bi di
ciascun componente Ci si dovrà avere
n
X
aij xj ≥ bi , i = 1, . . . , m.
j=1

• Si devono considerare i vincoli di non negatività sulle variabili cioè xj ≥ 0, j = 1, . . . , n.


Introducendo la matrice (m × n)
 
a11 ... a1n
. .. 
A =  .. .
am1 . . . amn
e il vettore b = (b1 , . . . , bm )T la formulazione completa del problema può essere scritta nella
forma 
 min cT x
Ax ≥ b (3.9)

x ≥ 0, x ∈ IRn .

Nella pratica, potrebbe essere necessario introdurre ulteriori vincoli:


• possono essere presenti limitazioni superiori o inferiori sulle variabili cioè xj ≥ L, xj ≤ M ,
j = 1, . . . , n;
• se è richiesto anche che la miscela contenga una quantità non superiore ad un valore di di
ciascun componente Ci si dovrà aggiungere alla formulazione un altro vincolo di qualità:
n
X
aij xj ≤ di , i = 1, . . . , m;
j=1

• in alcuni casi si richiede che una certa sostanza appartenga alla miscela solo se un’altra
sostanza vi appartiene (o non vi appartiene). Questi vincoli sono detti disgiuntivi e la
loro formalizzazione matematica sarà discussa nel Capitolo 12.

35
3.3.2 Modelli di trasporto.
Sono definite m località origini indicate con O1 , . . . , Om , e n località destinazioni indicate con
D1 , . . . , Dn . Ogni origine Oi , (i = 1, . . . , m) può fornire una certa disponibilità ai ≥ 0 di merce
che deve essere trasferita dalle origini alle destinazioni
O1 ··· Om
a1 ··· am .
Ad ogni destinazione Dj , (j = 1, . . . , n) è richiesta una quantità bj ≥ 0 di merce.
D1 ··· Dn
b1 ··· bn .
Supponiamo che il costo del trasporto di una unità di merce da Oi a Dj sia pari a cij . Tali costi
nella realtà sono spesso collegati alle distanze tra origini e destinazioni. Si può cosı̀ costruire la
seguente tabella
D1 ··· Dj ··· Dn
O1 c11 ··· c1j ··· c1n
.. .. .. ..
. . . .
Oi ci1 ··· cij ··· cin
.. .. .. ..
. . . .
Om cm1 ··· cmj ··· cmn

Il problema consiste nel pianificare i trasporti in modo da soddisfare le richieste delle destinazioni
minimizzando il costo del trasporto complessivo nella seguente ipotesi:
• la disponibilità complessiva uguaglia la richiesta complessiva, cioè
m
X n
X
ai = bj ; (3.10)
i=1 j=1

si escludono possibilità di giacenze nelle origini, cioè tutta la merce prodotta in una origine
deve essere trasportata in una delle destinazioni; si escludono possibilità di giacenze nelle des-
tinazioni, cioè la quantità totale che arriva in una destinazione Dj deve uguagliare la richiesta
bj .
Formulazione.
Si vuole dare una formulazione del problema in esame in termini di un problema di program-
mazione lineare supponendo quindi che siano verificate le ipotesi di linearità e continuità.
– Variabili. Per ogni coppia di origine e destinazione Oi , Dj si introducono le variabili di
decisione xij rappresentanti la quantità di merce da trasportare da Oi , a Dj . Si tratta di mn
variabili
D1 ··· Dj ··· Dn
O1 x11 ··· x1j ··· x1n
.. .. .. ..
. . . .
Oi xi1 ··· xij ··· xin
.. .. .. ..
. . . .
Om xm1 ··· xmj ··· xmn

36
– Funzione obiettivo. La funzione obiettivo da minimizzare sarà data da costo totale del
trasporto e quindi da
Xm Xn
z= cij xij .
i=1 j=1

– Vincoli. Per le ipotesi fatte, si avranno due tipi di vincoli:

• vincoli di origine

n
X
xij = ai i = 1, . . . , m; (3.11)
j=1

impongono che tutta la merce prodotta in una origine sia trasportata alle destinazioni;
si tratta di m vincoli;

• vincoli di destinazione

m
X
xij = bj j = 1, . . . , n; (3.12)
i=1

impongono che la quantità totale di merce che arriva in ciascuna delle destinazioni
uguaglia la richiesta; si tratta si n vincoli.

Si devono infine considerare i vincoli di non negatività delle variabili

xij ≥ 0 i = 1, . . . , n; j = 1, . . . , m.

Si è cosı̀ ottenuta una formulazione del problema dei trasporti con mn variabili e m+n+mn
vincoli:   

 Xm X n



 min  cij xij 



 i=1 j=1

X n

xij = ai i = 1, . . . , m (3.13)

 j=1



 Xm

 xij = bj j = 1, . . . , n




 i=1
xij ≥ 0 i = 1, . . . , n; j = 1, . . . , m.

Osservazione 1 È chiaro che per le ipotesi fatte dovrà risultare


m X
X n n X
X m m
X n
X
xij = xij = ai = bj .
i=1 j=1 j=1 i=1 i=1 j=1

Anzi vale il seguente risultato

37
Teorema 3.3.1 Condizione necessaria e sufficiente affinché il problema (3.13) ammetta soluzione,
cioè che esista una soluzione ammissibile, è che risulti
m
X n
X
ai = bj . (3.14)
i=1 j=1

Tale risultato chiarisce perché nella formulazione classica del problema dei trasporti si adotta
l’ipotesi (3.10) cioè che la disponibilità complessiva uguagli la richiesta complessiva.
Passiamo, ora, ad analizzare alcune varianti della formulazione classica del problema dei
trasporti; può infatti accadere che non tutte le rotte di trasporto siano disponibili: se non è
possibile il trasporto da una certa origine Oi ad una destinazione Dj si pone, per convenzione,
cij = ∞.
Oppure possono esistere rotte di trasporto Oi − Dj in cui vi sono limitazioni sulle quantità
massima di merci trasportabili uij . Questo produce dei vincoli del tipo xij ≤ uij .
Infine, si può supporre che la disponibilità complessiva possa essere superiore alla domanda
cioè
Xm Xn
ai ≥ bj . (3.15)
i=1 j=1

In tal caso, possono essere ammesse giacenze nelle origini e/o nelle destinazioni; se si accetta
di avere giacenze nelle origini, allora i vincoli di origine diventano
n
X
xij ≤ ai i = 1, . . . , m;
j=1

se si accetta di avere giacenze nelle destinazioni, allora i vincoli di destinazione diventano


m
X
xij ≥ bj j = 1, . . . , n.
i=1

Anche nel caso in cui valga la (3.15), il problema dei trasporti può essere posto nella sua
formulazione classica, cioè con soli vincoli di uguaglianza, introducendo una destinazione fittizia
che abbia una richiesta pari a
Xm n
X
ai − bj
i=1 j=1

e ponendo uguale a zero il costo per raggiungere questa destinazione fittizia da qualsiasi origine.

Un problema di trasporto
Consideriamo un’industria che produce un bene di consumo in due stabilimenti di produzione,
situati rispettivamente a Pomezia e a Caserta. La produzione viene prima immagazzinata in
due depositi, situati uno a Roma e l’altro a Napoli. Quindi i prodotti vengono distribuiti alla
rete di vendita al dettaglio. Per ogni unità di prodotto, il costo del trasporto dallo stabilimento
al deposito è dato dalla Tabella:

38
Roma Napoli
Pomezia 1 3
Caserta 3.5 0.5
Costi di trasporto euro/unità
La capacità produttiva dei due stabilimenti è limitata, per cui ogni settimana il bene in
questione non può essere prodotto in più di 10000 unità nello stabilimento di Pomezia e in più
di 8000 unità nello stabilimento di Caserta. Inoltre le statistiche di vendita informano che ogni
settimana vengono vendute mediamente 11000 unità tramite il deposito di Roma e 4600 unità
tramite il deposito di Napoli. L’industria vuole minimizzare il costo del trasporto della merce
dagli stabilimenti ai depositi, assicurando che i depositi ricevano settimanalmente le quantità
medie prima indicate.
Le variabili di decisione sono le quantità del bene di consumo trasportate settimanalmente,
che possiamo associare alle variabili x1 , x2 , x3 , x4 nel seguente modo:
quantità trasportata da Pomezia a Roma x1
quantità trasportata da Pomezia a Napoli x2
quantità trasportata da Caserta a Roma x3
quantità trasportata da Caserta a Napoli x4
che corrisponde in forma di tabella a
Roma Napoli
Pomezia x1 x2
Caserta x3 x4
Variabili decisione
La funzione obiettivo è il costo sostenuto settimanalmente per il trasporto:
z(x1 , x2 , x3 , x4 ) = x1 + 3x2 + 3.5x3 + 0.5x4 .
P P
Osserviamo che i ai = 18000 e j bj = 15600, dunque siamo nell’ipotesi (3.15) e supponiamo
di accettare giacenze nelle origini.
Poichè i due stabilimenti hanno capacità produttiva limitata deve essere
x1 + x2 ≤ 10000
x3 + x4 ≤ 8000.
Poichè si vuole garantire il rifornimento medio settimanale (senza giacenza), deve essere
x1 + x3 = 11000
x2 + x4 = 4600.
Infine evidentemente deve risultare xi ≥ 0, i = 1, 2, 3, 4, e quindi il problema di programmazione
lineare per l’industria dell’esempio è il seguente:
min z = x1 + 3x2 + 3.5x3 + 0.5x4
x1 + x2 ≤ 10000
x3 + x4 ≤ 8000
x1 + x3 = 11000
x2 + x4 = 4600
xi ≥ 0, i = 1, 2, 3, 4.

39
3.3.3 Un problema di Yield Management ferroviario
Una compagnia ferroviaria vende i biglietti per il treno che effettua il percorso dalla città A
(Roma) alla B (Bologna) effettuando una fermata intermedia F1 (Firenze).

x13

x12 x23

1 2 3
L1 L2

Figura 3.4: Un treno con percorso composto da due tratte L1 , L2 e tre Origini-Destinazione
(1,2), (2,3), (1,3)

Le tariffe sono fissate a priori e dipendono solo dalla distanza tra le origini-destinazioni. In
particolare i prezzi in Euro (1a classe) per per ciascuna possibile Origine-Destinazione (O-D)
coperta dal treno sono riportati nella Tabella 3.3.3.

O-D A-F1 A-B F1 -B


Tariffa 42,35 53,20 18,59

Tabella 3.1: Tariffe per le tre possibili O-D coperte dal treno

Il numero di posti disponibili sul treno è pari a 700.


All’inizio del periodo di prenotazione la domanda per ciascuna origine-destinazione (O-D)
è incerta, ma è nota una previsione sulla domanda il cui valor (medio) µ è riportato in Tabella
3.3.3.

O-D A-F1 A-B F1 -B


µ 420 355 335

Tabella 3.2: Domanda prevista per le tre possibili O-D coperte dal treno

Il problema consiste nel determinare quanti posti vendere su ciascuna Origine -Destinazione
(O-D) coperta dal treno in modo da massimizzare il profitto.
Formulazione.
Si vuole costruire un modello di Programmazione Lineare che rappresenti il problema in analisi
tenendo presente i requisiti richiesti. Si assume che la domanda effettiva per ciascuna origine-
Destinazione sarà almeno pari al valor medio µ.

40
– Variabili. È naturale associare la variabili di decisione alle quantità di posti prenotabili su
ciascuna Origine-Destinazione possibile. In questo caso, sono le tre variabili x12 , x13 e x23 che
rappresentano rispettivamente i posti prenotabili sulla tratta A-F1 , A-B, F1 -B.
– Funzione obiettivo. È rappresentata dal profitto (atteso) relativo alla vendita e quindi è data
da 42, 35x12 + 53, 20x13 + 18, 59x23 . Questa espressione naturalmente deve essere massimizzata.
– Vincoli. Osserviamo innanzitutto che, poiché per ipotesi si avranno almeno µ domande per
ciascuna Origine-Destinazione, è necessario imporre i vincoli

x12 ≤ 420
x13 ≤ 355
x23 ≤ 335

in quanto non è sensato prenotare più posti della domanda effettiva.


Inoltre devono essere imposti i vincoli legato alla capacità di posti del treno. In particolare,
nel tratto da A ad F1 sono presenti sia i viaggiatori che si recano da A ad F1 che quelli che
vanno da A ad B. cosı́ nel tratto dal F1 a B sono presenti sia i viaggiatori che vanno da A ad
B che quelli che vanno da F1 a B. Avremo quindi 2 vincoli

x12 + x13 ≤ 700


x23 + x13 ≤ 700

Infine si deve esplicitare il vincolo di non negatività sulle variabili cioè x12 , x23 , x13 ≥ 0.
In principio le variabili rappresentano dei posti, e quindi si dovrebbero esplicitare anche i vincoli
di interezza. Questi vincoli possono essere omessi come sarà chiarito in un prossimo capitolo.
Quindi la formulazione finale è

max 42, 35x12 + 53, 20x13 + 18, 59x23


x12 + x13 ≤ 700
x23 + x13 ≤ 700
0 ≤ x12 ≤ 420
0 ≤ x13 ≤ 355
0 ≤ x23 ≤ 335
(x12 , x23 , x13 intere)

3.3.4 Minimizzazione dello scarto massimo


Consideriamo i casi 2 e 3 definiti nel Esempio 2.4.5.
Si vuole costruire un modello di Programmazione Lineare equivalente ai problemi

1. minimizzazione del massimo valore assoluto dell’errore

min max |ei (x)|.


1≤i≤m

2. minimizzazione della somma dei valore assoluto dell’errore


m
X
min |ei (x)|
i=1

41
utilizzando le trasformazioni nel paragrafo 3.2. Nel primo caso la funzione obiettivo è

f (m, q) = max {|x1 ti + x0 − y(ti )|} = max{|x0 |, |x1 + x0 − 1|, |2x1 + x0 − 4|, |3x1 + x0 − 9|}.
i=0,1,2,3

– Vincoli. Non ci sono vincoli espliciti, ma per poter ricondurre il problema di

min max{|x0 |, |x1 + x0 − 1|, |2x1 + x0 − 4|, |3x1 + x0 − 9|}


x1 ,x0

ad un problema di Programmazione Lineare è necessario introdurre una variabile aggiuntiva


z ∈ R ed i vincoli

max{|x0 |, |x1 + x0 − 1|, |2x1 + x0 − 4|, |3x1 + x0 − 9|} ≤ z.

Si ottiene il problema di PL: 


 minx1 ,x0 ,z z

 −z ≤ x0 ≤ z



−z ≤ x1 + x0 − 1 ≤ z

 −z ≤ 2x1 + x0 − 4 ≤ z


 −z ≤ 3x1 + x0 − 9 ≤ z

z ≥ 0.
osserviamo che il vincolo x ≥ 0 è implicato dagli altri vincoli e dunque puo‘ essere eliminato.
– Funzione obiettivo “somma di moduli”. Nel secondo caso la funzione obiettivo è
X
f (m, q) = |x1 ti + x0 − y(ti )| = |x0 | + |x1 + x0 − 1| + |2x1 + x0 − 4| + |3x1 + x0 − 9|.
t=0,1,2,3

– Vincoli. Non ci sono vincoli espliciti, ma per poter ricondurre il problema di

min (|x0 | + |x1 + x0 − 1| + |2x1 + x0 − 4| + |3x1 + x0 − 9|)


x

ad un problema di Programmazione Lineare è necessario introdurre le variabile aggiuntive zi ∈


R, i = 1, . . . , 4 ed i vincoli

|x0 | ≤ z1 |x1 + x0 − 1| ≤ z2 |2x1 + x0 − 4| ≤ z3 |3x1 + x0 − 9| ≤ z4 .

Si ottiene il problema di PL:



 min z1 + z2 + z3 + z4

 x∈R2 ,z∈R4

 −z1 ≤ x0 ≤ z1
 −z2 ≤ x1 + x0 − 1 ≤ z2


 −z3 ≤ 2x1 + x0 − 4 ≤ z3

−z4 ≤ 3x1 + x0 − 9 ≤ z4 .
osserviamo che anche in questo caso il vincolo x ≥ 0 è implicato dagli altri vincoli e dunque
puo‘ essere eliminato.

42
Capitolo 4

Soluzione grafica di problemi PM


in 2 variabili

In questo paragrafo si vuole fornire una interpretazione geometrica di un problema di Program-


mazione matematica. In particolare, quando un problema di Programmazione matematica è
definito solamente in due variabili, si può rappresentare efficacemente il problema sul piano
cartesiano e si può determinare una sua soluzione in maniera elementare con semplici deduzioni
geometriche. Le situazioni che verranno presentate nel seguito vogliono rappresentare un punto
di partenza intuitivo per la trattazione di problemi di Programmazione Lineare in n variabili; i
risultati che verranno dedotti per via elementare nel caso bidimensionale trovano, infatti, una
generalizzazione consistente nel caso di un generico problema di Programmazione Lineare.

4.1 Rappresentazione di vincoli nel piano cartesiano


In questo paragrafo si richiamano le rappresentazioni geometriche nel piano di alcune curve
note in modo analitico.

4.1.1 Vincoli lineari


Nel piano cartesiano Ox1 x2 l’equazione lineare
a1 x1 + a2 x2 = c (4.1)
rappresenta una retta che partiziona il piano in due semipiani. Ciascun semipiano è caratter-
izzato da punti P (x1 , x2 ) che soddisfano la disequazione ax1 + bx2 ≥ c oppure la disequazione
ax1 + bx2 ≤ c. Quindi ogni disequazione del tipo
ax1 + bx2 ≥ c oppure ax1 + bx2 ≤ c
individua univocamente un semipiano. Si riporta, ora, un semplice risultato geometrico che
verrà utilizzato nel seguito.

Lemma 4.1.1 Si considera una famiglia di rette parallele


a1 x1 + a2 x2 = c (4.2)

43
µ ¶
a1
con a1 , a2 ∈ IR fissati e con c ∈ IR. Il vettore a = individua una direzione ortogonale alle
a2
rette della famiglia (4.2) ed è orientato dalla parte in cui sono le rette della famiglia ottenute
per valori crescenti della c, cioè verso il semipiano in cui risulta a1 x1 + a2 x2 ≥ c.

Dimostrazione. Sia x un vettore di componenti x1 e x2 . La famiglia di rette (4.2) può essere


scritta in forma vettoriale
aT x = c.
Siano ora x̄ e z̄ due punti appartenenti alla retta aT x = c. Risulta quindi
aT z̄ = c e aT x̄ = c
e sottraendo membro a membro queste due uguaglianze si ottiene
aT (z̄ − x̄) = 0.
Quindi il vettore a è ortogonale al vettore z̄ − x̄ che individua la direzione della famiglia di rette
cioè il vettore a rappresenta una direzione ortogonale alla famiglia di rette (4.2).
Si consideri ora un punto x̄ = (x1 , x2 )T appartenente alla retta aT x = c e un punto
ȳ = (y1 , y2 )T tale che aT y ≥ c. Si vuole dimostrare che il punto ȳ appartiene al semipiano
individuato dalla retta aT x = c verso il quale è orientato il vettore a. Infatti, per le ipotesi
fatte, si ha
aT ȳ ≥ c e aT x̄ = c
e sottraendo membro a membro queste due relazioni si ottiene
aT (ȳ − x̄) ≥ 0
e questo significa che l’angolo θ che il vettore ȳ − x̄ forma con il vettore a deve essere acuto
e quindi il vettore a deve essere orientato verso il semipiano ove si trova il punto ȳ, cioè il
semipiano individuato dalla diseguaglianza aT x ≥ c. (Figura 4.1)

Come esempio del risultato riportato dalµlemma ¶ appena dimostrato, si consideri la disug-
3
uaglianza lineare 3x1 +x2 ≥ 6. Il vettore a = individua una direzione ortogonale alla retta
1
3x1 + x2 = 6 ed è orientato verso il semipiano individuato dalla disuguaglianza 3x1 + x2 ≥ 6
(Figura 4.2).
Nella pratica, per determinare quale dei due semipiani è individuato dalla disuguaglianza
lineare a1 x1 +a2 x2 ≥ c si può procedere semplicemente in questo modo: dopo aver rappresentato
la retta a1 x1 + a2 x2 = c per individuare qual è il semipiano di interesse, si può scegliere un
punto P del piano (l’origine degli assi è il piú semplice) e valutare l’espressione a1 x1 + a2 x2 in
questo punto; se il valore cosı̀ ottenuto è maggiore o uguale di c allora il semipiano individuato
dalla disuguaglianza lineare a1 x1 + a2 x2 ≥ c è quello contenente il punto P ; in caso contrario
è quello opposto.

4.1.2 Vincoli quadratici


Nel piano cartesiano Ox1 x2 le equazioni quadratiche rappresentano delle coniche. Consideriamo
delle equazioni del tipo h(x1 , x2 ) = 0 polinomi di grado massimo pari a due. Ci limiteremo a
richiamare le equazioni h = 0 della circonferenza e della parabola.

44
x
2

T
ax> C

-
y

θ
a
_
x
T ≤ C
ax

x
1

Figura 4.1: Interpretazione geometrica del Lemma 4.1.1

3x 1+ x2 > 6
3x 1+ x2 ≤ 6

1111111
0000000
0000000
1111111
a

Figura 4.2: Rappresentazione del vincolo lineare 3x1 + x2 ≥ 6

45
Nel piano cartesiano Ox1 x2 l’equazione quadratica

h(x1 , x2 ) = (x1 − a1 )2 + (x2 − a2 )2 − r2 = 0 (4.3)

rappresenta una circonferenza di centro C=(a1 a2 )T e raggio fissato r. Il gradiente di h è dato


µ ¶ µµ ¶ µ ¶¶
2(x1 − a1 ) x1 a1
∇h(x) = =2 −
2(x2 − a2 ) x2 a2

Ad una circonferenza possono essere associati due insiemi

S ≤ = {x ∈ IR2 : (x1 − a1 )2 + (x2 − a2 )2 ≤ r2 }


S ≥ = {x ∈ IR2 : (x1 − a1 )2 + (x2 − a2 )2 ≥ r2 }

la cui intersezione è la circonferenza stessa. S ≤ è l’insieme dei punti ”interni“ alla circonferenza,
mentre S ≥ rappresenta i punti “esterni”.
Nel piano cartesiano Ox1 x2 le equazioni quadratiche riconducibili alla forma
¡ ¢
h(x1 , x2 ) = x2 − ¡a1 x21 + a2 x1 + a3 ¢ = 0
h(x1 , x2 ) = x1 − a1 x22 + a2 x2 + a3 = 0

rappresentano rispettivamente una parabola con asse parallelo all’asse delle ordinate e ascissa
a2
del vertice pari a − 2a 1
e una parabola con asse parallelo all’asse delle ascisse e ordinata del
a2
vertice pari a − 2a1 . Consideriamo senza perdere di generalità la prima delle due equazioni e
gli insiemi individuati dai due vincoli di disuguaglianza corrispondenti

S ≤ = {x ∈ IR2 : x2 ≤ a1 x21 + a2 x1 + a3 }
S ≥ = {x ∈ IR2 : x2 ≥ a1 x21 + a2 x1 + a3 }

S ≤ è l’insieme dei punti che si trova “internamente” alla parabola stessa e S ≥ è l’insieme dei
punti “esterni”.

4.2 Rappresentazione di funzioni obiettivo


Quanto esposto nel paragrafo precedente è utile anche per esaminare la variazione di una fun-
zione lineare/quadratica che rappresenta la funzione obiettivo di un problema di Program-
mazione Matematica. In particolare, data una generica funzione obiettivo f (x1 , x2 ), si rappre-
sentano le curve di livello della funzione ovvero le curve

f (x1 , x2 ) = k (4.4)

ottenuta al variare di k. Se il problema è di minimizzazione, si cercherà di ottenere un valore


piú basso possibile per la k in corrispondenza di valori ammissibili per x1 e x2 ; viceversa, se il
problema è di massimizzazione, si cercherà ottenere un valore piú alto possibile per la k.

4.2.1 Funzioni lineari


In due variabili, la funzione obiettivo di un problema di Programazione Lineare è un’espressione
del tipo f (x1 , x2 ) = c1 x1 + c2 x2 da massimizzare o da minimizzare. Per rappresentare questa

46
funzione obiettivo su un piano cartesiano Ox1 x2 si considera la famiglia di rette parallele (k =
C)
c1 x1 + c2 x2 = C (4.5)
ottenuta al variare di C, che rappresentano le rette di livello della funzione. Sulla base di quanto
esposto nel paragrafo precedente,
µ valori
¶ superiori della C si determinano traslando le rette nel
c1
verso individuato dal vettore che rappresenta, quindi, una direzione di crescita per la
c2
funzione c1 x1 + c2 x2 . Ovviamente, la direzione opposta sarà una direzione di decrescita.
Quindi, geometricamente, un problema di massimizzazione consisterà nel considerare la
traslazione nel verso della direzione di crescita della funzione obiettivo, mentre in un problema
di minimizzazione si considera la traslazione nel verso opposto (Figura 4.3)

x2

12

11
direzione di crescita
10

7
6

1 2 3 4 5 6 2 x +x =12 x1
1 2
2 x 1 +x 2=8 2 x 1 +x 2=10

Figura 4.3: Rette di livello della funzione 2x1 + x2

4.2.2 Funzioni quadratiche


In due variabili, consideriamo la funzione obiettivo quadratica

f (x1 , x2 ) = (x1 − a1 )2 + (x2 − a2 )2 (4.6)

Per rappresentare questa funzione obiettivo su un piano cartesiano Ox1 x2 si considera la famiglia
di curve (k = r2 )
(x1 − a1 )2 + (x2 − a2 )2 = C 2 (4.7)

47
ottenuta al variare di C, che rappresentano circonferenze concentriche di raggio variabile C.
Se il problema è di massimizzazione si vuole trovare il massimo valore di raggio ottenibile
in corrispondenza di valori ammissibili per x1 e x2 ; viceversa se si tratta di minimizzazione.
Osserviamo che se il centro della circonferenza base è ammissibile, esso costituisce il punto di
minimo globale.

4.3 Esempi di risoluzione grafica


Verranno considerati alcuni esempi di problemi di Programmazione Matematica.

Esempio 4.3.1 Sia la funzione obiettivo da minimizzare:


f (x) = x1
e sia l’insieme ammissibile F definito dai vincoli:
2 2
(x1 − 3) + (x2 − 2) = 13
2
(x1 − 4) + x2 2 ≤ 16
Determinare graficamente, se esiste, un punto di minimo.
Soluzione. Questo esempio evidenzia geometricamente la definizione di minimo locale vinco-
lato in un problema a 2 variabili.

x2

A x1

Figura 4.4: Soluzione grafica in IR2 dell’Esempio 4.3.1.

L’insieme ammissibile F, rappresentato in Figura (4.4), ed è dato dall’arco di circonferenza


d
ACB (tratteggiato in verde). Poiché esso è compatto e f è continua, in base al Teorema di
Weierstrass, l’esistenza di un minino globale è assicurata.

48
Le curve di livello x1 = k sono rette parallele all’asse delle ordinate con valore crescente
all’aumentare di k. Si determina il punto di minimo globale nel punto A = (0, 0)T di valore
f ∗ = 0. Si osserva che il punto C è un massimo globale, mentre il punto B risulta essere un
minimo locale.

Esempio 4.3.2 Sia dato il problema di ottimizzazione vincolata

min 2x1 + 3x2


6x1 + x22 − x2 ≤ 12
x1 − 4x2 ≤ −2
x1 , x2 ≥ 0

Determinare, se esiste, un punto di minimo globale.

Esempio 4.3.3 Si consideri la funzione obiettivo:


1
f (x) = (x1 2 + x2 2 )
2
e sia l’insieme ammissibile F definito dai vincoli:

x1 + x2 = 1
2 1
(x1 − 1) + x2 2 ≤ 4

Determinare se esiste un punto di minimo.

Soluzione. L’insieme ammissibile F é dato dal segmento di retta che ha per estremi i punti
³ ´T ³ ´
1 1 1 1
x̃ = 1 − 2√ , √
2 2 2
e x̄ = 1 + √ , √
2 2 2 2
T.

L’esistenza di una soluzione é garantita dal Teorema di Weierstrass poiché la funzione


obiettivo é continua e l’insieme ammissibile é compatto.
Le curve di livello della funzione obiettivo
1
(x1 2 + x2 2 ) = r2
2
sono circonferenze di centro l’origine e raggio r.

Esempio 4.3.4
Si consideri ora il problema di allocazione ottima di risorse del Paragrafo 2.4.1 che è rappresen-
tato dal seguente problema di Programmazione Lineare:

max 7x1 + 10x2


x1 + x2 ≤ 750
x1 + 2x2 ≤ 1000
x2 ≤ 400
x1 ≥ 0, x2 ≥ 0.
Sul piano cartesiano Ox1 x2 ciascun vincolo individua un semipiano. In particolare, in Figura 4.6
è evidenziato il semipiano individuato dal primo vincolo x1 + x2 ≤ 750.

49
Figura 4.5: Soluzione grafica in IR2 dell’Esempio 4.3.3.

In Figura 4.7 è evidenziato il semipiano individuato dal secondo vincolo x1 + 2x2 ≤ 1000.
Infine in Figura 4.8 è evidenziato il semipiano individuato dal terzo vincolo x2 ≤ 400.
Ovviamente i vincoli di non negatività delle variabili x1 ≥ 0 e x2 ≥ 0 rappresentano
rispettivamente il semipiano delle ascisse non negative e il semipiano delle ordinate non negative.
L’insieme ammissibile del problema di Programmazione Lineare che stiamo esaminando è
dato quindi dall’intersezione di tali semipiani e si può indicare con

n o
S = (x1 , x2 ) ∈ IR2 | x1 + x2 ≤ 750, x1 + 2x2 ≤ 1000, x2 ≤ 400, x1 ≥ 0, x2 ≥ 0 .

Tale regione di piano prende nome di regione ammissibile, è un insieme convesso ed è rappre-
sentato in Figura 4.9.
Tutti i punti P (x1 , x2 ) appartenenti a questa regione sono punti dell’insieme ammissibile
del problema e quindi tutti i punti di questa regione costituiscono soluzioni ammissibili del
problema.
Si consideri ora la funzione obiettivo 7x1 + 10x2 e si consideri la famiglia di rette

7x1 + 10x2 = C

ottenute al variare del parametro C. Esse costituiscono le curve di livello della funzione in
due variabili f (x1 , x2 ) = 7x1 + 10x2 che sono ovviamente delle rette come rappresentato in
Figura 4.10.
In riferimento al problema di allocazione ottima rappresentato dal problema di Program-
mazione Lineare che stiamo esaminando, il parametro C rappresenta il profitto totale che deve

50
Figura 4.6: Semipiano individuato dal vincolo x1 + x2 ≤ 750

Figura 4.7: Semipiano individuato dal vincolo x1 + 2x2 ≤ 1000

51
Figura 4.8: Semipiano individuato dal vincolo x2 ≤ 400

Figura 4.9: La regione ammissibile S

52
Figura 4.10: Curve di livello della funzione f (x1 , x2 ) = 7x1 + 10x2 e punto di ottimo

essere massimizzato. Per C = 0 si ottiene la linea di livello passante per l’origine del piano
Ox1 x2 . Ovviamente, scegliendo x1 = 0 e x2 = 0 (che è un punto ammissibile in quanto
(0, 0) ∈ S) si ottiene il profitto totale nullo. All’aumentare del valore di tale profitto, cioè
all’aumentare del valore della costante C, graficamente si ottengono rette parallele alla retta
di livello passanteµ per¶l’origine traslate nella direzione di crescita della funzione 7x1 + 10x2
7
data dal vettore (Figura 4.10). Poiché si desidera massimizzare la funzione obiettivo,
10
si cercherà di raggiungere il valore piú alto per la C ottenuto scegliendo per x1 e x2 valori
ammissibili cioè tali che (x1 , x2 ) ∈ S. Osservando la rappresentazione grafica della regione
ammissibile S si deduce che all’aumentare di C, le rette di livello della funzione obiettivo inter-
secano la regione ammissibile finché C ≤ 6000. Tale valore è ottenuto per x1 = 500 e x2 = 250
e non esistono altri punti della regione ammissibile in cui la funzione obiettivo assume valori
maggiori. Il valore 6000 è, quindi, il massimo valore che la funzione obiettivo può raggiungere
soddisfacendo i vincoli. Tale soluzione ottima è raggiunta in corrispondenza del punto P di
coordinate (x1 , x2 ) = (500, 250); tale punto non è un punto qualsiasi, ma costituisce quello che
nella geometria piana viene detto vertice del poligono convesso che delimita la regione ammissi-
bile. Il fatto che l’ottimo del problema è raggiunto in corrispondenza di un vertice della regione
ammissibile non è casuale, ma come si vedrà in seguito, è una caratteristica fondamentale di
un generico problema di Programmazione Lineare. Si osservi fin d’ora che la frontiera della
regione ammissibile è definita dalle rette

x1 + x2 = 750, x1 + 2x2 = 1000, x2 = 400, x1 = 0, x2 = 0

53
e che ogni intersezione di due di queste rette è un vertice della regione ammissibile; il numero di
queste possibili intersezioni (non tutte necessariamente appartenenti alla regione ammissibile)
è ovviamente pari al piú a 10. Si osservi, infine, che nel punto di ottimo sono attivi i vincoli
x1 + x2 ≤ 750 e x1 + 2x2 ≤ 1000 mentre non è attivo il vincolo x2 ≤ 400.

Figura 4.11: Esempio di soluzione non unica

Nel caso particolare che abbiamo esaminando, la soluzione ottima determinata è unica,
ma in generale può accadere che le rette di livello della funzione obiettivo siano parallele ad
un segmento del perimetro del poligono che delimita la regione ammissibile; in questo caso
potrebbe accadere che esistano piú punti ammissibili in cui la funzione assume lo stesso valore
ottimo e quindi la soluzione non sarebbe piú unica; nel problema in esame, ciò accadrebbe, ad
esempio, se la funzione obiettivo fosse cx1 + 2cx2 con c costante reale positiva (Figura 4.11);
infatti, tutti i punti del segmento AB rappresentano soluzioni ottime.
Tuttavia, anche in questo caso si può sempre trovare un vertice che costituisce una soluzione
ottima.

Esempio 4.3.5
Consideriamo ora un problema di miscelazione descritto nel paragrafo 3.3.1 che è rappresentato

54
dal seguente problema di Programmazione Lineare:

 min(400x1 + 600x2 )


 140x1 ≥ 70
20x1 + 10x2 ≥ 30


 25x1 + 50x2 ≥ 75

x1 ≥ 0, x2 ≥ 0
Nelle figure che seguono rappresentati i vincoli lineari di questo problema; In particolare nella
Figura 4.12 è evidenziato il semipiano individuato dal vincolo 140x1 ≥ 70. Nella Figura 4.13

Figura 4.12: Semipiano individuato dal vincolo 140x1 ≥ 70

e nella Figura 4.14 sono evidenziati rispettivamente i semipiani individuati dai vincoli 20x1 +
10x2 ≥ 30 e 25x1 + 50x2 ≥ 75.
Ovviamente i vincoli di non negatività delle variabili x1 ≥ 0 e x2 ≥ 0 rappresentano rispettiva-
mente il semipiano delle ascisse non negative e il semipiano delle ordinate non negative.
L’insieme ammissibile del problema di Programmazione Lineare che stiamo esaminando è
dato quindi dall’intersezione di tali semipiani e si può indicare con
n o
Se = (x1 , x2 ) ∈ IR2 | 140x1 ≥ 70, 20x1 + 10x2 ≥ 30, 25x1 + 50x2 ≥ 75, x1 ≥ 0, x2 ≥ 0 .

L’insieme Se rappresenta la regione ammissibile del problema di Programmazione Lineare in


esame ed è rappresentata in Figura 4.15.
Tutti i punti P (x1 , x2 ) appartenenti a questa regione sono punti dell’insieme ammissibile del
problema e quindi tutti i punti di questa regione costituiscono soluzioni ammissibili del prob-

55
Figura 4.13: Semipiano individuato dal vincolo 20x1 + 10x2 ≥ 30

Figura 4.14: Semipiano individuato dal vincolo 25x1 + 50x2 ≥ 75

56
Figura 4.15: La regione ammissibile Se

lema. Si osservi che, a differenza della regione ammissibile del problema considerato nell’esempio
precedente, la regione ammissibile Se è illimitata.
Ora, tracciando le curve di livello della funzione obiettivo 400x1 +600x2 si ottiene la famiglia
di rette
400x1 + 600x2 = C.
Trattandosi di un problema di minimizzazione si vuole determinare il valore piú basso di C
ottenuto scegliendo per x1 e x2 valori ammissibili cioè tali che (x1 , x2 ) ∈ S. e Osservando la
rappresentazione grafica dellaµ regione e
¶ ammissibile S e osservando che la direzione di decrescita
400
è quella opposta al vettore , si deduce che al diminuire di C, le rette di livello della
600
funzione obiettivo intersecano la regione ammissibile finché C ≥ 1000 (Figura 4.16)
Tale valore è ottenuto per x1 = 1 e x2 = 1 e non esistono altri punti della regione ammissibile
in cui la funzione obiettivo assume valori minori. Il valore 1000 è, quindi, il minimo valore che
la funzione obiettivo può raggiungere soddisfacendo i vincoli. Tale soluzione ottima è raggiunta
in corrispondenza del punto P di coordinate (x1 , x2 ) = (1, 1); si osservi che anche in questo
caso tale punto è un punto particolare della regione ammissibile. Si osservi, infine che in questo
punto sono attivi i vincoli 20x1 + 10x2 ≥ 30 e 25x1 + 50x2 ≥ 75 mentre risulta non attivo il
vincolo 140x1 ≥ 70.

Abbiamo esaminato due esempi di interpretazione geometrica e soluzione grafica di prob-


lemi di Programmazione Lineare in due variabili. In entrambe i problemi è stato possibile

57
Figura 4.16: Curve di livello della funzione 400x1 + 600x2 e punto di ottimo

determinare una soluzione ottima. Tuttavia è facile dedurre, sempre per via geometrica, che
un problema di Programmazione Lineare può non ammettere soluzione ottima. Ad esempio, se
nell’Esempio 4.3.4 sostituiamo il vincolo x2 ≤ 400 con il vincolo x2 ≥ 1000, la regione ammis-
sibile sarebbe vuota nel senso che non esisterebbe nessun punto del piano che soddisfa tutti i
vincoli. In questo caso il problema risulterebbe inammissibile e questo indipendentemente dalla
funzione obiettivo e dal fatto che il problema è in forma di minimizzazione o massimizzazione.
Un altro esempio di problema di Programmazione Lineare che non ammette soluzione ot-
tima si può ottenere considerando il problema dell’Esempio 4.3.5 e supponendo che la funzione
obiettivo debba essere massimizzata anziché minimizzata. In questo caso nella regione ammis-
sibile (che è illimitata) la funzione obiettivo può assumere valori arbitrariamente grandi cioè
tali che comunque scelto un valore M > 0 esiste un punto in cui la funzione obiettivo assume
valore maggiore di M ; questo significa che il problema è illimitato superiormente e quindi non
può esistere una soluzione ottima.
Sulla base di queste considerazioni sulla geometria di un problema di Programmazione
Lineare (PL) in due variabili si può intuire che le situazioni che si possono verificare sono le
seguenti:

58
• il problema di PL ammette soluzione ottima (che può essere o non essere unica) in
un vertice del poligono convesso che delimita la regione ammissibile;
• il problema di PL non ammette soluzione ottima perché

– la regione ammissibile è vuota


– la regione ammissibile è illimitata e la funzione obiettivo è illimitata superi-
ormente (se il problema è di massimizzazione) o illimitata inferiormente (se il
problema è di minimizzazione).

Quindi se si suppone che esiste un punto ammissibile, cioè che la regione ammissibile sia
non vuota, allora sembrerebbe di poter dedurre che o il problema di Programmazione Lineare
ammette soluzione ottima in un vertice del poligono convesso che delimita la regione ammissibile
oppure è illimitato.
Questi asserti, ora semplicemente dedotti intuitivamente per via geometrica, hanno in effetti
una validità generale e verranno enunciati e dimostrati in maniera rigorosa nel capitolo 10.
Come ultima considerazione intuitiva si vuole citare la possibilità che la regione ammissibile sia

x 2

1111111111111111111111111111
0000000000000000000000000000
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
x 1

0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
Figura 4.17: Regione ammissibile costituita da una striscia di piano

costituita da una striscia di piano, cioè dalla porzione di piano compresa tra due rette parallele
(Figura 4.17). In questo caso non esistono vertici per la regione ammissibile e il problema risulta

59
illimitato ad eccezione del caso particolare in cui le rette di livello della funzione obiettivo sono
parallele alle rette che delimitano la striscia di piano; in questo caso si hanno infinite soluzioni.
La non esistenza di vertici in questo caso si intuisce essere legata al fatto che la regione
ammissibile costituita da una striscia di piano contiene rette. Infatti nei casi delle regioni am-
missibili S e Se dei problemi di Programmazione Lineare dell’Esempio 4.3.4 e dell’Esempio 4.3.5
non esistono rette interamente contenute in S o in S. e Anche la regione illimitata Se può contenere
semirette, ma non rette.
Nel caso in cui la regione ammissibile non contiene nemmeno semirette (che è il caso della
regione S dell’Esempio 4.3.4), cioè la regione ammissibile sia chiusa e limitata, è possibile
garantire l’esistenza di un minimo (e un massimo) assoluto per funzioni continue grazie al
teorema di Weierstrass.

60
Capitolo 5

Problemi di ottimizzazione
convessa e concava

Tra i problemi di Ottimizzazione sono di particolare interesse i cosiddetti problemi convessi.


Per poter definire correttamente cosa si intende per problema convesso è necessario introdurre
alcuni concetti preliminari.

5.1 Insiemi Convessi

Definizione 5.1.1 Un vettore y in IRn si dice combinazione convessa di p ≥ 1 vettori


x1 , . . . , xp se risulta
p
X p
X
y= λi x i λi = 1 λi ≥ 0 i = 1, . . . , p.
i=1 i=1

Possiamo allora introdurre la seguente definizione

Definizione 5.1.2 Siano x e y due punti in IRn . L’insieme dei punti di IRn ottenuti come

z = (1 − β)x + βy,

al variare di β nell’intervallo [0, 1] viene definito come segmento chiuso di estremi x e y e


viene sinteticamente indicato con [x, y].

Esempio 5.1.3 Nella figura 5.1 è rappresentato il segmento in IR2 avente per estremi i punti
x = (1, 1)T e y = (8, 5)T . Per β = 0 ritroviamo il punto x, mentre per β = 1 ritroviamo il punto
y; i punti segnati nella figura come xa , xb e xc corrispondono rispettivamente a valori di β pari
a 0.25, 0.5 e 0.75.

61
5 x2 x2
β=0.75
4
xc
β=0.5
3
xb
β=0.25
2
xa
β=0
1
x1
x1

1 2.75 4.5 6.25 8

Figura 5.1: Esempio di segmento.

Dalla figura 5.1 risulta ovvio che il concetto di segmento è la generalizzazione, al caso di
IRn dell’ usuale concetto di segmento valido nel piano.
Notiamo anche come, nel caso in cui gli estremi appartengano ad IR1 , e sono quindi due
numeri (scalari), diciamo a e b, il concetto di segmento di estremi a e b coincida con quello di
intervallo [a, b], fatto che giustifica la notazione [x, y] impiegata per indicare il segmento.

Definizione 5.1.4 Un insieme X ⊆ IRn è convesso se per ogni coppia di punti appartenenti
all’insieme, appartengono all’insieme anche tutti i vettori ottenibili come loro combinazione
convessa.

Utilizzando il concetto di segmento chiuso, la definizione di insieme convesso può essere rifor-
mulata nel modo seguente:

Un insieme X è convesso se per ogni coppia di vettori x, y ∈ X si ha [x, y] ⊆ X.


Dalla definizione segue che l’insieme vuoto e l’insieme costituito da un solo vettore sono insiemi
convessi (banali). Il più semplice insieme convesso non banale è il segmento di estremi x, y ∈
IRn .

Esempio 5.1.5 In IR2 gli insiemi (a) , (b) della figura 5.2 sono convessi, mentre gli insiemi (c),
(d) della stessa figura non lo sono. Infatti agli insiemi (c),(d) appartengono coppie di punti,
quali quelle segnate nella figura, tali che il segmento che li congiunge presenta dei punti non
appartenenti all’insieme; ciò non avviene invece comunque si prendano coppie di punti negli
insiemi (a) e (b).

Una importante proprietà degli insiemi convessi è espressa dal seguente teorema.

62
d
a c e
b

Figura 5.2: Insiemi convessi e non convessi.

Teorema 5.1.6 L’intersezione di due insiemi convessi è un insieme convesso.

Dimostrazione: Siano X1 , X2 ⊆ IRn due insiemi convessi e sia X = X1 ∩ X2 la loro intersezione.


Siano x ed y due vettori in X, allora x, y ∈ X1 ed x, y ∈ X2 . Poiché X1 ed X2 sono insiemi
convessi abbiamo che [x, y] ⊆ X1 e che [x, y] ⊆ X2 . Ma allora [x, y] ⊆ X e l’insieme X è
convesso 2

Esempio 5.1.7 L’insieme (e) della figura 5.2 è dato dall’intersezione di due insiemi convessi
ed è convesso

Dal Teorema (5.1.6) si può derivare, con un semplice ragionamento induttivo, il seguente
corollario.

Corollario 5.1.8 L’intersezione di un numero finito di insiemi convessi è un insieme convesso.

Passiamo ora a considerare dei particolari insiemi convessi che rivestono un ruolo importante
nella teoria della programmazione lineare.
Consideriamo l’espressione
a1 x1 + . . . + an xn = b
che, con notazione vettoriale possiamo scrivere aT x = b, con a ∈ IRn e b ∈ IR. Possiamo allora
dare le seguenti definizioni.

Definizione 5.1.9 Sia a un vettore di IRn e b un numero reale. L’insieme

H = {x ∈ IRn : aT x = b}

è detto iperpiano definito dall’equazione aT x = b. Gli insiemi

S≤ = {x ∈ IRn : aT x ≤ b}
S≥ = {x ∈ IRn : aT x ≥ b}

sono detti semispazi chiusi definiti dalle disequazioni aT x ≤ b e aT x ≥ b.

Nel caso dello spazio IR2 il concetto di iperpiano coincide con quello di retta, mentre nel caso
dello spazio IR3 il concetto di iperpiano coincide con quello di piano. In maniera intuitiva, i
semispazi possono essere pensati come l’ insieme dei punti che “giacciono” da una stessa parte
rispetto all’iperpiano.

63
AAAAAAAAAAAAAAAA
x2

AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
10x 1 + 5x2 ‡25

AAAAAAAAAAAAAAAA
5

AAAAAAAAAAAAAAAA
4

AAAAAAAAAAAAAAAA
3

2
AAAAAAAAAAAAAAAA
1
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
1 2 3 4 5 6 x1

10x + 5x =25
10x1 + 5x2 †25

Figura 5.3: Retta e semipiani individuati da un’equazione lineare.

Esempio 5.1.10 Con riferimento alla figura 5.3, l’iperpiano (= retta) 10x1 + 5x2 = 25 divide
lo spazio (= piano) in due semispazi: S ≥ = {x ∈ IR2 : 10x1 + 5x2 ≥ 25}, indicato in grigio nella
figura, e S ≤ = {x ∈ IR2 : 10x1 + 5x2 ≤ 25}, indicato in bianco nella figura.

Notiamo che l’iperpiano H fa parte di tutti e due i semispazi e che l’intersezione dei due
semispazi coincide con l’iperpiano. In termini insiemistici abbiamo che

H ⊂ S≥, H ⊂ S≤, S ≥ ∩ S ≤ = H.

I semispazi e gli iperpiani sono insiemi convessi.

Teorema 5.1.11 Un semispazio chiuso è un insieme convesso.

Dimostrazione: Dimostreremo il teorema per un semispazio S ≤ = {x ∈ IRn : aT x ≤ b}, la


dimostrazione per il semispazio S ≥ ottenuto invertendo il verso della disequazione è analoga.
Consideriamo due generici vettori x ed y appartenenti ad S ≤ , vogliamo dimostrare che ogni
vettore z ∈ [x, y] appartiene ad S ≤ , ovvero soddisfa la relazione aT z ≤ b.
Sia z = βx + (1 − β)y con 0 ≤ β ≤ 1. Poiché x ed y appartengono ad S ≤ abbiamo che
a x ≤ b e aT y ≤ b. Inoltre, poiché β ed 1 − β sono reali non negativi abbiamo che
T

aT (βx + (1 − β)y) = βaT x + (1 − β)aT y ≤ βb + (1 − β)b = b

e quindi che aT z ≤ b 2
Utilizzando il Teorema (5.1.11) e il Teorema (5.1.6) e ora facile dimostrare che anche un
iperpiano è un insieme convesso.

64
Corollario 5.1.12 Un iperpiano è un insieme convesso.

Dimostrazione: Un iperpiano è l’intersezione di due semispazi chiusi (S ≤ e S ≥ ). Per il Teorema


(5.1.11) un semispazio chiuso è un insieme convesso mentre, per il Teorema (5.1.6), l’intersezione
di due insiemi convessi è un insieme convesso. 2

5.1.1 Poliedro e punti estremi di un insieme convesso


In particolare è usuale introdurre la seguente definizione:

Definizione 5.1.13 Un insieme P ⊆ IRn è un poliedro se è l’intersezione di un numero finito


di semispazi chiusi e iperpiani.

In IR3 possibili poliedri sono i cubi, i tetraedi ecc. In R2 sono poliedri, ad esempio, i
segmenti, le rette, poligoni piani, ecc.
Naturalmente, risulta:

Un poliedro è un insieme convesso.


Introduciamo ora il concetto di punto estremo, che ha un ruolo molto importante nello studio
dei problemi di Programmazione lineare.

Definizione 5.1.14 (Punto estremo) Sia C ⊆ Rn un insieme convesso. Un punto x ∈ C si


dice punto estremo di C se non può essere espresso come combinazione convessa di due punti
di C distinti da x, o, equivalentemente, se non esistono y, z ∈ C con z 6= y tali che

x = (1 − λ)y + λz, con 0 < λ < 1.

Sono esempi di punti estremi: per un cerchio, i punti della circonferenza che lo delimita; per un
segmento [x1 , x2 ], gli estremi x1 , x2 ; per un triangolo, i suoi vertici (non sono punti estremi i
punti dei lati che non siano vertici). L’insieme dei punti estremi di un insieme convesso C verrà
indicato con il simbolo Ext(C), ossia:

Ext(C) = {x ∈ C : x è punto estremo di C}.

Un insieme convesso può non ammettere punti estremi. Ad esempio, un iperpiano, un semis-
pazio, una sfera aperta non hanno punti estremi.
Osserviamo inoltre che Ext(C) è contenuto nella frontiera di C e quindi nessun insieme convesso
aperto può ammettere punti estremi.

Esempio 5.1.15 Nell’insieme di figura 5.4 il punto A non è un punto estremo, in quanto è
interno al segmento che congiunge i punti B e C, anch’essi appartenenti all’insieme; lo stesso
vale per il punto D, interno al segmento [E,F]. Sono invece punti estremi dell’insieme i punti E,
F, G, H.

65
G

F C H
A

Figura 5.4: Punti estremi di un insieme.

Nel caso in cui l’insieme convesso sia un poliedro, i punti estremi sono detti anche vertici.1

5.2 Funzioni convesse e concave

Definizione 5.2.1 Una funzione f (x) si dice convessa su un insieme convesso C se, presi
comunque due punti y, z ∈ C risulta che:

f ((1 − β)y + βz) ≤ (1 − β)f (y) + βf (z), β ∈ [0, 1]. (5.1)

La funzione f (x) si dice poi strettamente convessa se, per y, z ∈ C, y 6= z,risulta

f ((1 − β)y + βz) < (1 − β)f (y) + βf (z), β ∈ (0, 1).

1
In realtà la definizione di vertice è concettualmente diversa, ma si dimostra che un punto di un
poliedro è punto estremo se e solo se è un vertice.

66
Definizione 5.2.2 Una funzione f (x) si dice concava su un insieme convesso C se, presi co-
munque due punti y, z ∈ C risulta che:

f ((1 − β)y + βz) ≥ (1 − β)f (y) + βf (z), β ∈ [0, 1]. (5.2)

La funzione f (x) si dice poi strettamente concava se, per y, z ∈ C, y 6= z,risulta

f ((1 − β)y + βz) > (1 − β)f (y) + βf (z), β ∈ (0, 1).

Una funzione f (x) si dice (strettamente) concava su un insieme convesso C se la funzione


−f (x) è (strettamente) convessa su C.
Nella (5.1) y, z, f (y), f (z) sono dati, e β varia tra 0 e 1. Se mettiamo in esplicita evidenza
la dipendenza da β, introducendo la funzione

φ(β) = f ((1 − β)y + βz)

otteniamo per una funzione strettamente convessa che:

φ(β) < (1 − β)φ(0) + βφ(1) β ∈ (0, 1)

Quest’ultima relazione mette in evidenza che, se si rappresenta graficamente nel piano (β, φ) la
funzione φ(β), il grafico della funzione nell’intervallo (0, 1) si trova al di sotto del segmento, detto
secante, che congiunge i punti (0, φ(0)) e (1, φ(1)) e coincide solo negli estremi del segmento. Si
può concludere che una funzione strettamente convessa è caratterizzata dalla proprietà di avere
il grafico sempre al di sotto di ogni sua secante.

Una funzione lineare del tipo cT x + b è sia convessa che concava (ma NON è strettamente
convessa o strettamente concava).

5.3 Problemi di ottimizzazione


Dal punto di vista delle proprietà di convessità possiamo distinguere:
- problemi di programmazione convessa: sono i problemi di minimo in cui la funzione
obiettivo è convessa e l’insieme ammissibile è un insieme convesso (o anche i problemi di
massimo in cui la funzione obiettivo è concava e l’insieme ammissibile è convesso)
- problemi di programmazione concava: sono i problemi di minimo in cui la funzione
obiettivo è concava e l’insieme ammissibile è un insieme convesso (o anche i problemi di
massimo in cui la funzione obiettivo è convessa e l’insieme ammissibile è convesso)
- problemi generali, in cui non sono soddisfatte tali condizioni.

Riconoscere che un problema di ottimizzazione è convesso o concavo fornisce importanti


informazioni qualitative sulle sue soluzioni. Osserviamo che

Una problema con insieme ammissibile convesso S e funzione obiettivo lineare è sia convesso
che concavo.

67
e dunque

Una problema di Programmazione Lineare è sia convesso che concavo.

Esempio 5.3.1 Sia dato il problema


max x2
x2 − x31 ≥ 0
x1 + x2 ≤ 1
x1 , x2 ≥ 0,
dire se è convesso.
Si tratta di un problema di massimo con funzione obiettivo lineare e quindi concava. L’insieme
ammissibile è rappresentato in figura 5.5. Si tratta di un insieme convesso. Quindi il problema
dato è convesso.
Notiamo che, poiché la funzione obiettivo è lineare, si tratta anche di un problema di
massimizzazione di una funzione convessa su insieme convesso e cioè di un problema concavo !

1.8

1.6

1.4

1.2

0.8

0.6

0.4
S
0.2

-0.2
-0.2 0 0.2 0.4 0.6 0.8 1 1.2

Figura 5.5: Insieme ammissibile S dell’Esempio 5.3.1

Per riconoscere se un problema generale è convesso o concavo dobbiamo verificare che S


sia un insieme convesso, e che f (x) sia convessa/concava su S, il che non è sempre facile.
Consideriamo un insieme S definito da vincoli di uguaglianza e disuguaglianza:
gi (x) ≤ 0, i = 1, . . . , m
(5.3)
hj (x) = 0, j = 1, . . . , p.

68
Nel caso in cui gi per i = 1, . . . , m e hj per j = 1, . . . , p siano funzioni lineari, S è un poliedro
e quindi un insieme convesso. Se invece qualche gi o hj è non lineare possiamo utilizzare la
seguente proposizione fornisce una condizione solo sufficiente per la convessità di S.

Teorema 5.3.2 Sia g : Rn → R e

S = {x ∈ Rn : g(x) ≤ 0, }.

Se la funzione g(x) é convessa in IRn , allora l’insieme S è convesso.

Dimostrazione. Siano y e z due punti appartenenti a S. Per la convessità di g si ha

g((1 − β)y + βz) ≤ (1 − β)g(y) + βg(z) con β ∈ [0, 1],

Quindi poiché g(y) ≤ 0 e g(z) ≤ 0, si ottiene

g((1 − β)y + βz) ≤ 0 con β ∈ [0, 1],

Ovvero tutti i punti del segmento [y, z] sono in S che dimostra che l’insieme S i è convesso.
É possibile quindi enunciare la seguente condizione sufficiente.

Teorema 5.3.3 Sia

S = {x ∈ Rn : gi (x) ≤ 0, i = 1, . . . , m hj (x) = 0, j = 1, . . . , p}.

Se per ogni i le funzioni gi (x) sono convesse in IRn , e per ogni j le funzioni hj sono funzioni
del tipo aTj x − bj , allora l’insieme S è convesso.

Dimostrazione. L’insieme ammissibile S è ottenuto come intersezione degli insiemi S i = {x ∈


Rn : gi (x) ≤ 0} e H j = {x ∈ Rn : aTj x − bj = 0} che nelle ipotesi poste sono convessi per la
proposizione 5.3.2 e per il Corollario 5.1.12. Il risultato segue dal Corollario 5.1.8.
Otteniamo quindi la seguente condizione sufficiente per riconoscere se un problema è con-
vesso o concavo.

Teorema 5.3.4 Sia dato il Problema


min f (x)
gi (x) ≤ 0, i = 1, . . . , m (5.4)
hj (x) = 0, j = 1, . . . , p.

Si assuma che i vincoli di disuguaglianza siano dati da funzioni gi (x) convesse in IRn , e che i
vincoli di uguaglianza siani dati da funzioni del tipo aTj x − bj .
Se la funzione obiettivo f (x) è una funzione convessa in IRn , il Problema (5.4) è convesso.
Se la funzione obiettivo f (x) è una funzione concava in IRn , il Problema (5.4) è concavo.

Notiamo che, la condizione sufficiente del Teorema 5.3.3 non è soddisfatta nell’Esempio
5.3.1 a causa della non convessità del vincolo x31 − x2 ≤ 0.

69
5.3.1 Problema di ottimizzazione convesso
I problemi di ottimizzazione convessi sono di particolare importanza per due motivi. Il primo è
che la grande maggioranza dei problemi di ottimizzazione che si incontrano nella pratica sono
convessi. Il secondo è che la convessità induce alcune proprietà che semplificano l’analisi e la
soluzione di un problema convesso.
Una delle proprietà più significative è la seguente:

Teorema 5.3.5 [Assenza di ottimi locali] Sia S ⊆ Rn un insieme convesso e f una funzione
convessa su S. Allora, il problema
min f (x)
x∈S
o non ha soluzione, o ha solo soluzioni globali; non può avere soluzioni esclusivamente locali.

Dimostrazione. La dimostrazione è per assurdo. Ammettiamo che esista un minimo globale


x∗ e che x̂ sia una soluzione locale, ma non globale, di minx∈S f (x). Allora risulta f (x∗ ) < f (x̂).
La costruzione utilizzata nella dimostrazione è illustrata schematicamente nella figura 5.6.

Figura 5.6: Costruzione geometrica utilizzata nella dimostrazione del Teorema 5.3.5 N.B. nella
figura x∗ é il minimo locale, e x rappresenta il minimo globale

Consideriamo il segmento [x̂, x∗ ]: per la convessità di f , si ha:

f ((1 − β)x̂ + βx∗ ) ≤ (1 − β)f (x̂) + βf (x∗ ) = f (x̂) + β(f (x∗ ) − f (x̂)), per ogni β ∈ [0, 1].

Il termine β(f (x∗ ) − f (x̂)) risulta < 0, per ogni β ∈ (0, 1], e si annulla solo per β = 0. Quindi,
poichè in ogni punto x ∈ (x̂, x∗ ] risulta f (z) < f (x̂), non esiste nessun intorno di raggio ρ > 0
in cui x̂ può soddisfare la definizione di minimo locale.

70
5.3.2 Problema di ottimizzazione concavo
I problemi di programmazione concava costituiscono una classe molto ampia di problemi non
convessi, che include numerose classi di problemi inerentemente “difficili”. La difficoltà princi-
pale che si manifesta nella soluzione di problemi di tipo concavo risiede nel fatto che possono
esssere presenti molti punti di minimo locale che non sono punti di minimo globale. In casi
del genere la ricerca delle soluzioni globali può divenire un problema di natura combinatoria,
che può richiedere, nel caso peggiore, tempi di calcolo esponenzialmente crescenti con le dimen-
sioni del problema (È possibile dimostrare, in particolare, che, sotto opportune ipotesi, molti
problemi di ottimizzazione combinatoria possono essere riformulati come problemi (continui) di
programmazione concava.).
Per i problemi di programmazione concava è possibile dimostrare che le soluzioni ottime, ove
esistano, appartengono alla frontiera dell’insieme ammissibile. Più precisamente vale il risultato
seguente.
Teorema 5.3.6 [Assenza di soluzioni ottime interne] Sia S ⊆ Rn un insieme convesso e
f una funzione concava su S. Allora, se esiste un punto di minimo globale del problema
min f (x)
x∈S
e se la funzione obiettivo non è costante su S, ogni punto di minimo globale appartiene alla
frontiera di S.

Dimostrazione. Supponiamo che il problema ammetta soluzione e che x∗ sia una soluzione
ottima. Poichè, per ipotesi, f non è costante su S deve esistere un punto x̂ ∈ S tale che
f (x̂) > f (x∗ ) = min f (x).
x∈S

Supponiamo ora che z ∈ S sia un punto interno all’insieme ammissibile. Deve allora esistere
una sfera aperta B(z; ρ) con centro in z e raggio ρ > 0 tutta contenuta in S. Sulla retta
congiungente x̂ con z possiamo allora determinare un y ∈ B(z; ρ) ⊆ S tale che z appartenga al
segmento [x̂, y] e risulti y 6= z, ossia possiamo trovare un λ con 0 ≤ λ < 1 tale che
z = (1 − λ)x̂ + λy.
Per la concavità di f e l’ipotesi che sia f (x̂) > f (x∗ ), tenendo conto del fatto che f (y) ≥ f (x∗ )
e che 1 − λ > 0 (perchè y 6= z), si ottiene:
f (z) ≥ (1 − λ)f (x̂) + λf (y) > (1 − λ)f (x∗ ) + λf (x∗ ) = f (x∗ ).
Ciò dimostra che f (z) > f (x∗ ) e quindi che non può esistere una soluzione ottima in un punto
interno. 2
Per quanto riguarda la Programmazione Lineare, poiché si tratta di un problema sia con-
vesso che concavo, abbiamo, come immediata conseguenza, il seguente corollario
Corollario 5.3.7 Se un problema di Programmazione Lineare ammette soluzione, allora il
minimo globale si trova sulla frontiera del poliedro ammissibile.
Nel seguito vedremo che nel caso in cui l’insieme ammissibile sia un poliedro, vale una proprietà
più forte. In particolare, nel caso di problemi di Programmazione Lineare (Capitolo 10), almeno
un punto di minimo globale deve trovarsi su un vertice del poliedro ammissibile.

71
5.4 Caratterizzazione funzioni convesse continuamente dif-
ferenziabili
Se f è una funzione convessa differenziabile possiamo dare condizioni necessarie e sufficienti
di convessità espresse per mezzo delle derivate prime o seconde dalla funzione. Ci limitiamo a
riportare i risultati seguenti.
Teorema 5.4.1 (Condizioni necessarie e sufficienti di convessità) Sia C un insieme con-
vesso aperto, sia f : C → R e supponiamo che ∇f sia continuo su C. Allora f è convessa su
C se e solo se, per tutte le coppie di punti x, y ∈ C si ha:
f (y) ≥ f (x) + ∇f (x)T (y − x). (5.5)
Inoltre f è strettamente convessa su C se e solo se, per tutte le coppie di punti x, y ∈ C con
y 6= x, si ha:
f (y) > f (x) + ∇f (x)T (y − x). (5.6)

Dal punto di vista geometrico, la condizione del teorema precedente esprime il fatto che una
funzione è convessa su C se e solo se in un qualsiasi punto y ∈ C l’ordinata f (y) della funzione
non è inferiore alle ordinate dei punti del piano tangente al grafo della funzione in un qualsiasi
altro punto x di C.

Nel teorema successivo riportiamo una condizione necessaria e sufficiente di convessità espressa
per mezzo delle derivate seconde.

Teorema 5.4.2 (Condizioni necessarie e sufficienti di convessità) Sia C un insieme con-


vesso aperto, sia f : C → R e supponiamo che la matrice Hessiana ∇2 f sia continua su C.
Allora f è convessa su C se e solo se, per ogni x ∈ C, la matrice ∇2 f (x) è semidefinita positiva.

Se si prendono in considerazione le derivate seconde, non è vero, in generale, che una


condizione necessaria di convessità stretta è la definita positività della matrice Hessiana (basti
pensare alla funzione y = x4 in x = 0). Si può stabilire tuttavia che se la matrice Hessiana è
definita positiva allora f è strettamente convessa.
Teorema 5.4.3 (Condizione sufficiente di convessità stretta) Sia C un insieme convesso
aperto, sia f : C → R e supponiamo che la matrice Hessiana ∇2 f sia continua e definita posi-
tiva su C. Allora f è strettamente convessa su C.

5.4.1 Funzioni e forme quadratiche


Tra le funzioni di particolare interesse in problemi di Programmazione Matematica ci sono le
funzioni quadratiche. Una funzione quadratica è una funzione del tipo
1 T
q(x) = x Ax + cT x,
2
dove A è una matrice quadrata e simmetrica di dimensione (n×n), con elementi aij = aji , i, j =
1, . . . , n. Il gradiente e la matrice hessiana sono
∇f (x) = Ax ∇2 f (x) = A.

72
Data una matrice A si definisce forma quadratica associata alla matrice A la funzione
n X
X n
xT Ax = aij xi xj . (5.7)
i=1 j=1

Una forma quadratica è quindi una particolare funzione quadratica in cui il termine lineare è
identicamente nullo (c = 0).
Si verifica facilmente che il gradiente e l’Hessiano della forma quadratica sono dati rispet-
tivamente da 2Ax e 2A.
La forma quadratica xT Ax si dice:
- definita positiva, se risulta xT Ax > 0 ∀x ∈ IRn , x 6= 0;
- semidefinita positiva se risulta xT Ax ≥ 0 ∀x ∈ IRn ;
- indefinita se per qualche x risulta xT Ax > 0, e per altri x risulta xT Ax < 0.
Corrispondentemente, si dice che la matrice A associata alla forma quadratica è rispettivamente
definita positiva, semidefinita positiva, indefinita.
La forma quadratica xT Ax si dice (semi)definita negativa se −xT Ax è (semi)definita posi-
tiva.
Nel caso di funzioni quadratiche, la matrice hessiana A è costante e la condizione di con-
vessità dei Teoremi 5.4.2 e 5.4.3 diventa:

Teorema 5.4.4 Una funzione quadratica q(x) è convessa su IRn se, e solo se, risulta:
1 T
y Ay ≥ 0, per ogni y ∈ IRn ;
2
inoltre, la funzione q(x) è strettamente convessa su IRn se e solo se risulta
1 T
y Ay > 0, per ogni y ∈ IRn .
2
Notare che nel caso di funzione quadratica la condizione di stretta convessità è condizione
necessaria e sufficiente.
Per verificare se una matrice A è definita positiva, si può utilizzare un semplice test.

Criterio 1 Siano Ak , k = 1 . . . , n gli n minori principali della matrice A, detti sottomatrici


principali di nord-ovest, cioè le n sottomatrici con elementi aij , i, j = 1, . . . , k,ottenute da A
eliminando le ultime n − k righe e colonne. Denotato con detAk il determinante di Ak , risulta
che:
- A è definita positiva se, e solo se, detAk > 0 , per k = 1, . . . , n.

Si osserva che se A è semidefinita positiva allora risulta detAk ≥ 0, ma non è vero in generale
il viceversa. Basta prendere come esempio la matrice
µ ¶
0 0
A=
0 2a22

73
con a22 < 0 e la forma quadratica associata

a11 x21 + 2a12 x1 x2 + a22 x22

in cui a11 = a12 = 0. I minori principali A1 e A2 hanno determinante nullo, e quindi soddisfano
il criterio detAk ≥ 0, ma q(x) è semidefinita negativa !!!
Per verificare se una matrice A è semidefinita positiva si deve applicare un criterio molto
più oneroso riportato di seguito.

Criterio 2 Siano Dik ,jk le sottomatrici di A con elementi aij ,ottenute da A eliminando n − k
righe e colonne in tutti i possibili modi, dette minori principali di A, ovvero le sottomatrici
con elementi aij , i = i1 , . . . , ik , j = j1 , . . . , jk , per 1 ≤ k ≤ n. Denotato con detDik ,jk il
determinante di Dik ,jk , si ha:
- A è semidefinita positiva se, e solo se, Dik ,jk ≥ 0 per ogni 1 ≤ k ≤ n.

Osserviamo che il criterio fornisce delle condizioni sufficienti di NON convessitá. In parti-
colare, data una matrice A quadrata e simmetrica, se risulta aii < 0 per qualche i = 1, . . . , n
allora la matrice NON è semidefinita posiitva (né dunque definita positiva). Analogamente se
risulta
detDik ,jk < 0
per un qualunque minore principale allora la matrice NON è semidefinita posiitva.
Per analizzare se una matrice A è definita/semidefinita negativa si possono applicare i criteri
precedenti alla matrice −A associata alla forma quadratica.
Un altro test per verificare il segno di una forma quadratica consiste nel determinare gli
autovalori della matrice A, cioe’ i valori αi , i = 1, . . . , n che risolvono l’equazione di grado n:

det(A − αI) = 0,

ove I è la matrice identica di ordine n. Se la matrice A è simmetrica, si ha che gli autovalori


sono tutti reali. Risulta che:
- A è definita positiva se, e solo se, αi > 0 , per i = 1, . . . , n;
- A è semidefinita positiva se, e solo se, αi ≥ 0 per i = 1, . . . , n;
- A è indefinita, altrimenti.
È evidente che il test basato sui minori è di più semplice impiego di quello basato sugli auto-
valori: infatti calcolare determinanti, fino all’ordine n, è piu’ semplice che risolvere un’equazione
di grado n.
Nel seguito indicheremo αmin (A) e αmax (A) rispettivamente il più piccolo e il più grande
autovalore di una matrice A.

Esempio 5.4.5 Un esempio di funzione quadratica strettamente convessa è la funzione

4x21 + 8x22 − x1

rappresentata in figura 5.7.

74
Figura 5.7: Grafico della funzione quadratica convessa Dell’Esempio 5.4.5.

75
Capitolo 6

Problemi di ottimizzazione non


vincolata

6.1 Introduzione
Con riferimento al problema di ottimizzazione minx∈Rn f (x), iniziamo in questo capitolo lo stu-
dio delle condizioni di ottimalità. Nei successivi capitoli affronteremo lo studio delle condizioni
di ottimalità in relazione alle classi di problemi vincolati di nostro interesse.
In termini molto generali, una condizione di ottimalità è una condizione (necessaria, sufficiente,
necessaria e sufficiente) perché un punto x∗ risulti una soluzione ottima (locale o globale)
del problema. Ovviamente, una condizione di ottimalità sarà significativa se la verifica della
condizione risulta più “semplice” o più “vantaggiosa” (da qualche punto di vista) rispetto
all’applicazione diretta della definizione. Le condizioni di ottimalità si esprimono infatti, tipi-
camente, attraverso sistemi di equazioni, sistemi di disequazioni, condizioni sugli autovalori di
matrici opportune.
Lo studio delle condizioni di ottimalità ha sia motivazioni di natura teorica, sia motivazioni
di natura algoritmica. Dal punto di vista teorico, una condizione di ottimalità può servire a
caratterizzare analiticamente le soluzioni di un problema di ottimo e quindi consentire di svol-
gere analisi qualitative, anche in assenza di soluzioni numeriche esplicite; un esempio è l’analisi
della sensibilità delle soluzioni di un problema di ottimo rispetto a variazioni parametriche.
Dal punto di vista algoritmico, una condizione necessaria può servire a restringere l’insieme in
cui ricercare le soluzioni del problema originario e a costruire algoritmi finalizzati al soddis-
facimento di tale condizione; una condizione sufficiente può servire a dimostrare che un punto
ottenuto per via numerica sia una soluzione ottima del problema e quindi a definire criteri di
arresto del procedimento risolutivo.

6.2 Direzioni di discesa


Allo scopo di definire condizioni di ottimalità è necessario introdurre la seguente definizione.

76
Definizione 6.2.1 (Direzione di discesa) Sia f : Rn → R e x ∈ Rn . Si dice che un vettore
d ∈ Rn , d 6= 0 è una direzione di discesa per f in x se esiste t̃ > 0 tale che

f (x + td) < f (x), per ogni t ∈ (0, t̃ ].

Il concetto di direzione di discesa ci consentirà di caratterizzare i minimi locali di una funzione.


Nel caso di funzione lineare f (x) = cT x, si ottiene facilmente applicando la definizione
cT (x + td) = cT x + tcT d < cT x per ogni t > 0
che una direzione è di discesa se e solo risulta cT d < 0 per ogni t > 0. Osserviamo che, in
questo caso particolare, la caratterizzazione di direzione di discesa non dipende dal punto x in
cui ci troviamo.

Se f è una funzione lineare, ossia se f (x) ≡ cT x allora d è una direzione di discesa (in un
qualsiasi punto x ∈ IRn ) se e solo se cT d < 0.

In generale, per funzioni continuamente differenziabili, è possibile caratterizzare la direzione di


discesa utilizzando informazioni sulle derivate prime della funzione.
Vale in particolare la seguente condizioni sufficiente:
Teorema 6.2.2 (Condizione di discesa) Supponiamo che f sia continuamente differenzia-
bile nell’intorno di un punto x ∈ Rn e sia d ∈ Rn un vettore non nullo. Se risulta
∇f (x)T d < 0,
allora la direzione d è una direzione di discesa per f in x.

Dimostrazione. È noto (vedi Appendice A) che per una qualunque funzione continuamente
differenziabile possiamo scrivere
f (x + td) = f (x) + t∇f (x)T d + α(x, t) (6.1)
α(x, t)
dove α(x, t) soddisfa lim = 0. Per valori sufficientemente piccoli di t possiamo dunque
t→0 t
scrivere
f (x + td) − f (x) ' t∇f (x)T d;
se ∇f (x)T d < 0 risulta allora f (x + td) − f (x) < 0 che quindi dimostra che d è una direzione
di discesa.
Ricordando che ∇f (x)T d = k∇f (x)kkdk cos θ dove θ è l’angolo compreso tra ∇f (x) e d, dal
punto di vista geometrico la condizione ∇f (x)T d < 0 esprime il fatto che se una direzione d
forma un angolo ottuso con il gradiente di f in x, allora d è una direzione di discesa per f in x.

Sia f continuamente differenziabile e sia d ∈ Rn un vettore non nullo. Se l’angolo θ tra ∇f (x)
e d soddisfa
θ > 90o
allora d è di discesa per f in x.

77
Tra le direzioni di discesa, un ruolo particolarmente importante è svolto dalla direzione dell’antigradiente
d = −∇f (x). Se ∇f (x) 6= 0, la direzione dell’antigradiente d = −∇f (x) è sempre una direzione
di discesa, infatti risulta

∇f (x)T d = −∇f (x)T ∇f (x) = −k∇f (x)k2 < 0.

La definizione è illustrata nella figura 6.1, con riferimento agli insiemi di livello di una funzione
in R2 . La direzione dell’antigradiente è utilizzata per la definizione di un semplice algoritmo


f( x*)

> 90o
f(x)=f( x*)
x*

f(x)<f( x*)
x*+t d

direzione di discesa x*
d

Figura 6.1: Esempio di direzione d di discesa in IR2 .

per la determinazione di punti di minimo (vedi il paragrafo 6.4).


Naturalmente è possibile dare una condizione sufficiente analoga al teorema 6.2.2 affinché
una direzione sia di salita.

Sia f sia continuamente differenziabile nell’intorno di un punto x ∈ Rn e sia d ∈ Rn un vettore


non nullo. Se risulta
∇f (x)T d > 0,
allora la direzione d è una direzione di salita per f in x.

Naturalmente se ∇f (x) 6= 0, la direzione del gradiente d = ∇f (x) è sempre una direzione di


salita in x.

78
Osserviamo che nel caso di funzione lineare f = cT x, risulta ∇f (x) = c, quindi la condizione
espressa dal Teorema 6.2.2 coincide con la caratterizzazione ottenuta in base della definizione
di direzione di discesa. Nel caso lineare, la relazione (6.1) vale con α(x, t) ≡ 0 e dunque la
condizione del Teorema 6.2.2 caratterizza tutte e sole le direzioni di discesa. Si tratta cioè di
una condizione necessaria e sufficiente, mentre nel caso generale è solo una condizione sufficiente.
Nel caso di funzione lineare vale quindi la seguente caratterizzazione:

Sia f è una funzione lineare, ossia f (x) ≡ cT x allora


1. d è una direzione di discesa in x se e solo se ∇f (x)T d = cT d < 0;
2. d è una direzione di salita in x se e solo se ∇f (x)T d = cT d > 0;
3. d è una direzione lungo cui la funzione si mantiene costante rispetto al valore in x se e
solo se ∇f (x)T d = cT d = 0.

Nel caso generale, la condizione di discesa enunciata è solo sufficiente, in quanto possono esistere
direzioni di discesa tali che ∇f (x)T d = 0. Illustriamo le varie possibilità nel seguente esempio.

Esempio 6.2.3 Consideriamo la funzione

f (x) = x31 + x22 − 3x1 .

sia dato il punto x̄ = (−1, 0)T e la direzione d = (−1, 0)T . Il gradiente della funzione vale
µ ¶
3x21 − 3
∇f (x) = .
2x2
Si verifica facilmente che il gradiente della funzione si annulla nel punto x̄, quindi la condizione
sufficiente espressa dal teorema 6.2.2 non è soddisfatta in quanto ∇f (x̄)T d = 0. La direzione d
è però di discesa in x̄. Infatti risulta x̄ + td = (−1 − t, 0)T e la funzione vale:

f (x̄ + td) = (−1 − t)3 − 3(−1 − t) = −1 − t3 − 3t − 3t2 + 3 + 3t = −t3 + 3t2 + 2.

Mostriamo che esiste un valore di t̄ tale che −t3 − 3t2 + 2 < 2 = f (x̄) per ogni 0 < t ≤ t̄. La
condizione che si ottiene è −t3 − 3t2 < 0 che risulta verificata per qualunque valore di t > 0,
quindi effettivamente la direzione è di discesa nel punto.
si consideri ora il punto x̃ = (1, 0)T e la stessa direzione d = (−1, 0)T . Si verifica facilmente
che il gradiente della funzione si annulla nel punto x̃, e quindi la condizione sufficiente espressa
dal teorema 6.2.2 anche in questo caso non è soddisfatta in quanto ∇f (x̃)T d = 0. In questo
caso però la direzione d non è di discesa, risulta infatti x̃ + td = (1 − t, 0)T e la funzione vale:

f (x̄ + td) = (1 − t)3 − 3(1 − t) = 1 − t3 − 3t + 3t2 − 3 + 3t = −t3 + 3t2 − 2

Dobbiamo quindi verificare se esiste un t̄ > 0 tale che per ogni t ∈ (0, t̄] risulta −t3 + 3t2 =
t2 (−t+3) < 0. Si verifica facilmente che la condizione è verificata solo per valori di t abbastanza
grandi (t > 3) e quindi d non è di discesa. Si tratta invece di una direzione di salita, infatti
scegliendo t̄ < 3, si ottiene che f (x̃ + td) > f (x̃) per ogni t ∈ (0, t̄].
Consideriamo ora il punto x̂ = (0, 0)T in cui il gradiente di f vale ∇f (x̂) = (−3, 0)T . Risulta
che la direzione d = (−1, 0)T è di salita in x̂, mentre la direzione opposta −d = (1, 0)T è di
discesa.

79
Dall’esempio e dalle considerazioni precedenti risulta evidente che dato in un punto x ed
una direzione d, sono possibili solo questi casi:

Sia f sia continuamente differenziabile nell’intorno di un punto x ∈ Rn e sia d ∈ Rn un vettore


non nullo.
1. se ∇f (x)T d < 0 allora la direzione è di discesa in x;
2. se ∇f (x)T d > 0 allora la direzione è di salita in x;
3. se ∇f (x)T d = 0 allora non si può concludere se la direzione è di discesa o di salita in x
o lungo la quale la funzione si mantiene costante.

La condizione del teorema 6.2.2 diventa anche necessaria nel caso di convessità della funzione
obiettivo.

Teorema 6.2.4 Se f è convessa allora una direzione d è di discesa in un punto x se e solo se

∇f (x)T d < 0.

Dimostrazione. Sia f convessa, dobbiamo solo dimostrare che la condizione ∇f (x)T d < 0 è
necessaria (la sufficienza è data dal teorema 6.2.2). Sia x ∈ IRn e sia d una direzione di discesa
per f in x. Possiamo scrivere per la convessità della funzione

f (x + αd) ≥ f (x) + α∇f (x)T d.

Se per assurdo fosse ∇f (x)T d ≥ 0 allora per α > 0 sufficientemente piccolo, si avrebbe f (x +
αd) ≥ f (x) contraddicendo l’ipotesi che d sia di discesa.
Se f è differenziabile due volte è possibile caratterizzare l’andamento di f lungo una di-
rezione assegnata tenendo conto anche delle derivate seconde e di ciò si può tener conto, come
si vedrà in seguito, per stabilire condizioni di ottimo del secondo ordine.
Introduciamo la definizione seguente.

Definizione 6.2.5 (Direzione a curvatura negativa)


Sia f : Rn → R due volte continuamente differenziabile nell’intorno di un punto x ∈ Rn . Si
dice che un vettore d ∈ Rn , d 6= 0 è una direzione a curvatura negativa per f in x se risulta

dT ∇2 f (x)d < 0.

Una direzione a curvatura negativa è quindi tale che la derivata direzionale seconda è negativa
in x, per cui diminuisce localmente la derivata direzionale del primo ordine. In particolare vale
il risultato seguente.

80
Teorema 6.2.6 (Condizione di discesa del secondo ordine)
Sia f : Rn → R due volte continuamente differenziabile nell’intorno di un punto x ∈ Rn e sia
d ∈ Rn un vettore non nullo. Supponiamo che risulti

∇f (x)T d = 0,

e che d sia una direzione a curvatura negativa in x, ossia che

dT ∇2 f (x)d < 0.

Allora la direzione d è una direzione di discesa per f in x.

Dimostrazione. Poiché f è differenziabile due volte, si ha:


1
f (x + td) = f (x) + t∇f (x)T d + t2 dT ∇2 f (x)d + β(x, td)
2
in cui β(x, td)/t2 → 0. Essendo per ipotesi ∇f (x)T d = 0, si può scrivere:
f (x + td) − f (x) 1 β(x, td)
2
= dT ∇2 f (x)d +
t 2 t2
e quindi, poiché
β(x, td)
lim = 0,
t→0 t2
per valori sufficientemente piccoli di t si ha f (x + td) − f (x) < 0, per cui d è una direzione di
discesa.

Esempio 6.2.7 Consideriamo la funzione del’esempio 6.2.3,

f (x) = x31 + x22 − 3x1 .

nel punto x̄ = (−1, 0)T . La direzione d = (−1, 0)T è tale che ∇f (x̄)T d = 0, quindi la condizione
sufficiente espressa dal teorema 6.2.2 non è soddisfatta. Verifichiamo la condizione del Teorema
6.2.6. La matrice hessiana è
µ ¶ µ ¶
6x1 0 x̄ −6 0
∇2 f (x) = = .
0 2 0 2

Risulta allora dT ∇2 f (x̄)d = −6 e quindi la direzione soddisfa la condizione sufficiente del


Teorema 6.2.6, per cui si può concludere che è di discesa.

6.3 Ottimizzazione non vincolata


Abbiamo già osservato nel capitolo 2 che i problemi non vincolati sono una particolare classe
di problemi non lineari, in cui S = Rn . Il problema in oggetto è quindi

min f (x), (P − N V )
x∈IRn

81
con f : IRn → IR non lineare e continuamente differenziabile. Osserviamo preventivamente che
in questo caso non si può applicare in modo diretto il teorema di Weierstrass per l’esistenza di
un minimo. Condizioni di esistenza possono essere comunque ottenute con riferimento ad un
insieme ammissibile “fittizio”. In particolare, dato un qualunque punto x̂ in cui la funzione vale
f (x̂), e si considera l’insieme non vuoto (contiene almeno x̂)

L(x̂) = {x ∈ IRn : f (x) ≤ f (x̂)}.

Possiamo allora considerare il problema ”vincolato”

min f (x)
(P − N V L)
x ∈ L(x̂)

Se x̂ non è il minimo globale di (P-NV), allora il minimo globale x∗ , se esiste, sicuramente si


trova in L(x̂). Infatti per definizione f (x∗ ) ≤ f (x) per ogni x e quindi in particolare vale anche
f (x∗ ) ≤ f (x̂). Quindi risolvere (P-NV) é equivalente a risolvere (P-NVL).
Per assicurare l’esistenza di un minimo globale di (P-NVL) (e quindi di (P-NV), possiamo
utilizzare il teorema di Weierstrass. È sufficiente richiedere che esista un x̂ per cui l’insieme
L(x̂) sia compatto.

Se esiste un x̂ ∈ IRn per cui l’insieme L(x̂) é compatto,


allora il problema (P-NV) ammette un minimo globale.

Deriviamo ora le condizioni di ottimo per (P-NV). Una conseguenza immediata della Definizione
6.2.1 di direzione di discesa è la condizione necessaria di minimo locale enunciata nel teorema
successivo.

Teorema 6.3.1 (Condizione necessaria di minimo locale) Sia x∗ ∈ S un punto di mini-


mo locale del problema (P) allora non può esistere in x∗ una direzione di discesa per f .

La condizione necessaria può consentire di selezionare tra tutti i punti ammissibili i poten-
ziali candidati ad essere punti di minimo locale. Per ricavare delle condizioni di ottimalità
dalla condizione enunciata nel Teorema 6.3.1 occorre utilizzare una caratterizzazione analitica
delle direzioni di discesa. In effetti la verifica della condizione espressa dal Teorema 6.3.1 è
essenzialmente equivalente all’applicazione della definizione di minimo locale.
Si può però specificare ulteriormente la condizione necessaria utilizzando la caratterizzazione
di direzione di discesa. Si ottiene allora la seguente condizione necessaria.

Se x∗ è un punto di minimo locale del del problema (P) non può esistere una direzione d ∈ Rn
in x∗ tale che ∇f (x∗ )T d < 0.
Tale condizione può essere equivalentemente enunciata come segue.

Teorema 6.3.2 (Condizione necessaria di minimo locale) Se x∗ è un punto di minimo


locale del del problema (P), allora risulta

∇f (x∗ )T d ≥ 0 per ogni direzione d ∈ Rn .

82
Ricordando che ∇f (x∗ )T d = k∇f (x∗ )kkdk cos θ dove θ è l’angolo compreso tra ∇f (x∗ ) e d, dal
punto di vista geometrico la condizione ∇f (x∗ )T d ≥ 0 richiede che 0o ≤ θ ≤ 90o per ogni d.

Se x∗ è un punto di minimo locale del del problema (P), allora per ogni d l’angolo θ formato
con ∇f (x∗ ) è
0o ≤ θ ≤ 90o .

Si ottiene quindi la seguente condizione necessaria.

Teorema 6.3.3 (Condizione necessaria di minimo locale non vincolato) Sia f : Rn →


R continuamente differenziabile su Rn e sia x? ∈ Rn . Se x∗ è un punto di minimo locale non
vincolato di f in Rn allora si ha
∇f (x? ) = 0.
Dimostrazione. Se x∗ ∈ Rn è un punto di minimo locale non possono esistere direzioni di
discesa in x∗ . Se ∇f (x∗ ) 6= 0, esisterebbe una direzione d = −∇f (x∗ ) 6= 0 di discesa in x∗ . Ma
questo è assurdo.

Definizione 6.3.4 (Punto stazionario) Sia f : Rn → R continuamente differenziabile su


Rn . Un punto x̄ tale che ∇f (x̄) = 0 si dice punto stazionario di f .

I possibili candidati ad essere punti di minimo locale del problema (P-NV) si determinano
determinando le soluzioni di ∇f (x) = 0.

Esempio 6.3.5 Sia dato il problema


f (x1 , x2 ) = x1 4 + x2 4 − 3x1 x2 ,
sapendo che esiste un punto di minimo, determinarlo utilizzando le condizioni necessarie.
Il gradiente della funzione è dato da:
µ ¶
4x31 − 3x2
∇f = .
4x32 − 3x1
Dall’annullamento del gradiente si ottiene il sistema
( ( ¡ ¢
4x31 − 3x2 = 0 x2 256 8
27 x2 − 3 = 0
4x32 − 3x1 = 0 x1 = 43 x32
³√ √ ´ ³ √ √ ´
Si ottengono le soluzioni: A(0, 0), B 23 , 23 , C − 23 , − 23 .
Le curve di livello della funzione sono nella Figura 6.2 da cui si individuano i tre punti stazionari.
Il punto (0, 0)T³ è un punto´di sella con valore della funzione f (0, 0) = 0.
√ √
I punti B, C = ± 23 , ± 23 abbiamo
µ ¶
3 −1
∇2 f = 3
−1 3
sono punti di minimo globale di valore della funzione obiettivo f = − 98 .
2

83
1

0.8

0.6

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

Figura 6.2: Curve di livello della funzione x41 + x42 − 3x1 x2 .

Senza ulteriori ipotesi sulla funzione obiettivo, la condizione è solo necessaria. Ricordando che
se ∇f (x∗ ) 6= 0 la direzione d = ∇f (x∗ ) è di salita nel punto x∗ , si ottiene che la condizione
∇f (x∗ ) = 0 è anche necessaria di massimo locale. In generale si hanno questi possibili casi.
Sia f : Rn → R continuamente differenziabile su Rn e sia x? ∈ Rn tale che ∇f (x? ) = 0 allora
è vera una delle seguenti affermazioni:
1. x? è un minimo locale (non esistono in x? direzioni di discesa);
2. x? è un massimo locale (non esistono in x? direzioni di salita);
3. x? è un punto di sella (esistono in x? sia direzioni di discesa che di salita).

Un esempio di punto di sella è in Figura 6.3.

Teorema 6.3.6 (Condizione sufficiente di minimo globale non vincolato) Sia f : Rn →


R continuamente differenziabile su Rn e sia x? ∈ Rn . Si supponga che f sia convessa. Se
∇f (x? ) = 0, allora x? è un punto di minimo globale di f su Rn . Inoltre, se f è strettamente
convessa su Rn , allora x? è l’unico punto di minimo globale di f su Rn .

Dai teoremi 6.3.3 e 6.3.6 si ottiene quindi una condizione necessaria e sufficiente di minimo
globale non vincolato.

Teorema 6.3.7 (Condizione necessaria e sufficiente di minimo globale non vincolato)


Sia f : Rn → R, con ∇f continuo su Rn e si supponga che f sia convessa. Allora x? è un punto
di minimo globale di f su Rn se e solo se ∇f (x? ) = 0. Inoltre, se f è strettamente convessa su
Rn e se in x? si ha ∇f (x? ) = 0, allora x? è l’unico punto stazionario di f e costituisce anche
l’unico punto di minimo globale della funzione.

84
f(x)

salita

discesa

x*
x2
x1

Figura 6.3: Esempio di punto di sella in IR2 .

Possiamo dare delle condizioni che utilizzano la caratterizzazione del secondo ordine di
direzione di discesa espressa al Teorema 6.2.6. In particolare quindi abbiamo:

Teorema 6.3.8 (Condizione necessaria del 2o ordine di minimo locale) Se x∗ è un punto


di minimo locale del del problema (P), allora per ogni d tale che ∇f (x∗ )T d = 0 risulta

dT ∇2 f (x∗ )T d ≥ 0 per ogni direzione d ∈ Rn

Se si considera la matrice Hessiana si ottiene una condizione necessaria del secondo ordine.

Teorema 6.3.9 (Condizione necessaria del secondo ordine)


Sia f : Rn → R due volte continuamente differenziabile in un intorno di x? ∈ Rn . Allora, se
x? è un punto di minimo locale non vincolato di f si ha:
(a) ∇f (x? ) = 0;
(b) ∇2 f (x∗ ) è semidefinita positiva, ossia y 0 ∇2 f (x? )y ≥0, per ogni y ∈ Rn .

85
Dimostrazione. La (a) segue dalla caratterizzazione di direzioni di discesa del secondo ordine
data dal Teorema 6.2.6.
Se tuttavia ∇2 f (x? ) è definita positiva, si può stabilire un risultato più forte, che riportiamo
nel teorema successivo.

Teorema 6.3.10 (Condizione sufficiente del secondo ordine)


Sia f : Rn → R due volte continuamente differenziabile in un intorno di x∗ ∈ Rn .
Supponiamo che valgano le condizioni:
(a) ∇f (x? ) = 0
(b) la matrice Hessiana è definita positiva in x? , ossia:

y 0 ∇2 f (x? )y > 0 per ogni y ∈ Rn , y 6= 0.

Allora x? è un punto di minimo locale stretto.

Dimostrazione. Utilizzando il Teorema di Taylor, e tenendo conto del fatto che ∇f (x? ) = 0,
possiamo scrivere:
1
f (x? + αd) = f (x? ) + α2 d0 ∇2 f (x? )d + o(α2 ),
2
e quindi si ottiene:
f (x? + αd) − f (x? ) 1 o(α2 )
2
= d0 ∇2 f (x? )d +
α 2 α2
Quindi per valori di α piccoli, l’ultimo termine è trascurabile (o(α2 )/α2 → 0 per α → 0), per
cui f (x? + αd) − f (x? ) > 0 per ogni d, il che prova l’enunciato.
Dai risultati precedenti si possono dedurre facilmente condizioni necessarie e condizioni suffici-
enti di massimo locale (basta infatti imporre condizioni di minimo su −f ).
In particolare, la condizione che x? sia un punto stazionario, ossia tale che ∇f (x? ) = 0 è
condizione necessaria sia perché x? sia un punto di minimo, sia perchè x? sia un punto di
massimo.
Una condizione necessaria del secondo ordine per un massimo locale è che ∇f (x? ) = 0 e ∇2 f (x? )
sia semidefinita negativa. Una condizione sufficiente di massimo locale è che ∇f (x? ) = 0 e
∇2 f (x) sia semidefinita negativa in un intorno di x? . Condizione sufficiente perchè x? sia un
punto di massimo locale stretto è che ∇f (x? ) = 0 e ∇2 f (x? ) sia definita negativa.
Se risulta ∇f (x? ) = 0 e la matrice Hessiana ∇2 f (x? ) è indefinita (ossia, esistono vettori d per
cui d0 ∇2 f (x? )d > 0 e altri per cui d0 ∇2 f (x? )d < 0) allora si può escludere che x? sia un punto
di minimo o di massimo locale e x? viene usualmente denominato punto di sella.
Un punto di sella è un punto stazionario in corrispondenza al quale esistono sia direzioni di
discesa (quando d0 ∇2 f (x? )d < 0) sia direzioni di salita (quando d0 ∇2 f (x? )d > 0).
o Se ∇f (x? ) = 0 e ∇2 f (x? ) è semidefinita (negativa o positiva) non si può determinare la
natura di x? in assenza di altre informazioni. Tuttavia se ∇2 f (x? ) non è semidefinita positiva
(negativa) si può escludere che x∗ sia un punto di minimo (massimo).

86
Una classe di particolare interesse di funzioni non lineari è quella delle funzioni quadratiche,
ovvero del tipo
1
f (x) = xT Qx + cT x
2
n
con Q matrice simmetrica n×n e c ∈ IR . Poiché la matrice hessiana di una funzione quadratica
è costante è facile verificare la convessità della funzione (vedi paragrafo 5.2 del Capitolo 5). Nel
caso quadratico è anche possibile formalizzare i risultati di esistenza di un minimo globale.
Vale in particolare la seguente caratterizzazione.

Teorema 6.3.11 (Minimizzazione di una funzione quadratica) Sia q(x) = 12 xT Qx+cT x,


con Q simmetrica e c ∈ Rn . Allora:
1. q(x) ammette un punto di minimo se e solo se Q è semidefinita positiva ed esiste x? tale
che Qx? + c = 0;
2. q(x) ammette un unico punto di minimo globale se e solo se Q è definita positiva;
3. se Q è semidefinita positiva ogni punto x? tale che Qx? + c = 0 è un punto di minimo
globale di q(x).

Dimostrazione. Ricordiamo che risulta ∇q(x) = Qx + c e ∇2 f (x) = Q. Inoltre se risulta


Q semidefinita positiva, q(x) è convessa, se risulta Q definita positiva, q(x) è strettamente
convessa.
Assegnati x? , x ∈ Rn e posto x = x? + s si può scrivere:
1
q(x) = q(x? + s) = q(x? ) + (Qx? + c)T s + sT Qs. (6.2)
2
Supponiamo ora che Qx? + c = 0 e che Q sia semidefinita positiva; in tal caso dalla (6.2) segue
q(x) ≥ q(x? ) per ogni x ∈ Rn .
Inversamente, se q ammette un punto di minimo x? , per il Teorema 6.3.3 deve essere ∇q(x? ) = 0
e risulta q(x) ≥ q(x? ) per ogni x ∈ IRn . Dalla (6.2) segue 0 ≤ q(x) − q(x? ) = 12 sT Qs con
s = x − x? , ovvero Q º 0. Ciò prova la (1).
La (2) segue dalla (1) e dal fatto che, sT Qs > 0 per ogni s se e solo se Q è definita positiva.
Infine, la (3) segue ancora dalla (6.2) perchè per ogni x? tale che ∇q(x? ) = 0 si ha q(x) ≥ q(x? ).

Illustriamo questo teorema con un esempio.

Esempio 6.3.12 Sia data la funzione


1
q(x1 , x2 ) = (αx21 + βx22 ) − x1 .
2
Studiamo le esistenza e la natura dei punti estremali al variare dei parametri α e β.
Scriviamo il gradiente e la matrice hessiana di q. Si ha
µ ¶ µ ¶
αx1 − 1 α 0
∇q = ∇2 q =
βx2 0 β

87
1

0.5

−0.5

−1
1
0.5 1.5
0 1
−0.5 0.5
−1 0

Figura 6.4: Grafico di q(x1 , x2 ) per α = β = 1.

µ ¶T
1
Se α > 0 e β > 0, allora esiste un unica soluzione al sistema ∇q = 0 ed è , 0 . Inoltre la
α
2
matrice ∇ q è definita positiva; si tratta quindi dell’unico punto di minimo globale.
Se α = 0 e β è qualsiasi, non esiste soluzione al sistema ∇q = 0. Notare che se β ≥ 0 la matrice
è semidefinita positiva, ma questo non assicura l’esistenza del minimo globale.
µ ¶T
1
Se α > 0 e β = 0, esistono infinite soluzioni al sistema ∇q = 0 ed è ,ξ con ξ qualsiasi.
α
Inoltre la matrice ∇2 q è semidefinita positiva; si tratta quindi di infiniti punti di minimo globale.
1
Se α < 0 e β > 0 si ha un’unica soluzione ( , 0). Ma la matrice hessiana è indefinita; si tratta
α
quindi di un punto di sella.
µ ¶T
1
Nel caso di α < 0 e β < 0 , allora esiste un unica soluzione al sistema ∇q = 0 ed è ,0 .
α
Inoltre la matrice ∇2 q è definita negativa; si tratta quindi dell’unico punto di massimo globale.
2

88
1

−1

−2

−3
1
0.5 1.5
0 1
−0.5 0.5
−1 0

Figura 6.5: Grafico di q(x1 , x2 ) per α = 0 β = 1.

6.4 Utilizzo algoritmico delle condizioni di ottimo non


vincolate
Consideriamo il problema di ottimizzazione non vincolata:
min f (x) (6.3)
x∈Rn

in cui f : Rn → R e supponiamo verificata la seguente ipotesi che garantisce l’esistenza di un


punto di minimo x∗ :
Ipotesi 1 La funzione f : Rn → R è una funzione continuamente differenziabile ed esiste un
x0 ∈ Rn tale che l’insieme di livello Lx0 sia compatto.
Gli algoritmi per la soluzione del problema (6.3) consentono, in generale, soltanto la determi-
nazione di punti stazionari di f , ossia di punti dell’insieme
Ω := {ω ∈ Rn : ∇f (ω) = 0}.
In generale si riesce anche a garantire che, se x0 non è già un punto stazionario, vengano
comunque ottenuti punti in cui la funzione obiettivo assume un valore inferiore al valore assunto
nel punto iniziale x0 e ciò consente di ottenere soluzioni soddisfacenti in molte applicazioni.
Se la funzione obiettivo è convessa, la determinazione di un punto stazionario risolve completa-
mente il problema, poiché, come è noto, ogni punto stazionario di una funzione convessa è un
punto di minimo globale.

89
0

−0.2

−0.4

−0.6

−0.8

−1
1
0.5 1.5
0 1
−0.5 0.5
−1 0

Figura 6.6: Grafico di q(x1 , x2 ) per α = 1 β = 0.

Gli algoritmi che ci proponiamo di studiare possono essere descritti per mezzo dello schema
concettuale seguente:

Schema generico di algoritmo di ottimizzazione non vincolata

1. Si fissa un punto iniziale x0 ∈ Rn e si pone k = 0.


2. Se xk ∈ Ω stop.
3. Si calcola una direzione di discesa dk ∈ Rn .
4. Si calcola un passo αk ∈ R lungo dk ;
5. Si determina un nuovo punto xk+1 = xk + αk dk . Si pone k = k + 1 e si ritorna al
Passo 2.

Commentiamo brevemente lo schema considerato.

1. Scelta del punto iniziale. Il punto iniziale dell’algoritmo è un dato del problema e
deve essere fornito in relazione alla particolare funzione che si intende minimizzare. Il
punto x0 dovrebbe essere scelto come la migliore stima disponibile della soluzione ottima,
eventualmente facendo riferimento a un modello semplificato della funzione obiettivo.
Nella maggior parte dei casi, tuttavia, non esistono criteri generali per effettuare una
buona scelta di x0 .

90
4

−1

−2
2
1 0.5
0
0 −0.5
−1 −1
−1.5
−2 −2

Figura 6.7: Grafico di q(x1 , x2 ) per α = −1 β = 1.

Nella soluzione di problemi applicativi (non convessi) può essere conveniente ripetere la
ricerca a partire da punti iniziali differenti, ad esempio generati casualmente, e scegliere
poi il punto stazionario migliore tra quelli cosı̀ determinati.

2. Criterio di arresto. La verifica effettuata al Passo 2 sull’appartenenza di xk all’insieme


Ω equivale a controllare se ∇f (xk ) = 0. In pratica, per l’utilizzo su calcolatore con
precisione finita, occorre specificare un criterio di arresto.
Una possibilità consiste nell’arrestare l’algoritmo quando

k∇f (xk )k ≤ ε (6.4)

in cui ε > 0 è un valore sufficientemente piccolo (valori standard richiedono ε ∈ [10−8 , 10−3 ]).
Per quanto riguarda la p scelta
Pn della norma, tra le più utilizzate ci sono k · k2 e k · k∞ .
Ricordiamo che kxk2 = x2 e kxk
i=1 i ∞ = max1≤i≤n {|xi |}.

3. Scelta della direzione. I criteri seguiti nella scelta della direzione di ricerca dk indi-
viduano il particolare metodo di ottimizzazione utilizzato.
Tra i metodi esistenti, il metodo del gradiente (o metodo della discesa più ripida) utilizza
come direzione dk = −∇f (xk );

91
1

−1

−2

−3

−4
2
1 0.5
0
0 −0.5
−1 −1
−1.5
−2 −2

Figura 6.8: Grafico di q(x1 , x2 ) per α = β = −1.

4. Calcolo del passo. Il calcolo dello scalare αk > 0 costituisce la cosiddetta ricerca
unidimensionale o ricerca di linea e viene effettuato valutando la funzione obiettivo lungo
la direzione dk . Per la ricerca unidimensionale sono disponibili diversi algoritmi che
possono prevedere il calcolo del punto di minimo di f (xk + αdk ) rispetto a α (ricerca
di linea esatta) oppure l’individuazione di un intervallo di valori accettabili per αk ai
fini dell’ottenimento della convergenza (ricerca di linea inesatta). In questo corso non
entreremo nel dettagli delle Ricerche di Linea.

6.5 Modelli di ottimizzazione non vincolata


Esempio 6.5.1 Il problema di discriminazione del prezzo 2.4.4 con fi (x) = ai − mi x è un
problema di programmazione quadratica strettamente convessa del tipo
min xT M x − (a − c)T x

x ≥ 0.
Si osservi che il minimo non vincolato x∗ , ovvero il punto che annulla il gradiente della funzione
ai − ci
obiettivo 2M x∗ − (a − c) = 0, ha componenti x∗i = . Dunque se ai − ci ≥ 0 pe ogni i, il
2mi

punto x ha tutte le componenti non negative ed é ottimo (unico) anche del problema vincolato.
Vediamo un esempio numerico. Un monopolista che produce un unico bene ha due tipi di clienti
A e B. Si indicano con xA e xB le quantità di bene offerte dal monopolista ai due clienti. I

92
clienti di tipo A sono disposti a pagare il prezzo fA (xA ) = 50 − 5xA e i clienti di tipo B sono
disposti a pagare il prezzo fB (xB ) = 100 − 10xB . Il costo di produzione dipende solo dalla
quantità di prodotto finale x = xA + xB ed è C = 90 + 20x. Seguendo il modello precendente
si ottiene per il profitto l’espressione:

f (xA , xB ) = xA PA + xB PB − [90 + 20(xA + xB )]


= (50 − 5xA )xA + (100 − 10xB )xB − 90 − 20(xA + xB )

e deve essere massimizzato. Raggruppando e portando in forma standard di minimizzazione, si


ottiene il problema
min 5x2A + 10x2B − 30xA − 80xB − 90
x ≥ 0.
Si tratta di un problema quadratico con
µ ¶ µ ¶
10xA − 30 10 0
∇f = ∇2 f =
20xB − 80 0 20

La mat rice hessiana è definita positiva, ed esiste un unico punto di che annulla il gradiente
x∗ = (3, 4)T che ha componenti positive, dunque é soluzione del problema vincolato originario.

Esempio 6.5.2 (Minimi quadrati)


Consideriamo il caso 1 definito nel Esempio 2.4.5.
£ ¤
min x20 + (x1 + x0 − 1)2 + (2x1 + x0 − 4)2 + (3x1 + x0 − 9)2 .
x

Si tratta di un problema quadratico del tipo


µ ¶T µ ¶ µ ¶
x1 x1 T x1
min Q +c
x0 x0 x0
con µ ¶ µ ¶
14 6 −72
Q= c=
6 4 −28
Il problema è strettamente convesso. Esiste un unico punto di minimo globale che si ottiene
come soluzione di 2Qx + c = 0 e vale (−1, 3)T . Dunque la funzione lineare che minimizza
l’errore quadratico è y = 3t − 1.

93
Capitolo 7

Ottimizzazione vincolata

7.1 Introduzione
Con riferimento al problema di ottimizzazione

min f (x)
x∈S

con S ⊂ Rn , illustriamo nel seguito alcune condizioni di ottimalità in relazione alle classi di
problemi di nostro interesse. In particolare ci riferiremo a problemi i cui S è un generico insieme
convesso, a problemi di programmazione matematica con insieme ammissibile poliedrale.
Al fine di individuare le condizioni di ottimo, introduciamo il concetto di direzione ammis-
sibile che insieme al concetto di direzione di discesa introdotto nel Capitolo 6 consentirà di
caratterizzare i punti di minimo locale.

7.2 Direzione ammissibile


Una direzione è “ammissibile” in un punto x̄ ∈ S se è possibile muoversi lungo tale direzione
mantenendosi in S. Più formalmente possiamo dare la seguente definizione riferita ad un
generico insieme S ⊆ IRn .

Definizione 7.2.1 (Direzione ammissibile) Sia S un sottoinsieme di Rn e x̄ ∈ S. Si dice


che un vettore d ∈ Rn , d 6= 0 è una direzione ammissibile per S in x̄ se esiste tmax > 0 tale che

x̄ + td ∈ S, per ogni t ∈ [0, tmax ].

Esempio 7.2.2 Sia dato l’insieme (poliedro)

S = {x ∈ R2 : x1 + x2 ≤ 3, x1 ≥ 1, x2 ≥ 0}

94
x2

(1,1)

x1

Figura 7.1: Poliedro Esempio 7.2.2.

rappresentato in Figura 7.1 e consideriamo il punto ammissibile x̄ = (1, 1) (indicato con un


puntino rosso in figura).

È facile convincersi che la direzione d = (1, 0) è ammissibile in x̄. Risulta infatti


µ ¶ µ ¶ µ ¶
1 1 1+t
x̄ + td = +t =
1 0 1

Sostituendo nei vincoli si ha:


1. x1 + x2 = (1 + t) + 1 = 2 + t che risulta ≤ 3 per valori di t ≤ 1.
2. x1 = 1 + t che risulta ≥ 1 per ogni t ≥ 0;
3. x2 = 1 > 0.
Quindi per ogni t ∈ [0, 1] (tmax = 1) risulta x̄ + td ∈ S.
È altrettanto facile convincersi che la direzione opposta −d = (−1, 0) non è ammissibile in x̄.
Risulta infatti µ ¶ µ ¶ µ ¶
1 −1 1−t
y = x̄ + t(−d) = +t =
1 0 1
Sostituendo nei vincoli si ha:
1. x1 + x2 = (1 − t) + 1 = 2 − t che risulta ≤ 3 per valori di t ≥ −1.
2. x1 = 1 − t che risulta ≥ 1 solo per t ≤ 0;

95
3. x2 = 1 > 0 per ogni t.
Quindi NON esiste un tmax > 0 per cui il punto y appartiene ad S. La direzione non è dunque
ammissibile.

Il concetto di direzione ammissibile è riferito ad un generico insieme S non necessariamente


poliedrale né con particolari proprietà. Vedremo nel seguito come caratterizzare le direzioni
ammissibili nel caso id particolari insiemi ammissibili.

7.3 Condizioni di ottimo vincolate


In questo paragrafo ricaviamo le prima condizioni di ottimalità per il generico problema

min f (x)
(P )
x∈S

Una conseguenza immediata della Definizione 6.2.1 di direzione di discesa e della Definizione 7.2.1
di direzione ammissibile è la condizione necessaria di minimo locale enunciata nel teorema suc-
cessivo.

Teorema 7.3.1 (Condizione necessaria di minimo locale) Sia x∗ ∈ S un punto di mi-


nimo locale del problema (P) allora non può esistere una direzione ammissibile in x∗ che sia
anche di discesa per f .

Dimostrazione. Sia x∗ un minimo locale. Per assurdo, se esistesse una direzione d al tempo
stesso ammissibile e di discesa in x∗ , allora in ogni intorno di x∗ sarebbe possibile trovare, per
t > 0 abbastanza piccolo, un punto x∗ + td ∈ S tale che f (x∗ + td) < f (x∗ ), il che contraddice
l’ipotesi che x∗ sia un punto di minimo locale.
La condizione necessaria può consentire di selezionare tra tutti i punti ammissibili i potenziali
candidati ad essere punti di minimo locale.
Il risultato espresso nel Teorema 7.3.1 può essere poco significativo qualora vi siano regioni (di
frontiera) dell’insieme ammissibile, tali che nei punti di queste regioni non esistano affatto di-
rezioni ammissibili. In tal caso, la condizione del Teorema 7.3.1 non è in grado di discriminare le
soluzioni ottime dagli altri punti ammissibili. Una situazione del genere si verifica, tipicamente,
quando siano presenti vincoli di eguaglianza non lineari.
Consideriamo, a titolo esemplificativo, un problema in due variabili.

Esempio 7.3.2 Sia dato il problema

min x2
x21 + x22 = 1

L’unico punto di minimo è il punto (0, − 1)T . Se consideriamo un qualsiasi punto (x1 , x2 ) ∈ S
l’insieme delle direzioni ammissibili è vuoto e quindi la condizione del Teorema 7.3.1 è sod-
disfatta in ogni punto di S e non dà alcuna informazione aggiuntiva per la selezione di punti
candidati ad essere ottimi. Tale situazione è illustrata nella figura 7.2.
2

96
x2

S (x1,x2)
x1

(0,-1)

Figura 7.2: Esempio 7.3.2 in cui in qualunque punto ammissibile non esiste direzione ammis-
sibile.

Per ricavare delle condizioni di ottimalità dalla condizione enunciata nel Teorema 7.3.1
occorre utilizzare una caratterizzazione analitica delle direzioni di discesa e delle direzioni am-
missibili. In effetti la verifica della condizione espressa dal Teorema 7.3.1 è essenzialmente
equivalente all’applicazione della definizione di minimo locale.
Si può però specificare ulteriormente la condizione necessaria utilizzando la caratterizzazione
di direzione di discesa del teorema 6.2.2.
Si ottiene allora la seguente condizione necessaria.

Se x∗ è un punto di minimo locale del problema (P) non può esistere una direzione ammissibile
d ∈ Rn in x∗ tale che ∇f (x∗ )T d < 0.
Tale condizione può essere equivalentemente enunciata come segue.

Teorema 7.3.3 (Condizione necessaria di minimo locale) Se x∗ è un punto di minimo


locale del del problema (P), allora risulta

∇f (x∗ )T d ≥ 0 per ogni direzione ammissibile d ∈ Rn in x∗ .

Ricordando che ∇f (x∗ )T d = k∇f (x∗ )kkdk cos θ dove θ è l’angolo compreso tra ∇f (x∗ ) e d, dal
punto di vista geometrico la condizione ∇f (x∗ )T d ≥ 0 richiede che 0o ≤ θ ≤ 90o per ogni d
ammissibile.

97
Se x∗ è un punto di minimo locale del del problema (P), allora per ogni d ammissibile l’angolo
θ formato con ∇f (x∗ ) è
0o ≤ θ ≤ 90o .

La condizione espressa dal Teorema 7.3.3 è solo necessaria di minimo locale. Illustriamo la
condizione con un esempio.

Esempio 7.3.4 Sia dato il problema di ottimizzazione


min −x21 − x22
−1 ≤ x1 ≤ 1
−1 ≤ x2 ≤ 1

Si tratta della minimizzazione di una funzione quadratica concava su un poliedro (la regione
ammissibile e le curve di livello della funzione obiettivo sono rappresentate in Figura 7.3.)
Geometricamente si individuano i minimi globali sui vertici del cubo ammnissibile. Consideri-

x2

(1,1)

S
x1

Figura 7.3: Illustrazione Esempio 7.3.4.

amo il punto di minimo x∗ = (1, 1)T . Il gradiente della funzione obiettivo è


µ ¶
−2x1
∇f (x) =
−2x2

e in x∗ vale ∇f (x∗ ) = (−2, − 2)T (freccia rossa in Figura 7.3). Si osservi che il gradiente della
funzione obiettivo NON si annulla in x∗ . Le direzioni ammissibili d nel punto x∗ sono in base

98
alla definizione le soluzioni del sistema definito da x∗ + td con t ≥ 0 (in Figura 7.3 sono i vettori
nella regione compresa tra le frecce blu), cioè:
x∗1 + td1 = 1 + td1 ≥ −1
x∗1 + td1 = 1 + td1 ≤1
x∗2 + td2 = 1 + td2 ≥ −1
x∗2 + td2 = 1 + td2 ≤1
ovvero le direzioni ammissibile sono quelle che soddisfano
2 + td1 ≥ 0
td1 ≤ 0
2 + td2 ≥ 0
td2 ≤ 0.
La seconda e quarta condizione impongono d1 , d2 ≤ 0, mentre la prima e terza impongono
solo delle condizioni sullo spostamento t e richiedono µ rispettivamente
¶ che 0 ≤ t ≤ 2/|d1 | e
d1
0 ≤ t ≤ 2/|d2 |. Dunque risulta ∇f (x∗ )T d = (−2 − 2) = −2(d1 + d2 ) ≥ 0 per ogni d
d2
ammissibile (ovvero tale che d1 , d2 ≤ 0). Quindi la condizione necessaria è soddisfatta.
Sia dato ora il punto x̄ = (0, 0)T interno alla regione ammissibile (nessun vincolo attivo).
Ogni vettore d ∈ IR2 è ammissibile in x̄. Inoltre risulta ∇f (x̄)T d = 0 per ogni d, in quanto
∇f (x̄) = 0, quindi è verificata la condizione necessaria. Ciononostante il punto x̄ non è un
minimo locale, anzi è un massimo. Infatti per ogni d ∈ IR2 risulta x̄ + td = (td1 , td2 )T e la
funzione vale f (x̄ + td) = −t2 (d21 + d22 ). Per ogni t 6= 0 e d 6≡ 0 risulta
f (x̄ + td) = −t2 (d21 + d22 ) < f (x̄) = 0,
ovvero qualunque d non identicamente nulla è di discesa in x̄. 2

Possiamo dare delle condizioni che utilizzano la caratterizzazione del secondo ordine di
direzione di discesa espressa al Teorema 6.2.6. In particolare quindi abbiamo:

Teorema 7.3.5 (Condizione necessaria del 2o ordine di minimo locale) Se x∗ è un punto


di minimo locale del del problema (P), allora per ogni d ammissibile in x∗ tale che ∇f (x∗ )T d = 0
risulta
dT ∇2 f (x∗ )T d ≥ 0 per ogni direzione ammissibile d ∈ Rn in x∗ .

A partire dalle condizioni espresse dai teoremi 7.3.3 e 7.4.3 è possibile ricavare condizioni
più specifiche in base alle caratterizzazioni delle direzioni ammissibili, e quindi in base alla
struttura e alle proprietà delle funzioni che definiscono i vincoli del problema.
Considereremo nel seguito solo i casi di nostro interesse.

7.4 Ottimizzazione su insieme convesso generico


Consideriamo un problema di ottimo in cui in cui supponiamo che l’insieme ammissibile S sia
un insieme convesso, ovvero
min f (x)
(P − CON V )
x ∈ S.
Possiamo caratterizzare le direzioni ammissibili di questo insieme.

99
Teorema 7.4.1 (Direzioni ammissibili insieme convesso) Sia S ⊆ IRn un insieme con-
vesso e sia x̄ un qualsiasi punto di S. Allora comunque si fissi x ∈ S tale che x 6= x̄, la direzione
d = x − x̄ è una direzione ammissibile per S in x̄.

Dimostrazione. Sia x̄ ∈ S. Comunque preso x ∈ S, con x 6= x̄, per la convessità di S, si ha


che (1 − β)x̄ + βx ∈ S per ogni β ∈ [0, 1] e quindi x̄ + β(x − x̄) ∈ S per ogni β ∈ [0, 1]. Da cui
segue che la direzione d = x − x̄ è una direzione ammissibile per S in x̄.

È facile verificare che, inversamente, se d 6= 0 è una direzione ammissibile per S in x̄ allora


esiste un punto x ∈ S e uno scalare t tale che d = t(x − x̄).

Quindi utilizzando direttamente il teorema 7.3.3, otteniamo la seguente condizione necessaria.

Teorema 7.4.2 [Condizioni necessarie di minimo locale con insieme ammissibile convesso]
Sia x∗ ∈ S un punto di minimo locale del problema (P-CONV) e supponiamo che f sia contin-
uamente differenziabile su IRn . Allora si ha:

∇f (x∗ )T (x − x∗ ) ≥ 0, per ogni x ∈ S. (7.1)

Dim. Osserviamo innanzitutto che in base al teorema 7.4.1 la direzione d = x − x∗ è una


direzione ammissibile per f in S per ogni x ∈ S. Se esistesse d = x − x∗ tale che ∇f (x∗ )T d < 0
per il Teorema 6.2.2 la direzione ammissibile d sarebbe di discesa ma questo è assurdo perché
in base al Teorema 7.3.1 sappiamo che non può esistere una direzione ammissibile di discesa in
x∗ .
Nel caso che f sia convessa, si può dimostrare che la condizione è anche sufficiente. Vale in
effetti il seguente risultato.

Teorema 7.4.3 [Condizioni necessarie e sufficienti di minimo globale nel caso convesso]
Sia S un sottoinsieme convesso di Rn e supponiamo che f sia una funzione convessa con-
tinuamente differenziabile su IRn . Allora x∗ ∈ S è un punto di minimo globale del problema
(P-CONV) se e solo se

∇f (x∗ )T (x − x∗ ) ≥ 0, per ogni x ∈ S. (7.2)

Dimostrazione. La necessità segue dal Teorema 7.4.2. La sufficienza segue dal Teorema 5.4.1.
Infatti, se f è convessa e x∗ ∈ S deve essere, per ogni x ∈ S:

f (x) ≥ f (x∗ ) + ∇f (x∗ )T (x − x∗ ),

e quindi se vale la (7.2) si ha che f (x) ≥ f (x∗ ) per ogni x ∈ S, il che prova che x∗ è un punto
di minimo globale.

Teorema 7.4.4 (Condizioni necessarie del secondo ordine di minimo locale con in-
sieme ammissibile convesso)

100
Sia x∗ ∈ S un punto di minimo locale del problema (P-CONV). Se f è due volte continuamente
differenziabile su un insieme aperto contenente S, risulta
(x − x∗ )T ∇2 f (x∗ )(x − x∗ ) ≥ 0, per ogni x∈S tale che ∇f (x∗ )0 (x − x∗ ) = 0. (7.3)

Dimostrazione. In base al Teorema 7.3.1 sappiamo che non può esistere una direzione am-
missibile di discesa. Se f è due volte continuamente differenziabile ed esiste x ∈ S tale che la
direzione ammissibile d = x − x∗ soddisfi ∇f (x∗ )T d = 0. Applicando il teorema 6.2.6 si ottiene
allora la (7.3).
Consideriamo il seguente esempio in cui i vincoli sono solo limitazioni superiori ed inferiori sulle
variabili.
Esempio 7.4.5 Consideriamo l’esempio 7.3.4
min −x21 − x22
−1 ≤ x1 ≤ 1
−1 ≤ x2 ≤ 1
L’insieme ammissibile è convesso, quindi le condizioni necessarie richiedono che in un punto x∗
risulti ∇f (x∗ )T (x − x∗ ) ≥ 0 per ogni x ∈ S. In particolare in questo caso
µ ¶
−2x1
∇f =
−2x2
e deve risultare quindi
−2x̄1 (x1 − x̄1 ) − 2x̄2 (x2 − x̄2 ) ≥ 0 per ogni − 1 ≤ x1 ≤ 1 − 1 ≤ x2 ≤ 1.
Verifichiamo che le condizioni sono soddisfatte in x̄ = (1, 1)T . Deve risultare
−2(x1 − 1) − 2(x2 − 1) ≥ 0 per ogni − 1 ≤ x1 ≤ 1 − 1 ≤ x2 ≤ 1.
Il termine x1 − 1 ≤ 0 per punti x ∈ S e analogamente x2 − 1 ≤ 0 per x ∈ S, quindi la condizione
è effettivamente soddisfatta.

7.5 Ottimizzazione su un poliedro


Una classe significativa di problemi di programmazione matematica è quella in cui l’insieme
ammissibile è un poliedro. Consideriamo, senza perdita di generalità (vedi considerazione del
capitolo 3), un poliedro definito come
S = {x ∈ IRn : Ax ≥ b}
in cui A è una matrice reale m × n e b ∈ IRm . Il problema in esame è quindi
min f (x)
(P − P OL)
Ax ≥ b
in cui f è una funzione continuamente differenziabile. Ci proponiamo nel seguito di particolar-
izzare le condizioni di ottimo già enunciate nei paragrafi precedenti per ricavare condizioni di
ottimo (locale e globale) che tengano conto della struttura dell’insieme ammissibile.

101
7.6 Direzioni ammissibili di un poliedro
Per caratterizzare le direzioni ammissibili di un poliedro è necessario introdurre ulteriori definizione.
A tal scopo analizziamo nuovamente l’esempio 7.2.2.

Esempio 7.6.1 Consideriamo nuovamente il poliedro

S = {x ∈ R2 : x1 + x2 ≤ 3, x1 ≥ 1, x − 2 ≥ 0}

in Figura 7.1 e il punto ammissibile x̄ = (1, 1).

x2 x2

(1,1) (1,1)

x1
x1

Figura 7.4: Semispazi individuati rispettivamente dai vincoli x1 +x2 ≤ 3 e x1 ≥ 1 dell’Esempio


7.6.1.

In Figura 7.4 sono rappresentati i due semispazi definiti singolarmente dai due vincoli
x1 + x2 ≤ 3 e x1 ≥ 1 che definiscono il poliedro S. Se valutiamo i vincoli in x̄ = (1, 1)T (in
rosso nella figura 7.4) abbiamo:
x̄1 + x̄2 < 3,
x̄1 = 1
x̄2 > 0
ovvero solo il vincolo x1 ≤ 1 è soddisfatto all’uguaglianza.
Dalla figura 7.4 è evidente che nel punto x̄ ogni direzione d ∈ IRn è ammissibile rispetto al
vincolo x1 + x2 ≤ 3 a patto di scegliere adeguatamente il valore dello spostamento t. Analoga-
mente rispetto al vincolo x2 ≥ 0 (non rappresentato in figura 7.4) che individua il primo e
secondo quadrante, nel punto x̄ ogni direzione è ammissibile. Se invece consideriamo il semis-
pazio individuato dal vincolo x1 ≥ 1 è evidente che non tutte le direzioni sono ammissibili. Ad

102
esempio la direzione d = (−1 0)T (considerata nell’esempio 7.2.2 e disegnata in rosso in figura
7.4) non consente di mantenere l’ammissibilità del vincolo per nessun valore di t > 0.

Da queste semplici osservazioni appare evidente che in un punto ammissibile, le direzioni


ammissibili sono “determinate” da quei vincoli che sono soddisfatti all’uguaglianza. Mentre il
valore di tmax dipende dal valore degli altri vincoli.
Introduciamo allora la seguente definizione:

Definizione 7.6.2 (Vincoli attivi) Sia S = {x ∈ Rn : Ax ≥ b} e sia x̄ ∈ S. Se x̄ soddisfa


il aTi x̄ = bi si dice che il vincolo i-esimo è attivo in x̄.
Dato x̄ ∈ S si indica con I(x̄) l’insieme degli indici di tutti i vincoli attivi n x̄, ovvero:

I(x̄) = {i ∈ {1, . . . , m} : aTi x̄ = bi }

Nell’esempio 7.2.2, in x̄ è attivo il secondo vincolo e cioè I(x̄) = {2}.


La definizione 7.6.2 di vincolo attivo non è legata alla particolare forma del poliedro, ma può
essere estesa al caso generale. In particolare, notiamo che i vincoli di uguaglianza sono, per
definizione, sempre attivi in un punto ammissibile. Possiamo quindi affermare

Dato un poliedro definito come S = {x ∈ IRn : Ax = b}, risulta I(x̄) = {1, . . . , m}.

Dato un poliedro in forma standard S = {x ∈ IRn : Ax = b, x ≥ 0}, i vincoli attivi sono quelli
di uguaglianza più gli eventuali componenti di x̄j = 0, ovvero risulta I(x̄) = {1, . . . , m} ∪ {j ∈
{1, . . . , n} : x̄j = 0}.

Possiamo ora caratterizzare le direzioni ammissibili di un poliedro.

Teorema 7.6.3 Dato il poliedro S = {x ∈ Rn : Ax ≥ b}. Sia x̄ un punto ammissibile e


sia I(x̄) = {i ∈ {1, . . . , m} : aTi x̄ = bi } l’insieme degli indici attivi in x̄. Una direzione d è
ammissibile in x̄ se e solo se risulta

aTi d ≥ 0, per ogni i ∈ I(x̄). (7.4)

Inoltre per ogni direzione ammissibile d, il punto x̄ + td è ammissibile per ogni valore di t che
soddisfa la condizione
aTj x̄ − bj
0 < t ≤ tmax = min (7.5)
j ∈I(x̄):
/ aT
j
d<0 |aTj d|

/ I(x̄) : aTj d < 0} su cui si effettua il minimo è vuoto, il


dove si intende che, se l’insieme {j ∈
valore tmax = ∞.

103
Dimostrazione. Sia x̄ tale che aTi x̄ ≥ bi per ogni i = 1, . . . , m. Definiamo un punto x = x̄ + td
con t > 0.
Verifichiamo che le direzione ammissibili sono tutte e sole quelle per cui vale la (7.4). Si tratta
quindi di verificare le condizioni su d per cui risulta

aTi (x̄ + td) = aTi x̄ + taTi d ≥ bi per ogni t > 0.

Per ogni i ∈ I(x̄), vale aTi x̄ = bi da cui aTi x̄ + taTi d = bi + taTi d. Quindi si ottiene per i ∈ I(x̄):

aTi x̄ + taTi d ≥ bi per ogni t > 0 se e solo se aTi d ≥ 0.

Per ogni j ∈ / I(x̄), vale aTj x̄ > bi da cui aTj x̄ + taTj d > bj + taTj d. Abbiamo due possibili casi:
1.) aj d ≥ 0 oppure 2.) aTj d < 0.
T

Se aTj d ≥ 0, allora per ogni t > 0 risulta bj + taTj d ≥ bj e il punto è sempre ammissibile rispetto
al vincolo j−esimo. Se invece aTj d < 0, è necessario scegliere t abbastanza piccolo in modo
che aTj x̄ − t|aTj d| continui ad essere ≥ bj per t > 0. In ogni caso (1. o 2.) la direzione risulta
ammissibile.
Verifichiamo che il valore di tmax deve soddisfare la (7.5).
Sia quindi data d ammissibile. Dalle considerazioni precedenti si ha che per ogni i ∈ I(x̄), vale
aTi (x̄ + td) ≥ bi per ogni t > 0.
Consideriamo allora gli indici j ∈ / I(x̄). Abbiamo già visto che nel caso aTj d ≥ 0, possiamo
scrivere per ogni t > 0 aTj (x̄ + td) = aTj x̄ + taTj d ≥ aTj x̄ > bj per ogni t > 0.
Consideriamo allora il caso aTj d < 0 in cui sappiamo che t non può assumere tutti i valori
positivi. Dobbiamo trovare il valore di t che soddisfa la condizione di ammissibilità espressa da
aTj (x̄ + td) = aTj x̄ + taTj d = aTj x̄ − t|aTj d| ≥ bj . Risolvendo la condizione aTi x̄ − t|aTj d| ≥ bj si
ottiene che
aTj x̄ − bj
t≤ .
|aTi d|
/ I(x̄) e tale che aTj d < 0, si ottiene la limitazione data
Poiché questo deve valere per ogni j ∈
dalla (7.5).
Introduciamo la seguente notazione matriciale: indichiamo con AI(x̄) la matrice |I(x̄)| × n
costituita dalle righe di A con indice in I(x̄), ovvero, se A = (aTi )i=1,...,m , si ha

AI(x̄) = (aTi )i∈I(x̄) .

Sia x̄ ∈ S, le direzioni ammissibili in x̄ sono tutte e sole le soluzioni del sistema lineare

AI(x̄) d ≥ 0

dove AI(x̄) è la matrice AI(x̄) = (aTi )i∈I(x̄) e I(x̄) = {i : aTi x̄ = bi }.

Illustriamo con un esempio.

104
Esempio 7.6.4 Sia dato il poliedro

3x1 − 2x2 ≥ −30


2x1 − x2 ≥ −12
x1 ≥ 0 x2 ≥ 0

ed il punto ammissibile x̄ = (0, 12)T . Risulta

3x̄1 − 2x̄2 = −12 > −30


2x̄1 − x̄2 = −12
x̄1 = 0 x̄2 = 12 > 0

Quindi I(x̄) = {2, 3} e le direzioni ammissibili d = (d1 , d2 ) devono soddisfare il sistema

2d1 − d2 ≥ 0
d1 ≥ 0

Il valore di tmax si ottiene considerando i vincoli non attivi e dipende ovviamente dalla partico-
lare direzione ammissibile considerata. Sia, ad esempio d¯ = (1, 2)T . Risulta aT1 d¯ = 3 − 4 < 0 e
aT4 d¯ = 1 > 0. Quindi il valore di tmax è individuato dal primo vincolo e si ha in particolare

aT1 x̄ − b1 3x̄1 − 2x̄2 + 30 6


tmax = T
= ¯ ¯ = = 6.
|a1 d| 3d1 − 2d2 1

In figura 7.5 è rappresentato il poliedro, il punto x̄, l’insieme delle direzioni ammissibili (insieme
compreso tra le due frecce blu tratteggiate), i punto ottenibili spostandosi da x̄ lungo le direzioni
ammissibili (regione compresa tra le due frecce blu a tratto intero) e il valore del passo tmax
relativo alla direzione ammissibile d¯ = (1, 2)T . Il punto x̄ + tmax d¯ = (6, 24)T è indicato in
rosso in figura 7.5. 2

Corollario 7.6.5 Dato il poliedro S = {x ∈ IRn : Ax ≥ b}. Sia x̄ un punto ammissibile e sia
I(x̄) = {i ∈ {1, . . . , m} : aTi x̄ = bi } l’insieme degli indici attivi in x̄ e supponiamo che esista
un vettore d non nullo tale che

aTi d = 0, per ogni i ∈ I(x̄).

Allora le direzioni d e −d sono ammissibili in x̄ ed esistono valori t+ −


max > 0 e tmax > 0 tali che

x̄ + td ∈ S per ogni t ∈ [0, t+


max )
x̄ − td ∈ S per ogni t ∈ [0, t−
max )

con
aTj x̄ − bj aTj x̄ − bj
t+
max = min t−
max = min (7.6)
j ∈I(x̄):
/ aT
j
d<0 |aTj d| j ∈I(x̄):
/ aT
j
d>0 aTj d
Si intende che se l’insieme degli indici su cui viene calcolato il minimo è vuoto, il corrispondente
valore t+ −
max e/o tmax vale ∞.

Dimostrazione. La dimostrazione segue facilmente dal Teorema 7.6.3, applicandolo separata-


mente alla due direzioni d e −d. 2

105
x2

tmax

(0,12)

x1

Figura 7.5: Poliedro Esempio 7.6.4.

Dato un poliedro S = {x ∈ IRn : Ax ≥ b} e un punto x̄ ∈ S. Supponiamo che esista una


direzione d¯ tale che

AI(x̄) d¯ = 0 I(x̄) = {i ∈ {1, . . . , m} : aTi x̄ = bi }.

Allora il punto y = x̄ ± td¯ con t ∈ [0, t±


max ] è ammissibile e risulta

I(y) ⊇ I(x̄) ∀ t ∈ [0, t±


max ].

Naturalmente è possibile caratterizzare anche le direzioni ammissibili nel caso di poliedri in


forma standard S = {x ∈ IRn : Ax = b, x ≥ 0}.
Preventivamente consideriamo il caso di soli vincoli di uguaglianza Ax = b. Sia x̄ un punto
ammissibile, ovvero tale che Ax̄ = b. La definizione di direzione ammissibile d richiede che
A(x̄ + td) = b per t sufficientemente piccolo. Sviluppando si ottiene

Ax̄ + tAd = b + tAd = b ⇐⇒ Ad = 0 per ogni t.

Si osservi che in questo caso, t può assumere qualunque valore non nullo (anche negativo).

106
Dato un poliedro definito da un sistema di equazioni lineari del tipo Ax = b, e un punto
ammissibile x̄. Una direzione d è ammissibile se e solo se risulta

Ad = 0.

Inoltre ogni punto del tipo x̄ + td è ammissibile per ogni valore di t 6= 0.


Riportiamo senza dimostrazione il seguente risultato relativo a poliedri in forma standard.

Teorema 7.6.6 (Direzioni ammissibili di un poliedro in forma standard) Sia dato un


poliedro del tipo {x ∈ IRn : Ax = b, x ≥ 0} e sia x̄ un punto ammissibile e sia J(x̄) = {j ∈
{1, . . . , n} : x̄j = 0}. Una direzione d è ammissibile in x̄ se e solo se risulta

Ad = 0,
(7.7)
dj ≥ 0 per ogni j ∈ J(x̄).
Inoltre per ogni direzione ammissibile d, un punto x̄ + td è ammissibile per ogni valore di t che
soddisfa la condizione
x̄j
0 ≤ t ≤ tmax = min
j: x̄j 6=0: dj <0 |dj |

dove si intende che se l’insieme su cui si effettua il minimo {j : x̄j 6= 0 : dj < 0} è vuoto, il
valore tmax = ∞.

7.7 Condizioni di ottimo su un poliedro


Utilizzando la caratterizzazione di direzioni ammissibili per un poliedro, possiamo applicare il
teorema 7.3.1 ed ottenere la seguente condizione necessaria.

Teorema 7.7.1 (Condizione necessaria di minimo locale su un poliedro) Se x∗ è un


punto di minimo locale del problema (P-POL) allora risulta

∇f (x∗ )T d ≥ 0 per ogni direzione d ∈ Rn : aTi d ≥ 0, ∀i ∈ I(x∗ ) = {i : aTi x∗ = bi }.

Questa condizione può essere formulata come non esistenza di soluzione di una sistema
lineare. Utilizzando la notazione matriciale introdotta precedentemente, possiamo scrivere la
condizione necessaria espressa dal teorema 7.7.1 come segue.

Se x∗ è un punto di minimo locale di (P-POL) allora non esiste una soluzione d ∈ Rn al sistema
di disequazioni lineari
AI(x∗ ) d ≥ 0,
(7.8)
∇f (x∗ )T d < 0.

Illustriamo questa condizione necessaria con un esempio.

107
Esempio 7.7.2 Consideriamo il problema

min (x1 + 10)2 + (x2 − 12)2


3x1 − 2x2 ≥ −30
2x1 − x2 ≥ −12
x1 ≥ 0,
x2 ≥ 0

il cui poliedro è stato descritto nell’Esempio 7.6.4. Consideriamo il punto ammissibile x̄ =


(0, 12)T che risulta essere minimo (vedi Figura 7.6 per le curve di livello della funzione obiettivo
e la regione ammissibile).

x2

x1

Figura 7.6: Poliedro Esempio 7.7.2.

Il sistema delle direzione ammissibili è già stato definito nell’Esempio 7.6.4. Il gradiente della
funzione obiettivo µ ¶
2(x1 + 10)
∇f (x) =
2(x2 − 12)
che in x̄ vale ∇f (x̄) = (20, 0)T . Il sistema (7.8) diventa

2d1 − d2 ≥ 0
d1 ≥ 0 (7.9)
20d1 < 0

che non ha ovviamente soluzione (le ultime due disequazioni incompatibili). 2

108
Ricordando che un poliedro è un insieme convesso e quindi vale la caratterizzazione delle di-
rezione ammissibili data nel teorema 7.4.1 è possibile applicare il Teorema 7.4.3 e ottenere il
seguente risultato.

Teorema 7.7.3 (Condizione necessaria e sufficiente di minimo globale su un poliedro)


Sia f (x) convessa. Un punto x∗ ∈ S è un minimo globale per problema (P-POL) se e solo se

∇f (x∗ )T d ≥ 0 per ogni direzione d ∈ Rn : aTi d ≥ 0, ∀i ∈ I(x∗ ) = {i : aTi x∗ = bi }.

Anche in questo caso si può riscrivere la condizione come:

Sia f una funzione convessa. Un punto x∗ ∈ S è minimo globale di (P-POL) se e solo se non
esiste una soluzione d ∈ Rn al sistema di disequazioni lineare

AI d ≥ 0,
(7.10)
∇f (x∗ )T d < 0.

Consideriamo nuovamente un esempio.

Esempio 7.7.4 Consideriamo nuovamente il problema dell’Esempio 7.7.2. La funzione obiet-


tivo è strettamente convessa. Quindi la condizione (7.10) è necessaria e sufficiente di minimo
globale. Quindi il punto (0, 12)T che la verifica è un minimo globale.
Verifichiamo cosa succede in un punto diverso, ad esempio x̂ = (0, 0)T . In x̂ risulta I(x̂) = {3, 4}
e le direzioni ammissibili soddisfano: d1 ≥ 0, d2 ≥ 0. Inoltre si ha ∇f (x̂) = (20, − 24)T , quindi
il sistema (7.10) è
20d1 − 24d2 < 0
d1 ≥ 0
d2 ≥ 0
In Figura 7.7 sono rappresentate le direzioni ammissibili (tutti i vettori tra le due frecce blu)
e il gradiente della funzione obiettivo (freccia rossa). È facile verificare che esistono soluzioni
al sistema; in particolare sono soluzione tutti i vettori d = (d1 , d2 )T tali che 0 ≤ d1 < 56 d2 .
Quindi, come già sapevamo, il punto x̂ non è minimo globale in quanto non è soddisfatta la
condizione necessaria e sufficiente. 2

Possiamo inoltre dare una condizione necessaria del secondo ordine utilizzando il teorema
7.3.3.

Teorema 7.7.5 (Condizioni necessarie del 2o ordine di minimo locale sul poliedro)
Sia x∗ un punto di minimo del Problema (P-POL). Allora risulta

dT ∇2x f (x∗ )d ≥ 0 per ogni d ∈ IRn : aTi d ≥ 0, i ∈ I(x∗ ) e ∇f (x∗ )T d = 0.

Le considerazioni svolte nel caso di poliedro descritto da soli vincoli di disuguaglianza Ax ≥


b, possono essere applicate anche a poliedri definiti da vincoli di uguaglianza e disuguaglianza.

109
x2

x x1

Figura 7.7: Poliedro Esempio 7.7.4.

Possiamo infatti utilizzare la caratterizzazione delle direzioni ammissibili data nel paragrafo
7.6. Consideriamo allora il caso piú generale di problema
min f (x)
aTi x ≥ bi i = 1, . . . , m (7.11)
aTj x = bj j = 1, . . . , p

Se x∗ è minimo globale del problema (7.11) allora non esiste una soluzione d ∈ Rn al sistema
di disequazioni lineare

aTi d ≥ 0 i ∈ I(x∗ ) ⊆ {1, . . . , m}


aTj d = 0 j = 1, . . . , p
∇f (x∗ )T d < 0 .

Un esempio importante è un problema con vincoli in forma standard del tipo:


min f (x)
Ax = b (P − P OL − ST )
x≥0
In questo caso, utilizzando la condizione espressa dal Teorema 7.6.6, possiamo affermare:

110
Se x∗ è minimo globale del problema (P-POL-ST) allora non esiste una soluzione d ∈ Rn al
sistema di disequazioni lineare
Ad = 0,
dJ(x∗ ) ≥ 0 (7.12)
∇f (x∗ )T d < 0.
con J(x∗ ) = {j ∈ {1, . . . , n} : x∗j = 0}.

Naturalmente anche in questo caso le condizioni diventano necessarie e sufficienti nel caso in
cui la funzione obiettivo sia convessa.

7.7.1 Condizioni di ottimo per la Programmazione Lineare


Tra i problemi di minimizzazione su poliedro particolare interesse rivestono i problemi di Pro-
grammazione Lineare del tipo
min cT x
(P L)
Ax ≥ b.
Utilizzando il teorema 7.7.3, possiamo enunciare la seguente condizione che caratterizza ulteri-
ormente (rispetto ai risultati del Capitolo 10) le soluzioni ottime di un problema di Program-
mazione Lineare.

Sia dato il problema (PL). Un punto x∗ è minimo globale se e solo se non esiste una soluzione
d ∈ Rn al sistema di disequazioni lineare

AI(x∗ ) d ≥ 0,
(7.13)
cT d < 0.

Analogamente nel caso di problemi di Programmazione Lineare in forma standard del tipo

min cT x
Ax = b (P L − ST )
x ≥ 0,

possiamo affermare:

Un punto x∗ è minimo globale del problema di Programmazione Lineare (PL-ST) se e solo se


non esiste una soluzione d ∈ Rn al sistema di equazioni e disequazioni lineari

Ad = 0,
dJ(x∗ ) ≥ 0 (7.14)
T
c d < 0.

con J(x∗ ) = {j ∈ {1, . . . , n} : x∗j = 0}.

Le condizioni di “non esistenza” di soluzioni di un sistema lineare ottenute in questo para-


grafo, possono essere formulate in modo equivalente come condizioni di esistenza di un diverso

111
sistema di equazioni. Questa nuova formulazione costituisce la forma classica delle condizioni
di ottimo per problemi di programmazione matematica. Sarà descritta nel Capitolo 9.

7.8 Utilizzo algoritmico delle condizioni di ottimo per prob-


lemi con vincoli convessi
Consideriamo il problema di ottimizzazione vincolata:

min f (x) (7.15)


x∈S

in cui f : Rn → R con S convesso e supponiamo verificata la seguente ipotesi (semplificativa)


che garantisce l’esistenza di un punto di minimo x∗ ∈ S:

Ipotesi 2 La funzione f : Rn → R è una funzione continuamente differenziabile ed S sia


compatto.

Gli algoritmi per la soluzione del problema (7.15) consentono, in generale, soltanto la determi-
nazione di punti dell’insieme

Ω := {ω ∈ Rn : ∇f (ω)T (x − ω) ≥ 0, per ogni x ∈ S}.

Un possibile schema concettuale di algoritmo è il seguente:

Schema generico di algoritmo di ottimizzazione vincolata per S convessi

1. Si fissa un punto iniziale x0 ∈ S e si pone k = 0.


2. Se xk ∈ Ω stop.
3. Si calcola una direzione ammissibile e di discesa dk ∈ Rn .
4. Si calcola un passo αk ∈ R lungo dk ;
5. Si determina un nuovo punto xk+1 = xk + αk dk ∈ S. Si pone k = k + 1 e si ritorna
al Passo 2.

Per i commenti generali rimandiamo al paragrafo 6.4. Qui ci limitiamo a commentare i seguenti
punti: Scelta della direzione e Criterio di arresto.
Assegnato un punto xk , possiamo considerare il problema vincolato

min ∇f (xk )T (x − xk ). (7.16)


x∈S

Osserviamo che la funzione obiettivo è lineare e poiché si è supposto che S sia compatto il
problema precedente ammette una soluzione xk∗ . La direzione dk = xk∗ − xk è una direzione
ammissibile in xk . Se all’ottimo risulta ∇f (xk )T (xk∗ − xk ) ≥ 0 allora il punto xk è ottimo per il
problema (7.15) (e dunque risulta soddisfata la verifica effettuata al Passo 2 sull’appartenenza
di xk all’insieme Ω). Viceversa se ∇f (xk )T (xk∗ − xk ) < 0 la direzione dk = xk∗ − xk risulta
essere anche di discesa. È dunque possibile determinare con opportuni metodi un passo αk > 0

112
lungo dk , tale che xk+1 ∈ S e f (xk+1 ) < f (xk ). L’algoritmo cosı̀definito è noto come Metodo
di Frank-Wolfe o Conditional gradient method.
Osserviamo che se l’insieme ammissibile S è un poliedro, ovvero è definito da vincoli lineari, il
sottoproblema (7.16) relativo al calcolo della direzione diviene un problema di programmazione
lineare.

113
Capitolo 8

Teoremi dell’alternativa

8.1 Introduzione
Nel capitolo 7, le condizioni di ottimo per problemi con vincoli lineari sono state formulate
come “NON esistenza” di soluzione di un sistema di equazioni e disequazioni lineari. Tali
condizioni possono essere riscritte come condizioni di esistenza di soluzioni di un diverso sistema
di equazioni e disequazioni lineare. A tale scopo si utilizzano i cosı̀detti teorema dell’alternativa.
I teoremi dell’alternativa consentono di ridurre il problema della non esistenza di soluzioni di
un sistema di equazioni e disequazioni lineari assegnato a quello dell’esistenza di soluzioni di
un altro sistema lineare.
Un risultato di alternativa relativo a due assegnati sistemi lineari (I) e (II), consiste nel
dimostrare che:

Il sistema (I) ha soluzione se e solo se il sistema (II) non ha soluzione.

8.2 Il Lemma di Farkas


Tra i teoremi di alternativa per i sistemi di disequazioni lineari, uno dei più noti, e anche quello
che utilizzeremo nei prossimi capitoli, è il Lemma di Farkas che si può enunciare nella forma
seguente.

Teorema 8.2.1 (Lemma di Farkas) Sia B matrice p × n e g ∈ IRn . Il sistema

Bd ≥ 0 gT d < 0 (I)

non ha soluzione d ∈ IRn se e solo se il sistema

BT u = g u≥0 (II)

ha soluzione u ∈ IRp .

114
Dimostrazione. [(II) ha soluzione −→ (I) non ha soluzione.] Sia ū soluzione del sistema
(I) e supponiamo per assurdo che esista una soluzione d¯ del sistema (II), ovvero che la coppia
ū, d¯ soddisfi:
B d¯ ≥ 0 g T d¯ < 0,
T
B ū = g ū ≥ 0.
Allora si può scrivere:
ū≥0 B T ū=g
B d¯ ≥ 0 =⇒ ūT B d¯ ≥ 0 =⇒ g T d¯ ≥ 0,
che contraddice l’ipotesi che d¯ soddisfi g T d¯ < 0.
[(I) non ha soluzione −→ (II) ha soluzione.] La dimostrazione di questa implicazione è
in due parti. Si dimostra preliminarmente che se (I) non ha soluzione allora esiste un vettore
u ∈ Rp tale ch B T u = g. Successivamente dimostreremo che u ≥ 0.
Se (I) non ha soluzione, allora in particolare non esiste una soluzione nemmeno al sistema di
equazioni lineari
Bd = 0 g T d = −1 [(I)eq].
Il sistema [(I)eq] si può scrivere in forma matriciale come segue:
µ ¶ µ ¶
B 0
d =
gT −1

È noto che tale sistema non ha soluzione se e solo se


µ ¶ µ ¶
B B 0
rango =
6 rango
gT gT −1

e quindi se: µ ¶ µ ¶
B 0 B
rango = rango + 1. (8.1)
gT −1 gT
D’altra parte, l’ultima riga (g T − 1) è linearmente indipendente dalle righe di (B 0) e quindi:
µ ¶
B 0 ¡ ¢
rango = rango B 0 + 1 = rango(B) + 1. (8.2)
gT 1

Dalle (8.1) (8.2), tenendo conto del fatto che il rango di una matrice è eguale al rango della
trasposta, si ottiene
µ ¶
¡ ¢ B
rango B T g = rango = rango(B)
gT

e ciò implica che il sistema B T u = g ha soluzione, ovvero esiste una rappresentazione di g del
tipo:
X p
g= ui bi . (8.3)
i=1

Dimostriamo ora che u ≥ 0.


La dimostrazione è per induzione sul numero di disequazioni che compongono il sistema,
ovvero sul numero di righe p della matrice B.

115
Dimostriamo innanzitutto che la tesi è vera per p = 1 e quindi supponiamo che
6∃d∈R: g T d < 0, bT1 d ≥ 0.
Quindi per la (8.3) risulta g = ub1 con u ∈ R. Se c = 0, il risultato è ovvio in quanto si può
assumere u = 0. Se c 6= 0 deve anche essere b1 6= 0 e possiamo considerare il vettore d¯ = b1 6= 0.
Ne segue che bT1 d¯ = kb1 k2 > 0 e quindi, per ipotesi, deve risultare cT d¯ ≥ 0. Si ottiene quindi
g T d¯ = (ub1 )T (b1 ) = ukb1 k2 ≥ 0,
che implica u ≥ 0.
Supponiamo ora che il risultato sia vero per una matrice con p − 1 righe e dimostriamo che vale
per una matrice con p righe. Quindi supponiamo che:
non esista d ∈ Rn tale che Bd ≥ 0, g T d < 0 (8.4)
con B matrice p × n.
Sappiamo che esiste u ∈ Rp tale che vale la (8.3). Tra tutti i possibili u per cui vale la (8.3) de-
terminiamo un vettore ū con il massimo numero di componenti non negative e indichiamo con s
il numero di componenti non negative di ū. Riordiniamo le componenti di ū e conseguentemente
le colonne di B in modo che le componenti non negative siano le prime s, ovvero risulti
ū1 , . . . , ūs ≥ 0, ūs+1 , . . . , ūp < 0.
Allora possiamo scrivere
s
X p−1
X
g= ūi bi + ūi bi + ūp bp .
i=1 i=s+1
Si tratta di dimostrare che deve essere s = p. Per assurdo supponiamo che s < p.
Possiamo scrivere
m−1
X
g = ĝ + ūi bi , (8.5)
i=s+1
avendo posto
s
X
ĝ = ūi bi + ūp bp (8.6)
i=1
La dimostrazione procede in due passi principali. Si dimostra inizialmente che

Bd ≥ 0 Bd ≥ 0
[Affermazione 1] Se 6 ∃ d ∈ Rn : =⇒ 6 ∃ d ∈ Rn :
cT d < 0 ĝ T d < 0

Successivamente che

[Affermazione 2]

Bd ≥ 0 bTi d ≥ 0, i = 1, . . . , p − 1,
Se 6 ∃ d ∈ Rn : =⇒ 6 ∃ d ∈ Rn :
ĝ T d < 0 ĝ T d < 0.

116
Se [Affermazione 1] e [Affermazione 2] sono vere, come conseguenza dell’ipotesi 8.4, si ha che

6 ∃ d ∈ Rn tale che bTi d ≥ 0 i = 1, . . . , p − 1 ĝ T d < 0. (8.7)

Ma poiché il sistema (8.7) è di dimensione p − 1, soddisfa l’ipotesi induttiva e quindi esiste un


û ∈ Rp−1 tale che
p−1
X
ĝ = ûi bi , ûi ≥ 0, i = 1, . . . , p − 1.
i=1

Sostituendo questa espressione di ĝ nella definizione (8.6) di c, si ottiene:


p−1
X p−1
X m−1
X
g = ĝ + ūi bi = ûi bi + ūi bi
i=s+1 i=1 i=s+1
s
X p−1
X
= ûi bi + (ūi + ûi )bi
i=1 i=s+1
Xs p−1
X
= ûi bi + (ūi + ûi )bi + 0 · bp
i=1 i=s+1

Quindi c risulta essere la combinazione lineare dei vettori bi con s + 1 coefficienti non negativi
û1 , . . . , ûs , ûp = 0. Ma questo è assurdo perché per ipotesi avevamo supposto che s fosse il
massimo numero di coefficienti non negativi nella definizione di g.
Si tratta quindi di dimostrare che valgono le [Affermazione 1] e [Affermazione 2].
Dimostrazione [Affermazione 1]. Sia d tale che Bd ≥ 0, e quindi, per ipotesi g T d ≥ 0; moltipli-
cando scalarmente la (8.5) per d si ottiene

≥0
p−1
X |{z}
0 ≤ g T d = ĝ T d + ūi bTi d per ogni d : b0i d ≥ 0 i = 1, . . . , p.
i=s+1

p−1
X
Poiché ūs+1 , . . . , ūp−1 < 0, la ūi bTi d ≤ 0 e quindi deve essere necessariamente:
i=s+1

ĝ T d ≥ 0 per ogni d : Bd ≥ 0.

L’[Affermazione 1] è cosı́ dimostrata.


Dimostrazione [Affermazione 2]. Per definizione (8.6), ĝ è la combinazione lineare dei vettori bi
con coefficienti ū1 , . . . , ūs , 0, . . . , 0, ūp tutti non negativi tranne l’ultimo ūp . La dimostrazione è
per assurdo, quindi supponiamo che non sia vera, cioè che esista d¯ ∈ Rn tale che bTi d¯ ≥ 0 per
i = 1, . . . , p − 1 e ĝ T d¯ < 0. Per definizione di ĝ possiamo scrivere
s
X
ĝ T d¯ = ūi bTi d¯ + ūp bTp d.
¯
i=1

117
s
X
Se bTi d¯ ≥ 0 per i = 1, . . . , p − 1, allora ūi bTi d ≥ 0. D’altra parte ūp < 0 e quindi ĝ T d¯ < 0 se
i=1
e solo se risulta bTp d¯ > 0. Quindi d¯ è un vettore tale che

bTi d¯ ≥ 0 i = 1, . . . , p − 1 bTp d¯ > 0,

ma allora per ipotesi deve essere ĝ T d¯ ≥ 0 che contraddice ĝ T d¯ < 0. Quindi anche l’[Affermazione
2] è dimostrata.

118
Capitolo 9

Le condizioni di
Karush-Kuhn-Tucker

9.1 Introduzione
In questo capitolo deriveremo le condizioni necessarie di Karush-Kuhn-Tucker (KKT) per prob-
lemi vincolati in cui S è descritto da vincoli di disuguaglianza e/o di uguaglianza lineari. Si
tratta di formulare in modo alternativo le condizioni necessarie del paragrafo 7.5. A questo
scopo si devono utilizzare i teoremi dell’alternativa descritti nel Capitolo 8.

9.2 Le condizioni di Karush-Kuhn-Tucker


Consideriamo il problema di ottimizzazione su un poliedro e senza perdita di generalità ci riferi-
amo inizialmente ad un poliedro con soli vincoli di disuguaglianza. Il problema in considerazione
è quindi:
min f (x)
(P − P OL)
Ax ≥ b
Nel paragrafo 7.5 abbiamo derivato le condizioni necessarie di ottimo:

Se x∗ è un punto di minimo locale allora non esiste una soluzione d ∈ Rn al sistema di dise-
quazioni lineare
AI(x∗ ) d ≥ 0,
(9.1)
∇f (x∗ )T d < 0.
dove AI(x∗ ) è la matrice AI(x∗ ) = (aTi )i∈I(x∗ ) di dimensione |I(x∗ )|×n e I(x∗ ) = {i : aTi x∗ = bi }.

Identificando il sistema (9.1) con il sistema (I) del Lemma di Farkas, e utilizzando il Lemma di
Farkas, possiamo affermare quanto segue.

119
Non esiste una soluzione d ∈ Rn al sistema di disequazioni lineare (9.1) se e solo se esiste una
soluzione del sistema

ATI(x∗ ) u = ∇f (x∗ ),
(9.2)
u ≥ 0.
dove u è un vettore di dimensione |I(x∗ )|.

Esempio 9.2.1 Consideriamo il sistema (7.9) ottenuto nell’esempio 7.7.2:

2d1 − d2 ≥ 0
d1 ≥ 0
20d1 < 0

A cui corrispondono
µ ¶
2 −1
AI(x∗ ) = ∇f (x∗ ) = (20, 0)T .
1 0

Il sistema (7.9) non ammette soluzione. Applicando il Lemma di Farkas deve esistere un vettore
u ∈ IR2 tale che u ≥ 0 e
µ ¶T µ ¶ µ ¶
2 −1 u1 20
=
1 0 u2 0
Il sistema si scrive
2u1 + u2 = 20
−u1 = 0
u1 ≥ 0, u2 ≥ 0
che ammette la soluzione u1 = 0, u2 = 20. 2

Utilizzando il Lemma di Farkas, possiamo stabilire le condizioni di ottimo per (P-POL),


note come condizioni di Karush-Kuhn-Tucker (KKT), nella forma seguente.

Teorema 9.2.2 (Condizioni di Karush-Kuhn-Tucker per (P-POL)) Sia x∗ un punto


di minimo locale del problema (P-POL). Allora esiste un vettore λ∗ ∈ Rm tale che risultino
soddisfatte le condizioni seguenti:
(i) Ax∗ ≥ b,
(ii) ∇f (x∗ ) − AT λ∗ = 0,
(iii) λ∗ ≥ 0,
(iv) λ∗i (bi − aTi x∗ ) = 0 per i = 1, . . . , m.

Dimostrazione. Sia x∗ un punto di minimo locale; poiché x∗ deve essere ammissibile vale
la (i). Inoltre non deve ammettere soluzione il sistema (9.1). Abbiamo già osservato che,
identificando il sistema (9.1) con il sistema (I) del Lemma di Farkas, possiamo affermare che
esiste una soluzione u del sistema (9.2).

120
Sia u∗i ≥ 0, i ∈ I(x∗ ) una soluzione del sistema precedente e definiamo un vettore λ∗ ∈ Rm
ponendo: ½ ∗
ui per i ∈ I(x∗ )
λ∗i = (9.3)
0 / I(x∗ ).
per i ∈
Risulta ovviamente λ∗ ≥ 0 ed è soddisfatta la (iii). Inoltre, la (iv) è una conseguenza immediata
della definizione (9.3) di λ∗ . Abbiamo infatti che
½ ∗
∗ T ∗ ui (bi − aTi x∗ ) = 0 per i ∈ I(x∗ )
λi (bi − ai x ) =
0(bi − aTi x∗ ) = 0 per i ∈/ I(x∗ ).
X
Infine, ricordando che la (9.2) può essere scritta ∇f (x∗ ) = u∗i ai possiamo scrivere
i∈I(x∗ )

X X
∇f (x∗ ) = u∗i ai + 0 · ai = AT λ∗ .
i∈I(x∗ ) i6∈I(x∗ )

È quindi soddisfatta la (ii).

Il vettore λ ∈ IRm si dice moltiplicatore di Lagrange (generalizzato) relativo ai vincoli Ax ≥ b.

Osserviamo che la (ii) esprime il fatto che in un punto di minimo locale il gradiente della
funzione è esprimibile come combinazione non negativa (conica) dei gradienti dei vincoli attivi
in x∗ : X
∇f (x∗ ) = λ∗i ai , λ∗i ≥ 0
i∈I(x∗ )

La condizione (iv) è nota come condizione di complementarità ed esprime il fatto che in un


punto di minimo locale deve essere nullo, per ciascun vincolo, il prodotto λ∗i (bi − a∗i T x∗ ), per
cui, se il vincolo non è attivo, si deve annullare il corrispondente moltiplicatore.
Tenuto conto che λ∗ ≥ 0 e Ax∗ − b ≥ 0 la condizione (iv) si può scrivere equivalentemente come
m
X
λ∗ T (b − Ax∗ ) = λ∗i (bi − aTi x∗ ) = 0.
i=1

Le condizioni enunciate si possono esprimere in una forma equivalente facendo riferimento alla
funzione Lagrangiana.

La funzione Lagrangiana per il problema (P-POL) è definita come

L(x, λ) = f (x) + λT (b − Ax)

Indicando con ∇x L(x, λ) = ∇f (x) − AT λ il gradiente di L rispetto a x, la condizione (ii)


esprime il fatto che nel punto (x∗ , λ∗ ) deve annullarsi il gradiente della funzione Lagrangiana

121
rispetto a x, per cui la coppia (x∗ , λ∗ ) costituisce un punto stazionario della funzione La-
grangiana. Possiamo allora riscrivere le condizioni di KKT come segue

(Condizioni necessarie di Karush-Kuhn-Tucker)


Sia x∗ un punto di minimo locale del problema (P-POL). Allora esiste un vettore λ∗ ∈ IRm tale
che risultino soddisfatte le condizioni seguenti:
(i) Ax∗ ≥ b, (ammissibilità)
(ii) ∇x L(x∗ , λ∗ ) = 0 (stazionarietà),
(iii) λ∗ ≥ 0,
(iv) λ∗ T (b − Ax∗ ) = 0 (complementarità).

Osserviamo che in un punto x∗ che sodisfa le condizioni di KKT risulta

L(x∗ , λ∗ ) = f (x∗ ).

I punti candidati ad essere minimo di un problema del tipo (P-POL) possono essere deter-
minati risolvendo le condizioni di KKT. Introduciamo allora la seguente definizione.

Un punto x̄ è detto punto di KKT del problema (P-POL) se esiste λ̄ ∈ IRm tale che valgano le
condizioni:
(i) Ax̄ ≥ b,
(ii) ∇L(x̄, λ̄) = 0,
(iii) λ̄ ≥ 0,
(iv) λ̄T (b − Ax̄) = 0.

I possibili candidati ad essere minimo locale sono quindi i punti di KKT.

Esempio 9.2.3 Consideriamo il problema


1
max x22 + x1
2
x1 − x2 ≤ 1
1
2 x1 + x2 ≤ 1
x1 ≥ 0

Determiniamo tutti punti di KKT. Mettiamo innanzitutto il problema nella forma (P-POL).
1
min −x22 − x1
2
−x1 + x2 ≥ −1
− 12 x1 − x2 ≥ −1
x1 ≥ 0

122
La funzione Lagrangiana per questo problema è:
1 1
L(x, λ) = −x22 − x1 + λ1 (−1 + x1 − x2 ) + λ2 (−1 + x1 + x2 ) − λ3 x1
2 2
Le condizioni di KKT sono:
(i) (ammissibilità)
−x1 + x2 ≥ −1
1
− x1 − x2 ≥ −1
2
x1 ≥ 0

(ii) (stazionarietà)
1 1
− + λ1 + λ2 − λ3 = 0
2 2
−2x2 − λ1 + λ2 = 0

(iii) (non negatività)


λ1 , λ1 , λ3 ≥ 0

(iv) (complementarità)
λ1 (−1 + x1 − x2 ) = 0
1
λ2 (−1 + x1 + x2 ) = 0
2
λ3 x1 = 0

Determiniamo i punti di KKT esaminando tutti i casi possibili. Dalla condizione λ3 x1 = 0


si ottiene che
 
  (iv)2 (ii)2 (ii)3 3

 
 x2 = −1 7−→ λ2 = 0, 7−→ λ1 = 2 7−→ λ3 =

 
 2

 





(i)
x1 = 0 7−→ −1 ≤ x2 ≤ 1 x2 = 1
(iv)1 (ii)2
7−→ λ1 = 0, 7−→ λ2 = −2,

 

 


 


 
 −1 < x2 < 1 7− (iv) (ii) (ii) 1

 → λ1 = λ2 = 0, 7−→2 x2 = 0, 7−→3 λ3 = −
2
0 = λ3 x1 =

 

 (ii)1
 λ2 = 0 7− 1 (ii) 1 (iv) 3

 
 → λ1 = , 7−→2 x2 = − , 7−→1 x1 =

 
 2 4 4

  



 λ3 = 0 
 λ1 > 0
(iv)1,2 +(i)
7−→
4 1 (ii)1,2
x1 = , x2 = , 7−→ λ2 = λ1 =
7 1

 
λ > 0

 

3 3 9 9

 

2

  (ii)1 (ii)2 (iv)
λ1 = 0 7−→ λ2 = 1, 7−→ x2 = 21 , 7−→ x1 = 1. 2

Quindi abbiamo trovato 4 punti di KKT


1. (0, − 1)T con moltiplicatori λ = (2 , 0, 3/2)T con valore della funz. obiettivo f = −1;
2. (3/4, − 1/4)T con moltiplicatori λ = (1/2 , 0, 0)T con valore della funz. obiettivo
f = −7/16;

123
4. (4/3, 1/3)T con moltiplicatori λ = (1/9 , 7/9, 0)T con valore della funz. obiettivo
f = −7/9;
5. (1, 1/2)T con moltiplicatori λ = (0 , 1, 0)T con valore della funz. obiettivo f = −3/4;
Poiché l’insieme ammissibile è compatto, esiste un punto di minimo globale e si trova tra i
punti di KKT determinati so pra. Si tratta di scegliere quello con valore della funzione obiettivo
minore: si tratta dei due punti (0, 1) e (0, − 1).
2

Ricordando che la condizione (9.1) diventa necessaria e sufficiente di ottimo globale nell’ipotesi
che f sia convessa, otteniamo che anche le condizioni di KKT sono necessarie e sufficienti di
ottimo globale nell’ipotesi che f sia convessa. Vale infatti il teorema seguente.
Teorema 9.2.4 (Condizioni necessarie e sufficienti di ottimo globale)
Sia f una funzione convessa con ∇f continuo in IRn . Un punto x∗ è minimo globale di (P-POL)
se e solo se esiste λ∗ ∈ IRm tale che valgano le condizioni:
(i) Ax∗ ≥ b,
(ii) ∇f (x∗ ) − AT λ∗ = 0,
(iii) λ∗ ≥ 0,
(iv) λ∗ T (b − Ax∗ ) = 0.
Se inoltre f è strettamente convessa e valgono le condizioni precedenti, allora il punto x∗ è
l’unico punto di minimo globale di f su S.

Esempio 9.2.5 Consideriamo il problema dell’Esempio 7.7.2

min (x1 + 10)2 + (x2 − 12)2


3x1 − 2x2 ≥ −30
2x1 − x2 ≥ −12
x1 ≥ 0,
x2 ≥ 0

Si tratta di un problema convesso. La funzione Lagrangiana per questo problema è la funzione


L : IR2 × IR4 → IR definita come:

L(x, λ) = (x1 + 10)2 + (x2 − 12)2 + λ1 (−30 − 3x1 + 2x2 ) + λ2 (−12 − 2x1 + x2 ) − λ3 x1 − λ4 x2

Le condizioni di KKT in un punto x ammissibile richiedono che valga


µ ¶
2(x1 + 10) − 3λ1 − 2λ2 − λ3
∇x L(x, λ) = =0
2(x2 − 12) + 2λ1 + λ2 − λ4
con
λ≥0
λ1 (−30 − 3x1 + 2x2 ) = 0
λ2 (−12 − 2x1 + x2 ) = 0
λ3 x1 = 0
λ4 x2 = 0

124
Possiamo facilmente verificare che il punto ammissibile x = (0, 0)T non soddisfa le condizioni
di KKT. Infatti dalle condizioni di complementaritá si ottiene che λ2 = λ1 = 0. Sostituendo in
∇x L(x, λ) = 0 si ha
20 − λ3 = 0
−24 − λ4 = 0
da cui si ottiene il valore λ4 = −24 < 0 che non è accettabile.
Consideriamo invece il punto (0, 12)T . In questo caso dalle condizioni di complementaritá si
ottiene che λ4 = λ1 = 0. Sostituendo in ∇x L(x, λ) = 0 si ha

20 − 2λ2 − λ3 = 0
λ2 = 0

da cui si ottiene λ2 = 0 e λ3 = 20 > 0. Quindi il punto (0, 12)T soddisfa le condizioni di KKT.
2

Possiamo inoltre enunciare anche le condizioni necessarie del secondo ordine

Teorema 9.2.6 (Condizioni necessarie del 2o ordine di minimo locale sul poliedro)
Sia x∗ un punto di minimo del Problema (P-POL). Allora esiste un vettore λ∗ ∈ Rm tale che
risultino soddisfatte le condizioni di KKT ed inoltre risulta

dT ∇2x L(x∗ , λ∗ )d ≥ 0 per ogni d ∈ IRn : aTi d ≥ 0, i ∈ I(x∗ ) e ∇f (x∗ )T d = 0.

La dimostrazione segue banalmente osservando che ∇2x L(x∗ , λ∗ ) = ∇2 f (x∗ ) e quindi si


tratta di una semplice ”riscrittura” del Teorema 7.7.5.
Dalle condizioni di KKT per problemi nella forma (P-POL) si possono anche derivare di-
rettamente le condizioni di KKT per un problema con poliedro più generale. Analizziamo
inizialmente il caso di poliedro descritto da soli vincoli di uguaglianza

min f (x)
Ax = b

con A matrice m × n. Il sistema di equazioni Ax = b si può equivalentemente scrivere come


Ax ≥ b e −Ax ≥ −b, e dunque il problema si scrive:

min f (x)
Ax ≥ b
−Ax ≥ −b

Associando ai vincoli i moltiplicatori µ1 , µ2 ∈ IRm , con µ1 , µ2 ≥ 0, la funzione Lagrangiana è :

L(x, µ1 , µ2 ) = f (x) + µT1 (b − Ax) + µT2 (−b + Ax) = f (x) + (µ1 − µ2 )T (b − Ax).

Se si pone µ = µ1 − µ2 , si può scrivere

L(x, µ) = f (x) + µT (b − Ax)

125
dove µ ∈ Rm può assumere qualunque valore (positivo, negativo, nullo) in quanto differenza di
due quantità non negative. Inoltre la condizione di complementarità è banalmente soddisfatta
in ogni punto ammissibile. Dunque possiamo affermare:

(Condizioni necessarie di Lagrange)


Sia x∗ un punto di minimo locale del problema

min f (x)
Ax = b

Esiste un vettore µ∗ ∈ IRm tale che

∇x L(x∗ , µ∗ ) = ∇f (x∗ ) − AT µ∗ = 0

Consideriamo ora un problema in in forma standard


min f (x)
Ax = b (P − ST )
x≥0
e la funzione Lagrangiana per il problema (P-ST).

La funzione Lagrangiana per il problema (P-ST) è definita come

L(x, λ, µ) = f (x) + µT (Ax − b) − λT x

Si derivano facilmente le condizioni di ottimo.


Teorema 9.2.7 (Condizioni di Karush-Kuhn-Tucker per (P-ST)) Sia x∗ un punto di
minimo locale del problema (P-ST). Allora esistono un vettore λ∗ ∈ IRn e µ∗ ∈ IRm tale che
risultino soddisfatte le condizioni seguenti:
(i) Ax∗ = b, x∗ ≥ 0 (ammissibilità),
(ii) ∇x L(x∗ , λ∗ , µ∗ ) = ∇f (x∗ ) + AT µ∗ − λ∗ = 0 (stazionarietà),
(iii) λ∗ ≥ 0,
(iv) λ∗ T x∗ = 0 (complementarità).

Naturalmente le condizioni di KKT possono essere scritte per un qualunque problema di min-
imizzazione su un poliedro1 . Nel caso generale supponiamo di avere un problema definito da
vincoli di uguaglianza e disuguaglianza del tipo.
min f (x)
Dx = h (P − GEN)
Ax ≥ b
1
Nel caso in cui l’insieme ammissibile non sia un poliedro, è ancora possibile definire le condizioni
necessarie di KKT purché i vincoli soddisfino opportune ipotesi dette condizioni di qualificazione dei
vincoli. In questo corso non si trattano vincoli non lineari generici.

126
in cui D è una matrice p × n, A è una matrice q × n, h ∈ IRp , b ∈ IRq . Allora

La funzione Lagrangiana per (P-GEN) è

L(x, λ, µ) = f (x) + λT (b − Ax) + µT (Dx − h),

con λ ∈ IRq , µ ∈ IRp .


Inoltre

Le condizioni di KKT per il problema (P-GEN) sono soddisfatte in un punto (x∗ , λ∗ , µ∗ ) ∈


IRn × IRq × IRp se:
(i) Ax∗ ≥ b, Dx∗ = h (ammissibilità),
(ii) ∇x L(x∗ , λ∗ , µ∗ ) = ∇f (x∗ ) − AT λ∗ + DT µ∗ = 0 (stazionarietà),
(iii) λ∗ ≥ 0,
(iv) λ∗ T (b − Ax∗ ) = 0 (complementarità).

Teorema 9.2.8 (Condizioni di Karush-Kuhn-Tucker per (P-GEN)) Sia x∗ un punto


di minimo locale del problema (P-GEN). Allora esistono vettori λ∗ ∈ Rq , µ∗ ∈ IRp tali che
risultino soddisfatte le condizioni seguenti:
(i) ∇x L(x∗ , λ∗ , µ∗ ) = 0,
(ii) λ∗ ≥ 0,
(iii) λ∗i (bi − aTi x∗ ) = 0 per i = 1, . . . , q.

Esempio 9.2.9 Consideriamo la seguente modifica del problema dell’Esempio 9.2.3.


1
max x22 + x1
2
x1 − x2 = 1
1
2 x1 + x2 ≤ 1
x1 ≥ 0

Determiniamo tutti punti di KKT. Mettiamo innanzitutto il problema nella forma (P-GEN).
1
min −x22 − x1
2
x1 − x2 = 1
− 12 x1 − x2 ≥ −1
x1 ≥ 0

La funzione Lagrangiana per questo problema è:


1 1
L(x, λ) = −x22 − x1 + µ(−1 + x1 − x2 ) + λ1 (−1 + x1 + x2 ) − λ2 x1
2 2
Le condizioni di KKT sono:

127
(i) (ammissibilità)
x1 − x2 = 1
1
− x1 − x2 ≥ −1
2
x1 ≥ 0
(ii) (stazionarietà)
1 1
− + µ + λ1 − λ2 = 0
2 2
−2x2 − µ + λ1 = 0
(iii) (non negatività)
λ1 , λ2 ≥ 0
(iv) (complementarità)
1
λ1 (−1 + x1 + x2 ) = 0
2
λ2 x1 = 0
Determiniamo i punti di KKT esaminando tutti i casi possibili. Dalla condizione λ2 x1 = 0
si ottiene che



(i)
x1 = 0 7−→
(iv) (ii)2
x2 = −1 7−→2 λ1 = 0, 7−→ µ = 2 7−→ λ2 = 3/2
(ii)3






0 = λ2 x1 = 

 
 λ1 = 0
(ii) (ii)2
7−→1 µ = 1/2, 7−→ x2 = −1/4, 7−→
1
x1 = 3/4
(i)



 λ2 = 0 imponiamo

 
 (iv)2 +(i) (ii)1 +(ii)2
λ1 > 0 7−→ x1 = 4/3, x2 = 1/3, 7−→ λ1 = 7
9 µ = 19 .
Quindi abbiamo trovato 3 punti di KKT
1. x1 = (0, − 1)T con moltiplicatori µ = 2 e λ = (0, 3/2)T con valore della funz. obiettivo
f = −1;
2. x2 = (3/4, − 1/4)T con moltiplicatori µ = 1/2 e λ = (0, 0)T con valore della funz.
obiettivo f = −7/16;
3. x3 = (4/3, 1/3)T con moltiplicatori µ = 1/9 e λ = (7/9, 0)T con valore della funz.
obiettivo f = −7/9;
Poiché l’insieme ammissibile è compatto, esiste un punto di minimo globale e si trova tra i
punti di KKT determinati sopra. Si tratta di scegliere quello con valore della funzione obiettivo
minore: si tratta del punto x1 = (0, − 1).
2

Possiamo inoltre scrivere le condizioni necessarie del secondo ordine. In particolare si ha:
Teorema 9.2.10 (Condizioni necessarie del 2o ordine) Sia x∗ un punto di minimo locale
del problema (P-GEN). Allora esistono vettori λ∗ ∈ IRp e µ∗ ∈ IRq tali che risultino soddisfatte
le condizioni di KKT e inoltre risulta
z T ∇2xx L(x∗ , λ∗ , µ∗ )z ≥ 0 per ogni z : Dz = 0, AI(x∗ ) z ≥ 0 e ∇f (x∗ )T z = 0

128
Consideriamo nuovamente l’esempio 9.2.9.
Esempio 9.2.11 Consideriamo i 3 punti di KKT precedentemente determinati e verifichiamo
se soddisfano le condizioni necessarie del secondo ordine. La funzione Lagrangiana per questo
problema è:
1 1
L(x, λ) = −x22 − x1 + µ(−1 + x1 − x2 ) + λ1 (−1 + x1 + x2 ) − λ2 x1
2 2
il cui hessiano è µ ¶
0 0
∇2xx L(x, λ, µ) = = ∇2 f (x).
0 −2
µ ¶
−1/2
Quindi per ogni z = (z1 , z2 )T risulta z T ∇2xx L(x∗ , λ∗ , µ∗ )z = −2z22 . Inoltre ∇f = .
−2x2
Consideriamo il punto x1 = (0, − 1)T . Dobbiamo determinare i vettori z che definiscono
le direzioni ammissibili. In x1 è attivo il vincolo di disuguaglianza x1 ≥ 0, quindi le direzioni
ammissibili sono i vettori z ∈ R2 che risolvono il sistema
z1 − z2 = 0
z1 ≥ 0,
ovvero tutti i vettori del tipo z = (t, t)T con t ≥ 0. Inoltre deve risultare
µ 1 ¶
1 T T −2 1
∇f (x ) z = (t, t) = − t + 2t = 0,
2 2
da cui si ottiene t = 0 e z = (0, 0)T . La condizione necessaria del secondo ordine quindi è
soddisfatta in quanto −2t2 ≡ 0.
Consideriamo il punto x2 = (3/4, −1/4)T . In x2 non è attivo nessun vincolo di disuguaglianza,
quindi le direzioni ammissibili sono i vettori z ∈ R2 che risolvono il sistema
z1 − z2 = 0
ovvero tutti i vettori del tipo z = (t, t)T . Inoltre deve risultare
µ 1 ¶
2 T T −2 1 1
∇f (x ) z = (t, t) 1 = − t + t = 0.
2 2 2
La condizione necessaria del secondo ordine quindi NON è soddisfatta in quanto −2t2 ≥ 0 non
è verificata qualunque sia t. Il punto x2 non può essere un minimo locale.
Consideriamo il punto x3 = (4/3, 1/3)T . In x3 è attivo il primo vincolo di disuguaglianza,
quindi le direzioni ammissibili sono i vettori z ∈ R2 che risolvono il sistema
z1 − z2 = 0
− 12 z1 − z2 ≥ 0
ovvero tutti i vettori del tipo z = (t, t)T con t ≤ 0. Inoltre deve risultare
µ 1 ¶
−2 1 2
∇f (x3 )T z = (t, t)T 2 = − t − t = 0,
−3 2 3
che è verificata per t = 0. Quindi l’unico vettore z = (0, 0)T e la condizione necessaria del
secondo ordine quindi è soddisfatta in quanto −2t2 ≡ 0 è verificata. 2

129
Capitolo 10

Teoria della Programmazione


Lineare

In questo capitolo i risultati dei capitoli precedenti saranno applicati a problemi di Program-
mazione Lineare (PL).
Abbiamo già visto che l’insieme ammissibile di un problema di programmazione lineare è un
poliedro e dunque un insieme convesso e che la PL è un problema sia concavo che convesso.
Dunque, se ammette soluzione, il minimo globale (non necessariamente unico) si trova sulla
frontiera dell’insieme ammissibile.
Ci proponiamo di studiare alcune proprietà dei poliedri che consentano di caratterizzare
le soluzioni ottime di un problema di programmazione Lineare. Successivamente si deriva la
teoria della dualità per la PL a partire dalle condizioni di KKT.

10.1 Caratterizzazione dei vertici di un poliedro


Passiamo ora a caratterizzare in modo algebrico i vertici di un poliedro in forma Ax ≥ b.

Teorema 10.1.1 (Vertici di un poliedro) Sia dato un poliedro S = {x ∈ Rn : Ax ≥ b}.


Un punto x̄ ∈ S è un vertice se e solo se esistono n righe aTi della matrice A corrispondenti ai
vincoli attivi in x̄ linearmente indipendenti, cioè se e solo se risulta

rango{AI(x̄) } = n

dove AI(x̄) la matrice |I(x̄)| × n costituita dalle righe di A con indice in I(x̄)

Dimostrazione. Dimostriamo la parte necessaria, ovvero che se x̄ è un vertice, allora rango({ai i ∈


I(x̄)}) = n. Per assurdo supponiamo che il rango sia p < n. Il sistema omogeneo

aTi d = 0 i ∈ I(x̄)

in I(x̄) equazioni e n incognite, ha rango inferiore a n e dunque ammette una soluzione non
nulla. Dal teorema 7.6.3, sappiamo che d è una particolare direzione ammissibile; notiamo

130
inoltre che, poiché anche −d è soluzione del sistema omogeneo, anche −d è una direzione
ammissibile. Allora possiamo considerare i due punti

y = x̄ + td
z = x̄ + t(−d)

e sappiamo che per valori di t sufficientemente piccoli sono entrambi ammissibili1 . Osserviamo
però che possiamo scrivere
1 1
x̄ = y + z
2 2
ovvero x̄ può essere ottenuto come combinazione convessa con coefficiente β = 12 di due punti
ammissibili e distinti. Ma questo contraddice che x̄ sia un vertice.
Dimostriamo la parte sufficiente, ovvero che se rango{ai i ∈ I(x̄)} = n allora x̄ è un vertice.
Osserviamo preliminarmente che la condizione rango({ai i ∈ I(x̄)}) = n implica che x̄ sia
l’unica soluzione del sistema
aTi x = bi per ogni i ∈ I(x̄).
Procediamo ora per assurdo e supponiamo che il punto x̄ non sia un vertice. Allora non può
essere l’unico punto ammissibile e in particolare esisteranno due punti ammissibili v e w distinti
da x̄ e tali che x̄ possa essere espresso come combinazione convessa di v e w ovvero

x̄ = (1 − β)v + βw con β ∈ (0, 1).

Per ogni i ∈ I(x̄) possiamo scrivere

bi = aTi x̄ = (1 − β)aTi v + βaTi w

Osserviamo che deve essere necessariamente aTi v = bi e aTi w = bi per ogni i ∈ I(x̄). Se cosı̀ non
fosse, e aTi v > bi e/o aTi w > bi si avrebbe l’assurdo

bi = aTi x̄ = (1 − β)aTi v + βaTi w > (1 − β)bi + βbi = bi .

Ma allora otteniamo che sia v che w sono soluzioni del sistema

aTi x = bi per ogni i ∈ I(x̄).

Ma questo contraddice che x̄ sia l’unica soluzione.


Possiamo enunciare alcuni corollari che discendono direttamente dal teorema appena di-
mostrato.

Corollario 10.1.2 Sia dato un poliedro S = {x ∈ IRn : Ax ≥ b}. Se la matrice A ha un


numero di righe linearmente indipendenti minore di n, allora S non ha vertici.
In particolare se m < n allora S non ha vertici.

Corollario 10.1.3 Un poliedro S = {x ∈ IRn : Ax ≥ b} ha un numero finito di vertici, pari


al massimo a µ ¶
m m!
=
n n!(m − n)!
1
per trovare il valore di t basta applicare la formula (7.5) alle due direzioni d e −d.

131
Esempio 10.1.4 Sia dato il poliedro dell’Esempio 7.6.4

3x1 − 2x2 ≥ −30


2x1 − x2 ≥ −12
x1 ≥ 0 x2 ≥ 0

che possiamo scrivere in forma matriciale


   
−3 −2 µ ¶ −30
 2 −1  x1  −12 
  ≥ 
 1 0  x2  0 .
0 1 0

x2

x1

Figura 10.1: Poliedro Esempio 10.1.4.


Il poliedro è rappresentato in figura 10.1 e i vertici sono indicati con un puntino rosso.
Verifichiamo che la condizione espressa dal Teorema 10.1.1 è verificata. I tre vertici sono i punti
µ ¶ µ ¶ µ ¶
0 0 6
v1 = v2 = v3 = .
12 0 24

In v1 sono attivi i vincoli 2x1 − x2 ≥ −12, x1 ≥ 0, ovvero I(v1 ) = {2, 3}. Consideriamo le righe
della matrice A corrispondenti µ ¶
2 −1
1 0
che si verifica sono linearmente indipendenti.

132
In v2 sono attivi i vincoli 3x1 − 2x2 ≥ −30, x1 ≥ 0, ovvero I(v1 ) = {1, 3}. Consideriamo le
righe della matrice A corrispondenti µ ¶
3 −2
1 0
che si verifica sono linearmente indipendenti.
In v3 sono attivi i vincoli 2x1 −x2 ≥ −12, 3x1 −2x2 ≥ −30, ovvero I(v1 ) = {1, 2}. Consideriamo
le righe della matrice A corrispondenti
µ ¶
3 −2
2 −1
che si verifica sono linearmente indipendenti. 2

Si noti che il teorema 10.1.1 non esclude che in un vertice siano attivi più di n vincoli.

Esempio 10.1.5 Consideriamo il poliedro dell’Esempio 10.1.4 con l’aggiunta di un vincolo


x2 ≤ 24, ovvero:
3x1 − 2x2 ≥ −30
2x1 − x2 ≥ −12
−x2 ≥ −24
x1 ≥ 0,
x2 ≥ 0
µ ¶
6
Si verifica graficamente che il punto v3 = è ancora un vertice. Osserviamo che in v3
24
sono ora attivi tre vincoli I(v3 ) = {1, 2, 3} e le righe della matrice A corrispondenti sono:
 
3 −2
 2 −1 
0 −1
Si verifica facilmente che il rango di questa matrice è 2.

Esempio 10.1.6 Sia dato il poliedro


x1 + 2x2 + x3 ≤ 3
3x1 − x2 + x3 ≤ 2
2x1 + x2 + x3 ≤ 3
4x1 + x2 + 2x3 ≤ 4
elenchiamo i vertici. In forma matriciale possiamo scrivere
   
−1 −2 −3   −3
 −3 x1
 1 −1    x2  ≥ 
 −2 
.
 −2 −1 −1   −3 
x3
−4 −1 −2 −4
m! 4!
Si ha n = 3 e m = 4. Il numero massimo di vertici è quindi n!(m−n)! = 3! = 4 e si ottengono
considerando tutte le possibili combinazioni di tre righe della matrice A. consideriamo quindi
i casi possibili:

133
1. I = {1, 2, 3}; il sistema aTi x = bi con i ∈ I ha rango pari a 3 e l’unica soluzione è il punto
(1, 1, 0)T che però non risulta ammissibile, perché risulta (−4 − 1 − 2)(1, 1, 0)T < −4;
2. I = {1, 2, 4} il rango della matrice è 2 < n, quindi non può essere un vertice;
3. I = {2, 3, 4} il sistema ammette l’unica soluzione (3, 2 , −5) che è ammissibile e quindi è
un vertice;
4. I = {1, 3, 4} il sistema ammette l’unica soluzione (2, 2, −3) che è ammissibile e quindi è
un vertice.

Tuttavia bisogna porre attenzione al fatto che esistono poliedri che non contengono vertici. Un
esempio e’ dato nella figura 10.2 in cui il poliedro è la parte di piano contenuta tra due rette
parallele r1 e r2 .
r1
1111111111111111111111111111
0000000000000000000000000000
0000000000000000000000000000
1111111111111111111111111111
x2
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
r2
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111 x1
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
0000000000000000000000000000
1111111111111111111111111111
Figura 10.2: Poliedro senza vertici.

Vedremo nel prossimo paragrafo che il caso in cui il poliedro non ha vertici è l’unico caso
in cui il problema di PL corrispondente può avere soluzione ottima (ovviamente sulla frontiera)
senza che nessuna soluzione coincida con un vertice.
Risulta quindi interessante capire quando un poliedro può non ammettere vertice. A tal
scopo introduciamo la seguente definizione

Definizione 10.1.7 (Retta) Sia S un poliedro. Il poliedro contiene una retta se esiste un
punto x̄ ∈ S e una direzione d ∈ IRn tale che

x̄ + td ∈ S per ogni t ∈ IR.

La caratterizzazione dei casi in cui un poliedro non ammette vertici è riportata nel seguente
risultato, di cui omettiamo la prova.

134
Teorema 10.1.8 Un poliedro P non vuoto non ha vertici se e solo se contiene una retta.

È evidente che il poliedro nella Figura 10.2 contiene rette (in particolare contiene, per
esempio, r1 , r2 ) e quindi, non contiene vertici.

Osservazione 10.1.9 Nel caso le variabili del problema di PL siano vincolate ad essere tutte
non negative ovvero tra i vincoli compaiono x ≥ 0, questo implica che il poliedro ammissibile è
interamente contenuta nel primo ortante e quindi non può contenere rette. Quindi, in base al
teorema precedente, tutti i poliedri contenuti nel primo ortante o sono vuoti o hanno dei vertici.

Notiamo che questa è sicuramente la classe di poliedri che più frequentemente si incontra nelle
applicazioni.Possiamo dunque affermare:
Se un poliedro
S ⊆ {x ∈ IRn : x ≥ 0}
è non vuoto, ammette sempre almeno un vertice.
Dumque, risulta vero il seguente risultato.

Corollario 10.1.10 Sia dato un poliedro del tipo S = {x ∈ IRn : Ax = b, x ≥ 0}. Se il


poliedro non è vuoto, ammette sempre un vertice.

Consideriamo un poliedro n forma standard del tipo

S = {x ∈ IRn : Ax = b, x ≥ 0}.

Possiamo caratterizzare i vertici di un poliedro in forma standard utilizzando la struttura par-


ticolare e osservando che in punto ammissibile x̄ risulta

I(x̄) = {1, . . . , m} ∪ {i : x̄i = 0}.

Vale il seguente teorema che si riporta senza dimostrazione.

Teorema 10.1.11 (Vertici di un poliedro in forma standard) Sia dato un poliedro S =


{x ∈ IRn : Ax = b, x ≥ 0}. Un punto x̄ ∈ S è un vertice se e solo se le colonne della matrice
A corrispondenti a componenti positive di x̄, sono linearmente indipendenti.

Abbiamo osservato nel Capitolo 3 che è possibile passare da una rappresentazione di un


poliedro ad altre equivalenti. In particolare ci interessa qui notare che un poliedro del tipo

S = {x ∈ IRn : Ax ≥ b, x ≥ 0}

(con A matrice m × n) può essere trasformato in forma standard con l’aggiunta di variabili di
surplus come segue
½µ ¶ ¾
x
S0 = ∈ IRn+m : Ax − s = b, x ≥ 0, s ≥ 0 .
s

Possiamo mettere in relazione i vertici di S con i vertici di S 0 . Vale infatti il seguente risultato.

135
n
Teorema
µ ¶ 10.1.12 x̄ è un vertice del poliedro
½µS =¶{x ∈ IR : Ax ≥ b, x ≥ 0} se e solo ¾ se
x̄ 0 x n+m
con s̄ = Ax̄ − b è un vertice di S = ∈ IR : Ax − s = b, x ≥ 0, s ≥ 0 .
s̄ s
µ ¶

Dimostrazione. Osserviamo preliminarmente che x̄ ∈ S se e solo se ∈ S 0 . Infatti
Ax̄ − b
per definizione Ax̄ − b = s̄ ≥ 0. µ ¶

Supponiamo che x̄ sia un vertice di S ma per assurdo non sia vertice di S 0 . Dunque
µ 1 ¶ µ 2 ¶ s̄
x 0 x
esistono altri due punti distinti ∈S e ∈ S 0 tali che
s1 s2
µ ¶ µ 1 ¶ µ 2 ¶
x̄ x x
= (1 − β) +β ∈ S 0 per qualche β ∈ (0, 1)
s̄ s1 s2
e
Ax1 − s1 = b, Ax2 − s2 = b, x1 ≥ 0, s1 ≥ 0, x2 ≥ 0, s2 ≥ 0.
Dunque x1 ∈µS e x¶2 ∈ S. Inoltre 1 2 1 1 2
µ 2x ¶6= x altrimenti s = Ax − b = Ax − b = s e dunque
2
1
x x
i due punti ∈ S0 e ∈ S 0 non sarebbero distinti. Ma allora risulta anche
s1 s2
x̄ = (1 − β)x1 + βx 2
µ che contraddice
¶ l’ipotesi che x̄ sia un vertice.

Supponiamo ora ∈ S 0 sia un vertice di S 0 , ma, per assurdo, x̄ NON sia vertice di
Ax̄ − b
S. Allora esistono due punti x1 , x2 ∈ S tali che
x̄ = (1 − β)x1 + βx2
per qualche β ∈ (0, 1).
µ 1 ¶ µ 2 ¶
x x
Siano s1 = Ax1 − b ≥ 0 e s2 = Ax2 − b ≥ 0, dunque ∈ S 0
e ∈ S 0 . Inoltre si ha
s1 s2
¡ ¢
(1 − β)s1 + βs2 = (1 − β)(Ax1 − b) + β(Ax2 − b) = A (1 − β)x1 + βx2 − b = Ax̄ − b = s̄
che contraddice l’ipotesi che (x̄, s̄)T sia un vertice di S 0 .

10.2 Il teorema fondamentale della PL


Consideriamo ora il problema di Programmazione Lineare
min cT x
x∈S

con S poliedro. È da notare che il caso di problemi con soli vincoli di uguaglianza del tipo
min cT x
Ax = b
con A matrice m × n é di scarsa rilevanza pratica in quanto è possibile dimostrare che se esiste
una soluzione ammissibile e il problema non è illimitato allora tutte le soluzioni ammissibili sono
ottime. Quindi il problema con soli vincoli di uguaglianza, si riduce essenzialmente allo studio
di sistemi di equazioni lineari.
In particolare vale il seguente risultato.

136
Teorema 10.2.1 Sia dato il problema di PL

min cT x
Ax = b

con A matrice m × n. Se esiste un punto x̄ tale che Ax̄ = b allora


1. il problema è illimitato inferiormente (in questo caso esiste un direzione d ammissibile
tale che cT d < 0)
oppure
2. tutte le soluzioni ammissibili sono ottime (in questo caso per ogni direzione d ammissibile
risulta cT d = 0)

Dimostrazione. Se x̄ è soluzione unica del sistema Ax = b, allora banalmente è anche ottima


(e non esiste alcuna direzione d 6= ammissibile perché il sistema Ad = 0 non ammette soluzione
non nulla). Supponiamo quindi che x̄ non sia l’unico punto ammissibile, allora per ogni d tale
che Ad = 0, le direzione ±d sono ammissibili e risulta A(x̄ ± td) = b per ogni t > 0.
Se per ogni d ammissibile risulta cT d = 0 allora possiamo scrivere

cT (x̄ + td) = cT x̄,

cioè tutte le soluzioni ammissibili hanno lo stesso valore della funzione obiettivo.
Se invece esiste una d ammissibile per cui cT d 6= 0, possiamo senza perdere di generalità supporre
che sia cT d < 0 (altrimenti sarebbe sufficiente considerare la direzione −d). La direzione d è di
discesa e possiamo scrivere

cT (x̄ + td) = cT x̄ + tcT d = cT x̄ − t|cT d|.

Al tendere di t ad ∞ di ha cT (x̄ + td) → −∞.


Nel seguito quindi faremo riferimento solo a problemi di Programmazione Lineare con vincoli
di disuguaglianza e senza perdere di generalitá considereremo solo problemi del tipo

min cT x
(10.1)
Ax ≥ b

Si tratta quindi di stabilire se un problema di PL ammette soluzione e come caratterizzare


la soluzione ottima.
Abbiamo già dimostrato con i Teoremi 5.3.5 e 5.3.6 che se esiste una soluzione ottima, allora
si trova sulla frontiera del poliedro. Il Teorema Fondamentale della Programmazione Lineare
caratterizza in modo più completo i problemi di Programmazione Lineare.

Teorema 10.2.2 (Teorema Fondamentale della Programmazione Lineare) Sia dato un


problema di PL. Allora una e una sola delle seguenti affermazioni è vera:
1. La regione ammissibile è vuota;
2. Il problema è illimitato;
3. Il problema ammette soluzioni ottime.
Se il problema ammette soluzioni ottime e il poliedro che definisce la regione ammissibile ha dei
vertici, allora almeno una soluzione ottima cade su un vertice.

137
Nella dimostrazione del teorema fondamentale della PL, faremo riferimento a problemi di PL
in forma (10.1) ed useremo l’ipotesi (solo semplificativa della dimostrazione) che il poliedro non
contenga rette, che, in base al Teorema 10.1.8, ci assicura l’esistenza di almeno un vertice del
poliedro.
Teorema 10.2.3 (Teorema fondamentale della PL) Sia dato il problema di PL in forma
(10.1). Supponiamo che il poliedro S = {x ∈ Rn : Ax ≥ b} non contenga rette. Allora è vera
una e una sola delle delle seguenti tre affermazioni.
(a) Il problema non ammette soluzioni ammissibili (la regione ammissibile è vuota).
(b) Il problema è illimitato inferiormente sulla regione ammissibile.
(c) Esiste almeno una soluzione ottima e almeno una di esse è un vertice del poliedro.
Dimostrazione. Ovviamente le tre affermazioni dell’enunciato sono incompatibili, nel
senso che se è vera una, non possono essere vere le altre due. Quindi, per dimostrare il teorema,
basterà mostrare che non può succedere che non si verifichi nessuna delle tre. Mostreremo
questo facendo vedere che se non sono vere né (a) né (b), allora deve essere vera la (c).
Supponiamo quindi che la regione ammissibile sia non vuota e che il problema non sia
illimitato inferiormente. Si tratta quindi di dimostrare che esiste un vertice v ∗ tale che cT v ∗ ≤
cT x per ogni x ammissibile.
Se il poliedro contiene solo un punto v ∗ allora v ∗ è ovviamente la soluzione ottima ed è anche
un vertice. Supponiamo allora che il poliedro contenga più di un punto (e quindi infiniti).
La dimostrazione prosegue in due parti. Nella prima parte dimostriamo la seguente affer-
mazione
Per ogni punto x̃ ∈ S, esiste un vertice v k tale che cT v k ≤ cT x̃.
La seconda parte utilizza invece risultati già noti. In particolare, dal Teorema 10.1.3, sappiamo
che i vertici del poliedro sono in numero finito; li indichiamo con v 1 , . . . v p . Quindi tra tutti
i vertici v i possiamo scegliere quello per cui il valore della funzione obiettivo è minore, che
indichiamo con v ∗ . Risulta quindi cT v ∗ ≤ cT v i per ogni vertice v i e quindi in particolare
possiamo scrivere anche per il vertice v k determinato nel prima parte
cT v ∗ ≤ cT v k
Mettendo insieme le due affermazioni in rosso, possiamo finalmente scrivere
cT v ∗ ≤ cT v k ≤ cT x̃, per ogni x̃ ∈ S
il che prova che l’affermazione (c) è vera.
Dimostriamo la prima parte. Sia x̃ una soluzione ammissibile che non sia un vertice, dimostri-
amo che è possibile trovare un vertice v tale che cT v ≤ cT x̃. La dimostrazione è costruttiva.
Poiché x̃ non è un vertice, per il Teorema 10.1.1, il sistema
aTi d = 0, i ∈ I(x̃)
non ha rango massimo e quindi ammette una soluzione d¯ non nulla. Dunque, per il Corollario
7.6.5, ±d¯ sono direzioni ammissibili e i punti x̃+td¯ con t ∈ [0, t+ ¯ −
max ] e x̃−td con t ∈ [0, tmax ] sono
+ −
ammissibili. Si dimostra ora che min{tmax , tmax } < ∞, cioè che lo spostamento ammissibile
lungo almeno una delle due direzioni ±d¯ è finito.
A questo scopo, scegliamo la direzione d¯ tale cT d¯ ≤ 0 e dunque è possibile una delle due
condizioni:

138
(i) cT d¯ = 0;
(ii) cT d¯ < 0.
Se cT d¯ = 0 ovviamente anche cT (−d)¯ = 0. Poiché il poliedro non contiene rette deve risultare
+ −
che almeno uno tra tmax e tmax è < ∞. Senza perdita di generalità possiamo assumere che sia
t+
max < ∞.
Se invece cT d¯ < 0, la direzione d¯ risulta dunque essere una direzione di discesa (vedi para-
grafo 6.2) e per ogni t > 0 risulta

cT (x̃ + td) = cT x̃ + tcT d = cT x̃ − t|cT d| per ogni t > 0.

Supponiamo che t possa → ∞. Si ottiene

lim cT (x̃ + td) = cT x̃ − |cT d| lim t = −∞.


t→∞ t→∞

Poiché per ipotesi il problema non è illimitato, questo non si può verificare, dunque t 6→ ∞
e necessariamente t+ max < ∞.
In entrambi i casi otteniamo che x̃ + td¯ è ammissibile per 0 ≤ t ≤ t+
max < ∞.
Definiamo il punto
y = x̃ + t+ d;¯
max

ricordando che c d¯ ≤ 0 risulta


T

cT y = cT x̃ − t+ T T
max |c d| ≤ c x̃.

Verifichiamo quali vincoli sono attivi in y. Ricordando che per i ∈ I(x̃) risulta aTi d¯ = 0,
otteniamo
aTi y = aTi (x̃ + t+ ¯ T
max d) = ai x̃ = bi i ∈ I(x̃)
Quindi I(x̃) ⊆ I(y). Facciamo ora vedere che I(x̃) ⊂ I(y), ovvero che in y è attivo almeno un
vincolo in più rispetto ad x̃. Consideriamo quindi i vincoli NON attivi in x̃ e si indichi con
jmax ∈
/ I(x̃) un indice per cui:
aTjmax x̃ − bjmax
t+
max = ¯
|aT d| jmax

(cioè un indice per cui è raggiunto il minimo nella formula (7.6)). Per definizione risulta che
/ I(x̃) e aTjmax d¯ < 0. Possiamo allora scrivere:
l’indice jmax ∈

ajTmax x̃ − bjmax T
aTjmax x = aTjmax x̃ + t+ T ¯ T + T T ¯ = bj
max ajmax d = ajmax x̃ − tmax |ajmax d| = ajmax x̃ − ¯ |ajmax d|
|aT d|
jmax
max

Quindi abbiamo che I(y) ⊇ I(x̃) ∪ {jmax }, cioè in y è attivo almeno un vincolo che non era
attivo in x̃. Osserviamo che potrebbe esistere più di un indice per cui è raggiunto il minimo
nella formula (7.6). In questo caso avrei attivi in y tanti vincoli in più rispetto a x̃ quanti sono
tali indici. Abbiamo quindi dimostrato che, a partire da un qualunque punto ammissibile x̃ che
non è un vertice, possiamo determinare un nuovo punto y con valore della funzione obiettivo
non superiore e con un numero di vincoli attivi linearmente indipendenti maggiore rispetto a
x̃. Se y non è un vertice, possiamo ripetere lo stesso procedimento fino a quando non troviamo
un punto in cui sono attivi n vincoli linearmente indipendenti, cioè un vertice. Quindi abbiamo
dimostrato l’affermazione che ci serviva:

139
Per ogni punto x ∈ S, esiste un vertice v tale che cT v ≤ cT x.
La dimostrazione è conclusa. 2
Illustriamo con un esempio la tecnica costruttiva utilizzata nella dimostrazione del teorema
precedente.

Esempio 10.2.4 Consideriamo il problema di PL


min 4x1 − x2
3x1 − 2x2 ≥ −30
2x1 − x2 ≥ −12
x1 ≥ 0,
x2 ≥ 0
il cui poliedro è riportato in Figura 10.3.

x2

v3

v2

d
v1 x x1
3 t+max
9

13

Figura 10.3: Figura relativa all’Esempio 10.2.4.

Il poliedro ha tre vertici che abbiamo già calcolato nell’Esempio 10.1.4, che indichiamo con
v 1 , v 2 , v 3 (puntini rossi in figura). Sia x = (3, 0) un punto ammissibile (puntino blu in figura).
Si verifica facilmente che x̃ non è un vertice. Infatti I(x̃) = {4} (è attivo solo il vincolo x2 ≥ 0)
e risulta ovviamente rango{ai i ∈ I(x̄)} = 1 < n = 2. Consideriamo allora il sistema omogeneo
aT4 d = 0 ovvero d2 = 0.
Quindi una qualunque direzione del tipo (d1 , 0)T con d1 6= 0 è ammissibile in x̃. Sia d¯ = (−1, 0)
una possibile soluzione (indicata in azzurro in Figura 10.3). Risulta cT d¯ = 4d1 = −4 < 0 e si
consideri il punto
x̃ + td¯ = (3, 0)T + t(−1, 0)T = (3 − t, 0)T .

140
Calcoliamo il valore di
½ ¾
9 + 30 6 + 12 3
t+
max = min , , = min{13, 9, 3} = 3.
3 2 1

Si osservi in Figura 10.3 che i valori 13,9,3 che compaiono dentro il min per il calcolo di t+max
corrispondono rispettivamente al valore del passo t per cui il punto x̃ + td¯ “sfonda” rispettiva-
mente il primo, il secondo e il terzo vincolo. Il valore di t+
max = 3 corrisponde al massimo valore
del passo t per cui il punto rimane ammissibile. Sia allora

y = x̃ + t+ ¯ T
max d = (0, 0)

Risulta I(y) = {3, 4} = I(x̃) ∪ {3}. Inoltre la riga a3 è linearmente indipendente da a4 . Si


tratta del vertice v 1 .

Consideriamo in questo paragrafo i problemi di PL in forma standard, ovvero del tipo:

min cT x
Ax = b (10.2)
x ≥ 0.

Nel caso di problemi di PL in forma standard, ricordando che in questo caso il poliedro
ammissibile non contiene rette, possiamo enunciare il teorema fondamentale come segue:

Teorema 10.2.5 (Teorema fondamentale della PL) Sia dato il problema di PL in forma

min cT x
Ax = b
x ≥ 0.

Allora è vera una e una sola delle delle seguenti tre affermazioni.
(a) Il problema non ammette soluzioni ammissibili (la regione ammissibile è vuota).
(b) Il problema è illimitato inferiormente sulla regione ammissibile.
(c) Esiste almeno una soluzione ottima e almeno una di esse è un vertice del poliedro.

10.3 Cenni sul metodo del simplesso per la Programmazione


Lineare
Il Metodo del Simplesso è certamente l’algoritmo di ottimizzazione più famoso e più utilizzato
nelle applicazioni. Proposto nel 1947 da G.B.Dantzig, ha subito, negli oltre 50 anni di vita, nu-
merosi miglioramenti che, pur non modificando in modo sostanziale la semplice struttura logica
ideata da Dantzig, ne hanno certamente migliorato l’efficienza computazionale e la facilità di
uso. Esistono oggi numerosi “package” commerciali che implementano il Metodo del Simplesso
e consentono la soluzione di problemi di Programmazione Lineare con milioni di variabili.
Lo scopo di questo capitolo è quello di fornire una descrizione della struttura logica del
Metodo senza entrare nei dettagli implementativi delle varie operazioni elementari (inversioni di
matrici sparse, gestione dei passi degeneri, etc.) delle quali il Metodo si compone. Tali questioni

141
sono molto rilevanti se si vuole realizzare un algoritmo efficiente e robusto ma possono essere
trascurate se si vuole semplicemnete sesere in grado di interpretare l’output di un qualunque
software che implementa tale metodo (vedi anche il capitolo 15).
Il Metodo del Simplesso si applica a problemi di Programmazione Lineare in forma standard
del tipo:

min cT x (10.3)
Ax = b
x ≥ 0n

con b ≥ 0m . Non vi è perdita di generalità nell’assumere che il problema sia in forma standard
e con termini noti non negativi.
L’obiettivo del metodo del simplesso è quello di individuare una soluzione di base ammissibile
ottima del problema (10.3) ovvero un vertice ottimo del poliedro

P = {x ∈ IRn : Ax = b, x ≥ 0n }.

L’idea di cercare la soluzione ottima in un vertice della regione ammissibile, invece, trova
giustificazione nei risultati dei capitoli precedenti e, in particolare, nel Teorema 10.2.3.
Il Metodo del Simplesso è caratterizzato dalle seguenti operazioni principali:

1. Individuazione di una prima base ammissibile B (se esiste).


2. Verifica dell’ottimalità della soluzione di base ammissibile corrente.
3. Verifica dell’illimitatezza del problema.
4. Costruzione di una nuova base ammissibile.

Descriveremo brevemente una implementazione del Metodo del Simplesso, detta implemen-
tazione in due fasi. In tale implementazione, la procedura che consente di verificare se il
problema di PL è ammissibile e, in caso affermativo, individua la prima base ammissibile viene
detta Fase I del Metodo del Simplesso. Se il problema non possiede una soluzione di base
ammissibile allora il poliedro P è vuoto ed il problema è inammissibile. In tal caso la Fase I
termina segnalando l’inammissibilità del problema.
La Fase II del Metodo del Simplesso è caratterizzata dalle operazioni (2), (3) e (4). In tale
fase, a partire da una SBA, l’algoritmo costruisce una sequenza di soluzioni di base ammissibili,
verificando, ad ogni iterazione, l’ottimalità della SBA corrente e l’illimitatezza del problema.
Sotto opportune condizioni, l’algoritmo converge in un numero finito di iterazioni alla soluzione
ottima del problema (10.3).
Alla base della struttura della Fase II, ci sono le operazioni di verifica dell’ottimalità di
una SBA, di verifica dell’illimitatezza del problema (10.3) e di costruzione di una nuova SBA.
Nel seguito descriveremo solo il criterio di ottimalitá usando nel simplesso perché costitusce un
informazione contenuta negli output dei software commerciali.

142
10.3.1 Soluzione di Base Ammissbile (SBA) e costi ridotti
Una sottomatrice B (m × m) di A si dice matrice di base di A se è non singolare. Data
una matrice di base B, è sempre possibile, eventualmente riordinando le colonne, esprimere
la matrice A nella forma A = (B, N ) dove N è la matrice definita dalle colonne fuori base.
Analogamente si possono partizionare i vettori
µ ¶ µ ¶
xB cB
x= , c=
xN cN
le variabili xB si dicono variabili di base e le variabili xN variabili fuori base. Quindi si può
riscrivere il problema in forma standard come segue:
min cTB xB + cTN xN
BxB + N xN = b
xB ≥ 0,
xN ≥ 0
Poiché B è non singolare per ipotesi, possiamo esprimere le variabili di base xB in funzione
delle variabili xN e si ottiene
xB = B −1 b − B −1 N xN (10.4)
e sostituendo si può scrivere:
min cTB B −1 b + (cTN − cTB B −1 N )xN
B −1 b − B −1 N xN ≥ 0m , (10.5)
xN ≥ 0
Questo problema nelle sole variabili xN è detto problema ridotto ed è ottenuto per proiezione
delle variabili xB nel sottospazio delle variabili xN .
Data una base B, una soluzione del tipo xB = B −1 b, xN = 0 si dice Soluzione Ammissibile di
Base (SBA) se e solo se B −1 b ≥ 0.
Le SBA ed i vertici di un poliedro in forma standard sono in stretta relazione. Vale infatti il
seguente teorema.
Teorema 10.3.1 [2] Dato un poliedro in forma standard, un punto x̄ è un vertice se e solo se
è una SBA.
Il problema (10.5), nelle sole variabili xN , è equivalente al problema (10.3). In particolare,
risulta ovvio verificare
µ quanto
¶ segue.
x̂B
Un vettore x̂ = è una soluzione ammissibile di (10.3) se e solo se il vettore x̂N è
x̂N
una soluzione ammissibile di (10.5) e x̂B = B −1 b − B −1 N x̂N . Inoltre, il valore della funzione
obiettivo del problema (10.3) calcolata in x̂ è uguale al valoreµ −1 della¶ funzione obiettivo del
B b
problema ridotto calcolata in x̂N . Di conseguenza, se x̄ = è la soluzione di base
0n−m
ammissibile associata alla matrice B, abbiamo che x̄N = 0n−m è la soluzione corrispondente
del problema ridotto e che cT B −1 b è il valore della funzione obiettivo per entrambi i problemi.
I coefficienti di xN nella funzione obiettivo del problema ridotto sono le componenti del
vettore γ definito da:
γ T = cTN − cTB B −1 N

143
che è detto vettore dei coefficienti ridotti.

Le considerazioni appena svolte ci consentono di formulare un criterio sufficiente di otti-


malità per una soluzione di base ammissibile.
µ ¶
B −1 b
Teorema 10.3.2 (Criterio di Ottimalità) Sia x̄ = , una soluzione di base am-
0n−m
missibile per il problema (10.3). Se il vettore dei coefficienti ridotti è non negativo, ovvero
se:
cTN − cTB B −1 N ≥ 0Tn−m ,
µ −1 ¶
B b
allora la soluzione di base ammissibile x̄ = è ottima per il problema (10.3).
0n−m

Dimostrazione. Dobbiamo dimostrare che, se il vettore dei coefficienti ridotti è non negativo,
risulta
cT x ≥ cT x̄
per una qualunque soluzione ammissibile x. Calcoliamo cT x̄ = cTB x̄B + cTN x̄N = cTB x̄B =
cµTB B −1 b.
¶ Una qualunque soluzione ammissibile x del problema (10.3) può essere suddivisa in
xB
. Allora risulta che cT x = cTB xB + cTN xN e ricordando l’espressione (10.4) di xB
xN

cT x = cTB B −1 b + γ T xN

D’altra parte, per ipotesi γ ≥ 0 e x è ammissibile e quindi, in particolare, xN ≥ 0, quindi si ha:

cT x ≥ cTB B −1 b = cT x̄.

Ma la precedente relazione mostra che la soluzione di base ammissibile x̄ associata alla matrice
di base B è ottima per il problema (10.3). 2

Esercizio 10.3.3 Sia dato il problema di PL in forma standard

min x1 + 3x2 + x3
x1 + 5x2 + 2x3 = 6
2x1 + x2 − x4 = 2
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 x4 ≥ 0

Le soluzioni di Base ammissibili (SBA) sono


1. x1 = x2 = 0 (non ammissibile)
2. x1 = x3 = 0 (non ammissibile)
3. x1 = x4 = 0 (non ammissibile)
4. x2 = x3 = 0, x1 = 6, x4 = 10 (SBA)
5
5. x2 = x4 = 0, x1 = 1, x3 = 2 (SBA)

144
4
6. x3 = x4 = 0, x1 = x2 = 10
9 9 (SBA).
 
6 µ ¶ µ ¶
 0  x1 6
Consideriamo la SBA  ; le variabili di base xB = = , le variabili fuori
0 x4 10
µ ¶ 10 µ ¶
x2 1 0
base xN = = 0; la matrice di base B = . I coefficienti di costo ridotto
x3 2 −1µ ¶
T T T −1 −1 1 0
γ = cN − cB B N richiede il calcolo dell’inversa B = . Dunque sostituendo si
2 −1
ottiene
µ ¶µ ¶
T 1 0 5 2
γ = (3 1) − (1 0) = ( −2 −1 ) 6≥ 0,
2 −1 1 0
dunque non è possibile concludere nulla sulla ottimlità della soluzione.

145
Capitolo 11

Condizioni di ottimo per la PL e


teoria della dualità

In questo capitolo utilizzeremo le condizioni di KKT del capitolo 9 per derivare le condizioni
necessarie e sufficienti di ottimo per la programmazione lineare.

11.1 Le condizioni di ottimalità nella Programmazione


Lineare
Nel caso in cui la funzione obiettivo sia lineare ovvero del tipo f (x) = cT x, i problemi (P-POL),
(P-ST), (P-GEN) analizzati nel paragrafo 7.7 sono problemi di Programmazione Lineare. Poiché
si tratta di problemi convessi le condizioni di KKT sono necessarie e sufficienti.
Consideriamo inizialmente il problema di PL

min cT x
(P L)
Ax ≥ b

La funzione Lagrangiana si scrive

L(x, λ) = cT x + λT (b − Ax) = bT λ + (cT − λT A)x

e le condizioni di KKT sono le seguenti.

Teorema 11.1.1 (Condizioni di KKT per il problema (PL)) Un punto x∗ è minimo glob-
ale del problema di Programmazione Lineare (PL) se e solo se esiste λ∗ ∈ IRm tale che valgano
le condizioni:
(i) Ax∗ ≥ b,
(ii) c = AT λ∗ ,
(iii) λ∗ ≥ 0,

145
(iv) λ∗ T (b − Ax∗ ) = 0.

Osserviamo che la (i) é una condizione nelle sole variabili x, le (ii) e (iii) sono condizioni nei
soli moltiplicatori λ.
Possiamo fare qualche ulteriore considerazione. Le condizioni (ii) e (iii) esprimono il fatto
che λ∗ ∈ IRm deve essere ammissibile rispetto ai vincoli lineari
AT λ = c
(11.1)
λ≥0
Il sistema (11.1) rappresenta un poliedro in forma standard nello spazio IRm .
Consideriamo allora un x ∈ IRn soluzione ammissibile del problema (PL), e un λ ∈ IRm ap-
partenente al poliedro definito da (11.1), ovvero una coppia (x, λ) che soddisfa
Ax ≥ b, λ ≥ 0, AT λ = c. (11.2)
∑m
Osservando che λT (b − Ax) = i=1 λi (bi − aTi x) ≤ 0, possiamo facilmente scrivere
(λ≥0, b≤Ax)
cT x ≥ cT x + λT (b − Ax)

= bT λ + (cT − λT A)x

(AT λ=c)
= bT λ.

Per ogni coppia (x, λ) che soddisfa Ax ≥ b, λ ≥ 0, AT λ = c risulta

cT x ≥ bT λ.

Si tratta di un risultato molto significativo, che riprenderemo più avanti. Notiamo che, in parti-
colare, poiché il minimo globale x∗ del problema (PL) è ammissibile, otteniamo immediatamente
che vale
cT x⋆ ≥ bT λ (11.3)
per ogni λ che soddisfa (11.1). Possiamo quindi affermare che una qualunque soluzione λ ∈
IRm che soddisfa (11.1) consente di determinare una limitazione inferiore al valore ottimo del
problema (PL).
Per migliorare la limitazione inferiore espressa dalle disuguaglianza (11.3), si può rendere quanto
più possibile grande il termine di destra bT λ della disuguaglianza (11.3), cioè si può massimizzare
la quantità bT λ al variare del vettore λ ∈ IRm , tra tutti i vettori che soddisfano AT λ = c, λ ≥ 0.
Piú formalmente si può cercare la soluzione del problema
max bT λ
AT λ = c (11.4)
λ≥0
Si tratta di un problema di PL in forma standard (è sufficiente cambiare verso all’ottimizzazione
da max a min). La coppia di problemi di Programmazione Lineare (PL) e (PL-ST) viene detta
primale-duale.

146
(Problema primale e duale)
Il problema
min cT x
(11.5)
Ax ≥ b
e il problema
max bT λ
AT λ = c (11.6)
λ≥0
costituiscono una coppia primale-duale di Programmazione Lineare.
Vedremo nel seguito che, in maniera simmetrica, il problema (11.5) risulterà il problema duale
del problema (11.6). La coppia primale (P) - duale (D) costituita dai problemi (11.5) e (11.6)
è solo una possibile coppia primale-duale. La relazione tra i valori delle funzioni obiettivo
del problema primale e duale in un qualunque punto ammissibile primale-duale che abbiamo
ricavato in relazione alla coppia primale-duale (11.5) e (11.6) puó essere generalizzato ad una
qualunque coppia primale-duale (P)-(D) e costituisce un risultato noto come Teorema della
dualità debole.

Teorema 11.1.2 (Teorema della Dualità debole) Sia data una coppia primale (P) - duale
(D) di problemi di programmazione lineare. Per ogni soluzione ammissibile x̄ del problema di
PL primale (P) ed ogni soluzione ammissibile λ̄ del problema di PL duale (D) si ha

bT λ̄ ≤ cT x̄

cioè il valore della funzione obiettivo duale in λ̄ è minore o uguale del valore della fuzione
obiettivo primale in x̄.

Osserviamo ora che la condizione di complementaritá (iv) del Teorema 11.1.1 può essere
scritta in modo equivalente utilizzando la condizione (ii). In particolare possiamo scrivere
(ricordando che (AT λ∗ )T = λ∗ T A)
(iv) (ii)
0 = λ∗ T (b − Ax∗ ) = λ∗ T b − λ∗ T Ax∗ = λ∗ T b − x∗ T c.

Possiamo quindi scrivere le condizioni necessarie e sufficienti di KKT in una forma equivalente
e più diffusamente utilizzata come condizioni di ottimo per la Programmazione Lineare.

147
(Condizioni necessarie e sufficienti di ottimo per (PL))
Un punto x∗ è minimo globale del problema di Programmazione Lineare

min cT x
(P L)
Ax ≥ b

se e solo se esiste λ∗ ∈ IRm tale che valgano le condizioni:


(i) Ax∗ ≥ b,
(ii) c = AT λ∗ ,
(iii) λ∗ ≥ 0,
(iv) bT λ∗ = cT x∗ .

É possibile dimostrare che il valore de i moltiplicatori λ∗ del teorema 11.1.1 sono la soluzione
ottima del problema (11.4). In effetti le condizioni necessarie e sufficienti di minimo globale
per (11.6) sono le stesse condizioni per il problema (11.5). Questa affermazione costituisce il
teorema della Dualità forte per la PL.

Teorema 11.1.3 (Teorema della Dualità forte) Il problema di PL (11.5) ammette min-
imo x∗ ∈ IRn se e solo se il problema duale (11.6) ammette minimo λ∗ ∈ IRm e risulta

cT x⋆ = bT λ⋆ .

Dimostrazione. La dimostrazione consiste nel far vedere che le condizioni di ottimo del prob-
lema primale coincidono con le condizioni di ottimo per il problema duale. Per quanto riguarda
il problema primale (11.5) abbiamo già dimostrato che le condizioni di ottimo richiedono che
esista un moltiplicatore λ∗ ∈ IRm tale che
(i) Ax∗ ≥ b,
(ii) c = AT λ∗ ,
(iii) λ∗ ≥ 0,
(iv) bT λ∗ = cT x∗ .
Dimostriamo ora che queste condizioni sono effettivamente anche condizioni necessarie e suf-
ficienti di ottimo per il problema duale (11.4). Si utilizza il teorema 9.2.7. Osserviamo che
il problema duale (11.4) è in forma di massimizzazione e che è definito nello spazio IRm . As-
sociamo agli n vincoli di uguaglianza AT λ = c i moltiplicatori z ∈ IRn e ai vincoli λ ≥ 0 i
moltiplicatori v ∈ IRm . La funzione Lagrangiana è dunque

L(λ, z, v) = −bT λ + z T (AT λ − c) − v T λ.

Per il teorema 9.2.7 λ∗ è minimo globale del problema (11.4) se e solo se esistono dei vettori
z ∗ ∈ IRn e v ∗ ∈ IRm tali che
(a) AT λ∗ = c, λ∗ ≥ 0,
(b) −b + Az ∗ − v ∗ = 0,

148
(c) v ∗ ≥ 0,
(d) v ∗ T λ∗ = 0.
La condizione (a) fornisce immediatamente le (i) e (ii).
Dalla condizione (b) si può ricavare v ∗ e si ottiene
−b + Az ∗ = v ∗ .
Imponendo la (c) v ∗ ≥ 0 si ottiene
−b + Az ∗ ≥ 0
Sostituendo in (d) si ha poi

0 = v ∗ T λ∗ = (−b + Az ∗ )T λ∗ = −bT λ∗ + z ∗ T AT λ∗ = −bT λ∗ + z ∗ T c


Identificando z ∗ = x∗ si hanno dunque anche la (iii) e (iv). Possiamo quindi concludere che le
condizioni necessarie e sufficienti di ottimo per i problemi di Programmazione Lineare (11.5) e
(11.6) sono le stesse e richiedono l’ammissibilità primale e duale e l’uguaglianza dei valori delle
funzioni obiettivo.

È evidente la forte relazione che esiste tra i due problemi di Programmazione Lineare (11.5)
e (11.6) e dunque le condizioni di ottimalità sono spesso riportate in riferimento alla coppia
primale–duale (PL) e (PL-ST).

Condizioni di Ottimalità
Siano dati x̄ ∈ IRn e λ̄ ∈ IRm . Allora x̄ e λ̄ sono soluzioni ottime rispettivamente per la coppia

max bT λ
min cT x
(P L) AT λ = c (P L − ST )
Ax ≥ b
λ≥0

se e solo se valgono le seguenti condizioni


(i) Ax̄ ≥ b, (ammissibilità primale)
(ii) AT λ̄ = c, λ̄ ≥ 0 (ammissibilità duale);
(iii) cT x̄ = bT λ̄ (coincidenza dei valori delle funzioni obiettivo).

La costruzione del problema duale a partire da un qualsiasi problema di PL è rimandata nel


prossimo paragrafo.
Il teorema della dualità debole e il teorema della dualità forte che abbiamo ricavato per la
coppia primale-duale (PL) e (PL-ST) possono essere generalizzati ad una qualunque coppia
primale-duale (P)-(D) e costituiscono i risultati fondamentali della teoria della dualità.

Teorema 11.1.4 (Teorema della Dualità Forte) Sia data una coppia primale (P) - duale
(D) di problemi di programmazione lineare. Il problema primale (P) ammette una soluzione
ottima x⋆ se e solo se il problema duale (D) ammette una soluzione ottima λ⋆ . Inoltre i valori
delle funzioni obiettivo dei due problemi all’ottimo sono uguali cioè risulta
cT x⋆ = bT λ⋆ .

149
Ricordando inoltre che x∗ è un minimo del problema (PL), e quindi risulta cT x∗ ≤ cT x per
ogni x tale che Ax ≥ b, possiamo affermare:
(Limitazione superiore ed inferiore per il valore ottimo del problema (PL))
Sia x∗ un minimo globale del problema di Programmazione Lineare (PL). Per ogni (x̃, λ̃) che
soddisfa Ax ≥ b, λ ≥ 0, AT λ = c, risulta

bT λ̃ ≤ cT x∗ ≤ cT x̃.

Analogamente per il problema in forma standard possiamo dare una limitazione inferiore e
superiore al valore ottimo bT λ∗ . Infatti, presa una qualunque coppia (x, λ) che soddisfa (11.2),
si può scrivere

(AT λ=c)
bT λ = bT λ + xT (c − AT λ)
= cT x + λT (b − Ax)
(λ≥0, b≤Ax)
≤ cT x.

Possiamo allora affermare:


(Limitazione superiore ed inferiore per il valore ottimo del problema (PL-ST))
Sia λ∗ un minimo globale del problema di Programmazione Lineare (PL-ST). Per ogni (x̃, λ̃)
che soddisfano (11.2), si ha
bT λ̃ ≤ bT λ∗ ≤ cT x̃.

Dal teorema 11.1.2 si ottiene il seguente corollario.

Corollario 11.1.5 Se x̄ è una soluzione ammissibile del problema primale (P) e λ̄ una soluzione
ammissibile del problema duale (D) tali che

cT x̄ = bT λ̄ (11.7)

allora x̄ e λ̄ sono soluzioni ottime rispettivamente per il problema primale (P) e per il problema
duale (D).

Utilizzando il teorema della dualità debole possiamo anche derivare delle condizioni di
illimitatezza di un problema di PL. Vale in particolare questo risultato.

Teorema 11.1.6 (Condizione di illimitatezza del primale) Se il problema primale (P) è


illimitato (inferiormente) allora il problema duale (D) è inammissibile. Viceversa se il problema
duale (D) è illimitato (superiormente) allora il problema primale (P) è inammissibile.

Dim.: Supponiamo che (P) sia illimitato e che, per assurdo, il problema duale (D) sia am-
missibile, cioè che esista una soluzione ammissibile λ̄ del problema duale (D). Allora, per il
Teorema 11.1.2 (Teorema della Dualità debole), risulta cT x ≥ bT λ̄ per ogni soluzione am-
missibile x del problema primale (P). Ma questo contraddice l’ipotesi che (P) sia illimitato
inferiormente. Analogamente si pu procedere con il viceversa.

150
Il Teorema Fondamentale della PL (cfr. Teorema 10.2.2) afferma che per un problema di
PL possiamo verificarsi solo tre possibili casi: il problema ammette soluzione ottima, oppure è
illimitato oppure è inammissibile.
Sulla base dei risultati fino ad ora esaminati si evince che data un coppia primale–duale di
problemi di Programmazione Lineare possono verificarsi solo le possibilità riportate schemati-
camente nella tabella che segue.

DUALE

ottimo finito illimitato inammissibile


superior.

ottimo finito SI NO NO

PRIMALE illimitato inferior. NO NO SI

inammissibile NO SI SI

11.2 Costruzione del duale di un problema di PL


La coppia di problemi primale-duale definita nel paragrafo precedente è solo una delle possibile
coppie primali-duali di problemi di Programmazione Lineare. Dato un qualunqur problema di
PL, utilizzando le condizioni di ottimalità è possibile costruire il problema duale corrispondente.
È però possibile definire delle regole di “costruzione automatica” che consente di scrivere il
problema duale in forma rapida utilizzando alcuni accorgimenti.
Si consideri un problema Programmazione Lineare scritto nella forma più generale cioè

min cT1 y + cT2 z


Cy + Dz = h
(11.8)
Ey + F z ≥ g
y≥0
in cui le variabili sono (y, z)T ∈ IRn suddivise in y ∈ IRn1 e z ∈ IRn2 con n = n1 + n2 .
Corrispondentemente abbiamo c1 ∈ IRn1 , c2 ∈ IRn2 . Le variabili y ≥ 0 mentre le variabili z non
sono vincolate in segno.
Le matrici C, D, E, F sono rispettivamente di dimensione: C matrice p × n1 , D matrice
p × n2 , E matrice q × n1 , F matrice q × n2 . Dunque il problema ha p vincoli di uguaglianza
espressi da Cy + Dz = h con h ∈ IRp e q vincoli di disuguaglianza Ey + F z ≥ g con g ∈ IRq .
La notazione in cui è scritto questo generico problema di Programmazione Lineare (11.8) è
tale da evidenziare separatamente gli elementi che intervengono nella formulazione: le variabili

151
sono partizionate nella variabili y vincolate in segno e z non vincolate in segno e corrispon-
dentemente anche i coefficienti di costo della funzione obiettivo sono partizionati in c1 e c2 ; i
vincoli sono scritti suddividendo quelli di uguaglianza (=) e quelli di disuguaglianza (≥ 0).
Osservazione importante
Nella definzione di regole per la costruzione del problema duale di un generico problema di
PL è essenziale mettere il problema nella forma indicata, con particolare attenzione al “verso”
dell’ottimizzazione, cioè min o max, e al “verso” dei vincoli di disuguaglianza che corriponden-
temente devono essere nella forma ≥ o ≤.

Per costruire il problema duale del problema (11.8) è sufficiente riportarsi alla forma del
problema (PL) con soli vincoli di disuguaglianza . A tale scopo riscriviamo il problema (11.8)
nella forma equivalente
min cT1 y + cT2 z
Cy + Dz ≥ h
−Cy − Dz ≥ −h
Ey + F z ≥ g
y≥0
ovvero in forma matriciale
( )T ( )
c1 z
min
c2 y
   
C D ( ) h
 −C −D  y  −h 
  ≥ ,
E F z g
In1 0 0

dove In1 è la matrice identità di ordine n1 . Quindi il problema (11.8) è stato ricondotto nella
forma (PL) in cui
  
C D h ( )
 −C −D   −h  c1
A=  b=  c=
E F g c2
In 1 0 0

Siamo quindi in grado di scrivere il duale di questo problema nella forma (PL-ST)

max bT λ
AT λ = c
λ≥0

in cui ( )
T C −C E In1
A =
D −D F 0
e il vettore delle variabili duali si puó decomporre in λ = (u, v, w, t)T ∈ IRm = IR2p+q+n1 . Il
problema duale si scrive in forma matriciale

152
 T  
h u
 −h  v
max    
g w
0 t  
( ) u ( )
C −C E In1  v  c1
  =
D −D F 0 w c2
t
u, v, w, t ≥ 0.
Sviluppando si ottiene

max hT u − hT v + g T w max hT (u − v) + g T w
C T u − C T v + E T w + In1 t = c1 C T (u − v) + E T w + t = c1
che è equivalente a
DT u − DT v + F T w = c2 DT (u − v) + F T w = c2
u ≥ 0, v ≥ 0, w ≥ 0, t ≥ 0 u ≥ 0, v ≥ 0, w ≥ 0, t ≥ 0.
Effettuando il cambio di variabili u − v = µ si ottiene il seguente problema
max hT µ + g T w
C T µ + E T w + t = c1
DT µ + F T w = c2
w ≥ 0, z ≥ 0.

Eliminando la variabile t utilizzando il primo vincolo t = d − C T µ − E T w possiamo ancora


scrivere

max hT µ + g T w
C T µ + E T w ≤ c1
(11.9)
DT µ + F T w = c2
w≥0
nelle variabili (µ, w) ∈ IRq × IRp , con µ non vincolata in segno e w ≥ 0.
Il problema (11.9) è il problema duale del problema (11.8) che viene detto problema primale.
Osservazione importante
Le variabili (x, y) sono dette variabili primali e corrispondono ai moltiplicatori dei vincoli lineari
di tipo generale del problema duale. Le variabili (µ, w) sono dette variabili duali e corrispondono
ai moltiplicatori dei vincoli lineari di tipo generale del problema primale.
I due problemi costituiscono la generica coppia coppia primale–duale.

min cT1 y + cT2 z max hT µ + g T w


Cz + Dy = h C T µ + E T w ≤ c1
(P ) (D)
Ez + F y ≥ g DT µ + F T w = c2
y≥0 w ≥ 0.
Dall’osservazione dei due problemi si deducono facilmente le proprietà fondamentali di una
coppia primale–duale; innanzitutto un problema è di minimizzazione mentre l’altro è di mas-
simizzazione. Inoltre poiché la matrice dei coefficienti dei vincoli di un problema si ottiene

153
trasponendo quella dell’altro, si ha che ad ogni variabile di un problema corrisponde un vincolo
nell’altro. Si osserva inoltre uno scambio tra i termini noti di un problema e i coefficienti della
funzione obiettivo dell’altro.
Queste proprietà possono essere cosı̀ schematicamente riassunte:

• il problema duale di un problema di minimizzazione è un problema di massimizzazione


e simmetricamente, il problema duale di un problema di massimizzazione è un problema
di minimizzazione;
• ad ogni vincolo di uguaglianza del problema primale è associata una variabile nel problema
duale non vincolata in segno;
• ad ogni vincolo di disuguaglianza (di maggiore o uguale) del problema primale è associata
una variabile nel problema duale vincolata in segno;
• ad ogni variabile vincolata in segno del problema primale è associato un vincolo di disug-
uaglianza (≤ se il problema è di massimizzazione, ≥ se il problema è di minimizzazione)
del problema duale;
• ad ogni variabile non vincolata in segno del problema primale è associato un vincolo di
uguaglianza del problema duale.

Queste corrispondenze possono essere riassunte nella tabella che segue dove gli insieme I,
J, M e N sono insiemi di indici:

PRIMALE DUALE

min cT x max bT u

= bi , i ∈ I ui , i ∈ I, libere
VINCOLI VARIABILI
≥ bi , i ∈ J ui , i ∈ J, ui ≥ 0

xj ≥ 0, j ∈ M ≤ cj , j ∈ M
VARIABILI VINCOLI
xj , j ∈ N libere = cj , j ∈ N

Esempio 11.2.1 Si consideri il seguente problema di Programmazione Lineare

max 4x1 + 3x2 + 2x3


x1 + 2x2 + 3x3 ≤ 8
2x1 − x3 ≤ 7
3x1 + 4x2 − x3 ≤ 5
x2 + x3 ≤ 6
x2 ≥ 0

154
Il problema duale è il seguente problema di minimizzazione

min 8u1 + 7u2 + 5u3 + 6u4


u1 + 2u2 + 3u3 = 4
2u1 + 4u3 + u4 ≥ 3
3u1 − u2 − u3 − u4 = 2
u1 ≥ 0, u2 ≥ 0, u3 ≥ 0, u4 ≥ 0.

Esempio 11.2.2 Si consideri il seguente problema di Programmazione Lineare

min 2x1 − 3x2 + x3


3x1 + x2 + 5x3 ≥ 7
x1 + x2 − 6x3 ≤ 9
4x1 − x2 − 2x3 = 8
x1 ≥ 0, x2 ≥ 0.

Dopo aver riscritto il secondo vincolo come −x1 − x2 + 6x3 ≥ −9 si può formulare facilmente
il problema duale associato

max 7u1 − 9u2 + 8u3


3u1 − u2 + 4u3 ≤ 2
u1 − u2 − u3 ≤ −3v5u1 + 6u2 − 2u3 = 1
u1 ≥ 0, u2 ≥ 0.

Esempio 11.2.3 Si consideri il problema di Programmazione Lineare

min x1 + 3x2
x1 + 4x2 ≥ 24
5x1 + x2 ≥ 25
x1 ≥ 0, x2 ≥ 0

Geometricamente si ricava facilmente che questo problema ammette soluzione ottima nel punto
(x1 , x2 ) = (4, 5) e il valore ottimo della funzione obiettivo è pari a 19. Se si considera il problema
duale
max 24u1 + 25u2
u1 + 5u2 ≤ 1
4u1 + u2 ≤ 3
u1 ≥ 0, u2 ≥ 0;
si ricava facilmente (geometricamente) che, in accordo con quanto previsto dal Teorema( della
)
14 1
Dualità Forte, anche questo problema ammette soluzione ottima nel punto (u1 , u2 ) = ,
19 19
e il valore ottimo della funzione obiettivo vale 19.

155
Esempio 11.2.4 Si consideri il problema di Programmazione Lineare

max 2x1 + 3x2


−2x1 + x2 ≤ 3
− 12 x1 + x2 ≤ 6
x1 ≥ 0, x2 ≥ 0.

Geometricamente si ricava che il problema è illimitato superiormente. Quindi, per l’analisi


teorica vista deve risultare che il suo duale è inammissibile. E infatti se si considera il problema
duale associato
min 3u1 + 6u2
−2u1 − 12 u2 ≥ 2
u1 + u2 ≥ 3
u1 ≥ 0, u2 ≥ 0
si vede facilmente che questo problema non ammette soluzioni ammissibili.

11.3 Il problema di Kanpsack continuo


Utilizzando la teoria della dualità, determiniamo la soluzione ottima e il valore ottimo della
funzione obiettivo del seguente problema di Knapsack continuo (non limitato).

max cT x
aT x ≤ b,
x≥0

in cui x, a, c sono vettori di IRn , ci > 0 e 0 < ai < b per i = 1, . . . , n.


Il problema duale ha una sola variabile y ∈ IR ed è

min by
ai y ≥ ci , i = 1, . . . , n
y≥0

La soluzione di questo problema è banale. Indichiamo con


{ }
ck ci
= max
ak 1≤i≤n ai

{ }
ci ck
e sia Ik = i : = l’insieme degli indici per cui si raggiunge il massimo. Un vettore y
ai ak
ck
è ammissibile duale se e solo se soddisfa y ≥ . Poiché si tratta di un problema di minimiz-
ak
c
zazione, la soluzione ottima duale è y ∗ =
k
> 0.
ak

La soluzione ottima x deve soddisfare le condizioni di complementarità:

x∗i (ai y ∗ − ci ) = 0 i = 1, . . . , n
y ∗ (b − aT x∗ ) = 0

156
/ Ik , si ha, dalla prima delle equazioni precedenti, x∗i = 0. Inoltre, dalla seconda, si
Per ogni i ∈
T ∗
ha a x = b. Evidenziando le variabili in Ik si ottiene

ai x∗i = b.
i∈Ik

Se Ik = {k}, allora la soluzione ottima è unica e vale


b
x∗k = ,
ak

xi = 0, per ogni i ̸= k.

Altrimenti (se |Ik | ∑


≥ 2) la soluzione del problema di knapsack non è unica; ogni soluzione che
soddisfa il vincolo i∈Ik ai x∗i = b è ottima. Ad esempio, ogni soluzione del tipo

b
x∗j = , per un j ∈ Ik
aj

xi = 0, per ogni i ̸= j
è ottima.

Sia dato il seguente problema di Knapsack continuo (limitato).


max cT x
aT x ≤ b,
0≤x≤1

in cui x, a, c sono vettori di IRn , ci > 0 e 0 < ai < b per i = 1, . . . , n e si assuma che
c1 c2 cn
> > ... > .
a1 a2 an
Utilizzando la teoria della dualità, determinare la soluzione ottima e il valore ottimo della
funzione obiettivo.
Soluzione. Analogamente all’esercizio precedente scriviamo il problema duale di
max cT x
(λ) aT x ≤ b,
(zi ) x≤1
x≥0

che ha n + 1 variabili, y ∈ IR e z ∈ IRn ,


min by + eT z
ai y + zi ≥ ci , i = 1, . . . , n
y ≥ 0, zi ≥ 0 i = 1, . . . , n
Nelle ipotesi poste il problema primale è non vuoto e limitato. Esiste quindi una soluzione
ottima primale x∗ e una soluzione ottima duale y ∗ , z ∗ che soddisfano le condizioni di comple-
mentarità:
x∗i (ai y ∗ + zi∗ − ci ) = 0 i = 1, . . . , n
y ∗ (b − aT x∗ ) = 0
zi∗ (1 − x∗i ) = 0

157
Mostriamo innnanzitutto che, nelle ipotesi poste, esiste un solo k ∈ {1, . . . , n} tale che x∗k ∈
(0, 1) (per cui cioè x∗k è frazionaria).
Infatti sia x∗k ∈ (0, 1), per le condizioni di complementarità risulta zk∗ = 0 e ak y ∗ − ck = 0, cioè
ck
y∗ = . Se esistesse un altro indice h ∈ {1, . . . , n} tale che x∗h ∈ (0, 1), questo implicherebbe
ak
ck ch
= , che è assurdo perchè abbiamo supposto che i rapporti peso-ingombro fossero ordinati
ak ah
ck
in modo strettamente decrescente.1 Sia quindi x∗k ∈ (0, 1). Allora y ∗ = ̸= 0 e quindi dalle
ak
T ∗
condizioni di complementarità deve risultare a x = b.
Partizioniamo gli indici {1, ∑. . . , n} \∗ {k}
∑in due insiemi I1 = {i : x∗i = 1} e I0 = {i : x∗i = 0}.
Allora possiamo scrivere i∈I1 ai xi + i∈I0 ai xi + ak x∗k = b, da cui si ottiene



b − i∈I1 ai
xk = .
ak
Possiamo ora dimostrare che risulta x∗i = 1 per i < k e x∗i = 0 per i > k. L’indice k viene
chiamato indice critico proprio perchè rappresenta l’ “oggetto” (attività, progetto o simili) il
cui inserimento determina la violazione della capacità b.
Dimostriamo quindi che
I1 = {1, . . . , k − 1} I0 = {k + 1, . . . , n}.
Sia = 1, allora per le condizioni di complementarità risulta zi∗ = ci − ai y ∗ , ma zi∗ ≥ 0 per
x∗i
ck ci
l’ammissibilità duale e quindi otteniamo y ∗ = ≤ che, nelle ipotesi di ordinamento dei
ak ai
coefficienti, vale solo se i < k. D’altra parte, se xi = 0 risulta zi∗ = 0 e per l’ammissibilità duale

ck ci
ai y ∗ − ci ≥ 0, cioè y ∗ = ≥ che vale solo se i > k.
ak ai

11.3.1 Analisi di sensitività alla variazione dei dati


Nei modelli reali le variabili (primali) possono rappresentare, ad esempio, livelli di produzione
e i coefficienti di costo possono essere associati ai profitti ricavati dalla vendita dei prodotti.
Quindi la funzione obiettivo di un problema primale indica direttamente come un aumento della
produzione può influenzare il profitto. Sempre in relazione, ad esempio, ad un modello per la
pianificazione della produzione, i vincoli di un problema (primale) possono rappresentare una
limitazione dovuta alla limitata disponibilità delle risorse; ora, un aumento della disponibilità
delle risorse può consentire un aumento della produzione e quindi anche del profitto, ma questa
relazione tra aumento della disponibilità delle risorse e aumento del profitto non si deduce facil-
mente dal problema formulato (il problema primale). Uno dei possibili usi della dualità è quello
di rendere esplicito l’effetto dei cambiamenti nei vincoli (ad esempio in quelli di disponibilità di
risorse) sul valore della funzione obiettivo.
L’analisi della sensitività si occupa proprio di stabilire come si modifica la soluzione ottima
di un modello lineare in conseguenza di variazioni dei dati. Un ruolo fondamentale in questa
analisi è giocato dai cosidetti prezzi ombra, che, misurano i “costi” impliciti associati ai vincoli.
Come vedremo, i prezzi ombra sono nient’altro che le variabili duali.

1
Questa ipotesi serve solo per semplificare la trattazione del problema. Nel caso di ordinamento non
c1 c2 cn
crescente > > ... > si può procedere come nell’esercizio precedente (vedi anche §??).
a1 a2 an

158
u2
x2

SD
k=15

k=0
SP
x1 u1
k=15

k=0

Figura 11.1: Soluzione grafica della coppia primale duale.

11.3.2 Interpretazione geometrica della variazione dei dati sui prob-


lemi primale duale
Consideriamo la seguente coppia di problemi primale-duale di programmazione lineare:

max 2x1 + 6x2 min 5u1 + 4u2


x1 + 2x2 ≤ 5 u1 + u2 ≥ 2
(P ) (D)
x1 + x2 ≤ 4 2u1 + u2 ≥ 6
x1 , x2 ≥ 0 u1 , u2 ≥ 0
Supponiamo che il problema primale rappresenti un semplice problema di produzione in
cui x1 , x2 rappresentano livelli di attività produttiva e in vincoli corrispondano a due risorse
limitate.
La soluzione grafica dei problemi (P) e (D) è riportata in Figura 11.1.
Il problema primale ha unica soluzione x∗ = (0, 5/2)T , il duale ammette l’unica soluzione
ottima u∗ = (3, 0)T .
Si osserva geometricamente (ed è ovvio anche dal valore delle variabili duali u∗ ) che in x∗ è
attivo un solo vincolo del problema primale, il primo. Questo significa che il livello di produzione
ottima corrisponde ad utilizzare completamente la prima risorsa (x∗1 + 2x∗2 = 5), mentre la
seconda risorsa è in eccesso (x∗1 + x∗2 = 2, 5 < 4). Inoltre il livello di produzione ottima pone
x∗1 = 0 che significa che il prodotto rappresentato da x1 non è prodotto.
Ci si possono porre allora due diverse domande

159
1. conviene acquisire una quantità maggiore di risorsa relativa al primo vincolo ? Quanta e a
quale prezzo ?
2. quando diventa conveniente produrre anche il prodotto x1 ?
Possiamo rispondere a queste domande facendo delle analisi di tipo geometrico sul problema
primale e duale.

Cambiamenti nei termini noti dei vincoli. Acquisire una quantità maggiore di risorsa
relativa al primo vincolo significa incrementare il r.h.s del vincolo da 5 a 5 + δ con δ ≥ 0. Da
un punto di vista analitico i due problemi (P) e (D) diventano

max 2x1 + 6x2 min (5 + δ)u1 + 4u2


x1 + 2x2 ≤ 5 + δ u1 + u2 ≥ 2
(P )δ (D)δ
x1 + x2 ≤ 4 2u1 + u2 ≥ 6
x 1 , x2 ≥ 0 u1 , u2 ≥ 0

Geometricamente un aumento di δ del r.h.s. del primo vincolo, corrisponde a spostare il


vincolo “verso l’alto”. La situazione è rappresentata geometricamente in Figura 11.2, in rosso
le variazioni. È evidente che la soluzione ottima si sposta nel punto x∗δ = (0, 5+δ T
2 ) di valore
T ∗ (5+δ) T ∗
cδ xδ = 6 2 = c x + 3δ. L’aumento nella funzione obiettivo è quindi pari a 3δ. Il massimo
valore che può assumere δ corrisponde al valore per cui il vincolo x1 + 2x2 ≤ 5 + δ passa per il
punto (0, 4)T , ovvero δ = 3.
Per δ > 3, il primo vincolo non gioca più alcun ruolo nella definizione della regione ammissibile
e la risorsa che diventa vincolante è la seconda.
Nel problema duale, un variazione di δ corrisponde ad una variazione del coefficiente an-
golare della funzione obiettivo. La regione ammissibile del problema duale è rimasta invariata.
Il valore δ = 3 corrisponde alla funzione obiettivo 8u1 + 4u2 rappresentata in rosso in Figura
11.2 per valore = 0. Le curve di livello di questa funzione sono parallele al secondo vincolo del
problema duale. La soluzione ottima del problema duale (D)δ rimane la soluzione u∗ = (3, 0)T
per δ ≤ 3. Poiché la soluzione ottima u∗δ = u∗ il valore cTδ u∗δ = (5 + δ)3 = 5u∗1 + δu∗1 . La
variazione del valore ottimo è 3δ pari a quanto determinato nel caso primale.
Il valore 3 = u∗1 rappresenta anche quanto sono disposto a pagare al massimo un’unità in più
di tale risorsa.
Per valori di δ > 3, la soluzione ottima del problema duale cambia e diventa il punto (0, 6)T
di valore 24 indipendente dal valore di δ.
Possiamo riassumere le considerazioni fatte fin qui nella seguente affermazione

L’aumento della prima risorsa (r.h.s. primo vincolo) di un valore δ produce un aumento della
funzione obiettivo pari a u∗1 δ = 3δ purché δ ≤ 3.
Il valore ottimo della variabile duale u∗1 rappresenta il massimo costo affrontabile per l’aumento
di una unità di risorsa.

Il valore u∗1 = 3 è detto prezzo ombra relativo alla prima risorsa (al primo vincolo). L’intervallo
0 ≤ δ ≤ 3 è l’intervallo entro cui la previsione sulla variazione della funzione obiettivo è valida.
(In realtà si può prevedere anche un decremento −δ).

160
u2
x2
δmax
δmax
SD
(5+δ)/2

k=15+3δ
SP
=5+δ
=5 x1 u1

Figura 11.2: Soluzione grafica della coppia primale duale al variare di δ

11.3.3 Interpretazione economica della dualità e prezzi ombra


Come visto nell’esempio, in generale, le variabili duali (i prezzi ombra) rappresentano l’effetto
di cambiamenti nel termine noto dei vincoli. Si consideri, infatti un generico problema di
Programmazione Lineare (in forma standard) (P), il suo duale (D) ed inoltre si consideri il
problema (P∆ ) ottenuto modificando il termine noto da b a b+∆ (con ∆ = (δ1 . . . , δm )T ∈ IRm )
e il corrispondente problema duale (D∆ ):


 min cT x {
(P) (D) max bT u
Ax = b
 AT u ≤ c
x≥0


 min cT x {
(P∆ ) (D∆ ) max(b + ∆)T u
Ax = b + ∆
 AT u ≤ c
x≥0

Siano x⋆ e u⋆ rispettivamente la soluzione ottima del problema (P) e del problema (D). Siano
inoltre x⋆ (∆) e u⋆ (∆) rispettivamente la soluzione del problema (P∆ ) e del problema (D∆ )
Dalle formulazioni di questi problemi si possono facilmente dedurre due osservazioni:

161
• la variazione del termine noto b nel problema primale si riflette in un cambiamento dei
coefficienti della funzione obiettivo del problema duale;
• la regione ammissibile del problema (D) e del problema (D∆ ) sono uguali; da questo
segue che se u⋆ ∈ IRm è soluzione ottima del problema (D) allora u⋆ è ammissibile per il
problema (D∆ ), ma non necessariamente è ottima per (D∆ ).

Inoltre per il Teorema della dualità forte applicato alla coppia primale–duale (P)–(D) deve
essere
cT x⋆ = bT u⋆ , (11.10)
mentre, sempre per il Teorema della dualità forte ma applicato alla coppia primale–duale (P∆ )–
(D∆ ) deve essere
cT x⋆ (∆) = (b + ∆)T u⋆ (∆). (11.11)
Se la soluzione ottima x⋆ soddisfa un’opportuna ipotesi (cioè che in x⋆ non ci siano più
di n vincoli attivi) e se il vettore ∆ ha componenti “sufficientemente” piccole allora si può
dimostrare che:
u⋆ (∆) = u⋆ . (11.12)
Utilizzando la (11.10), la (11.11) e la (11.12) si ha:

cT x⋆ (∆) = (b + ∆)T u∗ (∆) = bT u⋆ + ∆T u⋆ = cT x⋆ + ∆T u⋆ , (11.13)

che può essere riscritta nella seguente forma:

cT x⋆ (∆) − cT x⋆ = δ1 u⋆1 + δ2 u⋆2 + . . . + δm u⋆m , (11.14)

dove ∆ = (δ1 , . . . , δm )T .
Dalla precedente relazione segue che una possibile interpretazione della variabile duale u⋆i è
quella di essere un prezzo associato ad un incremento unitario del termine noto bi . Per questa
ragione le variabili duali u⋆i , i = 1, . . . , m, vengono denominate prezzi ombra.

Il prezzo ombra di un vincolo rappresenta la variazione del valore della funzione obiettivo quando
il r.h.s. del vincolo è aumentato di una unità, mentre tutti gli altri dati del problema sono fissati.

Sebbene la (11.12) (e di conseguenza la (11.14)) valga solamente sotto opportune ipotesi,


in molte situazioni pratiche, le variabili duali u⋆i , i = 1, . . . , m, forniscono delle utili indicazioni
su quale componente bi variare per migliorare il valore ottimo della funzione obiettivo.
Ricordiamo i principi generali che regolano l’uso dei prezzi ombra.

1. I prezzi ombra sono tanti quanti i vincoli lineari generali (esclusi i vincoli di non negatività
sulle variabili).
2. l’unità di misura dei prezzi ombra è espressa in (unità di misura funzione obiettivo)/(unità
misura vincolo).
3. I prezzi ombra corrispondono al valore delle variabili duali (all’ottimo), ovvero ai molti-
plicatori di KKT relativi alla soluzione ottima primale.

162
11.4 Interpretazione della Dualità
Se un problema di Programmazione Lineare proviene da una precisa classe di problemi applica-
tivi e dunque ha una struttura bene definita, il suo corrispondente duale si può prestare ad
essere interpretato come problema applicativo diverso ma collegato al problema primale.

11.4.1 Il duale del problema di allocazione ottima di risorse


Si consideri nuovamente il semplice problema di allocazione ottima dell’Esempio 2.4.1 che è
rappresentato dal seguente problema di Programazione Lineare:

max (7x1 + 10x2 )


x1 + x2 ≤ 750
x1 + 2x2 ≤ 1000 (11.15)
x2 ≤ 400
x1 ≥ 0, x2 ≥ 0.
Ricordiamo che le variabili x1 e x2 sono associate rispettivamente ai quantitativi di colorante
C1 e C2 da produrre e che la produzione avviene utilizzando tre preparati base P1, P2 e P3
dei quali si ha una disponibilità massima rispettivamente pari a 750, 1000 e 400 ettogrammi.
Supponiamo, ora di voler sottrarre preparati base dalla produzione dei coloranti per venderli
direttamente. Indichiamo con u1 , u2 e u3 i prezzi associati rispettivamente alla vendita diretta
di un ettogrammo di preparato base P1, P2 e P3. Supponendo di destinare tutti i preparati
alla vendita diretta, il profitto che si otterrebbe sarebbe

750u1 + 1000u2 + 400u3 . (11.16)

Naturalmente si vorrà fare in modo che questa operazione di sottrazione dei preparati base dalla
produzione dei coloranti e vendita diretta risulti economicamente conveniente e quindi mentre
si vuole minimizzare l’espressione (11.16) affinché i prezzi di vendita risultino competitivi sul
mercato, si imporrà che il profitto ottenuto vendendo direttamente i quantitativi di preparato
base necessario per ottenere un litro di colorante sia maggiore o uguale del profitto associato
alla vendita di un litro di colorante stesso; quindi, utilizzando i dati del problema riportati nella
tabella dell’Esempio 2.4.1, si deve imporre che risulti

u1 + u2 ≥ 7

per quanto riguarda il colorante C1 e

u1 + 2u2 + u3 ≥ 10

per quanto riguarda il colorante C2 e naturalmente deve essere u1 ≥ 0, u2 ≥ 0 e u3 ≥ 0. Quindi


il modello lineare che rappresenta l’operazione sopra descritta è il seguente:

min (750u1 + 1000u2 + 400u3 )


u1 + u2 ≥ 7
u1 + 2u2 + u3 ≥ 10
u1 ≥ 0, u2 ≥ 0, u3 ≥ 0.
Esaminando questo problema si vede immediatamente che esso rappresenta il problema duale
del problema dato (11.15).

163
In generale, se si considera un generico problema di allocazione ottima di m risorse Ri ,
i = 1, . . . , m con la possibilità di fabbricare n prodotti Pj , j = 1, . . . , n, come abbiamo già
esaminato nel capitolo precedente si può formulare questo problema come
max cT x
Ax ≤ b (11.17)
x≥0

dove ricordiamo x ∈ IRn è il vettore avente per componenti i livelli di produzione di ciascuno
dei prodotti, c ∈ IRn il vettore dei profitti netti e b ∈ IRm il vettore delle disponibilità massima
di ciascuna delle risorse.
Supponiamo ora di voler sottrarre risorse alla produzione per venderle direttamente e siano
ui , i = 1, . . . , m i prezzi unitari associati alla vendita dell’i-esima risorsa. Supponendo che per
ciascuna risorsa si voglia destinare alla vendita una quantità pari alla disponibilità massima di
quella risorsa, si ottiene un profitto pari a

b1 u1 + b2 u2 + · · · + bm um .

Per rendere competitivi sul mercato i prezzi unitari ui da assegnare alle risorse vendute diret-
tamente, si vogliono scegliere i valori piú bassi possibile per le ui , ma naturalmente, affinché
questa operazione di vendita diretta in luogo della fabbricazione dei prodotti risulti conveniente
si deve imporre che il profitto ottenuto vendendo direttamente le risorse necessarie per fabbri-
care un prodotto sia maggiore o uguale al profitto che si ricaverebbe dalla vendita del prodotto
finito. Quindi per ogni prodotto, si deve imporre che valga

a11 u1 + ... +am1 um ≥ c1


a12 u1 + ... +am2 um ≥ c2
.. .. ..
. ... . .
a1n u1 + ... +amn um ≥ cn
con ui ≥ 0, i = 1, . . . , m e dove le quantità aij rappresentano la quantità di risorsa Ri necessaria
per fabbricare una unità di prodotto Pj .
Quindi il problema da risolvere può essere scritto nella forma
min bT u
AT u ≥ c
u≥0

che è il problema duale del problema (11.17).

11.4.2 Il duale del problema di miscelazione.


Si consideri il problema di miscelazione dell’Esempio 3.3.1 che è rappresentato dal seguente
problema di Programmazione Lineare:

min 400x1 + 600x2


140x1 ≥ 70
20x1 + 10x2 ≥ 30
25x1 + 50x2 ≥ 75
x1 ≥ 0, x2 ≥ 0.

164
Ricordiamo che le variabili x1 e x2 rappresentano le quantità di polpa di frutta e di dolcificante
da utilizzare nella produzione del succo di frutta che deve avere come requisito un contenuto
minimo di 70 mg di vitamina C, 30 mg di sali minerali e 75 grammi di zucchero. Supponiamo ora
che un’industria farmaceutica venda compresse di nutrimenti puri, cioè compresse di vitamina
C, di sali minerali e di zucchero e che vuole immettere queste compresse su un ipotetico mercato
come offerta sostitutiva al succo di frutta per l’acquisizione di vitamina C, di sali minerali e di
zucchero. Naturalmente questa industria farmaceutica vuole massimizzare il profitto ricavato
dalla vendita delle compresse, ma al tempo stesso deve dare un prezzo alle compresse tale da
essere competitiva. Siano allora u1 , u2 e u3 i prezzi di vendita rispettivamente di 1 mg di
vitamina C, di 1 mg di sali minerali e di 1 grammo di zucchero; supponendo che la vendita di
questi nutrimenti puri sia pari ai fabbisogni minimi (cioè a 70 mg di vitamina C, a 30 mg di
sali minerali e a 75 grammi di zucchero), l’espressione del profitto dell’industria farmaceutica
che dovrà essere massimizzata è
70u1 + 30u2 + 75u3 .
Affinché i prezzi di vendita dei componenti puri in compresse fissati dall’industria siano concor-
renziali, si deve imporre che il costo unitario dei nutrimenti puri sia minore o uguale al prezzo
che si dovrebbe pagare per avere la stessa quantità di componente attraverso gli ingredienti del
succo di frutta, cioè dalla polpa di frutta e dal dolcificante. Quindi si devono imporre i seguenti
vincoli

140u1 + 20u2 + 25u3 ≤ 400


10u2 + 50u3 ≤ 600.

Inoltre dovrà essere u1 ≥ 0, u2 ≥ 0, u3 ≥ 0.


Quindi il problema complessivo formulato dall’industria farmaceutica è

max 70u1 + 30u2 + 75u3


140u1 + 20u2 + 25u3 ≤ 400
10u2 + 50u3 ≤ 600
u1 ≥ 0, u2 ≥ 0, u3 ≥ 0

che è il problema duale del problema di miscelazione considerato.

In generale, consideriamo un generico problema di miscelazione in cui si hanno n sostanze Sj ,


j = i, . . . , n ciascuna delle quali contiene una quantità aij di componente utile Ci , i = 1, . . . , m.
Come abbiamo già esaminato nel capitolo precedente un problema di miscelazione di questo
tipo si può formulare come
min cT x
Ax ≥ b (11.18)
x≥0
dove ricordiamo che x ∈ IRn è il vettore avente per componenti le quantità di ciascuna sostanza
da introdurre nella miscela, c ∈ IRn il vettore dei costi unitari delle sostanze, b ∈ IRm il vettore
dei requisiti minimi di componenti utili da introdurre nella miscela, e A ∈ IRm×n la matrice i
cui elementi sono le aij .
Supponiamo ora che un’industria sia in grado di fornire componenti utili allo stato puro e
che voglia immettere sul mercato questi componenti utili e siano ui , i = 1, . . . , m i prezzi unitari
da assegnare a ciascuno di essi. Supponendo che la richiesta del mercato sia pari ai fabbisogni

165
minimi della miscela, cioè per ciascun componente pari a bi , il profitto totale dell’industria che
vende i componenti utili allo stato puro è

b1 u1 + b2 u2 + · · · + bm um .

Inoltre, affinché i prezzi ui assegnati dall’industria ai componenti puri siano concorrenziali, si


deve imporre che il costo dei componenti puri sia minore o uguale al prezzo che dovrebbe pagare
per avere la stessa quantità di componente ottenuto attraverso le sostanze e quindi deve valere

m
aij ui ≤ cj , j = 1, . . . , n.
i=1

Inoltre si deve imporre ui ≥ 0, i = 1, . . . , m.


Quindi il problema formulato si può scrivere nella forma

max bT u
AT u ≤ c
u≥0

che è immediato verificare essere il problema duale del problema di miscelazione assegnato
(11.18).

11.4.3 Il duale del problema dei trasporti


Si consideri un problema di trasporto che è rappresentato dal seguente problema di Program-
mazione Lineare:

min(250x1 + 100x2 + 85x3 + 120y1 + 80y2 + 150y3 )

x1 + x2 + x3 = 50
y1 + y2 + y3 = 55
x1 + y1 = 30
x2 + y2 = 40
x3 + y3 = 35

x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, y1 ≥ 0, y2 ≥ 0, y3 ≥ 0.
dove x1 , x2 , x3 rappresentano rispettivamente quantità di acqua da trasportare dal primo
stabilimento a tre impianti e y1 , y2 , y3 rappresentano rispettivamente la quantità di acqua da
trasportare dal secondo stabilimento a tre impianti. Ricordiamo inoltre che la disponibilità
giornaliera di acqua presso i due stabilimenti è rispettivamente di 50 e 55 ettolitri di acqua,
mentre le richieste giornaliere di acqua presso i tre impianti sono rispettivamente di 30, 40 e 35
ettolitri.
Supponiamo ora che una compagnia specializzata in trasporto di acqua (esterna all’industria)
voglia proporsi all’industria di acque minerali per effettuare il trasporto dell’acqua dagli sta-
bilimenti agli impianti. Naturalmente la compagnia di trasporti, per convincere l’industria
di acque minerali ad avvalersi del servizio di trasporto esterno, dovrà proporre dei prezzi di
trasporto vantaggiosi. A tale scopo la compagnia dei trasporti propone all’industria di prele-
vare un ettolitro di acqua da ciascuno dei due stabilimenti per un prezzo unitario (in migliaia

166
di lire) rispettivamente pari a u1 e u2 e di consegnare un ettolitro di acqua a ciascuno dei tre
impianti per un prezzo unitario (in migliaia di lire) rispettivamente pari a v1 , v2 e v3 . Quindi la
compagnia dei trasporti vorrà massimizzare la funzione che fornisce il suo profitto complessivo
che è data da
50u1 + 55u2 + 30v1 + 40v2 + 35v3 .
Tuttavia affinché l’offerta della compagnia dei trasporti risulti vantaggiosa per l’industria delle
acque minerali i prezzi del trasporto proposti dovranno risultare non superiori a quelli che
l’industria avrebbe effettuando in proprio i trasporti stessi. Quindi dovrà risultare

u 1 + v1 ≤ 250
u 1 + v2 ≤ 100
u 1 + v3 ≤ 85
u 2 + v1 ≤ 120
u 2 + v2 ≤ 80
u 2 + v3 ≤ 150.

Quindi, la compagnia dei trasporti dovrà risolvere il problema

max (50u1 + 55u2 + 30v1 + 40v2 + 35v3 )


u1 +v1 ≤ 250
u1 +v2 ≤ 100
u1 +v3 ≤ 85
u2 +v1 ≤ 120
u2 +v2 ≤ 80
u2 +v3 ≤ 150
che si verifica immediatamente essere il problema duale del problema dei trasporti assegnato.

In generale, consideriamo ora un generico problema dei trasporti già esaminato nel capitolo
precedente. Supponiamo che un’azienda voglia provvedere in proprio ad effettuare il trasporto
di materiali e che quindi cerchi di risolvere il problema dei trasporti
 
∑m ∑ n
min  cij xij 
i=1 j=1

n
xij = ai i = 1, . . . , m (11.19)
j=1
∑m
xij = bj j = 1, . . . , n
i=1
xij ≥ 0 i = 1, . . . , n; j = 1, . . . , m
dove, ricordiamo, che le cij rappresentano il costo del trasporto dall’origine i alla destinazione
j, le ai le disponibilità all’i-esima origine e le bj le richieste alla j-esima destinazione.
Supponiamo, ora che una compagnia che esegue trasporti voglia proporsi a questa azienda,
come alternativa vantaggiosa all’effettuazione dei trasporti in proprio; a tale scopo questa com-
pagnia propone all’azienda di prelevare un’unità di prodotto dall’origine i per un prezzo unitario

167
ui e di consegnare una unità di prodotto alla destinazione j per un prezzo unitario vj . Per as-
sicurare che i suoi prezzi siano competitivi rispetto a quelli che l’azienda avrebbe effettuando i
trasporti in proprio, la compagnia di trasporti deve fare sı̀ che risulti

ui + vj ≤ cij

per ogni i = 1, . . . , m e j = 1, . . . , n. D’altra parte la compagnia di trasporti vuole scegliere i


prezzi da proporre u1 , . . . , um e v1 , . . . , vn in modo da massimizzare il suo profitto complessivo.
Poiché le quantità ai e bj di prodotto rispettivamente disponibili all’origine i e richieste alla
destinazione j sono note alla compagnia di trasporti, questa cercherà di massimizzare la funzione
 
∑m ∑
n
max  ai ui + bj vj  .
i=1 j=1

Quindi il problema che la compagnia di trasporti formula per determinare quali prezzi ui e vj
proporre all’azienda è il seguente


m ∑
n
max ai ui + bj vj
i=1 j=1
(11.20)
ui + vj ≤ cij i = 1, . . . , m, j = 1, . . . , n
che è il problema duale del problema dei trasporti (11.19).

168
Capitolo 12

Programmazione Lineare Intera

La Programmazione Lineare Intera (PLI) tratta il problema della minimizzazione (massimiz-


zazione) di una funzione lineare di più variabili, soggetta a vincoli di uguaglianza e disug-
uaglianza lineari ed alla restrizione che una o più variabili possano assumere soltanto valori
interi. Si tratta dunque di problemi del tipo (PLI pura)

min cT x
Ax ≥ b
x ∈ Z n;

o in cui solo alcune della variabili sono vincolate ad assumere valore intero (PLI mista):

min cT x
Ax ≥ b
x1 ∈ Z n1 , x2 ∈ Rn2 ;

con x = (x1 x2 ) e n1 + n2 = n.
Grazie alla generalità del modello, un grandissimo numero di problemi reali possono essere
rappresentati da modelli di Programmazione Intera. In generale, i modelli di Programmazione
Lineare Intera sono adatti alle applicazioni caratterizzate dall’indivisibilità delle risorse e dalla
necessità di scegliere tra un numero finito di alternative. Queste applicazioni includono problemi
operativi quali la distribuzione di beni ed il sequenziamento delle attività produttive; problemi di
pianificazione quali la gestione ottima del portafoglio titoli e la localizzazione degli impianti ed
infine problemi di progettazione quali il progetto di circuiti VLSI ed il progetto di sistemi auto-
matici di produzione (robotica). Un problema di Ottimizzazione Combinatoria è un particolare
problema di PLI in cui le variabili sono vincolate ad assumere solo valori {0, 1}.
Nelle ipotesi che la regione ammissibile di PLI sia costituita da un insieme finito di punti,
in linea di principio potrebbe essere sempre possibile risolvere il problema di PLI calcolando il
valore della funzione obiettivo in ogni punto ammissibile e scegliendo quello che la minimizza.
Definiremo questo metodo Enumerazione Totale. Se la cardinalità dell’insieme ammissibile
di PLI è piccola allore l’enumerazione totale non solo è possibile, ma è certamente il modo
migliore di risolvere un problema di PLI. Se, viceversa, la cardinalità dell’insieme delle soluzioni
ammissibili è molto grande, l’enumerazione totale diviene non proponibile (vedi anche l’esempio
dovuto a Dantzig descritto nel paragrafo 1.2).

167
Osserviamo che se abbiamo un problema di PLI con dieci variabili e supponiamo che ognuna
di queste variabili possa assumere dieci valori diversi, il numero di possibili punti ammissibili è
di 1010 , cioè 10 miliardi. Questo semplice esempio mostra che l’enumerazione totale è raramente
utile nei casi pratici, dove spesso il numero di variabili intere è dell’ordine delle centinaia se non
delle migliaia.
Le questioni teoriche poste da tali problemi e le tecniche usate per la loro soluzione hanno
caratteristiche molto diverse da quelle relative ai problemi di ottimizzazione continua studiati
nei precedenti capitoli. In generale la PLI è da un punto di vista algortimo più difficile della
PL anche nel caso binario.
Lo scopo di questo capitolo è quindi quello di dare alcune indicazioni sulle peculiarietà dei
problemi di Programmazione Lineare Intera (PLI) e studiare una classe di algoritmi per la loro
risoluzione.

12.1 Formulazioni Classiche di Problemi Lineari Interi


In questo paragrafo vengono presentati esempi classici di problemi che possono essere formulati
come problemi di PLI.
Il primo uso delle variabili intere (binarie) che esamineremo è anche il più naturale. Si supponga
di dover modellare il fatto che un dato evento possa verificarsi oppure no. La natura binaria
del problema suggerisce immediatamente l’idea di modellare questa dicotomia per mezzo di una
variabile x che puó assumere solo valori 0, 1. In particolare, si porrà x = 1 se l’evento si verifica
e x = 0 altrimenti. Successivamente vedremo come le variabili intere e le disequazioni che le
collegano possano essere usate come linguaggio formale per esprimere una serie di relazioni tra
eventi.

12.1.1 Knapsack (zaino) binario


Supponiamo di avere n progetti. Il j-esimo progetto, j = 1, . . . , n, ha un costo pari a aj ed
un valore pari a cj . Ciascun progetto scelto deve essere realizzato completamente e non è
accettata una realizzazione parziale del progetto. Infine esiste un ”budget” b disponibile per
la realizzazione dei progetti. Il problema di scegliere un sottoinsieme dei progetti allo scopo di
massimizzare la somma dei valori senza superare il limite imposto dal ”budget” è il cosiddetto
problema di knapsack binario.
– Variabili. Per ogni progetto i = 1, . . . , n introduciamo le seguenti variabili binarie
n
1 se il progetto i è selezionato
xi =
0 altrimenti.
Pn
Il vincolo sul budget (spazio) è dunque j=1 aj xj ≤ b e il problema di scrive
n
X
max cj xj
j=1
Xn
aj xj ≤ b
j=1
xj ∈ {0, 1} j = 1, . . . , n.

168
In questo caso l’evento è costituito dalla effettuazione (o meno) del singolo progetto. In generale,
questi problemi di scelta tra progetti possono avere più vincoli (si pensi al caso in cui il ”budget”
sia mensile e si voglia pianificare per più di un mese); in tal caso il problema viene detto di
knapsack multidimensionale.
Un esempio di problema di knapsack è l’esempio 1.4.1 di Capital Budgeting nel Capitolo 1.

12.1.2 Assegnamento
Un generico problema di assegnamento consiste nel determinare il modo ottimale di assegnare
lavori a persone o, più in generale, di assegnare mezzi (persone, macchine, etc. ) ad attività.
Supponiamo che n persone P1 ,. . . ,Pn , debbano svolgere n lavori L1 ,. . . , Ln ; ciascun lavoro
deve essere svolto esattamente da una persona e ciascuna persona deve svolgere un lavoro.
Naturalmente le persone hanno diversi livelli di esperienza, competenza ed abilità e quindi si
può introdurre un costo dell’assegnamento della persona i al lavoro j; indichiamo tale costo con
cij e supponiamo che sia noto. Questo costo può, ad esempio, essere interpretato come tempo
medio impiegato dalla persona i ad eseguire il lavoro j. Il problema è quello di assegnare i
lavori alle persone minimizzando il costo totale di realizzazione di tutti i lavori. Questo tipo di
problemi sorge in molte situazioni pratiche: esempi tipici sono i problemi di assegnamento del
personale all’interno di una azienda e i problemi di assegnare determinati mezzi di trasporto ad
alcune particolari linee.
Esaminiamo, ora una formulazione.
Formulazione.
– Variabili. Per ogni lavoro i e per ogni persona j, (i, j = 1, . . . , n) introduciamo le seguenti
variabili binarie n
1 se la persona i è assegnata al lavoro j
xij =
0 altrimenti.
2
Si tratta di n variabili:
L1 · · · Lj · · · Ln
P1 x11 · · · x1j · · · x1n
.. .. .. ..
. . . .
Pi xi1 ··· xij ··· xin
.. .. .. ..
. . . .
Pn xn1 ··· xnj ··· xnn

– Funzione obiettivo. La funzione obiettivo da minimizzare sarà data dal costo totale cioè da
n X
X n
cij xij .
i=1 j=1

Naturalmente, se le cij anziché essere dei costi fossero i valori utili ricavati dall’assegnamento
della persona i al lavoro j, allora la funzione obiettivo andrebbe massimizzata.
– Vincoli. (Vincoli di assegnamento.) Poiché esattamente una persona deve essere assegnata al
lavoro j, allora si avranno i seguenti n vincoli
n
X
xij = 1 j = 1, . . . , n.
i=1

169
Inoltre, poiché ciascuna persona deve essere assegnata ad una sola attività, si avranno altri n
vincoli
Xn
xij = 1 i = 1, . . . , n.
j=1

La formulazione completa sarà, quindi, data da


  

 Xn X n

 min  cij xij 





 i=1 j=1

 n
X
xij = 1

 i=1
X
 n



 xij = 1



 j=1

xij ∈ {0, 1}, i, j = 1, . . . , n.

Osservazione 12.1.1 Nel seguito di questo capitolo si vedrá che in effetti il problema di asseg-
namento può essere formulato rimuovendo il vincolo di interezza, cioé equivalentemente come
un problema di PL. Il vincolo xij ∈ {0, 1} corrisponde a 0 ≤ xij ≤ 1 con xij intero; rimuovere
il vincolo di interezza corrisponde dunque al problema:
  

 Xn X n



 min  cij xij 



 i=1 j=1

 n
X
xij = 1

 i=1

 n

 X

 xij = 1




 j=1
0 ≤ xij ≤ 1, i, j = 1, . . . , n.

Esempio 12.1.2 In un Dipartimento universitario, sono attivati cinque corsi diversi che pos-
sono essere tenuti da cinque professori. Ogni professore esprime delle preferenze sul corso che
vorrebbe tenere, indicando un punteggio. A preferenza più alta corrisponde un punteggio più
alto. I punteggi sono riportati nella seguente tabella:
corso1 corso2 corso3 corso4 corso5
insegnante1 7 5 4 4 5
insegnante2 7 9 7 9 4
insegnante3 4 6 5 8 5
insegnante4 5 4 5 7 4
insegnante5 4 5 5 8 9
Si vuole assegnare ciascun professore ad un corso cercando di massimizzare il valore medio
inteso come media delle preferenze.

Formulazione
– Variabili. Le variabili di decisione sono le variabili booleane:

170
n
1 se l’insegnante i è assegnata al corso j
xij = i, j = 1, . . . , 5.
0 altrimenti.
– Funzione obiettivo. Indicando con cij il punteggio assegnato dall’insegnante i alla corso j, la
funzione obiettivo è il valore medio delle preferenze:
5 5
1 XX
cij xij .
5 i=1 j=1

– Vincoli. I vincoli di assegnamento sono:

x11 + x12 + x13 + x14 + x15 =1


x21 + x22 + x23 + x24 + x25 =1
x31 + x32 + x33 + x34 + x35 =1
x41 + x42 + x43 + x44 + x45 =1
x51 + x52 + x53 + x54 + x55 =1
x11 + x21 + x31 + x41 + x51 =1
x12 + x22 + x32 + x42 + x52 =1
x13 + x23 + x33 + x43 + x53 =1
x14 + x24 + x34 + x44 + x54 =1
x15 + x25 + x35 + x45 + x55 =1

Quindi, complessivamente il problema si scrive:



X5 X 5



 min cij xij



 i=1 j=1



 x11 + x12 + x13 + x14 + x15 = 1



 x21 + x22 + x23 + x24 + x25 = 1



 x31 + x32 + x33 + x34 + x35 = 1

 x41 + x42 + x43 + x44 + x45 = 1
 x51 + x52 + x53 + x54 + x55 = 1



 x + x21 + x31 + x41 + x51 = 1
 11


 x12 + x22 + x32 + x42 + x52 = 1



 x13 + x23 + x33 + x43 + x53 = 1



 x14 + x24 + x34 + x44 + x54 = 1



 x + x25 + x35 + x45 + x55 = 1
 15
0 ≤ xij ≤ 1 e xij intero∀ i, j

12.2 Uso di variabili booleane per modellare condizioni


logiche
12.2.1 Problema del costo fisso.
Nei modelli di Programmazione Lineare le variabili di decisione rappresentano usualmente i
livelli ai quali le varie attività vengono svolte e la funzione obiettivo da minimizzare è una

171
funzione lineare di tali variabili. In molti problemi pratici, tuttavia, tale ipotesi non è giustificata
in quanto il costo di una attività, in funzione del livello cui essa viene svolta, può avere un
andamento come quello riportato in Figura 12.1.

costo

coeff. ang. c

x : livello dell'attività

Figura 12.1: Costo dell’attività j.

In particolare, il costo dell’attività j è zero se xj = 0 (cioè se l’attività non è avviata) ed è


invece uguale a fj + cj xj se xj > 0 con fj positivo. La funzione relativa all’attivitá j è quindi
½
0 se xj = 0
zj (x) =
fj + cj xj se xj > 0

Il valore fj è detto costo fisso dell’attività j e deve essere pagato solamente se l’attività j
viene svolta ad un livello non nullo. Per esempio, supponiamo che la variabile xj rappresenti
la quantità di petrolio greggio che deve essere trasportata da un pozzo A ad una raffineria B.
In questo caso, se il pozzo A non rifornisce la raffineria B il costo complessivo di trasporto è
ovviamente nullo. Se, al contrario, si decide di inviare una quantità non nulla xj di greggio da
A a B, al costo di trasporto cj xj (proporzionale alla quantità trasferita) dovrà essere sommato
il costo fisso di costruzione dell’oleodotto fj .
Se indichiamo che Jf le attività che prevedono un costo fisso, la funzione obiettivo può essere
genericamente scritta come X X
z(x) = cj xj + zj (x).
j ∈J
/ f j∈Jf

Chiaramente la funzione z(x) è discontinua nell’origine e quindi non è lineare. È formulazione


“linearizzare” la funzione obiettivo introducendo, per ciascuna attività, una variabile yj che
valga 1 quando xj > 0 e 0 quando xj = 0, cioè
n
0 se xj = 0
yj =
1 altrimenti
In questo modo la funzione obiettivo può essere scritta
n
X X
z(x) = cj xj + yj fj = cT x + f T y,
j=1 j∈Jf

172
dove y ∈ {0, 1}|Jf | è il vettore le cui componente sono yj e z(x) è una funzione lineare. Il
problema ha peró delle variabili binarie. Si deve inoltre imporre un vincolo che consenta di
modellare la condizioni logiche
xj > 0 ⇒ yj = 1
xj = 0 ⇒ yj = 0
Osserviamo infatti che in assenza di tale vincolo e nell’ipotesi che fj ≥ 0, nella soluzine ottima
il valore di yj sarebbe = 0 trattandosi di un problema di minimizzazione. Dunque la condizione
xj = 0 ⇒ yj = 0 non necessita di essere imposta.
Se supponiamo di conoscere un limite superiore per la variabile xj , cioè un valore α positivo
maggiore del più grande valore che può assumere la xj , il vincolo

xj − αyj ≤ 0

forza la variabile yj ad assumere valore 1 se xj > 01 . Infatti se xj > 0, il vincolo impone


αyj ≥ xj > 0 e dunque yj > 0 (cioé yj = 1).
Il problema di costo fisso di PLI può essere quindi formulato, assumendo che tutti i costi
fissi fj siano positivi, nel modo seguente:

(F C2) min z(x) = cT x + f T y


Ax = b
xj ≤ αyj , j ∈ Jf
x ≥ 0n
yj ∈ {0, 1}, j ∈ Jf

dove α è un numero positivo maggiore del più grande valore che può essere assunto da ciascuna
delle variabili xj in una soluzione ottima. Se xj > 0 la variabile yj sarà forzata ad assumere il
valore 1 ed il suo costo fisso si aggiungerà al valore della funzione obiettivo.

Esempio 12.2.1 In una centrale elettrica sono a disposizione tre generatori e ogni giorno si
deve decidere quali usare di giorno e quali di notte per assicurare una produzione di almeno 4000
megawatts di giorno e di almeno 2800 megawatts di notte. L’uso di un generatore comporta la
presenza di personale tecnico che sorvegli il suo funzionamento; tale personale viene retribuito
in maniera diversa tra il giorno e la notte e a seconda del tipo di generatore; tali costi di
attivazione sono riportati nella tabella che segue (in migliaia di lire) insieme al costo per ogni
megawatt prodotta e alla massima capacità di produzione in megawatts per ogni singolo periodo
(giorno/notte).

Costo attivazione Costo per Capacità


giorno notte megawatt max
Generatore A 750 1000 3 2000
Generatore B 600 900 5 1700
Generatore C 800 1100 6 2500
1
Osserviamo che la condizione xj > 0 ⇒ yj = 1 è equivalente a yj = 0 ⇒ xj = 0. Inoltre, volendo
modellare la condizione yj = 1 ⇒ xj = 0, si puó imporre il vincolo xj − α(yj − 1) ≤ 0.

173
Formulare un modello di PLI che permetta di rappresentare il problema in analisi.

Formulazione.
È un problema di costo fisso e può essere formulato in termini di Programmazione Lineare
Intera come appena descritto in generale. Per brevità di notazione, chiameremo 1o periodo il
giorno e 2o periodo la notte.
– Variabili. Indichiamo con xAi , xBi e xCi , i = 1, 2, i megawatts generati rispettivamente dai
generatori A, B e C nel periodo i. Inoltre, per ottenere una formulazione lineare, è necessario
introdurre sei variabili 0 − 1, δAi , δBi e δCi , i = 1, 2, definite come segue :
½
1 se il generatore A è attivato nell’i-esimo periodo
δ Ai = i = 1, 2.
0 se nell’i-esimo periodo il generatore A non è attivato

Analoga è la definizione per le altre variabili δBi e δCi , i = 1, 2.


– Funzione obiettivo. La funzione obiettivo da minimizzare può esser scritta

3xA1 + 3xA2 + 5xB1 + 5xB2 + 6xC1 + 6xC2 + 750δA1 +

+1000δA2 + 600δB1 + 900δB2 + 800δC1 + 1100δC2 .

– Vincoli. Si devono considerare i vincoli sulla richiesta cioè

xA1 + xB1 + xC1 ≥ 4000

xA2 + xB2 + xC2 ≥ 2800.


Inoltre, per quanto esposto nel caso generale si devono considerare i vincoli

xAi − 2000δAi ≤ 0 i = 1, 2

xBi − 1700δBi ≤ 0 i = 1, 2
xCi − 2500δCi ≤ 0 i = 1, 2.
Quindi la formulazione complessiva può essere scritta
 ³

 min 3xA1 + 3xA2 + 5xB1 + 5xB2 + 6xC1 + 6xC2 +

 ´



 +750δ A + 1000δ A + 600δ B + 900δ B + 800δ C + 1100δ C


1 2 1 2 1 2

 xA1 + xB1 + xC1 ≥ 4000



 xA2 + xB2 + xC2 ≥ 2800



 xA1 − 2000δA1 ≤ 0
xB1 − 1700δB1 ≤ 0



 xC1 − 2500δC1 ≤ 0



 x A2 − 2000δA2 ≤ 0



 x B2 − 1700δB2 ≤ 0



 x C2 − 2500δC2 ≤ 0


 i ≥ 0, xBi ≥ 0, xCi ≥ 0,
 x A i = 1, 2
δAi ∈ {0, 1}, δBi ∈ {0, 1}, δCi ∈ {0, 1} i = 1, 2.

174
12.2.2 Variabili indicatrici
Un altro classico uso di variabili 0−1, consiste nell’indicare le relazioni di dipendenza tra alcune
grandezze di un problema; tali variabili binarie vengono dette variabili indicatrici.
Supponiamo di conoscere un limite superiore per la variabile x, cioè un valore M positivo
maggiore del più grande valore che può assumere la x; allora introducendo il vincolo

x − Mδ ≤ 0 (12.1)
la variabile δ ∈ {0, 1} è forzata ad assumere valore 1 se x > 0; abbiamo, quindi, modellato la
condizione logica
x>0⇒δ=1 (12.2)
e quindi anche la condizione equivalente δ = 0 ⇒ x = 0; ma la (12.1) non implica il viceversa
della (12.2) cioè δ = 1 ⇒ x > 0; infatti dalla (12.1) si ha che se δ = 1 allora 0 ≤ x ≤ M , che è
sempre verificato.
Tuttavia, in alcuni casi, può essere necessario imporre la condizione

δ=1⇒x>0 (12.3)
(che è equivalente a x = 0 ⇒ δ = 0). La condizione logica (12.3) non si può facilmente
rappresentare con un vincolo;
Supponiamo, ad esempio, che in un problema di miscelazione una variabile x rappresenti
la quantità di un ingrediente da includere nella miscela e quindi si ha x ≥ 0; si può usare una
variabile indicatrice δ ∈ {0, 1} per distinguere tra il caso in cui x = 0 e x > 0. La condizione
logica (12.3) afferma che se δ = 1 allora l’ingrediente rappresentato da x deve apparire nella
miscela, ma non fornisce nessuna indicazione sulla quantità dell’ingrediente. In realtà è più
verosimile imporre una condizione logica del tipo

δ=1⇒x≥m>0 (12.4)
cioè se δ = 1 allora la variabile x assume un valore almeno pari ad m.
La (12.4) è rappresentabile dal vincolo

x − mδ ≥ 0. (12.5)

Riepilogando possiamo considerare il seguente schema: se x è una variabile non negativa e


δ ∈ {0, 1} ed inoltre x < M e m > 0, allora
n
x>0⇒δ=1
x − M δ ≤ 0 implica
δ=0⇒x=0
n
δ=1⇒x≥m
x − mδ ≥ 0 implica
x = 0 ⇒ δ = 0.
Analizziamo, ora, un esempio di miscelazione in cui applichiamo quanto appena esposto.

Esempio 12.2.2 Sia data la seguente tavola di valori nutrizionali che riporta il tipo di ali-
mento, il costo unitario, le unità di sostanze (proteine, carboidrati, grassi, vitamine, calcio) per
unità di alimento

175
costo prot. carb. grassi vitam. calcio
1 0.15 0 7 1 1 0
2 0.23 1 0 3 1 4
3 0.79 5 0 4 0 1
4 0.47 2 2 1 3 0
5 0.52 0 3 0 2 1

Formulare un problema di PLI che permetta di trovare una dieta di costo minimo sapendo
che si devono assumere almeno 3 unità di proteine, 10 unità di carboidrati, 2 unità di grasso, 3
unità di vitamine e 2 unità di calcio e sapendo che se è presente l’alimento 1 la dieta non può
contenere l’alimento 5.

Formulazione.
È un classico problema di miscelazione; le quantità di alimenti presenti nella dieta si suppongono
frazionabili. A causa della presenza di una condizione logica, è necessario utilizzare, in aggiunta
alle variabili del problema, una variabile 0 − 1 per modellarla cioè per esprimere con un vincolo
il legame tra la presenza nella dieta dell’alimento 1 e dell’alimento 5.
– Variabili di decisione. Introduciamo come variabili del problema le unità di alimenti presenti
nella dieta, xi con i = 1, . . . , 5. Inoltre, introduciamo la variabile booleana δ ∈ {0, 1}.
– Vincoli. Si hanno i seguenti vincoli:

• Vincoli di qualità: la dieta deve contenere alcuni valori minimi di sostanze nutrizionali;
dalla tabella si ottiene che deve essere
x2 + 5x3 + 2x4 ≥ 3
7x1 + 2x4 + 3x5 ≥ 10
x1 + 3x2 + 4x3 + x4 ≥ 2
x1 + x2 + 3x4 + 2x5 ≥ 3
4x2 + x3 + x5 ≥ 2
• Vincolo logico: se nella dieta è presente l’alimento 1 allora non deve esserci l’alimento 5.
Vogliamo quindi definire dei vincoli che consentano di esprimere le seguenti condizioni
logiche
x1 > 0 ⇒ δ=1
δ=1 ⇒ x5 = 0

Secondo quanto descritto, ciò può essere modellato introducendo i vincoli


x1 − M δ ≤ 0
x5 − M (1 − δ) ≤ 0
dove M è un numero positivo maggiore del più grande valore che possono assumere le
variabili.

176
• Vincoli di non negatività: Si tratta di quantità di alimenti, e quindi deve essere

xi ≥ 0 i = 1, . . . , 5.

– Funzione obiettivo. È il costo da minimizzare ed è data da

0.15x1 + 0.23x2 + 0.79x3 + 0.47x4 + 0.52x5 .

Complessivamente la formulazione di PLI per questo problema può essere scritta



 min (0.15x1 + 0.23x2 + 0.79x3 + 0.47x4 + 0.52x5 )



 x2 + 5x3 + 2x4 ≥ 3



 7x 1 + 2x4 + 3x5 ≥ 10



 x1 + 3x2 + 4x3 + x4 ≥ 2

x1 + x2 + 3x4 + 2x5 ≥ 3

 4x2 + x3 + x5 ≥ 2



 x1 − M δ ≤ 0



 x5 − M (1 − δ) ≤ 0


 xi ≥ 0 i = 1, . . . , 5

δ ∈ {0, 1}.

12.2.3 Il problema del commesso viaggiatore


Siano assegnate n città che un commesso viaggiatore deve visitare in una settimana e la matrice
D di dimensioni n × n delle distanze fra tutte le coppie di città. Più precisamente gli elementi
della matrice D sono definiti nel seguente modo.
D(i, j) ≥ 0 indica la distanza della città i dalla città j,
D(i, i) = 0 per tutti gli i,
D(i, j) = D(j, i) per tutte le coppie (i, j).
Il commesso viaggiatore, partendo dalla città in cui abita (sia per esempio la città 1), vuole
effettuare tutte le visite e ritornare alla fine alla città di partenza, percorrendo una strada di
lunghezza complessiva minima.
Introducendo le variabili binarie xij con il seguente significato.
xij = 1 se la città j viene visitata subito dopo la città i,
xij = 0 se la città j non viene visitata subito dopo la città i,
e indicando con π l’insieme di tutte le possibili partizioni (R, S) dell’insieme di città (ossia tali
che: RU S = {insieme di tutte le città}, R 6= ∅, S 6= ∅, R ∩ S = ∅), è possibile formulare il

177
problema come programmazione a numeri interi:
n X
X n
min [D(i, j)xij ]
i=1 j=1
Xn
xij = 1 per j = 1, 2, . . . , n
i=1
Xn
xij =1 per i = 1, 2, . . . , n
j=1
X
xij ≥ 1 per (R, S) ∈ π
i∈R,j∈S
x ∈ {0, 1}n×n .

Il primo insieme di vincoli garantisce che in ogni città il commesso viaggiatore provenga da
una sola altra città. Il secondo insieme di vincoli garantisce che dopo ogni città il commesso
viaggiatore prosegua per una sola altra città. Il terzo insieme di vincoli garantisce che la
soluzione fornita dal modello sia formata da un unico percorso che attraversa tutte le città e
non da una serie disgiunta di percorsi che visitano sottoinsiemi diversi di città.
Se non fosse per il terzo insieme di vincoli, il problema sarebbe uguale a quello dell’assegnamento
visto sopra. Il terzo insieme di vincoli complica il problema, facendo sı̀ che non sia risolubile
con la programmazione lineare. In effetti si tratta di uno dei piu difficili problemi combinatori
con cui si ha normalmente a che fare e la sua soluzione richiede tipicamente algoritmi complessi
e notevole dispendio di tempo di calcolo. Si noti che il terzo insieme di vincoli ha cardinalità
esponenziale rispetto al numero di città da visitare. Si tratta infatti di 2n−2 vincoli (in effetti
esiste una formulazione più sofisticata che permette di scrivere il problema con solo n2 vincoli
aggiuntivi introducendo n variabili aggiuntive non binarie).

12.3 Relazioni tra PL e PLI


IN questo paragrafo, senza perdere di generalitá, faremo riferimento a problemi di PLI pura
cioè del tipo:
zI∗ = min cT x
Ax ≥ b (P LI)
x intera
Indichiamo con SI = {x ∈ Z n : Ax ≤ b} la regione ammissibile del problema PLI e con x∗I ∈ SI
la soluzione ottima, cioè cT x∗I = zI∗ .
Si chiama rilassamento lineare o rilassamento continuo il problema di PL ottenuto da PLI
eliminando il vincolo di interezza:
z∗ = min cT x
(P L)
Ax ≥ b

Indichiamo con S il poliedro nello spazio continuo S = {x ∈ Rn : Ax ≤ b} e con x∗ ∈ S la


soluzione ottima del rilassamento, cioè cT x∗ = z ∗ .
La regione di un Problema di PLI è ovviamente contenuta in quella del suo rilassamento PL
(che è ottenuto, lo ripetiamo, eliminando un vincolo da PLI) ovvero SI ⊆ S. Di conseguenza il

178
valore ottimo di PL è sicuramente non peggiore (migliore o al piú uguale) di quello di PLI cioé
(trattandosi di minimizzazione)
z ∗ ≤ zI∗ ,
ovvero la soluzione del rilassamento lineare costituisce un limite inferiore al valore ottimo della
soluzione ottima intera

In generale dati due insiemi S 0 ⊆ S risulta

min f (x) ≥ min f (x).


x∈S 0 x∈S

Per chiarire ulteriormente quanto detto facciamo un semplice esempio informale. Supponiamo
di voler trovare lo studente più giovane di una facoltá. Si tratta di trovare lo studente (“punto
ammissibile”) che minimizza la funzione obiettivo che associa ad ogni studente la sua età. Con-
sideriamo poi il problema di trovare lo studente più giovane di tutta l’università. Ovviamente
l’insieme ammissibile di questo nuovo problema è più ampio di quello del problema precedente,
comprendendo tutti gli studenti di tutte le facoltà (“problema rilassato”). Se noi risolviamo
il “problema rilassato” il valore ottimo che troviamo (età dello studente più giovane di tutta
l’università) è ovviamente minore o tutt’al più uguale al valore ottimo del problema di trovare
lo studente più giovane della facoltà che ci interessa. Se poi risulta che lo studente più giovane
di tutta l’università è proprio uno studente della facoltà d’interesse, allora è ovvio che questo
studente è anche “la soluzione ottima” del problema originario, è cioè lo studente più giovane
della facoltà che ci interessa.
Dunque se la soluzione ottima del prblema di PL x∗ ∈ S è intera, significa che x∗ ∈ SI e dunque
si tratta anche della soluzione ottima del problema di PLI.

Se la soluzione ottima del rilassamento lineare x∗ ∈ S è intera allora questa è anche la soluzione
ottima del problema di PLI, cioè x∗ = x∗I .

Se, invece, anche una sola delle componenti di x∗ ∈ S non è intera x∗ non è ammissibile per PLI,
dunque tantomeno ottima. Si può allora essere tentati di determinare una soluzione ottima di
PLI arrotondando x∗ a un punto a coordinate intere “vicino” a x∗ .
Questa Soluzione per Arrotondamento può essere un metodo pratico di grande utilità
per la soluzione di PLI, se tutte variabili del problema sono variabili intere che rappresentano il
numero di oggetti indivisibili usati o prodotti, ed è ragionevole aspettarsi che le variabili stesse
abbiano valori abbastanza grandi all’ottimo. Inoltre i vincoli lineari dovrebbero essere tali da
poter facilmente decidere se l’ammissibilità è preservata arrotondando una variabile non intera
al più vicino valore intero (o, per esempio, al più vicino valore intero inferiore). Per esempio,
se x1 rappresenta il numero di automobili di un certo modello che devono essere assemblate
durante un mese e se esiste una limitazione inferiore su x1 , è ragionevole aspettarsi che un
valore x̄1 = 1000.1 possa essere arrotondato a 1001 senza che venga violata l’ammissibilità. Se
tutte le variabili del problema sono di questo tipo e se esiste un metodo semplice di passare
dalla soluzione non intera x̄ di PR a una soluzione “vicina”, intera e ammissibile per PLI, allora
un ragionevole approccio pratico alla soluzione di PLI è quello di risolvere il suo rilassamento
lineare ed arrotondare quindi la soluzione.
Tuttavia, se il valore delle variabili della soluzione ottima del rilassamento lineare è pre-
sumibilmente piccolo, questa tecnica non è molto sensata. Se, per esempio, x1 rappresenta il

179
numero di portaaeri che devono essere costruite dall’esercito italiano, è intuitivo capire che è
molto difficile decidere se si debba arrotondare x̄1 = 2.5 a 2 o a 3, e che le due possibilità por-
tano a risultati completamente diversi. La situazione diventa ancora più drammatica quando
le variabili intere sono, in realtà, variabili binarie. In questi problemi le variabili 0-1 indicano
quale di due possibili scelte alternative deve essere attuata. In questo caso l’arrotondamento è
totalmente privo di senso logico.

Figura 12.2: Soluzione per arrotondamento: primo esempio.

Consideriamo l’esempio di figura 12.2. Supponiamo che la soluzione del rilassamento lineare
sia a (x̄ = a). Il punto a ha tutte le componenti non intere e tutti i punti a componenti intere
ottenuti arrotondando le sue componenti all’intero immediatamente superiore o inferiore non
sono ammissibili per PLI. Da questo esempio dovrebbe risultare chiaro, inoltre, che è possibile
costruire problemi PLI in cui la soluzione ottima del relativo rilassamento lineare è lontana
“quanto si vuole” dal più vicino punto ammissibile di PLI.
Anche nel caso in cui possa essere trovato un punto ammissibile “vicino” a x̄, questi può
essere molto lontano dalla soluzione ottima di PLI.
Un esempio al riguardo è dato nella figura 12.3, dove la soluzione ottima del rilassamento
lineare è a, b è la soluzione ottenuta per arrotondamento, mentre c è la vera soluzione di PLI.

Esempio 12.3.1 [3] Sia consideri il problema

min −x1 − x2
−2x1 + 5x2 ≤ 5
2x1 − 2x2 ≤ 1
x ≥ 0, intero

le cui soluzioni ammissibili sono:


µ ¶ µ ¶ µ ¶
0 0 1
0 1 1
µ ¶
1
e l’ottimo è x∗I = di valore zI∗ = −2.
1

180
c

b
a

direzione di crescita
della funzione obiettivo

Figura 12.3: Soluzione per arrotondamento: secondo esempio.

Risolvendo il suo rilassamento lineare


min −x1 − x2
−2x1 + 5x2 ≤ 5
(12.6)
2x1 − 2x2 ≤ 1
x≥0

si determina la soluzione x∗1 = 52 = 2.5, x∗2 = 2 con valore della funzione obiettivo z ∗ = − 92 .
Arrotondando
µ ¶ µ ¶ questa soluzione sia all’intero superiore che inferiore si ottengono le due soluzioni
2 3
, che NON sono ammissibili. In figura 12.4 è disegnata la regione ammissibile S e
2 1
SI .

Dunque arrotondare una soluzione non intera può non essere una buona strategia. Inoltre è
bene sottolineare che l’arrotondamento può essere computazionalmente oneroso. Infatti data
una soluzione frazionaria x̄ ∈ IRn , possono esistere 2n vettori interi ottenuti arrotondando le
componenti non intere di x̄ al valore intero superiore o inferiore più prossimo, e non si vede
con quale criterio si possa sceglierne uno quale soluzione di PLI. Inoltre molti (se non tutti)
di questi 2n vettori possono non essere ammissibili per PLI, e il problema di determinare un
vettore a componenti intere, ammissibile per PLI, e “vicino” a x̄ può essere, in generale, un
problema di difficoltà paragonabile alla soluzione di PLI.
Osserviamo però che uno stesso problema di PLI può essere descritto in modo equivalente in
diversi modi.
Esempio 12.3.1 (continua) Consideriamo il problema dell’esempio 12.3.1 a cui aggiun-

181
Figura 12.4: Soluzione grafica Esempio 12.6.

giamo il vincolo x1 ≤ 1
min −x1 − x2
−2x1 + 5x2 ≤ 5
2x1 − 2x2 ≤ 1 (12.7)
x1 ≤ 1
x ≥ 0, intero
La regione ammissibile SI è invariata, mentre la regione ammissibile e la soluzione ottima del
suo rilassamento lineare cambia (vedi figura 12.5).
Se consideriamo il problema
min −x1 − x2
−2x1 + 5x2 ≤ 5
2x1 − 2x2 ≤ 2 (12.8)
x2 ≤ 1
x ≥ 0, intero
otteniamo la regione ammissibile in Figura 12.6 e la soluzione del rilassamento lineare coincide
con x∗I . Quest’ultima rappresentazione ha quindi un’interessante proprietà: la soluzione del
problema rilassato coincide con la soluzione ottima intera. S tratta dunque di una formulazione
“ideale”.

182
Figura 12.5: Soluzione grafica Esempio 12.7.

Naturalmente la formulazione “ideale” non è in genere conosciuta. Se lo fosse, il problema


di PLI si potrebbe risolvere utilizzando un metodo per la PL che individua un vertice ottimo
(ovvero con il metodo del simplesso). É peró possibile identificare dei problemi che godono di
questa proprietá. In particolare diamo la seguente definzione:

Definizione 12.3.2 Un poliedro si dice interose tutti i suoi vertici sono interi.

12.4 Proprietà di interezza e totale unimodularità


Allo scopo di ottenere una caratterizzazione dei poliedro interi, utilizziamo per semplicitá la
formulazione di poliedro in forma standard P = {x ∈ IRn : Ax = b, x ≥ 0}. Ricordiamo
la corrispondenza mostrata nel paragrafo 10.3.1 tra vertici di un poliedro in forma standard
e Soluzioni di Base Ammissibili (individuate dal metodo del simplesso), xB = B −1 b ∈ Rm ,
xN = 0. Dunque vogliamo ottenee una condizione che garantisca che B −1 b sia intero per
qualunque scelta della base B.
Osserviamo preliminarmente che vale il seguente teorema:

Teorema 12.4.1 Se una matrice quadrata B con elementi interi ha determinante ±1, allora
la sua inversa é intera

183
Figura 12.6: Soluzione grafica Esempio 12.8.

La dimostrazione é banale, ricordando la construzione della matrice inversa che é data dalla
matrice aggiunta (intera se B é intera) diviso il determinante.
Introduciamo la seguente definizione

Definizione 12.4.2 [2] Una matrice a componenti intere A (m × n) di rango m si dice uni-
modulare se ogni sottomatrice quadrata m × m non singolare di A ha determinante di valore
−1, 1.

Dunque possiamo affermare [2]

Sia A una matrice (m × n) a componenti intere. Allora condizione sufficiente affinché il poliedro

P = {x ∈ IRn : Ax = b, x ≥ 0}

abbia tutti i vertici interi, per ogni b intero, è che la matrice A sia unimodulare.

Si dice invece che una matrice A é totalmente unimodulare se ogni sottomatrice quadrata di A
ha determinante in {−1, 0, 1}.

Teorema 12.4.3 Sia A una matrice (m×n) a componenti intere. Allora condizione sufficiente
affinché il poliedro
P = {x ∈ IRn : Ax ≥ b, x ≥ 0}

184
abbia tutti i vertici interi, per ogni b intero, è che la matrice A sia totalmente unimodulare.

È quindi interessante poter individuare condizioni che garantiscano l’unimodularità di una ma-
trice a componenti intere A (m × n).
Una ovvia condizione necessaria per la totale unimodularità è che la matrice abbia tutti elementi
aij ∈ {0, 1, −1}. µ
Non è però
¶ una condizione sufficiente, infatti basta scegliere banalmente una
1 1
matrice del tipo con determinante pari a 2.
−1 1
Si può dare una condizione sufficiente di totale unimodularità [2]:

Teorema 12.4.4 Sia A una matrice (m × n) con elementi aij ∈ {0, 1, −1}. Se
1. ogni colonna abbia al più due elementi diversi da zero;
2. è possibile partizionare gli indici di riga in due sottoinsiemi Q1 e Q2 tali che
(i) se la colonna j contiene due elementi aij 6= 0 e akj 6= 0 dello stesso segno allora
i ∈ Q1 e k ∈ Q2 ;
(ii) se la colonna j contiene due elementi aij 6= 0 e akj 6= 0 di segno opposto allora o
i, k ∈ Q1 oppure i, k ∈ Q2 ;
allora A è totalmente unimodulare.

Esempio 12.4.5 Verificare che la matrice


 
1 1 1
1 0 0
1 0 1

che non soddisfa la condizione sufficiente, é totalmente unimodulare.

Per matrici che hanno al piú due elementi diversi da zero per ogni colonna, la condizione 2
del teorema precedente diventa una condizione necessaria e sufficiente di totale unimodularità:

Teorema 12.4.6 Sia A una matrice (m × n) con elementi aij ∈ {0, 1, −1} e tale che ogni
colonna abbia al più due elementi diversi da zero. Allora A è totalmente unimodulare se e solo
se è possibile partizionare gli indici di riga in due sottoinsiemi Q1 e Q2 tali che:

(i) se la colonna j contiene due elementi aij 6= 0 e akj 6= 0 dello stesso segno allora i ∈ Q1
e k ∈ Q2 ;
(ii) se la colonna j contiene due elementi aij 6= 0 e akj 6= 0 di segno opposto allora o i, k ∈ Q1
oppure i, k ∈ Q2 .

Teorema 12.4.7 Se una matrice A è totalmente unimodulare, lo sono anche le matrici


µ ¶ µ ¶
A A ¡ ¢ ¡ ¢
A I A −I
I −I

185
Esempio 12.4.8 Dire se la seguente matrice è totalmente unimodulare (dimostrando l’affer-
mazione):  
0 1 0 0 1 1 1 0
 0 0 1 0 1 1 0 1 
 
 1 1 1 0 0 0 0 0 
1 0 0 1 0 0 1 1

Soluzione.
La condizione necessaria è verificata, poiché gli elementi sono tutti 0, 1. Inoltre ogni colonna
di A ha al più due elementi non nulli, quindi sono verificate le ipotesi del Teorema 12.4.4.
Costruiamo la partizione degli indici di riga. Se la riga 1 ∈ Q1 allora la riga 2 ∈ Q2 , ma la riga
3 non può stare né in Q1 per l’elemento a12 né in Q2 per l’elemento a13 . Quindi la matrice non
è totalmente unimodulare.

Esempio 12.4.9 Dire se la seguente matrice è totalmente unimodulare dimostrando l’affermazione.


 
1 1 0 0 −1 0
 0 0 0 1 0 1 
 
 0 0 1 0 1 0 
 
 1 0 0 1 0 0 
 
 0 1 1 0 0 0 
0 0 0 0 0 1

Soluzione.
Sono verificate le ipotesi del Teorema 12.4.4. Esiste una partizione degli indici di riga, Q1 =
{1, 2, 3}, Q2 = {4, 5, 6}, che soddisfa le condizioni (i) (ii), quindi la matrice è totalmente uni-
modulare.

Esempio 12.4.10 Verificare che la matrice del problema di assegnamento 12.1.2 é totalmente
unimodulare.

Esempio 12.4.11 Verificare che la matrice del problema di trasporto 3.3.2 é totalmente uni-
modulare.

Esempio 12.4.12 Verificare che la matrice del problema di revenue management 3.3.3 é to-
talmente unimodulare.

12.5 Tecniche di soluzione per problemi di PLI


In forma del tutto generale un problema di PLI può essere scritto come

min cT x
Ax ≤ b
(P LI)
0≤x≤U
x intera

dove U è un vettore a n componenti che limita superiormente il valori che possono essere assunti
dalle variabili. La presenza di questo vincolo implica che la regione ammissibile del problema PLI

186
è limitata. Questa assunzione semplificherà le considerazioni svolte in questo paragrafo. Essa
è, peraltro, non limitativa, in quanto in ogni problema reale il valore assunto dalle componenti
delle soluzioni ammissibili è sempre limitato superiormente da qualche costante.
In questo paragrafo consideriamo alcune tecniche risolutive per problemi di PLI. In partico-
lare, dopo alcune brevi considerazione sulla soluzione per enumerazione totale e sulla soluzione
approssimata per arrotondamento di problemi di PLI, descriveremo una delle più note famiglie
di algoritmi per la soluzione esatta di problemi di PLI: gli algoritmi di Branch and Bound.
Prima di procedere vogliamo introdurre un concetto molto importante, quello di problema
rilassato, che verrà ampiamento ripreso e utilizzato nel seguito. Dato il problema PLI si definisce
suo rilassamento lineare (o problema rilassato associato) il seguente problema.

min cT x
Ax ≤ b (P R)
0 ≤ x ≤ U.

Si tratta cioè di un problema di PL ottenuto eliminando dal problema PLI il vincolo di interezza.
La regione di un Problema di PLI è ovviamente contenuta in quella del suo rilassamento PR
(che è ottenuto, lo ripetiamo, eliminando un vincolo da PLI) e quindi ne segue che il valore
ottimo di PR è sicuramente maggiore o uguale di quello di PLI. In particolare, se la soluzione
ottima di PR è intera allora questa è anche la soluzione ottima di PLI.

12.5.1 La Tecnica del Branch and Bound


Abbiamo già visto che una possibile, semplice tecnica di soluzione per PLI, purtroppo quasi
mai utilizzabile in pratica, è l’ enumerazione totale.
Il “Branch and Bound” (BB) fornisce, allora, una metodologia di ricerca della soluzione ot-
tima che effettua una esplorazione parziale dell’insieme delle soluzioni ammisibile. In particolare
la funzione obiettivo viene calcolata per una sottoinsieme (piccolo) delle soluzioni ammissibili
con la proprietà di contenere almeno una soluzione ottima. Descriviamo ora in maggior det-
taglio i vari aspetti della procedura. Sia S (0) l’insieme delle soluzioni ammissibili PLI. Una
partizione di S (0) è una famiglia di sottoinsiemi (S (1) , . . . , S (r) ), r ≥ 2 tale che:

S (i) ∩ S (j) = ∅ per ogni coppia 1≤i<j≤r

e
r
[
S (i) = S (0)
i=1

Evidentemente, la soluzione ottima del problema originario è data dal massimo tra i valori
∗ ∗ ∗ ∗ ∗
z (1) = cT x(1) , . . . , z (r) = cT x(r) dove x(i) è la soluzione ottima del sottoproblema PLIi
definito dal problema di minimizzare la funzione obiettivo del problema PLI sulla regione am-
missibile S (i) (nel seguito, con un piccolo abuso di notazione, indicheremo spesso con S (i) sia
la regione ammissibile sia il sottoproblema PLIi ). Se un certo sottoproblema PLIi risulta, a
sua volta, di difficile soluzione si partiziona ulteriormente l’insieme S (i) producendo nuovi sot-
toproblemi ed iterando la procedura fino a che il problema originario non risulti decomposto in
problemi elementari di facile soluzione.
Cerchiamo di chiarire la procedura con un esempio informale. Supponiamo di dover trovare
la persona più giovane di un Ateneo. Risolvere questo problema confrontando le età di tutti gli
studenti fra loro (enumerazione totale) può risultare in un processo troppo lungo. Si può allora

187
chiedere ai presidi di ogni facoltà qual è lo studente più giovane delle loro facoltà e scegliere il più
giovane tra questi studenti. Abbiamo decomposto il problema originario in più sottoproblemi:
la determinazione dello studente più giovane di ogni facoltà. In alcuni casi la risoluzione di
questi sottoproblemi può essere agevole. In altri casi il preside può non essere in grado di
fornire facilmente il nome dello studente più giovane della sua facoltà. In questo caso si può
scomporre ulteriormente il problema. Per esempio, il preside può chiedere a tutti i direttori di
Corso di Laurea di fornirgli il nome dello studente più giovane che frequenta l’istituto stesso.
Da questi egli potrà cosı̀ risalire al nome dello studente più giovane della facoltà. E cosı̀ via.
È evidente che la procedura appena descritta non compie una totale enumerazione dell’insieme
S ed è computazionalmente efficiente solo se il numero dei sottoproblemi generati si mantiene
estremamente limitato e quindi solo se la strategia di soluzione dei sottoproblemi è sufficiente-
mente efficace.
In generale però, risolvere un sottoproblema può essere altrettanto gravoso che risolvere
il problema originario. È per questo che, in luogo della soluzione esatta del problema S (i)
∗ ∗
si preferisce calcolare un “lower bound” di z (i) e cioè un valore L(i) ≤ z (i) . Tale valore
viene poi confrontato con il miglior valore z̃ (ad un certo passo della procedura) della funzione
obiettivo calcolata in un punto ammissibile (ottimo corrente). Se il valore approssimato
risulta non inferiore a quello dell’ottimo corrente, ovvero se

z̃ ≤ L(i) ≤ z (i)

si deduce che non esiste nell’insieme S (i) un punto in cui la funzione obiettivo abbia un valore
migliore di z̃. Un tale risultato ci permette di sospendere l’esame dell’insieme S (i) e di eliminarlo
dalla lista dei sottoproblemi da risolvere.
Per tornare all’esempio informale precedente, supponiamo che il preside di una facoltà
abbia comunicato che ha uno studente di età 17 anni e 3 mesi (ottimo corrente). Supponiamo
anche che il preside di un’altra facoltà, pur senza sapere esattamente qual è l’età esatta del
suo studente più giovane, sia riuscito ad avere la certezza, con mezzi solo a lui noti, che ogni
studente della sua facoltà non è più giovane di 18 anni (lower bound). È evidente che è inutile
fare lo sforzo di cercare di trovare l’età esatta del più giovane studente della sua facoltà, perché
comunque non sarà lo studente più giovane.
Evidentemente la soluzione del problema originario sarà tanto più efficiente quanto migliori
saranno i valori dei limiti inferiore (“lower bound”) ed a loro volta tali valori approssimeranno
tanto meglio il valore ottimo del sottoproblema quanto più efficace sarà stata la decomposizione
del problema originario. Di conseguenza l’efficienza della tecnica del BB dipende essenzialmente
dalla qualità delle due strategie che ne caratterizzano la struttura:
(a) Strategia di Soluzione, ovvero la strategia per il calcolo di un valore che approssimi per
eccesso (in un problema di massimo) il valore ottimo di un sottoproblema.

(b) Strategia di Separazione, ovvero la strategia per la scelta della partizione dell’insieme
delle soluzioni ammissibili di un sottoproblema.
È anche evidente che a seconda della strategia di soluzione e di quella di separazione adottate,
lo schema generale appena descritto si concretizzerà in un algoritmo differente.
Nel seguito di questo paragrafo descriveremo un possibile schema (semplificato) di BB che
corrisponde a uno degli schemi di BB più utilizzati nella pratica dando al contempo maggiore
sistematicità al metodo presentato.

188
Ricordiamo che vogliamo risolvere un problema di PLI della seguente forma
min cT x
Ax ≤ b
(P LI)
0≤x≤U
x intera
Questo problema, nel seguito sarà indicato anche come problema S (0) . Nel corso del metodo
considereremo dei sottoproblemi che hanno una struttura simile. Più precisamente consider-
eremo sottoproblemi S (i) con la seguente struttura.
min cT x
Ax ≤ b
(Si )
l(i) ≤ x ≤ u(i)
x intera,
dove i vettori n dimensionali l(i) e u(i) sono calcolati dall’algoritmo. Nel seguito indicheremo,
∗ ∗
inoltre, con x(i) e z (i) rispettivamente una soluzione ottima e il valore ottimo di Si .

La strategia che proponiamo per calcolare un limite inferiore L(i) di z (i) è la seguente:
dato il problema S (i) , risolvere il suo rilassamento lineare.
Indichiamo con x̄(i) la soluzione ottima del rilassamento lineare di S (i) e con L(i) il corrispon-
dente valore ottimo. Per quanto visto precedentemente il valore ottimo L(i) cosı̀ ottenuto

costituisce un limite inferiore di z (i) , inoltre il rilassamento lineare è facilmente risolubile con
il metodo del simplesso.
Dobbiamo ora descrivere un metodo per la separazione di un generico S (i) . Supponiamo di
aver risolto il rilassamento lineare di S (i) e sia x̄(i) la sua soluzione ottima e, come già detto, con

U (i) il corrispondente valore ottimo. Se x̄(i) ha tutte componenti intere allora x̄(i) = x(i) e il
problema non va separato. Se U (i) è minore o uguale all’ottimo corrente, cioè al valore massimo
della funzione obiettivo finora trovato, il problema non può dar origine ad una soluzione intera
migliore di quella corrente e non è necessario separarlo per trovare la sua soluzione ottima
intera. Supponiamo quindi che nessuno di questi due casi si sia verificato, e vediamo come
(i)
seperare questo sottoproblema. Sia x̄j una componente non intera del vettore x̄(i) (almeno
una ne deve esistere), αj la sua parte intera inferiore (ossia il più grande intero minore o uguale
∗ (i)
a x(i) j ) e βj la sua parte intera superiore (ossia il più piccolo intero maggiore o uguale a x̄j ).
Ovviamente valgono le seguenti relazioni:
αj < βj
βj − αj = 1.
Separiamo il problema S (i) nei seguenti due problemi
min cT x  (i)
 lj se i 6= j
Ax ≤ b
(l(i) )1j =
(l(i) )1 ≤ x ≤ u(i) 
x intera, βj se i = j
e
min cT x  (i)
 uj se i 6= j
Ax ≤ b
(u(i) )2j =
l(i) ≤ x ≤ (u(i) )2 
x intera, αj se i = j

189
Notiamo che è facile convincersi che l’unione delle regioni ammissibili di questi due problemi dà
la regione ammissibile del problema S (i) , di modo tale che questa è in effetti una separazione
del problema S (i) del tipo prima considerato.
Per concludere vogliamo osservare che dobbiamo considerare un altro caso che finora non
abbiamo menzionato. Nel risolvere il rilassamento del problema S (i) può accadere che la regione
ammissibile del rilassamento risulti vuota. Siccome la regione ammissibile del problema S (i)
è contenuta in quella del suo rilassamento, questo vuol dire che il problema S (i) ha regione
ammissibile vuota, e quindi non c’è bisogno di separarlo.
Abbiamo ora tutti gli elementi per descrivere il metodo di B& B proposto.

1. Inizializzazione

Inizialmente il problema S (0) = P LI è l’unico problema candidato. La procedura inizia con


l’applicazione della strategia di soluzione ad S (0) ottenendo un primo “lower bound” U (0) .
Inoltre, viene calcolato un “upper bound” z̃ per il problema S (0) , cioè un valore sicura-
mente non inferiore a quello z ∗ della soluzione ottima. Tale valore viene usualmente ottenuto
in corrispondenza ad una soluzione ammissibile x̃ facile da individuare (ad es. mediante una
semplice euristica). I valori x̃ e z̃ vengono successivamente aggiornati nel corso della procedura
non appena vengono individuate soluzioni ammissibili per il problema originario con un val-
ore più alto della funzione obiettivo. Se non è possibile individuare facilmente una soluzione
ammissibile si può porre z̃ = −∞, mentre x̃ viene, per il momento lasciato indefinito.
Se l’ottimo del problema rilassato x̄(0) appartiene all’insieme S (0) il problema è risolto.
Altrimenti è necessario applicare una strategia di separazione al problema S (0) ottenendo due
nuovi problemi candidati S (1) ed S (2) . Calcoliamo gli “lower bound” dei nuovi problemi otte-
nendo i valori U (1) ed U (2) . Se S (1) (S (2) ) è vuoto allora ad U (1) (U (2) ) viene convezionalmente
assegnato il valore −∞ (che vuol dire, in pratica, che il problema viene eliminato).
2. Passo generico dell’algoritmo.

Ad un generico passo dell’algoritmo supponiamo di avere la lista L = {S (1) , . . . , S (q) } dei


sottoproblemi che non sono ancora stati partizionati (problemi terminali). Supponiamo
inoltre che per ciascun sottoproblema S (i) sia stato calcolato l’“upper bound” U (i) . Illustriamo
ora brevemente le possibili azioni dell’algoritmo in un passo generico.
2.1. Chiusura dei sottoproblemi dominati dall’ottimo corrente
Se L(i) ≥ ze, detto (z (i) )∗ il valore ottimo della funzione obiettivo per il problema S (i) , abbiamo
che:

z (i) ≥ L(i) ≥ ze
e quindi che nessuna soluzione migliore di z̃ può essere contenuta in S (i) . In tal caso il problema
S (i) può essere eliminato della lista dei problemi candidati e viene definito chiuso. Possiamo
quindi immaginare che per tutti i problemi terminali superstiti (aperti) sia verificata la con-
dizione U (i) > z̃. Se tutti i problemi terminali sono chiusi, l’algoritmo termina e l’ottimo
corrente è una soluzione ottima del problema. Se, al contrario, la lista dei problemi terminali
contiene almeno un problema aperto, si procede nel modo seguente:

2.2. Scelta del problema aperto da esaminare


Esistono diverse strategie di scelta, tra queste le più usate sono le seguenti:

190
(1) Scelta del problema con il massimo “lower bound”. Tale scelta ha lo scopo di esaminare
per primi quei problemi in cui è più probabile trovare una soluzione ottima. Infatti, se
la strategia di soluzione produce buone soluzioni approssimate, a valori alti del “lower
bound” corrisponderanno alti valori delle soluzioni ottime dei sottoproblemi. Pertanto,
esaminando il sottoproblema aperto cui corrisponde il massimo valore del “upper bound”
si avrà una maggiore probabilità di individuare la soluzione ottima.
(2) Scelta con criterio di priorità LIFO (Last In First Out). In questo caso i sottoproblemi ter-
minali sono gestiti dalla procedura secondo lo schema a stack. In particolare, il problema
scelto è l’ultimo problema generato nella fase di separazione.
2.3. Esame di un sottoproblema terminale
Sia S (i) il problema scelto in accordo ad uno dei criteri presentati al punto 2.1 e sia L(i) l’“lower
bound”associato ad S (i) . Inoltre, sia x̄(i) l’ottimo del problema rilassato, cioè il punto che
soddisfa L(i) = cT x̄(i) . Abbiamo le seguenti possibilità:
2.3.1. x̄(i) appartiene ad S (i)
Se l’ottimo del problema rilassato x̄(i) appartiene ad S (i) abbiamo che esso è ottimo anche
per il sottoproblema S (i) . Inoltre poiché il problema S (i) è aperto abbiamo che L(i) > z̃ e
quindi che x̄(i) è una soluzione ammissibile del problema originario con valore della funzione
obiettivo (cT x̄(i) = L(i) ) migliore di z̃. Di conseguenza, possiamo porre x̃ = x̄(i) e z̃ = L(i) .
(aggiornamento dell’ottimo corrente). In ogni caso il problema S (i) viene chiuso e si inizia
il passo successivo.
2.3.2. x̄(i) non appartiene ad S (i)
In tal caso si deve applicare la strategia di separazione precedentemente illustrata, produrre i
due nuovi sottoproblemi ed aggiungerli alla lista dei problemi terminali, calcolare i loro “up-
per bound”, eliminare il problema S (i) dalla lista dei problemi terminali ed iniziare il passo
successivo. 2

ATTENZIONE: se invece di un problema di minimo si ha a che fare con un problema di


massimizzazione, cioè

max cT x
Ax ≤ b
0≤x≤U x intera
Il valore della soluzione del problema rilassato costituisce un “upper bound” U e risulta zI∗ ≤ U .
Una qualunque soluzione ammissbile intera costituisce invece il “lower bound”.

12.5.2 Esempi
Completiamo con degli esempi di applicazione del metodo appena descritto.

Esempio 1. Sia dato il seguente problema di programmazione lineare a numeri interi2 :


(S (0) ) max 3x1 + x2
2
Ricordiamo che con Z si indica l’insieme dei numeri interi

191
7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
1 ≤ x1 ≤ 4
0 ≤ x2 ≤ 3
x1 , x2 ∈ Z

Il problema è un problema di massimizzazione, quindi le soluzioni dei problemi rilassati


forniranno dei limiti superiori (”upper bounds”) al valore della soluzione ottima intera. Inoltre,
il valore della funzione obiettivo calcolato in corrispondenza ad una soluzione ammissibile fornirà
un limite inferiore (”lower bound”). La soluzione ottima x̄(0) del rilassamento lineare di S (0) è
x̄(0) = (7/3, 17/6)0 e fornisce un ”upper bound” pari a U (0) = z(x̄(0) ) = 59/6 = 9.8333 . . ..
Se effettuiamo un semplice arrotondamento all’intero inferiore delle componenti di x̄(0)
otteniamo il vettore x̃T = (2, 2). Poichè tale vettore è ammissibile per S (0) , possiamo porre
l’ottimo corrente pari ad x̃ ed il primo ”lower bound” al valore z(x̃) = 8.
Non è possibile chiudere il problema S (0) in quanto la soluzione x̄ non è intera e l’”upper
bound” è strettamente maggiore del ”lower bound”. Il problema viene quindi inserito nella lista
L dei problemi candidati.
Viene selezionato un problema in L = {S (0) }. In particolare, viene estratto dalla lista il
problema S (0) . Si procede quindi alla separazione di S (0) . Possiamo separare rispetto ad una
qualsiasi delle variabili non intere, per semplicità decidiamo di separare rispetto alla variabile
con indice più piccolo (x1 ). A tale scopo, aggiungiamo ai vincoli della formulazione di S (0) , i
due vincoli x1 ≥ 3 (x1 ≥ dx̄1 e3 ) e x1 ≤ 2 (x1 ≤ bx̄1 c4 ), ottenendo i due problemi seguenti :

(S (1) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
1 ≤ x1 ≤ 2
0 ≤ x2 ≤ 3
x1 , x2 ∈ Z

(S (2) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
3 ≤ x1 ≤ 4
0 ≤ x2 ≤ 3
x1 , x2 ∈ Z

3
Ricordiamo che dx̄1 e indica il più piccolo numero intero maggiore o uguale a x̄1
4
Ricordiamo che bx̄1 c indica il più grande numero intero minore o uguale a x̄1

192
Il rilassamento lineare del problema S (1) ha soluzione x̄(1) = (2, 5/2)0 di valore U (1) =
z(x̄ ) = 8.5. La soluzione del rilassamento lineare del problema S (2) è, invece, x̄(2) = (3, 1/2)0
(1)

di valore U (2) = z(x̄(2) ) = 9.5.


Entrambi i problemi non sono eliminabili e vengono quindi inseriti nella lista L.
Viene scelto un problema nella lista L = {S (1) , S (2) } dei problemi candidati. In particolare
esaminiamo il problema S 1
La prima componente di x̄(1) è intera mentre la seconda componente è frazionaria. Scegliamo
quindi la variabile x2 per effettuare la separazione. A tale scopo, aggiungiamo alla formulazione
di S (1) i due vincoli x2 ≤ 2 e x2 ≥ 3 . In tal modo, otteniamo o i due problemi seguenti :

(S (3) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
1 ≤ x1 ≤ 2
0 ≤ x2 ≤ 2
x1 , x2 ∈ Z

(S (4) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
1 ≤ x1 ≤ 2
3 ≤ x2 ≤ 3
x1 , x2 ∈ Z

La soluzione del rilassamento lineare del problema S (3) è x̄(3) = (2, 2)0 ed ha valore U (3) =
z(x̄ ) = 8. Il problema S (4) , invece, non ha soluzioni ammissibili. Di conseguenza, poniamo
(3)

U (4) = −∞.
È possibile chiudere sia il problema S (3) che il problema S (4) . Il primo in quanto la soluzione
del rilassamento lineare è intera, il secondo in quanto non ha soluzione ammissibili (ovvero
poichè U (4) < z̃). Nessuno dei due viene quindi inserito nella lista L.
Si osservi che, pur essendo x̄(3) una soluzione intera, non aggiorniamo l’ottimo corrente in
quanto x̃ = x̄(3) .
Estraiamo dalla lista L = {S (2) } il problema S (2) (unico problema rimasto) ed effettuiamo
la separazione rispetto alla variabile x(2) (infatti la seconda componente di x(2) è frazionaria).
Dobbiamo aggiungere alla formulazione di S (2) i due vincoli x2 ≤ 0 e x2 ≥ 3 . In tal modo,
otteniamo i due problemi seguenti :

(S (5) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1

193
3 ≤ x1 ≤ 4
0 ≤ x2 ≤ 0
x1 , x2 ∈ Z

(S (6) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
3 ≤ x1 ≤ 4
1 ≤ x2 ≤ 3
x1 , x2 ∈ Z

La soluzione del rilassamento lineare del problema S (5) è x̄(5) = (3.14 . . . , 0)0 ed ha val-
ore U (5) = z(x̄(5) ) = 9.428 . . .. Il problema S (6) , invece, non ha soluzioni ammissibili. Di
conseguenza, poniamo U (6) = −∞.
Il problema S (6) viene chiuso in quanto non ha soluzione ammissibili, il problema S (5) non
è eliminabile e va quindi inserito nella lista L. Infatti il suo valore ottimo è pari a 9.428 . . .,
poiché tale valore è migliore di quello della soluzione intera trovata (ossia 8), il problema non
è eliminabile (nella sua regione ammissibile potrebbe trovarsi una soluzione intera migliore di
quella corrente).
Nella lista L vi è ora solo il problema S 5 , che viene quindi scelto. Viene effettuata la
separazione rispetto alla variabile x1 . A tale scopo, si aggiungono alla formulazione di S (5) i
due vincoli x1 ≤ 2 e x1 ≥ 4, ottenendo i due problemi:

(S (7) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
3 ≤ x1 ≤ 3
0 ≤ x2 ≤ 0
x1 , x2 ∈ Z

(S (8) ) max 3x1 + x2


7x1 + 2x2 ≤ 22
−2x1 + 2x2 ≤ 1
4 ≤ x1 ≤ 4
0 ≤ x2 ≤ 0
x1 , x2 ∈ Z

194
La soluzione del rilassamento lineare del problema S (7) è x̄(7) = (3, 0)0 ed ha valore U (7) =
z(x̄ ) = 9. Il problema S (8) , invece, non ha soluzioni ammissibili. Di conseguenza, poniamo
(7)

U (8) = −∞.
I problemi S (7) e S (8) possono essere chiusi: il primo in quanto la soluzione ottenuta è
intera, il secondo in quanto non ha soluzione. La soluzione intera di S (7) è migliore di quella
corrente e quindi la soluzione corrente viene aggiornata (si pone x̂T = (3, 0)).
La lista L è ora vuota, il procedimento quindi termina. La soluzione ottima è data dalla
soluzione corrente, ossia dalla soluzione del problema S (7) :
I vari passi della procedura di soluzione possono essere schematizzati utilizzando il cosid-
detto Albero di Enumerazione riportato in figura 12.7. In tale albero i nodi indicano i problemi
mentre i rami stabiliscono le relazioni padre-figlio (generatore-generato) nel processo di gener-
azione.

1 2

3 4 5 6

7 8

Figura 12.7: Albero di enumerazione.

Esempio 2. Passiamo ora ad esaminare, più sinteticamente il secondo esempio. Sia dato il
seguente problema di programmazione lineare a numeri interi.

max x1 + x2
2x1 + 5x2 ≤ 30
4x1 − 3x2 ≤ 6
(S (0) )
0 ≤ x1
0 ≤ x2
x1 , x2 ∈ Z

Notiamo che in questo problema non sono esplicitamente presenti gli “upper bound” sule vari-
abili. Essendo comunque la regione ammissibile del problema rilassato limitato, non è comunque
necessario inserirli esplicitamente. È facile convincersi che nulla cambia nell’applicazione dell’algoritmo
e nella sua validità.

195
Poniamo inizialmente z̃ = −∞ e risolviamo il rilassamento lineare di S (0) . Si ottiene
114 60 54
U (0) = x(0) = ( , ).
13 13 13
Essendo U (0) > z̃ si separa rispetto alla variabile x1 . Si elimina S (0) dalla lista L, e vi si
aggiungono i due nuovi problemi S 1 e S 2 individuati dai seguenti vincoli aggiuntivi.
S1 : x1 ≤ 4
S2 : x1 ≥ 5.
Si avrà pertanto L = {S 1 , S 2 }.
Si sceglie S 1 da L e si risolve il suo rilassamento. Si ottiene
42 22
U1 = x̄1 = 4 x̄2 =
5 5
Essendo U 1 > z̃ si elimina S 1 da L e vi si aggiungono, invece altri due problemi, S 3 e S 4 ,
individuati dai seguenti vincoli aggiuntivi.
S3 : x1 ≤ 4 x2 ≤ 4
S4 : x1 ≤ 4 x2 ≥ 5.
Risulta pertanto L = {S 2 , S 3 , S 4 }.
Si sceglie S 3 da L e si risolve il suo rilassamento. Si ottiene
U3 = 8 x̄1 = 4 x̄2 = 4
Essendo U 3 > z̃ ed essendo intera la soluzione trovata, si pone
z̃ = U 3 = 8 x̃1 = x̄1 = 4 x̃2 = x̄2 = 4,
e si elimina il problema S 3 . Risulta a questo punto L = {S 2 , S 4 }.
Si sceglie S 4 da L e si risolve il suo rilassamento. Si ottiene
15 5
U4 = x̄1 = x̄2 = 5
2 2
Essendo U 4 < z̃ si chiude S 4 e la lista diventa L = {S 2 }.
Si sceglie S 2 dalla lista e si risolve il suo rilassamento. Si vede che non esistono soluzioni
ammisibili. Si chiude S 2 e la lista L è vuota. La soluzione corrente è la soluzione ottima.
z∗ = 8 x∗1 = 4 x∗2 = 4.

12.6 Il problema del Knapsack


Descriveremo ora in modo completo un algoritmo di ’Branch and Bound’ per la soluzione di un
problema di Knapsack. In particolare, descriveremo la procedura per individuare un “upper
bound” del problema e la strategia di separazione utilizzata. Il problema è il seguente:
max cT x
aT x ≤ b
xi ∈ {0, 1}, i = 1, . . . , n

196
dove a e c sono vettori in IRn a componenti non negative e b > 0 è un numero reale. Questo
problema ha l’interessante proprietà che la soluzione del suo rilassamento lineare può essere
ottenuta, senza usare il metodo del simplesso, nel modo seguente:
1. Si ordinano le variabili secondo i rapporti valore/ingombro decrescenti in modo tale che:
c1 c2 cn
≥ ≥ ... ≥
a1 a2 an

2. Si determina l’indice h ∈ {1, . . . , n} tale che:


h
X
ai ≤ b
i=1
h+1
X
ai > b
i=1

(ponendo h = 0 se a1 > b).

3. La soluzione del rilassamento lineare del problema di knapsack sarà il vettore x̄ cosı̀
definito:

x̄1 = . . . = x̄h = 1
x̄h+2 = . . . = x̄n = 0
Ph
(b − i=1 ai )
x̄h+1 =
ah+1

Esempio Nell’esempio, oltre alla strategia di calcolo del “upper bound” descritta nel §12.6,
useremo una tecnica di separazione binaria sulla variabile frazionaria e sceglieremo il problema
da esaminare in base alla strategia LIFO.

Esempio 12.6.1 Sia dato il seguente problema:

(S0 ) max 4x1 + 4x2 + 3x3 + x4


2x1 + 3x2 + 3x3 + 2x4 ≤ 7
x ∈ {0, 1}n

risolvere con il metodo del Branch and Bound.

Osserviamo innanzitutto che gli indici delle variabili soddisfano le condizioni di ordinamento
dei rapporti valore/ingombro.
1. Inizializzazione La soluzione ottima del rilassamento lineare è:

197
2
x̄0 = [1, 1, , 0]
3
Il valore corrispondente dell “upper bound” è U0 = 10. Una soluzione ammissibile (ma non
ottima) del problema è x̃ = [1, 1, 0, 0], ottenuta arrotondando all’intero inferiore le componenti
di x̄0 . Il suo valore (’lower bound’) è z̃ = 8 Poichè l’ottimo rilassato non è intero (e quindi
non appartiene a S0 = S) dobbiamo separare il problema S0 . Poichè la componente (x̄0 )3 è
frazionaria, scegliamo la variabile x3 e la fissiamo ad 1 e 0 ottenendo, rispettivamente, i problemi
S1 ed S2 , le cui formulazioni sono:

(S1 ) max 4x1 + 4x2 + 3x3 + x4


2x1 + 3x2 + 2x4 ≤ 4
x ∈ {0, 1}n , x3 = 1

(S2 ) max 4x1 + 4x2 + 3x3 + x4


2x1 + 3x2 + 2x4 ≤ 7
x ∈ {0, 1}n , x3 = 0

Calcoliamo, utilizzando la strategia sopra descritta, le soluzioni ottime dei problemi rilassati:
2
x̄1 = [1, , 1, 0], x̄2 = [1, 1, 0, 1]
3
I valori dei corrispondenti ’upper bounds’ saranno U1 = 9.6̄ ed U2 = 9. La lista dei problemi

terminali sarà L = {S1 , S2 }.


Passo 1.
(1a) Chiusura dei problemi terminali dominati dall’ottimo corrente Poichè U1 > z̃ e U2 > z̃
nessuno dei due problemi può essere chiuso.
(1b) Scelta del problema (aperto) da esaminare Si adotta una strategia LIFO. Viene scelto il
problema S2 .
(1c) Esame del problema scelto
Poichè x̄2 appartiene ad S2 (infatti è una soluzione intera) l’ottimo corrente viene aggiornato.
In particolare, si pone z̃ = U2 = 9 ed x̃ = x̄2 = [1, 1, 0, 1]. Il problema S2 viene poi rimosso
dalla lista dei problemi terminali che diviene L = {S1 }.
Passo 2.
(2a) Chiusura dei problemi terminali dominati dall’ottimo corrente.
Poichè U1 > z̃ l’unico problema nella lista non può essere chiuso.
(2b) Scelta del problema (aperto) da esaminare. Ovviamente S1 .

198
(2c) Esame del problema scelto
Poichè x̄1 non appartiene ad S1 (infatti è una soluzione non intera) l’ottimo corrente non viene
aggiornato. Di conseguenza, il problema S1 deve essere decomposto. Poichè la componente
(x̄1 )2 è frazionaria, scegliamo la variabile x2 e fissiamola a 0 ed 1 ottenendo i problemi S3 ed
S4 le cui formulazioni sono:

(S3 ) max 4x1 + 4x2 + 3x3 + x4


2x1 + 2x4 ≤ 4
x ∈ {0, 1}n , x3 = 1, x2 = 0

(S4 ) max 4x1 + 4x2 + 3x3 + x4


2x1 + 2x4 ≤ 1
x ∈ {0, 1}n , x3 = 1, x2 = 1

Calcoliamo le soluzioni ottime dei problemi rilassati:


1
x̄3 = [1, 0, 1, 1], x̄4 = [ , 1, 1, 0]
2

I valori dei corrispondenti “upper bound” saranno U3 = 8 ed U4 = 9. La lista dei problemi


terminali sarà L = {S3 , S4 }.
Passo 3.
(3a) Chiusura dei problemi terminali dominati dall’ottimo corrente.
Poichè Ui ≤ z̃ per i = 3, 4 entrambi iproblemi possono essere chiusi. Di conseguenza la soluzione
ottima è x̃ = [1, 1, 0, 1] di valore z̃ = 9.

Esempio 12.6.2 Risolvere il problema di knapsack dell’esercizio 12.6.1, utilizzando il metodo


del Branch and Bound utilizzando come strategia di scelta del problema da esaminare il criterio
del massimo upper bound.

199
Capitolo 13

Uso di Excel per l’analisi e


soluzione di Modelli di
Programmazione Matematica

13.1 Introduzione
La soluzione grafica di problemi di ottimizzazione che abbiamo visto nel Capitolo 3 può essere
utilizzata solo nel caso in cui il numero di variabili sia due. I problemi applicativi hanno normal-
mente più di due variabili. È necessario utilizzare sistemi di calcolo automatici per trattare sia
grandi quantità di dati che di operazioni logico-aritmetiche. Esistono molti software per risol-
vere problemi di Programmazione Matematica a diversi livelli di complessità. Alcuni prodotti
software integrano anche linguaggio di modellizzazione con il/i solutore/i in un unico pacchetto
commerciale. Si tratta di prodotti di ottimizzazione comprensivi di tutto l’ambiente di calcolo,
cosiddetti sistemi di modellizzazione ”stand-alone” che sono in grado di fornire l’interfaccia
completa tra i differenti livelli di formulazione, soluzione, e analisi della modellizzazione. I
sistemi di tipo stand-alone tendono ad essere i più vantaggiosi a livello di costruzione di pro-
totipo, quando il lavoro è incentrato sulla costruzione di un modello accettabile e nel dimostrare
che l’approccio è sufficientemente promettente per giustificare investimenti maggiori. In questo
modo però si incoraggia fortemente (quando non è obbligato) l’uso di un particolare solutore.
Quindi è una scelta ragionevole in situazioni in cui la velocità e la versatilità non sono le ques-
tioni più importanti. Questo è spesso il caso di sistemi altamente specializzati, in cui la qualità
dell’interfaccia è l’aspetto fondamentale e l’insieme di problemi che il solutore deve trattare
appartengono ad una classe relativamente stretta e ben definita.
Rientrano in questa categoria alcuni dei più elementari linguaggi di modellizzazione cosı̀ come
i prodotti di ottimizzazione inseriti in programmi di foglio elettronico (spreadsheet).
c
In questo capitolo utilizzeremo Microsoft°Office Excel 2003 e gli strumenti Scenario e Solutore
(http://www.solver.com/).
L’utilizzo di fogli elettronici per l’analisi e la soluzione di un problema di ottimizzazione
richiede alcuni passi fondamentali.
1. la creazione di un foglio elettronico che modelli il problema

200
2. identificare le variabili di decisione
3. identificare la funzione obiettivo e la cella che la contiene
4. rappresentare i vincoli e specificare le celle che li contengono
5. utilizzare il modello per analisi quantitativa.
Le celle di una tabella excel sono individuate dalla posizione di colonna (indicata da una
lettera dell’alfabeto) e di riga (un numero).

13.2 Uso di fogli elettronici per la descrizione di un mod-


ello matematico
Ci sono diversi modi di organizzare un foglio elettronico per rappresentare un modello di pro-
grammazione matematica. In generale però è consigliabile seguire uno stesso schema di base
che consente una immediata visualizzazione ed individuazione dei parametri e dei dati.
In particolare dividiamo la costruzione del foglio elettronico in quattro sezioni: Dati di
ingresso, Variabili di decisione, Funzione obiettivo, Vincoli.
A titolo esemplificativo, consideriamo il semplice modello di capital budgeting dell’esempio
1.4.1 del capitolo 1, la cui formulazione matematica è:

max (20x1 + 5x2 + 10x3 )


750x1 + 200x2 + 800x3 ≤ 1000
xi ∈ {0, 1} i = 1, 2, 3.

Inserimento dati di ingresso.


Si tratta di inserire in una tabella Excel i valori numerici che sono utilizzati nel modello.
I dati non devono essere posti necessariamente in una posizione particolare nel foglio excel, ma
una buona rappresentazione del modello divide il foglio di Dati dal foglio di Modello.
Nel seguito, i dati si trovano su un foglio specifico, ma potrebbero anche essere inseriti nello
stesso foglio in cui viene implementato il modello purché siano visibili e ben identificabili.
In figura 15.1 è riportato il file Excel relativo all’inserimento dei primi dati di Capital
Budgeting. Per ciascun progetto 1,2,3 sono riportati i valori di investimento (celle B3, C3, D3),
ovvero i valori dei coefficienti dei vincoli, e i guadagni (celle B4, C4, D4), ovvero i coefficienti
della funzione obiettivo.
Sono state incluse delle caselle di commento (le prime due righe e la prima colonna) che con-
sentono di identificare facilmente di che tipo di dato si tratta (investimento/guadagno relativo
al progetto 1/2/3).
Se cambiano i dati (costi, guadagni), è necessario modificare questa parte del file Excel.
È stato anche inserito il valore del dato relativo al budget (cella B6).

Foglio del Modello.


In figura 15.2 è riportato il file Excel relativo al modello matematico, che descriviamo in
dettaglio.

201
Figura 13.1: Dati relativi al problema di Capital Budgeting.

Celle variabili (Variabili di decisione). Le celle variabili rappresentano il valore at-


tuale delle variabili di decisione del modello. Al momento dell’utilizzo del solutore, queste
celle sono considerate come incognite e in output contengono il valore determinato dal solutore
(valore ottimo). Nel nostro esempio le variabili di decisione x1 , x2 , x3 sono assegnate alle celle
B3, C3, D3 del foglio Modello. È necessario assegnare un valore iniziale a queste celle per
poterle utilizzare. Nel nostro esempio x1 = 0=B3, x2 = 0=C3, x3 = 1=D3. Osserviamo che
nell’esempio di capital budgeting le variabili possono assumere solo valori interi (in particolare
0,1). In questa fase di rappresentazione del modello in una tabella excel, non è possibile dare
indicazioni di questo tipo.
È utile inserire delle celle di tipo descrittivo sopra le celle variabili. In questo caso, è stato
indicato Progetto 1,Progetto 2, Progetto 3. Inoltre le celle variabili sono evidenziate con un colore
azzurro (vedi figura 15.2). Il colore non ha alcun ruolo nel foglio elettronico se non stilistico.
Evidenziare le celle (usando un colore diverso o con una linea di contorno più evidente), rende
il foglio elettronico più semplice da leggere.

Celle vincoli. Si tratta di inserire in alcune celle le formule che definiscono il “left hand side”
(l.h.s.) dei vincoli. Il right hand side =r.h.s del vincolo DEVE essere un valore numerico
e deve essere contenuto in un’altra cella.
Nel nostro esempio c’è un unico vincolo di budget. Il valore del l.h.s., cioè la formula
8x1 + 6x2 + 5x3 , è inserito in cella B5.
Il valore del l.h.s deve essere confrontato con il valore del r.h.s. è utile porre questi due
valori “vicini”. La posizione “naturale” del valore di budget è nella cella D5 separata dalla B5
da una cella intermedia C5 che contiene il simbolo ≤. Tale simbolo non ha alcuna funzione di

202
controllo, ma serve solo a rendere più leggibile il file.
. Il valore in B5 è calcolato inserendo una funzione Excel. Si è utilizzata la funzione
=MATR.SOMMA.PRODOTTO($B$3:$D$3;DATI!B3:D3)1 .
Si osservi che la funzione utilizza i valori delle celle nell’intervallo B3:D3 del foglio Modello
e del foglio Dati. L’utilizzo del simbolo $ utilizzando per indirizzare le celle variabili, ha una
funzione utile quando è necessario ”replicare” la funzione e verrà spiegato più avanti.
Al solo scopo di mostrare alcune funzioni di Excel è stata inserita nella cella E5 una funzione
logica che indica se il vincolo è soddisfato o violato. In particolare, si utilizza la funzione logica
“SE”, che restituisce restituisce il valore “ammissibile” (vero) o “non ammissibile” (falso) in
base alla differenza tra il valore delle celle D5 (budget) e B5 (spesa effettiva). La sintassi è:
=SE(D5-B5 >= 0;"AMMISSIBILE";"NON AMMISSIBILE")
Questa opzione può essere utile per una immediata visualizzazione dei risultati in un analisi
di scenario. Prestare attenzione alla precisione con cui viene effettuata (la visualizzazione del
contenuto della cella può avere una rappresentazione diversa da quella utilizzata per effettuare
le operazioni).

Cella obiettivo. La cella obiettivo contiene il valore della funzione obiettivo. Anche in
questo caso è opportuno inserire delle celle di commento che aiutino nella visualizzazione.
Nel nostro esempio si tratta di assegnare la formula 20x1 + 5x2 + 10x3 . Il valore della funzione
obiettivo è assegnato alla cella B7 ed è dato dalla formula
B7= MATR.SOMMA.PRODOTTO($B$3:$D$3;DATI!B4:D4)
Si osservi che, possono essere modificati i valori dei dati, ottenendo immediatamente il
nuovo valore del guadagno e dell’investimento relativi alla scelta attuale delle variabili.

13.3 Analisi di scenario o “What if..?” analisi


L’uso di Excel come foglio elettronico per una descrizione del modello, può essere utilizzata per
verificare l’effetto della variazione di alcuni valori utilizzati nel modello sulle variabili di output.
In molti casi può essere appropriato considerare gli effetti della variazione di un insieme di valori
che insieme rappresentano un’opzione alternativa circa le possibili decisioni future.
Questo tipo di approccio è detto “What if..?” (letteralmente “Che succede se...?”) e la sua
flessibilità costituisce l’aspetto che rende l’uso di fogli elettronici un utile supporto alle decisioni.
Non si tratta di utilizzare strumenti di ottimizzazione, ma solo di analizzare utilizzando uno
strumento analitico l’effetto di alcune decisioni consentendo eventualmente di scegliere tra le
diverse opzioni quella ritenuta piuù appropriata, ma senza alcuna garanzia che si tratti della
scelta ottima né di una sua approssimazione.
c
Microsoft°Office Excel 2003 include nel Menuú Strumenti il tool Scenari che consente di effet-
tuare un’analisi di tipo “What If” memorizzando in modo permanente le combinazioni di dati
1
La sintassi della funzione è =MATR.SOMMA.PRODOTTO(Blocco1,Blocco2) e moltiplica ogni
cella del Blocco1 e del Blocco2 e somma il risultato. I blocchi devono avere la stessa dimensione, cioè
stesso numero di righe e stesso numero di colonne. Nella versione inglese, la funzione è =SUMPROD-
UCT(Block1,Block2).

203
Figura 13.2: Tabella Excel relativa al problema di Capital Budgeting.

di input che sono state utilizzate. Supporta anche la generazione automatica di un Riepilogo
Scenari che realizza un confronto affiancando i risultati.[4]
Il tool Scenari presenta alcune limitazioni pratiche. In particolare i valori delle variabili di
input devono essere inserite nel box di dialogo per gli input di scenario (vedi la figura 15.5),
violando una delle buone regole di utilizzo di modelli per cui i dati devono essere SEPARATI dal
modello. Un altro aspetto da sottolineare è l’utilizzo del termine Celle Variabili per definire le
celle per cui l’utente fornisce un valore e che dunque giocano effettivamente il ruolo di parametri.
Vedremo più avanti che lo stesso nome Celle Variabili è utilizzato nel Solutore per indicare le
celle che sono cambiate dal tool stesso.

Esempio di Capital Budgeting La tabella costruita fino a questo punto consente di


fare semplici analisi di possibili scenari, modificando manualmente il valore delle variabili di
decisione nel foglio Modello (celle B3, C3, D3) oppure della variabili di dati nel foglio Dati (celle
B3±D4, B6).
Nel primo caso, modifica delle variabili di decisione, si tratta di una formalizzazione del modello
esaustivo descritto nell’esempio 1.4.1. È ovvio che i possibili scenari possono essere “troppi” per
poterli analizzare tutti anche nel caso in cui siano finiti come nell’esempio di Capital Budgeting
che stiamo analizzando.
In figura 15.4 è riportato il foglio Riepilogo scenari generato da Excel. Sono stati generati
3 diversi scenari al variare dei valori delle variabili e come valori di output sono stati scelti

204
Figura 13.3: Costruzione di uno scenario per il problema di Capital Budgeting.

l’investimento e il profitto.
Volendo utilizzare il tool Scenari per un’analisi della variazione della soluzione al variare
dei dati e utilizzare il Riepilogo Scenari, è necessario prevedere un foglio che contenga dati e
modello contemporaneamente. In queste dispense si preferisce rinunciare a questa possibilità e
mantenere separati Dati e Modello.

13.4 Uso di Excel-Solver per la soluzione del modello matem-


atico
Microsoft Excel dispone di una funzione tra i Componenti aggiuntivi (Add-In) che è chiamata
“Solutore” (Solver) che consente di determinare la soluzione ottima di problemi di Program-
mazione matematica (PL, PLI, e alcuni classi particolari di PNL). La procedura di ottimiz-
zazione utilizzata per la PL è il metodo del simplesso. Non entreremo affatto nel merito delle
procedure utilizzate per la PNL e la PLI.
[5]

Installazione Solutore. Il solutore è parte integrante di Excel. Si trova la voce Solutore


sotto il menù Strumenti (Tools). Nel caso la voce “Solutore” non compaia nel menù “Stru-
menti”, deve essere installato procedendo come segue (vedi anche figura 15.16 a fine capitolo):

205
Figura 13.4: Costruzione di uno scenario per il problema di Capital Budgeting.

1. dalla voce del menù Strumenti selezionare la voce Componenti aggiuntivi


2. selezionare Componente aggiuntivo Solutore e cliccare OK.
Nel caso la voce “Componente aggiuntivo Solutore” non compaia nemmeno sotto la voce “Com-
ponenti aggiuntivi”, significa che Excel non è stato installato completamente ed è necessario
avere il programma di setup di Excel.
Per installazione e l’utilizzo di Excel Office 2007, si veda [6].

Impostazione del modello per il Solutore. Dalla voce Strumenti selezionare Solutore.
A questo punto appare la finestra Parametri del Risolutore illustrata in Figura 15.6. Si
tratta della finestra principale del Risolutore ed è utilizzata per identificare gli elementi che
costituiscono il modello. Nella parte in alto a sinistra della finestra compare l’etichetta Imposta
cella obiettivo e una cella che deve contenere l’indirizzo della cella della funzione obiettivo.
Questa cella può essere “editata” oppure riempita con il corretto valore semplicemente cliccando
sulla cella corrispondente sul foglio elettronico (N.B. La finestra “Parametri del Risolutore” può
essere spostata in modo da rendere visibili le celle del file).
Una volta impostata la cella obiettivo è necessario specificare se si tratta di un problema di
massimizzazione o di minimizzazione, selezionando il tasto Max o Min nella riga successiva.
Le variabili di decisione devono essere specificate indicando nella cella etichettata con Cam-
biando le celle (By Changing Cells) l’indirizzo delle celle variabili. Anche in questo caso è

206
Figura 13.5: Costruzione di uno scenario per il problema di Capital Budgeting.

possibile scrivere direttamente nella cella o riempirla selezionando sul foglio elettronico le celle
variabili. Un intervallo di celle può essere specificato, scrivendo il valore della prima ed ultima
cella separati da ’due punti’. Ulteriori variabili non contigue possono essere aggiunte separate
da ’virgola’.
I vincoli devono essere elencati nella sottofinestra Vincoli: (Subject to the Constraints). Se-
lezionando il tasto Aggiungi(Add) compare la finestra Aggiungi vincolo rappresentata in figura
15.7.
I vincoli possono essere inseriti uno alla volta. Questo procedimento può però essere molto
lungo nel caso di problemi con molti vincoli. in alternativa si possono inserire più vincoli
insieme se sono adiacenti e se hanno lo stesso vincolo relazionale (cioè ≤, ≥ oppure =). Il l.h.s
del vincolo deve essere inserito nella cella con etichetta Riferimento:. Successivamente cliccando
il tasto ≤ si apre una tendina che consente di specificare il tipo di vincolo. Il r.h.s. dei vincoli
deve essere inserito nella finestra con etichetta Vincolo:. Si può inserire il valore della cella
appropriata semplicemente “cliccando” sulla cella corrispondente nel foglio Excel.
N.B. Il r.h.s. del vincolo immesso nel solutore DEVE esser un valore numerico e quindi non
deve contenere funzioni. Tipicamente se erroneamente si inserisce una funzione nel r.h.s., excel
Solver interpreta il modello come Non Lineare e applica procedure di ottimizzazione diverse dal
simplesso non arrivando a convergere al minimo.
Tra le possibili tipologie di vincoli compaiono anche le opzioni int e bin. Servono rispettivamente
a specificare che le variabili possono assumere solo valori interi o binari. In questo caso nel

207
Seleziona la funzione max o min Specifica la cella che
come richiesto dal problema contiene il valore della Clicca qui per
funzione obiettivo risolvere il modello

Clicca qui per


uscire senza
risolvere il modello

Clicca qui
per specificare
il tipo di modello
e I parametri del
risolutore

Seleziona un vincolo e
In quest’area sono elencati Indica le celle che
clicca qui per modificarlo
tutti i vincoli del modello contengono le variabili

Clicca qui per aggiungere Seleziona un vincolo e


un nuovo vincolo clicca qui per eliminarlo

Figura 13.6: Finestra Parametri del Risolutore.

campo Riferimento: devono essere inserite le variabili interessate, mentre il campo Vincolo:
rimane vuoto. Nel nostro esempio le variabili sono binarie; questo vincolo può essere specificato
in modo diretto indicando che le celle B7,C7,D7 sono binarie, oppure imponendo alle variabili
la coppia di vincoli B7,C7,D7≥ 0, B7,C7,D7≤ 1 e specificando che si tratta di variabili intere.
In Figura 15.8 è illustrata questa procedura. Notiamo che i vincoli di non negatività possono
anche essere omessi in questa fase di specifica del modello; in questo caso devono però essere
specificati tra le Opzioni del Solutore (vedi paragrafo successivo).
Prima della soluzione del modello è necessario selezionare il tasto Opzioni sulla destra della
finestra “Parametri del Risolutore”. Nel caso si stia risolvendo un problema di Programmazione
Lineare (o di Programmazione Lineare Intera) è necessario selezionare l’opzione Presupponi il
modello lineare nella finestra “Opzioni del Risolutore”. È anche possibile specificare qui che
le variabili sono non negative, se non è già stato specificato esplicitamente tra i vincoli del
modello, selezionando l’opzione Presupponi non negativo. Vedi la Figura 15.8 per i dettagli.
A questo punto, uscendo dalla finestra con il tasto OK, l’attuale impostazione delle opzioni del
Solutore è salvata insieme con il foglio Excel e ne diventa parte integrante.

13.5 Soluzione di un modello di PL o PLI.


Una volta definiti i parametri del Risolutore e settati i valori nelle Opzioni, si può tentare di
risolvere il problema pigiando il tasto Risolvi (Solve). Quando il Solutore ha terminato il calcolo
della soluzione ottima, compare la finestra Risultati del Solutore rappresentata in Figura 15.9.

Leggere i risultati di ottimizzazione Il messaggio in alto indica se il solutore è stato

208
Clicca qui per selezionare
l’espressione logica appropriata Specifica la/e cella/e che
contengono il r.h.s. del/dei
Specifica la/e cella/e che vincolo/i
contengono il l.h.s. del/dei
vincolo/i

Microsoft Excel
Clicca qui per definire l’ultimo Help system
vincolo e ritornare alla finestra
“Parametri del Risolutore” Clicca qui per tornare
alla finestra “Parametri
Clicca qui per definire tutti eccetto
del Risolutore” senza
l’ultimo vincolo e ritornare alla
aggiungere vincoli
Finestra “Parametri del Risolutore”

Figura 13.7: Finestra Aggiungi Vincolo.

in grado o meno di determinare la soluzione ottima del modello. Qualora non sia stato possibile
determinare la soluzione ottima, è possibile cambiare alcune delle opzioni nella finestra Opzioni
del Solutore per cercare di migliorare le prestazioni dell’algoritmo. In particolare, si possono
cambiare i valori di tempo massimo, iterazioni, approssimazione, tolleranza, convergenza che
stabiliscono i termini per cui l’algoritmo utilizzato dal Solutore si ferma.
Cliccando il tasto OK, si torna al foglio Excel. Si verifica che il valore di alcune celle è stato
modificato. In particolare le celle di decisione contengono il valore della soluzione (ottima)
determinata dal Solutore, e la cella obiettivo contiene il corrispondente valore della funzione
obiettivo. Anche il valore del l.h.s dei vincoli è calcolato utilizzando il valore corrente delle
variabili di decisione.
Cambiando i dati del modello, la soluzione ottima non viene automaticamente aggiornata. È
quindi necessario far risolvere nuovamente il problema.
La tabella Excel per il problema di capital Budgeting risolto è riportata in Figura 15.10.
Osserviamo che abbiamo risolto un problema di PLI. Excel-Solver è in grado di risolvere
problemi di PLI di piccole dimensioni. Quando il numero di variabili è troppo alto, la determi-
nazione della soluzione ottima, può richiedere troppo tempo o non convergere affatto.

13.6 Ulteriori informazioni fornite dal Solutore


Tutti i software di PL forniscono un numero di informazioni aggiuntive oltre al valore ottimo

209
Parametri
per algoritmo

m
Seleziona questa
opzione se le funzioni
che definiscono vincoli
e obiettivo sono lineari
Seleziona questa opzione se le variabili Parametri per
Sono vincolate ad essere non negative e modelli non lineari
non e` gia` stato specificato nei vincoli

Figura 13.8: Opzioni del risolutore.

delle variabili di decisione e della funzione obiettivo.


Il Solver di Microsoft Excel produce tre fogli opzionali che sono: Rapporto valori, Rapporto
sensibilità e Rapporto limiti. Da notare che il Rapporto sensibilità e il Rapporto limiti sono
privi di significato per problemi a variabili intere, come sarà chiaro più avanti. Per questo
motivo, illustreremo i risultati dei Rapporti non più per il problema di Capital budgeting, ma
per il problema di Programmazione Lineare di allocazione ottima descritto nel Paragrafo 2.4.1.
Il modello matematico è
max 7x1 + 10x2
x1 + x2 ≤ 750
x1 + 2x2 ≤ 1000 (13.1)
x2 ≤ 400
x1 ≥ 0, x2 ≥ 0
relativo all’allocazione ottima di due risorse e la sua soluzione con metodo grafico è stata
determinata nel’Esempio 4.3.4. Una possibile rappresentazione in una tabella Excel è riportata
in 15.11.
Impostando il modello nel solutore si determina la soluzione ottima.
Nella tabella Excel, i valori iniziali delle celle variabili sono stati posti a (5, 6)T e la soluzione
ottima è x∗ (500, 250)T .
I tre Rapporti possono essere richiesti una volta che il Solutore ha trovato la soluzione ottima
del problema di PL. La richiesta deve essere fatta dalla finestra Risultato del Solutore (vedi
Figura 15.9), selezionando nella parte in altro a destra il rapporto che si desidera generare.

210
Selezionare il rapporto
Questo messaggio specifica se il Solutore che si desidera generare
ha trovato o no la soluzione ottima

Annulla il risultato del Solutore e


ripristina i valori originali nel foglio Excel
Questo bottone specifica al Solutore
se deve o non memorizzare il valore Torna al
ottimo delle variabili e generare foglio Excel
i rapporti selezionati nella finestra
in alto a destra

Figura 13.9: Finestra Risultato del Solutore.

Rapporto valori
Il Rapporto valori per il problema di Allocazione ottima (15.1) è riportato in figura 15.11.
Il Rapporto valori è diviso in tre sezioni: funzione obiettivo, celle variabili, vincoli. Per
quanto riguarda le prime sue sezioni, sono riportati i valori iniziali e i valori ottenuti dal Solutore.
Nella sezione dedicata ai vincoli, per ogni vincolo oltre al valore del l.h.s. e alla relativa formula
(in formato excel) fornisce indicazioni sullo stato. In particolare lo stato di un vincolo può
essere Vincolante o Non Vincolante. Si intende che il vincolo è rispettivamente attivo (ovvero
soddisfatto all’uguaglianza) o non attivo (ovvero soddisfatto con la disuguaglianza stretta) nella
soluzione ottima determinata dal Solutore. L’ultima colonna della sezione dedicata ai vincoli
Tolleranza è la differenza (slack) tra il valore del l.h.s e il valore del r.h.s.. Questa informazione
è di interesse quando i vincoli si riferiscono ad una risorsa limitata (come nel caso dell’esempio
di allocazione ottima delle risorse). In questo caso infatti la Tolleranza indica quanta della
risorsa disponibile non è stata utilizzata. Nell’esempio 15.1, all’ottimo sono attivi i vincoli
x1 + x2 ≤ 750, x1 + 2x2 ≤ 1000, mentre il vincolo x2 ≤ 400 relativo alla disponibilità di
preparato 3 è non attivo. Il valore della Tolleranza=150 che è la differenza tra la disponibilità
di preparato 3 (=400) e la quantità utilizzata (=250). È ovvio che la soluzione ottima del
problema (15.1) rimane invariata se la quantità disponibile di preparato 3 viene aumentata o
ridotta fino al valore 250.

Rapporto sensibilità e prezzi ombra L’analisi di senibilità si occupa di valutare come


la soluzione ottima di un problema di PL cambia al variare dei dati che definiscono l’istanza

211
Figura 13.10: Risultato del Solutore per il problema di Capital budgeting.

del problema sotto studio. Abbiamo affrontato questo problema nel paragrafo 11.3.5. Qui ci
limitiamo a descrivere il foglio prodotto dal Solver di Microsoft Excel.
Il Rapporto sensibilità è generato da Excel su richiesta. Il file generato per il problema di
allocazione ottima di risorse in § 2.4.1 è in figura 15.14.
Il rapporto è diviso in due parti. Nella parte superiore per ogni cella variabile è riportato il
valor e della soluzione ottima. Se una variabile è nulla, significa che non è vantaggioso produrla.
La colonna Costo ridotto di questa attività indica quanto maggiore dovrebbe essere il profitto
per unità relativo a questa variabile affinché sia inserita nella soluzione ottima ad un valore non
nullo. Se il costo ridotto relativo alla variabile xi è negativo pari a −γi , questo significa che il
profitto relativo a quella variabile deve aumentare da ci (valore indicato in tabella nella colonna
Coefficiente oggettivo) a ci + γi perché esista una soluzione ottima con xi > 0. Le colonne
aumento e decremento ammissibile corrispondono alla variazione in aumento o diminuzione per
ci per cui la soluzione rimane ottima.
D’atra parte se una variabile è già positiva all’ottimo, le colonne Incremento/Decremento con-
sentito indicano quanto deve variare in più o in meno, il profitto relativo a quella cella variabile
affinché la soluzione data non sia più ottima.
Ad esempio nel problema di allocazione ottima di risorse in § 2.4.1, la cella variabile $B$9 che
corrisponde alla produzione di Colorante di tipo 1, l’attuale coefficiente della funzione obiettivo
è 7, mentre Incremento e Decremento consentiti sono rispettivamente 3 e 2. Questo significa che
se il coefficiente c1 della funzione obiettivo varia nell’intervallo [5, 10] i cui estremi corrispondono

212
Figura 13.11: Tabella Excel relativa al problema di allocazione di risorse.

a 7 − 2 e 7 + 3, la soluzione ottima rimane invariata. Se invece il coefficiente c1 viene modificato


ad un valore al di fuori dell’intervallo [5, 10] la soluzione ottima cambia. Per sapere come cambia
la soluzione è necessario risolvere nuovamente il modello con il Solutore.
Il valore dell’Incremento e Decremento consentiti può essere anche pari a 1.E + 30 (= 1030 )
intendendo in questo modo una valore grande a piacere. Si intende che il valore di profitto
unitario puàumentare o diminuire senza limiti e la soluzione ottima non cambierà.
Nella parte inferiore del Rapporto di sensibilità, ci sono tante righe quanti sono i vincoli (esclusi
eventuali vincoli di limitazione inferiore e superiore delle variabili e in vincoli di non negatività).
Per ogni vincolo nella colonna Valore finale è riportato il valore del l.h.s nella soluzione ottima,
e il valore del r.h.s. nella colonna Vincolo a destra. Naturalmente se i valori del l.h.s. e r.h.s.
coincidono significa che il vincolo è attivo nella soluzione ottima (vedi anche il Rapporto Valori).
Un vincolo attivo sta ad indicare una risorsa utilizzata completamente, fino al limite massimo
della sua disponibilità. Per queste risorse si può valutare se e quando può essere conveniente
acquisire una maggiore quantità di risorsa. La colonna Prezzo ombra indica i valori dei prezzi
ombra relativi a quella risorsa (vedi anche il paragrafo 11.3.5). Nella tabella in figura 15.14
relativa al problema di allocazione ottima di risorse § 2.4.1, il prezzo ombra relativo al primo
vincolo (corrispondente alla risorsa ”Preparato 1“) è 4. Questo significa che ciascuna unità
aggiuntiva di ”Preparato 1“ al di sopra delle 750 già disponibili consente di aggiungere 4 al
profitto totale. Naturalmente questa analisi è valida solo entro certi limiti espressi nelle colonne
Incremento consentito e Decremento consentito. Nel caso del ”Preparato 1“ questi limiti sono

213
Microsoft Excel 10.0 Rapporto valori
Foglio di lavoro: [allocazione.xls]Allocazione ottima di risorse
Data di creazione: 28/04/2004 16.59.50

Cella obiettivo (Max)


Cella Nome Valori originali Valore finale
$B$19 profitto max 95 6000

Celle variabili
Cella Nome Valori originali Valore finale
$B$9 variabili di decisione colorante 1 5 500
$C$9 variabili di decisione colorante 2 6 250

Vincoli
Cella Nome Valore della cella Formula Stato Tolleranza
$B$14 preparato 1 utilizzato 750 $B$14<=$D$14 Vincolante 0
$B$15 preparato 2 utilizzato 1000 $B$15<=$D$15 Vincolante 0
$B$16 preparato 3 utilizzato 250 $B$16<=$D$16 Non vincolante 150

Figura 13.12: Rapporto Valori per il problema di allocazione ottima di risorse in § 2.4.1.

250 e 150 rispettivamente. Questo significa che ogni unità aggiunta fino al massimo di 250
produce un incremento del profitto di 4 per unità, e ogni unità sottratta fino ad un massimo
di 150 produce una diminuzione di profitto di 4 per unità. Al di fuori di questo range non è
possibile utilizzare i prezzi ombra per prevedere cosa succede. L’unico modo per verificare come
si modifica la soluzione è di far risolvere nuovamente il modello con i nuovi dati.
L’analisi dei prezzi ombra è identica per ciascun vincolo attivo. Per i vincoli non attivi il
valore del prezzo ombra è ovviamente nullo. Questo è sensato dal punto di vista economico;
difatti poiché la risorsa non è stata utilizzata completamente (è inn eccesso) non è conveniente
acquisire una maggiore quantità. IN questo caso l’Incremento consentito è infinito, perché il
prezzo ombra rimane nullo qualunque sia la quanità aggiuntiva. Il decremento consentito è però
limitato (nel nostro esempio a 150), perché un’eccessiva riduzione della risorsa può portarla ad
essere vincolante. Il decremento massimo consentito è pari esattamente al valore di Tolleranza
relativo al vincolo riportato nel Rapporto Valori.
È importante ricordare che nell’analisi che abbiamo fatto, è stato modificato un solo input alla
volta.Per sapere cosa succede modificando più input alla volta è necessario utilizzare il Solutore.

214
550
aumento di P3 a 550

400 400
x* diminuzione di P3 a 250
x*=(500,250)
250

(a) Aumento di risorsa (b) Diminuzione di risorsa


Preparato 3 fino a 550 Preparato 3 fino a 250

Figura 13.13: Interpretazione grafica del cambiamento del valore della risorsa “prepapato 3”
del problema in § 2.4.1.

Linee guida nell’uso del Rapporto di sensibilità

1. Nella sezione relativa alle Celle variabili se una variabile è attualmente nulla, il suo costo
ridotto indica quanto più “vantaggiosa” (ad esempio minor costo o maggior profitto) deve
essere il suo coefficiente nella funzione obiettivo in modo che tale variabile risulti positiva
nella soluzione ottima.
2. Nella sezione relativa alle Celle variabili se sono presenti dei vincoli di limitazione supe-
riore o inferiore su una variabile, il suo costo ridotto indica quanto più “svantaggiosa”
(ad esempio maggior costo o minor profitto) deve essere il suo coefficiente nella funzione
obiettivo in modo che il valore di tale variabile sia diminuito.
3. Nella sezione relativa ai Vincoli, il valore del prezzo ombra indica di quanto aumenterebbe
il valore della funzione obiettivo (per un problema di massimizzazione) per un incremento
unitario del r.h.s. del vincolo corrispondente.

Rapporto limiti

215
Microsoft Excel 10.0 Rapporto sensibilità
Foglio di lavoro: [allocazione.xls]Allocazione ottima di risorse
Data di creazione: 28/04/2004 16.59.50

Celle variabili
Valore ridotto oggettivo consentito consentito
Cella Nome finale Costo Coefficiente Incremento Decremento
$B$9 variabili di decisione colorante 1 500 0 7 3 2
$C$9 variabili di decisione colorante 2 250 0 10 4 3

Vincoli
Valore ombra Vincolo consentito consentito
Cella Nome finale Prezzo a destra Incremento Decremento
$B$14 preparato 1 utilizzato 750 4 750 250 150
$B$15 preparato 2 utilizzato 1000 3 1000 150 250
$B$16 preparato 3 utilizzato 250 0 400 1E+30 150

Figura 13.14: Rapporto Sensibilità per il problema di allocazione ottima di risorse in § 2.4.1.

Il Rapporto limiti produce informazioni poco interessanti già presenti negli altri Rapporti.
Non verranno discusse affatto.

216
Microsoft Excel 10.0 Rapporto limiti
Foglio di lavoro: [allocazione.xls]Rapporto limiti 1
Data di creazione: 28/04/2004 16.59.50

Obiettivo
Cella Nome Valore
$B$19 profitto max 6000

Variabile Limite Risultato Limite Risultato


Cella Nome Valore inferiore obiettivo superiore obiettivo
$B$9 variabili di decisione colorante 1 500 0 2500 500 6000
$C$9 variabili di decisione colorante 2 250 0 3500 249,9999999 5999,999999

Figura 13.15: Rapporto Limiti per il problema di allocazione ottima di risorse in § 2.4.1.

217
Figura 13.16: Installazione del solutore in Excel.

218
Appendice A

Richiami di Analisi e geometria

A.1 Richiami sulla differenziazione in Rn


Richiamiamo alcuni concetti essenziali sulla differenziazione delle funzioni definite su Rn , la cui
conoscenza è richiesta nello studio dei problemi di ottimizzazione di tipo differenziabile. Nel
seguito supponiamo, per semplicità, che f sia una funzione definita su tutto Rn ; è immediato
tuttavia estendere le definizioni qui riportate al caso in cui x appartiene ad un insieme aperto
D ⊆ Rn .

A.1.1 Derivate del primo ordine di una funzione reale


Un qualsiasi vettore assegnato d ∈ Rn non nullo definisce una direzione in Rn . Una prima
nozione di derivata che si può introdurre è quella di derivata direzionale.
Definizione A.1.1 (Derivata direzionale)
Sia f : Rn → R. Si dice che f ammette derivata direzionale Df (x, d) nel punto x ∈ Rn lungo
la direzione d ∈ Rn se esiste finito il limite
f (x + td) − f (x)
lim+ := Df (x, d).
t→0 t
Se consideriamo f come funzione di una sola variabile xj , supponendo fissate tutte le altre
componenti possiamo introdurre il concetto di derivata parziale rispetto a xj .
Definizione A.1.2 (Derivata parziale)
Sia f : Rn → R. Si dice che f ammette derivata parziale ∂f (x)/∂xj nel punto x ∈ Rn rispetto
alla variabile xj se esiste finito il limite
f (x1 , . . . , xj + t, . . . , xn ) − f (x1 , . . . , xj , . . . , xn ) ∂f (x)
lim := .
t→0 t ∂xj
L’esistenza della derivata parziale ∂f (x)/∂xj nel punto x implica, ovviamente, che esistano e
coincidano le derivate direzionali lungo le direzioni ej e −ej .
Se f ammette derivate parziali rispetto a tutte le componenti possiamo definire il gradiente di
f nel punto x.

219
Definizione A.1.3 (Gradiente)
Sia f : Rn → R ed x ∈ Rn . Se esistono le derivate parziali prime di f in x definiamo gradiente
di f in x il vettore ∇f (x) ∈ Rn
 
∂f (x)
 ∂x1 
 
 
∇f (x) := 
 . . . .

 
 ∂f (x) 
∂xn
A differenza di quanto avviene sulla retta reale, nel caso di Rn l’ esistenza del gradiente non
consente, in generale, di poter approssimare, con la precisione voluta, il valore di f nell’intorno
di x con una funzione lineare dell’incremento. Una tale possibilità è legata ad una nozione più
forte di differenziabilità, che non riportiamo qui.
È da notare che la sola esistenza di ∇f non implica, in generale, la proprietà di differen-
ziabilità. Si dimostra, tuttavia, che se ∇f (x) esiste ed è continuo rispetto ad x, allora f è
differenziabile in x. (La continuità del gradiente è una condizione sufficiente per la differenzia-
bilità in senso forte.)
Dal teorema precedente segue che se ∇f (x) è continuo si può scrivere, per ogni d ∈ Rn :

f (x + d) = f (x) + ∇f (x)0 d + α(x, d), (A.1)

dove α(x, d) soddisfa:


α(x, d)
lim = 0.
kdk→0 kdk
Se f è differenziabile, è immediato verificare che esiste anche la derivata direzionale di f lungo
una qualsiasi direzione d ∈ Rn e risulta:

f (x + td) − f (x)
lim = ∇f (x)0 d.
t→0+ t

Indicheremo con il nome approssimazione lineare della funzione f (x) nell’intorno di un punto
assegnato x̄, la funzione
fLIN (x) = f (x̄) + ∇f (x̄)T (x − x̄)
ottenuta dalla f (x̄ + td) come in (A.1) trascurando il termine α(x, d) in cui si pone d = x − x̄,
t = 1.

A.1.2 Differenziazione di un vettore di funzioni


Sia g : Rn → Rm un vettore a m componenti di funzioni reali. Possiamo introdurre la definizione
seguente, che estende la nozione di gradiente.

Definizione A.1.4 (Matrice Jacobiana)

220
Sia g : Rn → Rm e x ∈ Rn . Se esistono le derivate parziali prime ∂gi (x)/∂xj , per i = 1 . . . , m
e j = 1 . . . n in x definiamo matrice Jacobiana di g in x la matrice m × n
 
∂g1 (x) ∂g1 (x)
 ∂x1 . . .
 ∂xn  
 
J(x) := 
 . . . . . . . . . .

 
 ∂gm (x) ∂gm (x) 
...
∂x1 ∂xn
Valgono le stesse considerazioni sulla differenziabilità che abbiamo fatto nel paragrafo prece-
dente, ovvero, la sola esistenza della matrice Jacobiana in x non implica la differenziabilità. Se
però J(x) è continua si può scrivere, per ogni d ∈ Rn :

g(x + d) = g(x) + J(x)d + γ(x, d),

dove γ(x, d) soddisfa:


γ(x, d)
lim = 0.
kdk→0 kdk
Se m = 1 si ha ovviamente J(x) = ∇g(x)0 .
Per analogia con la notazione usata per il gradiente si può usare anche la notazione ∇g(x)0 per
indicare la derivata prima di g, ossia

∇g(x) = J(x)0 = ( ∇g1 (x), . . . , ∇gm (x) ) .

A.1.3 Derivate del secondo ordine di una funzione reale


Sia f : Rn → R una funzione reale. Con riferimento alle derivate del secondo ordine, possiamo
introdurre innanzitutto la definizione seguente.
Definizione A.1.5 (Matrice Hessiana)
Sia f : Rn → R e x ∈ Rn . Se esistono le derivate parziali seconde ∂ 2 f (x)/∂xi ∂xj , per
i = 1 . . . , n e j = 1 . . . n in x definiamo matrice Hessiana di f in x la matrice n × n
 2 
∂ f (x) ∂ 2 f (x)
. . .
 ∂x1 2 ∂x1 ∂xn 
 
 
2 
∇ f (x) :=  . . . . . . . . . .

 
 ∂ 2 f (x) ∂ f (x) 
2
...
∂xn ∂x1 ∂xn 2
Se ∇2 f (x) è continua si può scrivere, per ogni d ∈ Rn :
1
f (x + d) = f (x) + ∇f (x)T d + dT ∇2 f (x)d + β(x, d), (A.2)
2
dove β(x, d) soddisfa:
β(x, d)
lim = 0.
kdk→0 kdk2

221
Indicheremo con il nome approssimazione quadratica della funzione f (x) nell’intorno di un punto
assegnato x̄, la funzione
1
fQU AD (x) = f (x̄) + ∇f (x̄)T (x − x̄) + (x − x̄)T ∇2 f (x̄)(x − x̄)
2
ottenuta dalla f (x̄ + td) come in (A.2) trascurando il termine β(x, d) in cui si pone d = x − x̄,
t = 1.
Nelle stesse ipotesi si ha anche, come si è detto, che la matrice Hessiana ∇2 f (x) è una matrice
simmetrica, ossia si ha, per i, j = 1 . . . , n:
∂ 2 f (x) ∂ 2 f (x)
= .
∂xi ∂xj ∂xj ∂xi
Osserviamo anche che se ∇2 f (x) è continua si può scrivere
∇f (x + d) = ∇f (x) + ∇2 f (x)d + γ(x, d),
con
γ(x, d)
lim = 0.
kdk→0 kdk

A.1.4 Teorema della media e formula di Taylor


Nel caso di funzioni differenziabili valgono anche i risultati seguenti (che si possono tuttavia
stabilire sotto ipotesi più deboli).

Teorema A.1.6 (Teorema della Media)


Sia f : Rn → R una funzione differenziabile. Allora, per ogni h ∈ Rn , si può scrivere
f (x + h) = f (x) + ∇f (z)0 h,
in cui z ∈ Rn è un punto opportuno (dipendente da x e h) tale che z = x + ζh, con ζ ∈ (0, 1).
Utilizzando le derivate seconde si ha il risultato seguente.
Teorema A.1.7 Teorema di Taylor
Sia f : Rn → R una funzione due volte differenziabile. Allora, per ogni h ∈ Rn si può scrivere:
1
f (x + h) = f (x) + h0 ∇f (x) + h0 ∇2 f (w)h
2
in cui w ∈ Rn è un punto opportuno (dipendente da x e h) tale che w = x + ξh, con ξ ∈ (0, 1).

Nel caso di funzioni vettoriali g : Rn → Rm non è possibile stabilire un teorema della media.

Esempi
Alcuni esempi di interesse di funzioni differenziabili sono:
f (x) = c0 x; si ha: ∇f (x) = c, ∇2 f (x) = 0;
f (x) = 12 x0 Qx + c0 x, (con Q simmetrica); si ha: ∇f (x) = Qx + c; ∇2 f (x) = Q;
f (x) = kAx − bk2 ; si ha: ∇f (x) = 2A0 (Ax − b); ∇2 f (x) = 2A0 A

222
Riferimenti
[1] C. Mannino, L. Palagi e M. Roma. Complementi ed Esercizi di Ricerca Operativa.
Edizione Ingegneria 2000, Roma, 1998.
[2] Antonio Sassano. Modelli e Algortimi della Ricerca Operativa. Franco Angeli Editore,
Roma, 1999.
[3] Fabio Schoen Modelli di Ottimizzazione per le decisioni. Società Editrice Esculapio,
Bologna, 2006.
[4] I. A. Markham e S.W. Palocsay Scenario Analysis in Spreadsheets with Excel’s
Scenario Tool. INFORMS Transactions on education 6:2(23-31)
[5] Risolutore di Excel in Excel 97 http://support.microsoft.com/kb/843304/it
[6] Joern Meissner, Thanh-Ha Nguyen An Introduction to Spreadsheet Optimization
Using Excel Solver. http://www.meiss.com/en/publications/spreadsheet-optimization-
solver.html

223
Indice

1 Introduzione 0
1.1 Breve storia della Ricerca Operativa . . . . . . . . . . . . . . . . . . . . . . . . . 0
1.2 La Ricerca Operativa oggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 L’approccio modellistico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Un primo esempio di costruzione di un modello matematico . . . . . . . . . . . . 11

2 Modelli di Ottimizzazione 14
2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Definizioni preliminari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Problemi di Programmazione Matematica . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Esempi di modelli di Programmazione Matematica . . . . . . . . . . . . . . . . . 19

3 Modelli di Programmazione Lineare 26


3.1 Struttura di un problema di Programmazione Lineare . . . . . . . . . . . . . . . 26
3.2 Trasformazioni equivalenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Funzione obiettivo di tipo max . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 Funzione modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Semplici esempi di problemi di programmazione lineare . . . . . . . . . . . . . . 32
3.3.1 Problemi di miscelazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.2 Modelli di trasporto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.3 Un problema di Yield Management ferroviario . . . . . . . . . . . . . . . 39
3.3.4 Minimizzazione dello scarto massimo . . . . . . . . . . . . . . . . . . . . . 40

4 Soluzione grafica di problemi PM in 2 variabili 42


4.1 Rappresentazione di vincoli nel piano cartesiano . . . . . . . . . . . . . . . . . . . 42
4.1.1 Vincoli lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.2 Vincoli quadratici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 Rappresentazione di funzioni obiettivo . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.1 Funzioni lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.2 Funzioni quadratiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Esempi di risoluzione grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5 Problemi di ottimizzazione convessa e concava 60


5.1 Insiemi Convessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1.1 Poliedro e punti estremi di un insieme convesso . . . . . . . . . . . . . . . 64

1
5.2 Funzioni convesse e concave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 Problemi di ottimizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3.1 Problema di ottimizzazione convesso . . . . . . . . . . . . . . . . . . . . . 69
5.3.2 Problema di ottimizzazione concavo . . . . . . . . . . . . . . . . . . . . . 70
5.4 Caratterizzazione funzioni convesse continuamente differenziabili . . . . . . . . . 71
5.4.1 Funzioni e forme quadratiche . . . . . . . . . . . . . . . . . . . . . . . . . 71

6 Problemi di ottimizzazione non vincolata 75


6.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2 Direzioni di discesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.3 Ottimizzazione non vincolata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.4 Utilizzo algoritmico delle condizioni di ottimo non vincolate . . . . . . . . . . . . 88
6.5 Modelli di ottimizzazione non vincolata . . . . . . . . . . . . . . . . . . . . . . . 91

7 Ottimizzazione vincolata 93
7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 Direzione ammissibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3 Condizioni di ottimo vincolate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.4 Ottimizzazione su insieme convesso generico . . . . . . . . . . . . . . . . . . . . . 98
7.5 Ottimizzazione su un poliedro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.6 Direzioni ammissibili di un poliedro . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.7 Condizioni di ottimo su un poliedro . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.7.1 Condizioni di ottimo per la Programmazione Lineare . . . . . . . . . . . . 110
7.8 Utilizzo algoritmico delle condizioni di ottimo per problemi con vincoli convessi . 111

8 Teoremi dell’alternativa 113


8.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2 Il Lemma di Farkas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

9 Le condizioni di Karush-Kuhn-Tucker 118


9.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.2 Le condizioni di Karush-Kuhn-Tucker . . . . . . . . . . . . . . . . . . . . . . . . 118

10 Teoria della Programmazione Lineare 129


10.1 Caratterizzazione dei vertici di un poliedro . . . . . . . . . . . . . . . . . . . . . 129
10.2 Il teorema fondamentale della PL . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.3 Cenni sul metodo del simplesso per la Programmazione Lineare . . . . . . . . . . 140
10.3.1 Soluzione di Base Ammissbile (SBA) e costi ridotti . . . . . . . . . . . . . 142

11 Condizioni di ottimo per la PL e teoria della dualità 145


11.1 Le condizioni di ottimalità nella Programmazione Lineare . . . . . . . . . . . . . 145
11.2 Costruzione del duale di un problema di PL . . . . . . . . . . . . . . . . . . . . . 151
11.3 Il problema di Kanpsack continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
11.3.1 Analisi di sensitività alla variazione dei dati . . . . . . . . . . . . . . . . . 158
11.3.2 Interpretazione geometrica della variazione dei dati sui problemi primale
duale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2
11.3.3 Interpretazione economica della dualità e prezzi ombra . . . . . . . . . . . 161
11.4 Interpretazione della Dualità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
11.4.1 Il duale del problema di allocazione ottima di risorse . . . . . . . . . . . . 163
11.4.2 Il duale del problema di miscelazione. . . . . . . . . . . . . . . . . . . . . 164
11.4.3 Il duale del problema dei trasporti . . . . . . . . . . . . . . . . . . . . . . 166

12 Programmazione Lineare Intera 169


12.1 Formulazioni Classiche di Problemi Lineari Interi . . . . . . . . . . . . . . . . . . 170
12.1.1 Knapsack (zaino) binario . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
12.1.2 Assegnamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
12.2 Uso di variabili booleane per modellare condizioni logiche . . . . . . . . . . . . . 173
12.2.1 Problema del costo fisso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
12.2.2 Variabili indicatrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.2.3 Il problema del commesso viaggiatore . . . . . . . . . . . . . . . . . . . . 179
12.3 Relazioni tra PL e PLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
12.4 Proprietà di interezza e totale unimodularità . . . . . . . . . . . . . . . . . . . . 185
12.5 Tecniche di soluzione per problemi di PLI . . . . . . . . . . . . . . . . . . . . . . 188
12.5.1 La Tecnica del Branch and Bound . . . . . . . . . . . . . . . . . . . . . . 189
12.5.2 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
12.6 Il problema del Knapsack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

13 Uso di Excel per l’analisi e soluzione di Modelli di Programmazione Matem-


atica 202
13.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
13.2 Uso di fogli elettronici per la descrizione di un modello matematico . . . . . . . . 203
13.3 Analisi di scenario o “What if..?” analisi . . . . . . . . . . . . . . . . . . . . . . . 205
13.4 Uso di Excel-Solver per la soluzione del modello matematico . . . . . . . . . . . . 207
13.5 Soluzione di un modello di PL o PLI. . . . . . . . . . . . . . . . . . . . . . . . . . 210
13.6 Ulteriori informazioni fornite dal Solutore . . . . . . . . . . . . . . . . . . . . . . 211

A Richiami di Analisi e geometria 221


A.1 Richiami sulla differenziazione in Rn . . . . . . . . . . . . . . . . . . . . . . . . . 221
A.1.1 Derivate del primo ordine di una funzione reale . . . . . . . . . . . . . . . 221
A.1.2 Differenziazione di un vettore di funzioni . . . . . . . . . . . . . . . . . . 222
A.1.3 Derivate del secondo ordine di una funzione reale . . . . . . . . . . . . . . 223
A.1.4 Teorema della media e formula di Taylor . . . . . . . . . . . . . . . . . . . 224