Anda di halaman 1dari 88

` degli Studi di Torino

Universita
Facolt`a di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea Triennale in Matematica per lAssicurazione e la Finanza

Appunti di
Ricerca Operativa

Andrea Grosso
Roberto Aringhieri

Anno Accademico 2011/2012

Indice
1 Problemi e Modelli
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Modelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Programmazione Lineare per esempi . . . . . . . . . . . . . . . . . .
1.4.1 Il problema dei compagni di merende. . . . . . . . . . . . . . .
1.4.2 Un problema semplice di pianificazione della produzione. . . .
1.4.3 Un problema meno semplice di pianificazione della produzione.
1.4.4 Il problema del distributore di giornali. . . . . . . . . . . . . .
1.4.5 Il problema del personale di un motel. . . . . . . . . . . . . .
1.4.6 Un problema di schedulazione dei lavori. . . . . . . . . . . . .
1.4.7 Un problema di copertura tramite lapertura di impianti. . . .
1.4.8 Un altro problema di pianificazione della produzione. . . . . .
1.4.9 Un problema di produzione e gestione del personale. . . . . . .
1.5 Problemi di Ottimizzazione . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Zaino 0-1 e Bin Packing. . . . . . . . . . . . . . . . . . . . . .
1.5.2 Assegnamento e Matching. . . . . . . . . . . . . . . . . . . . .
1.5.3 Set-Covering, Set-Packing e Set-Partitioning. . . . . . . . . . .
1.5.4 Facility Location. . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.5 Traveling Salesman (Problema del commesso viaggiatore). . .
1.5.6 Vincoli disgiuntivi. . . . . . . . . . . . . . . . . . . . . . . . .
1.5.7 Scheduling. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.8 Relazioni Logiche. . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.9 Soddisfattibilit`a Proposizionale. . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
3
5
6
6
7
8
9
11
11
13
15
16
18
18
19
20
21
22
24
24
25
26

2 Programmazione lineare
2.1 Programmi lineari e forma standard . . . . . . . . . . . .
2.1.1 Problemi di ottimizzazione e programmi lineari. .
2.1.2 Convessit`a della regione ammissibile. . . . . . . .
2.1.3 Il metodo grafico in due variabili. . . . . . . . . .
2.1.4 Forma standard. . . . . . . . . . . . . . . . . . .
2.1.5 Conversione di un programma in forma standard.
2.1.6 Forma canonica di un programma lineare. . . . .
2.1.7 Assunzioni fondamentali. . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

29
29
29
30
31
32
33
35
36

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

2.1.8 Ottimalit`a di una soluzione ammissibile. . . .


2.2 Geometria della regione ammissibile . . . . . . . . . .
2.2.1 Richiami e definizioni. . . . . . . . . . . . . .
2.2.2 Risultati fondamentali. . . . . . . . . . . . . .
2.3 Soluzioni di base di un programma lineare . . . . . .
2.3.1 Soluzioni ammissibili di base. . . . . . . . . .
2.4 Lalgoritmo del simplesso. . . . . . . . . . . . . . . .
2.4.1 Direzioni di crescita ammissibili del simplesso.
2.4.2 Aggiornamento della soluzione. . . . . . . . .
2.4.3 Implementazione. . . . . . . . . . . . . . . . .
2.5 Determinazione di una base ammissibile . . . . . . .
2.5.1 Programma della Fase 1. . . . . . . . . . . . .
2.5.2 Fase 1 del simplesso. . . . . . . . . . . . . . .
2.6 Il caso degenere . . . . . . . . . . . . . . . . . . . . .
2.6.1 Presenza di basi degeneri. . . . . . . . . . . .
2.6.2 Impatto sulle direzioni ammissibili di crescita.
2.6.3 Conseguenze. . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

36
37
37
37
40
40
43
43
44
46
49
50
50
53
53
54
55

3 Dualit`
a nella programmazione lineare
3.1 Definizioni . . . . . . . . . . . . . . . .
3.1.1 Duale di un programma lineare.
3.2 Relazioni notevoli . . . . . . . . . . . .
3.2.1 Simmetria. . . . . . . . . . . . .
3.2.2 Dualit`a debole. . . . . . . . . .
3.2.3 Basi ammissibili duali. . . . . .
3.2.4 Dualit`a forte. . . . . . . . . . .
3.3 Simplesso duale . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

57
57
57
58
58
60
61
64
66

4 Programmazione lineare intera


4.1 Introduzione . . . . . . . . . . . . .
4.1.1 Programmi lineari interi. . .
4.1.2 Regione ammissibile intera.
4.2 Branch and bound . . . . . . . . .
4.2.1 Rilassamento. . . . . . . . .
4.2.2 Rilassamento continuo. . . .
4.2.3 Branch and bound. . . . . .
4.3 Implementazione . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

71
71
71
72
72
72
73
73
77

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

A Cycling
81
A.1 Problemi di terminazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.2 Regola anticiclo di Bland . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Capitolo 1
Problemi e Modelli
In questo capitolo, viene introdotto il concetto di problema computazionale ed alcuni
concetti di base ad esso collegato che verranno ripresi ed approfonditi in altri insegnamenti, sia di Ricerca Operativa ma non solo. Successivamente, dopo aver discusso delle
semplici regole per la definizione di un modello di programmazione lineare, saranno illustrate, tramite la discussione di semplici problemi, alcune delle principali tecniche di
modellazione.
Lultima parte del capitolo sar`a invece dedicata ad illustrare alcuni dei problemi classici
della Ricerca Operativa pi`
u rappresentativi e che sono stati oggetto di studio negli anni.
Infine, il capitolo si chiude con la discussione di un problema di ottimizzazione che deriva
da un problema reale di gestione di una rete di teleriscaldamento.

1.1

Introduzione

La Ricerca Operativa ha come oggetto lo studio e la messa a punto di metodologie per la


soluzione di problemi decisionali. I problemi affrontati nellambito della Ricerca Operativa
sono tipicamente quelli in cui bisogna prendere decisioni sulluso di risorse disponibili in
quantit`a limitata in modo da rispettare un insieme assegnato di vincoli, massimizzando
il beneficio ottenibile dalluso delle risorse stesse.
Un processo decisionale pu`o, in modo schematico, essere decomposto nelle seguenti fasi:
1. individuazione del problema;
2. analisi della realt`a e raccolta dei dati;
3. costruzione del modello;
4. determinazione di una o pi`
u soluzioni;
5. analisi dei risultati ottenuti.
1

Capitolo 1. Problemi e Modelli

Chiaramente questi punti non vanno visti come strettamente sequenziali; in un processo
decisionale reale `e infatti frequente il caso che una delle fasi richieda modifiche dei risultati ottenuti in una fase precedente. Ad esempio, nella costruzione del modello pu`o
emergere lesigenza di nuovi dati in aggiunta a quelli raccolti nella fase precedente. La
stessa raccolta dei dati presuppone unidea sul tipo di modello che sar`a costruito. In
questo capitolo, ci concentreremo soprattutto sulla parte di costruzione del modello, che
piu si presta assieme alla parte di determinazione della/e soluzione ad una rigorosa
trattazione matematica, ed ai quali sono dirette gran parte delle metodologie messe a
punto nellambito della Ricerca Operativa.
Il modello `e una descrizione, in generale per mezzo di strumenti di tipo logicomatematico,
della porzione di realt`a di interesse ai fini del processo decisionale. Ricordiamo qui tre
classi principali di modelli: giochi, modelli di simulazione, modelli analitici.
Nei giochi, la difficolt`a di modellare in modo matematico il comportamento degli
individui o dei gruppi di individui presenti nella realt`a sotto esame viene superata
introducendo direttamente luomo nel modello attraverso i giocatori, a ciascuno dei
quali viene affidato un prefissato ruolo.
Nei modelli di simulazione si cerca di descrivere nel modo pi`
u accurato possibile il
comportamento del sistema che si vuole studiare per mezzo di relazioni matematiche;
quindi si studia su calcolatore la sua risposta a sollecitazioni che vengono realizzate,
in genere per mezzo di generatori di numeri pseudo casuali, in modo che siano il pi`
u
possibile simili a quelle reali.
Nei modelli analitici invece tutto il sistema sotto esame `e descritto per mezzo di
relazioni matematiche (o logiche) tra variabili che rappresentano gli elementi del
sistema; quindi si cercano valori per tali variabili che soddisfano i vincoli e che
massimizzino o minimizzino una funzione obiettivo opportunamente definita.
Alla Simulazione ed alla sua integrazione con lottimizzazione `e dedicato linsegnamento di Modelli e Metodi per il Supporto alle Decisioni allinterno della laurea magistrale.
Qui invece restringeremo la nostra attenzione ai modelli analitici di Programmazione
Lineare.
Nellanalizzare la realt`a per mezzo di modelli non va mai dimenticato lo scarto esistente
tra la realt`a stessa ed il modello: la soluzione di un problema `e in realt`a sempre la
` sempre
soluzione della rappresentazione che abbiamo costruito del problema reale. E
necessario prestare grande attenzione alla fondatezza del modello costruito: il modello sar`a
sempre una descrizione molto limitata della realt`a, ma dovr`a rappresentare con ragionevole
accuratezza gli aspetti che interessano ai fini della soluzione del problema decisionale che
si sta affrontando.

1.2. Problemi

1.2

Problemi

Diamo adesso una serie di definizioni riguardanti i problemi di ottimizzazione. Nel seguito per problema intenderemo una domanda espressa in termini generali, la cui risposta
dipende da un certo numero di parametri e variabili.
Un problema viene usualmente definito per mezzo di:
una descrizione dei suoi parametri, in generale lasciati indeterminati;
una descrizione delle propriet`a che devono caratterizzare la risposta o soluzione
desiderata.
Unistanza di un dato problema P `e quella particolare domanda che si ottiene specificando
valori per tutti i parametri di P . Molto spesso un problema viene definito fornendo
linsieme F delle possibili risposte o soluzioni, detto insieme ammissibile. Frequentemente
F viene specificato indicando un insieme di supporto F tale che F F , ed ulteriori
condizioni (vincoli) che gli elementi di F devono soddisfare. In questo caso, si parla
spesso degli elementi di F \ F come di soluzioni non ammissibili.
In un problema di ottimizzazione, sullinsieme ammissibile F viene definita una funzione
obiettivo
c : F 7 R
che fornisce il costo o il beneficio associato ad ogni soluzione; la soluzione del problema `e
un elemento di F che rende minima, oppure massima, la funzione obiettivo. Un generico
problema di minimo pu`o essere scritto come
P :

min{c(x) : x F }

Sostituendo min con max come sappiamo si ottiene un problema di massimo. Chiamiamo
z = min{c(x) : x F }
il valore ottimo del problema. Una soluzione ammissibile x F tale che c(x ) = z `e
detta soluzione ottima per P .
In certi casi ci`o che il problema richiede `e semplicemente la determinazione di una qualsiasi
soluzione ammissibile, ovvero di fornire un elemento x F , se ne esiste uno, oppure di
dichiarare che F `e vuoto; in questo caso si parla di problema decisionale oppure di problema
di esistenza. Dato un problema decisionale definito su F F , ad esso `e naturalmente
associato il problema di certificato: dato x F , verificare se x F . Il problema di
certificato `e un problema decisionale che richiede semplicemente una risposta s` oppure
no.
Algoritmi e Complessit`
a. Il senso di definire un problema di ottimizzazione `e, almeno
per le applicazioni pratiche, direttamente collegato alla possibilit`a di sviluppare procedure
di calcolo o algoritmi in grado di risolverne efficientemente le istanze.

Capitolo 1. Problemi e Modelli

In generale, un algoritmo che risolve il problema P `e una procedura che prende in input
una qualsiasi istanza I di P e fornisce in output una soluzione ottima x per quellistanza
I. Un algoritmo per P che determina una soluzione ottima per qualsiasi istanza del
problema viene detto algoritmo esatto.
Possono esistere diversi algoritmi per risolvere istanze dello stesso problema P . In tal caso,
`e evidente che conviene scegliere lalgoritmo pi`
u efficiente in termini di tempo di calcolo.
Data unistanza I di dimensione n del problema P , si definisce con T (n) la funzione
che conta il numero di operazioni elementari necessarie allalgoritmo per risolvere I. Ad
esempio, dato il problema di trovare lelemento di minimo valore in un insieme di n
elementi, saranno necessari T (n) = n 1 confronti tra coppie di elementi diversi.
Per semplificare il confronto tra algoritmi, si introduce il concetto di complessit`a di un
algoritmo, ovvero lo studio della funzione T (n) al tendere di n allinfinito. In altre parole,
la complessit`a di un algoritmo `e lordine di grandezza della funzione T (n).
Dal punto di vista della complessit`a del corrispondente algoritmi di soluzione, i problemi
di ottimizzazione possono essere divisi in due classi: la classe dei problemi polinomiali P
e la classe dei problemi N P-ardui (N P-completi quando si parli di problemi decisionali).
Data lesistenza di problemi per i quali non si conoscono algoritmi risolutivi di complessit`a
polinomiale, `e opportuno discutere pi`
u in dettaglio cosa significhi risolvere un problema
di ottimizzazione.

Progettazione ed analisi di algoritmi. Poiche gli algoritmi esatti possono avere


complessit`a troppo elevata, ad esempio esponenziale nelle dimensioni dellistanza, e quindi
difficilmente utilizzabili in pratica, ci si trova spesso nella necessit`a di ricorrere ad algoritmi
euristici ossia algoritmi che determinano solamente una qualsiasi soluzione ammissibile, e
quindi unapprossimazione superiore per problemi di minimo o inferiore per un problema
di massimo del valore ottimo dellistanza.
In generale si `e interessati ad ottenere buone valutazioni superiori; per questo `e opportuno
introdurre misure che indichino quanto buona `e una data soluzione. Si noti che per molti
problemi di ottimizzazione, il problema di determinare una qualsiasi soluzione ammissibile
ha la stessa complessit`a del problema originario; quindi, in generale gli algoritmi euristici
possono fallire, ossia non riportare nessuna soluzione ammissibile anche per istanze in
cui F 6= . In questo caso, si assume che la valutazione superiore o inferiore, ottenuta
dallalgoritmo sia + o , ossia arbitrariamente cattiva.
Lo studio di algoritmi di ottimizzazione sar`a approfondito nei due insegnamenti di Ottimizzazione Combinatoria e Metodi Numerici e Modelli e Metodi per il Supporto alle
Decisioni.

1.3. Modelli

1.3

Modelli

Molti problemi di interesse pratico si prestano ad essere descritti e risolti come modelli di
programmazione matematica. Un modello (o programma) `e la descrizione di un problema
che richiede di massimizzare (o minimizzare) una funzione di costo o profitto su un certo
dominio. La scrittura usuale `e
(1.1)

max z = f (x)

(oppure: min z = f (x))

soggetto a

(1.2)
(1.3)

bi
gi (x) = bi

bi

i = 1, . . . , m,

x = (x1 , . . . , xn ) X Rn .

In un modello sono presenti:


una serie di variabili di controllo in funzione delle quali viene formulato ogni altro
elemento del modello; queste variabili, almeno in parte, corrispondono alle quantit`a
agendo sulle quali la soluzione verr`a implementata;
una funzione obiettivo f (x) che determina un costo o profitto legato alla soluzione;
una o pi`
u serie di vincoli, che correlano tra loro i valori delle variabili, imponendo
condizioni di fisica realizzabilit`a e/o requisiti particolari richiesti alla soluzione.
Tra i modelli di programmazione matematica hanno particolare rilievo i modelli di programmazione lineare, nei quali la f (x) e le gi (x) sono espressioni lineari. Un modello di
programmazione lineare `e quindi esprimibile sempre come
(1.4)

max z =

n
X

cj xj

j=1

soggetto a

(1.5)
(1.6)

bi
aij xj = bi

j=1
bi

n
X

i = 1, . . . , m,

x = (x1 , . . . , xn ) X Rn .

I campi di esistenza delle variabili xj sono di solito di tipo continuo (spesso non negativo)
oppure intero non negativo (xj Z+ ), oppure binario (xj {0, 1}) a seconda del tipo di
decisione che tali variabili modellano.
La particolarit`a dei modelli lineari `e legata alla loro maggiore semplicit`a, che li rende
pi`
u facilmente risolvibili rispetto ai modelli non lineari; in effetti sono ormai disponibili

Capitolo 1. Problemi e Modelli

pacchetti software commerciali in grado di risolvere in modo efficiente programmi lineari di


notevoli dimensioni (intese come quantit`a di variabili e di vincoli). Questo rende spesso
preferibile, per la risoluzione di un problema, lo sviluppo di un modello lineare anche
quando un modello non lineare potrebbe essere pi`
u compatto.
Lo sviluppo di un modello di programmazione lineare parte dallanalisi di una situazione
reale (pi`
u o meno schematizzata) e, in modo simile a quanto accade nello sviluppo di una
procedura software, richiede di identificare le variabili di controllo ed i rispettivi domini, i
vincoli e la funzione obiettivo. Non ci sono regole rigide da seguire: il modello finale nasce
spesso in particolare nella caso di situazioni complesse per raffinamenti successivi.

1.4

Programmazione Lineare per esempi

In questa sezione, saranno illustrate alcune tecniche per la definizione di modelli di


programmazione lineare analizzando alcuni problemi semplici come esempio.
1.4.1 Il problema dei compagni di merende. Un gruppo di amici dovendo fare
una gita ha deciso di mettere cibi e bevande in un unico zaino da 10 Kg. Lo zaino pu`o
essere riempito con
1. Cioccolata (confezioni da 500 g.)
2. Succhi di frutta (bottiglie da 1 l.)
3. Lattine di birra (formato da 0.33 l.)
4. Panini imbottiti (da 100 g. luno)
5. Acqua minerale (bottiglie da 1 l.)
6. Pacchi di biscotti (confezioni da 500 g.)
Dopo unindagine tra i partecipanti alla gita (si poteva dare un voto da 1 a 100 ad ogni
prodotto) sono stati determinati i seguenti punteggi.
Prodotto
Punti
Cioccolata
10
Succhi di frutta
30
Lattine di birra
6

Prodotto
Panini imbottiti
Acqua minerale
Pacchi di biscotti

Punti
20
20
8

Per non scontentare nessuno si `e deciso di portare almeno:


2 confezioni di cioccolata;
2 bottiglie di succo di frutta;
6 lattine di birra;
10 panini imbottiti;

1.4. Programmazione Lineare per esempi

2 conf. di biscotti.
Formulare il modello di Programmazione Lineare che massimizzi il punteggio rispettando
il vincolo di capacit`a dello zaino.
Soluzione. Le variabili di controllo determinano la struttura della soluzione di un problema, permettendone la realizzazione. Quindi in questo caso `e naturale definire le
variabili
x1 , x2 , x3 , x4 , x5 , x6 ,
con il significato
xi unit`a di alimento (i) caricate nello zaino.
Con questa scelta di variabili si pu`o ottenere il seguente modello, nel quale compaiono
due serie di vincoli: (1) un vincolo relativo alla capacit`a dello zaino, che non pu`o essere
superata, e (2) vincoli relativi ai quantitativi minimi di alimenti da caricare.
max 10x1 + 30x2 + 6x3 + 20x4 + 20x5 + 8x6
soggetto a
1
1
1
1
x1 + x2 + x3 + x4 + x5 + x6 10
2
3
10
2
x1 2, x2 2, x3 6,
x4 10, x6 2,
x1 , . . . , x6 Z+ .
1.4.2 Un problema semplice di pianificazione della produzione. Lacciaieria
PLASTIK deve evadere un ordine di 1000 tonnellate di acciaio INOX. Per questa produzione servono manganese (almeno l1% in peso), cromo (almeno il 18%) e molibdeno
(almeno il 2%).
I fornitori di metalli non ferrosi vendono per esigenze di mercato questi prodotti in
tre tipi di confezioni differenti. La prima confezione contiene 2 Kg. di manganese, 2 Kg.
di cromo e 1 Kg. di molibdeno e costa 10 euro. La seconda confezione contiene 2 Kg. di
manganese, 3 Kg. di cromo e 1 Kg. di molibdeno e costa 15 euro. La terza confezione
contiene 1 Kg. di manganese, 2 Kg. di cromo e 5 Kg. di molibdeno e costa 20 euro.
Formulare il modello di Programmazione Lineare per minimizzare il costo di acquisto delle
confezioni.
Soluzione. Le variabili pi`
u naturali sono x1 , x2 , x3 , dove xi numero di confezioni
di tipo i acquistato. A volte pu`o non essere evidente quale sia la scelta di variabili pi`
u
naturale. Una buona regola pratica `e spesso la seguente: una definizione di variabili

Capitolo 1. Problemi e Modelli

`e soddisfacente quando essa permette di scrivere in modo semplice la funzione obiettivo


(o comunque i vincoli pi`
u significativi) del modello. Ad esempio, in questo caso usare
variabili che rappresentano le quantit`a di materiali (manganese, cromo, molibdeno) acquistate anzich`e le confezioni non sarebbe soddisfacente, in quanto la funzione obiettivo
risulterebbe molto difficile da esprimere.
Con la scelta di variabili indicata invece, si ottiene il modello
min 10x1 + 15x2 + 20x3
soggetto a
(1.7)
(1.8)
(1.9)

2x1 + 2x2 + x3 10000


2x1 + 3x2 + 2x3 180000
x1 + x2 + 5x3 20000
x1 , x2 , x3 Z+ ,

dove i vincoli (1.7), (1.8) e (1.9) rappresentano i quantitativi minimi di manganese, cromo
e molibdeno da garantire, rispettivamente.
1.4.3 Un problema meno semplice di pianificazione della produzione. Unazienda produce tre modelli 1, 2 e 3 di un certo prodotto. Ciascun modello richiede due tipi
di materiali grezzi (A e B) di cui sono disponibili rispettivamente 4000 e 6000 unit`a. In
particolare, per produrre una unit`a del modello 1 sono necessarie 2 unit`a di A e 4 unit`a di
B; per una unit`a del modello 2 sono necessarie 3 unit`a di A e 2 unit`a di B; per una unit`a
del modello 3 sono necessarie 5 unit`a di A e 7 di B. Il modello 1 richiede, per ogni unit`a
prodotta, il doppio di forza lavoro rispetto al modello 2 e il triplo rispetto al modello 3.
La forza lavoro presente in azienda `e in grado di produrre al massimo lequivalente di 700
unit`a/giorno del modello 1. Il settore marketing dellazienda ha reso noto che la domanda
minima per ciascun modello `e rispettivamente di 200, 200 e 150 unit`a. Il profitto unitario
di ogni modello `e di 30, 20 e 50 euro, rispettivamente.
Formulare il programma lineare per pianificare la produzione giornaliera massimizzando
il profitto.
Soluzione. Le variabili x1 , x2 , x3 sono sufficienti a modellare il problema, con xi
numero di unit`a di tipo i prodotte. Quindi si ha
max 30x1 + 20x2 + 50x3
soggetto a
(1.10)
(1.11)
(1.12)

2x1 + 3x2 + 5x3 4000


4x1 + 2x2 + 7x3 6000
1
1
x1 + x2 + x3 700
2
3
x1 200,
x2 200,
x1 , x2 , x3 Z+ ,

x3 150

1.4. Programmazione Lineare per esempi

con i vincoli (1.10), (1.11) e (1.12) che rappresentano i vincoli sulla disponibilit`a di materie
prime, sulla forza lavoro disponibile e sui requisiti minimi di produzione stabiliti dal
marketing, rispettivamente.
1.4.4 Il problema del distributore di giornali. La casa editrice ANALFABETA
pubblica un quotidiano che viene distribuito da quattro centri di smistamento S1 , S2 ,
S3 , S4 che richiedono rispettivamente almeno 100000, 150000, 50000 e 75000 copie. Il
giornale viene stampato in tre tipografie T1 , T2 , T3 che producono rispettivamente al
massimo 125000, 180000 e 70000 copie
I costi per la spedizione sono di 2 euro/Km. per giornale e le distanze tra le tipografie ed i
centri di smistamento sono rispettivamente di 20, 25, 15 e 5 Km. per la prima tipografia,
di 12, 14, 18 e 30 Km per la seconda, e di 19, 11, 40 e 12 Km per la terza.
(a) Formulare il modello di Programmazione Lineare per pianificare le spedizioni a costo
totale minimo.
(b) Si definisca il costo di approvvigionamento di un centro di smistamento come il costo
totale delle spedizioni verso quel centro. Formulare il modello di Programmazione
Lineare che minimizza il massimo costo di approvvigionamento.
Soluzione. (a) Per come sono specificati i costi di spedizione, la scelta naturale per
la definizione delle variabili di controllo `e la seguente:
xij numero di copie spedite da Ti a Sj .
In questo modo il modello diventa
min

3 X
4
X

cij xij

i=1 j=1

soggetto a

(1.13)

x11 + x12 + x13 + x14 125000


x21 + x22 + x23 + x24 180000
x31 + x32 + x33 + x34 70000

(1.14)

x11 + x21 + x31


x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34

100000
150000
50000
75000

xij Z+ , i, j.
I vincoli (1.13) e (1.14) impongono che ogni tipografia spedisca non pi`
u giornali di quanti
ne stampa (per la realizzabilit`a fisica della soluzione) e che ogni centro ne riceva una

10

Capitolo 1. Problemi e Modelli

quantit`a pari almeno al proprio fabbisogno. I costi cij sono ricavati dalla matrice delle
distanze indicata dal testo: cij = 2(distanza tra Ti e Sj ).
I vincoli (1.13) e (1.14) possono essere descritti in forma compatta come segue. Posto Dj la
domanda dellj-esimo centro di smistamento (j = 1, 2, 3, 4) e Pi la produzione delli-esima
tipografia, abbiamo che i vincoli (1.13) e (1.14) possono essere rispettivamente riscritti
come
4
X

xij Pi

i = 1, . . . , 3

xij Dj

j = 1, . . . , 4

j=1

3
X
i=1

(b) Lobiettivo specificato pone la necessit`a di scrivere un programma di minimo con una
funzione obiettivo del tipo
max
j

3
X
i=1


cij xij .

Tale espressione `e per`o non lineare e quindi proibita nel tipo di modelli qui trattato. Per
conservare la linearit`a del modello, occorre introdurre una variabile ausiliaria ed una serie
di vincoli come segue.
min y
soggetto a

(1.15)

x11 + x12 + x13 + x14 125000


x21 + x22 + x23 + x24 180000
x31 + x32 + x33 + x34 70000

(1.16)

x11 + x21 + x31


x12 + x22 + x32
x13 + x23 + x33
x14 + x24 + x34

(1.17)

3
X

cij xij y

100000
150000
50000
75000
j = 1, . . . , 4

i=1

xij Z+ , i, j,

y0

La variabile ausiliaria y ed i vincoli (1.17) permettono di gestire lobiettivo min / max


conservando la linearit`a del modello: in ogni soluzione ottima
P di questo programma lineare, il valore assunto da y coincide esattamente con maxj { ni=1 cij xij }. I vincoli (1.15)
e (1.16) hanno il ruolo gi`a noto.

1.4. Programmazione Lineare per esempi

11

1.4.5 Il problema del personale di un motel. Un motel autostradale, dovendo garantire un servizio continuato 24 ore su 24, ha bisogno di un numero minimo di inservienti
per ogni ora del giorno secondo la seguente tabella.
Fascia oraria Numero min.
02-06
4
06-10
8
10-14
10

Fascia oraria Numero min.


14-18
7
18-22
12
22-02
4

Ciascun inserviente lavora 8 ore consecutive al giorno.


Formulare il modello di Programmazione Lineare per garantire la presenza richiesta utilizzando il minor numero possibile di inservienti.
Soluzione. Questo problema richiede, per essere modellato in modo semplice, una definizione accorta di variabili. Occorre tener presente che: (1) esiste una soluzione ottima
dove ogni inserviente comincia lavorare allinizio di una fascia oraria e ne copre esattamente due; (2) ogni inserviente ha (naturalmente) un unico orario di inizio turno. Quindi
`e possibile definire:
xi numero di inservienti che cominciano il turno nella fascia i (i = 1, . . . , 6).
Con queste variabili si ottiene il modello
min x1 + x2 + x3 + x4 + x5 + x6
soggetto a
(1.18)
(1.19)
(1.20)
(1.21)
(1.22)
(1.23)

x1 + x6 4
x1 + x2 8
x2 + x3 10
x3 + x4 7
x4 + x5 12
x5 + x6 4
x1 , . . . , x6 Z+ .

Poiche ogni inserviente che comincia il turno nella fascia i copre le fasce i ed i + 1 (modulo
6), i vincoli (1.18)(1.23) garantiscono la copertura richiesta in ogni fascia. La funzione
obiettivo rappresenta esattamente il numero di inservienti necessari.
1.4.6 Un problema di schedulazione dei lavori. Scrivere il modello in programmazione lineare del seguente problema. Un caporeparto di unofficina di unazienda meccanica deve pianificare lesecuzione di cinque lotti su di una macchina della durata rispettivamente di 5 minuti, 7 minuti, 4 minuti, 7 minuti e 10 minuti. La sequenza di esecuzione

12

Capitolo 1. Problemi e Modelli

(1, 2, 3, 4, 5) `e data e non ci pu`o essere sovrapposizione temporale fra i lotti. Il primo lotto
ha come ora di consegna desiderata le 10.32, il secondo le 10.38, il terzo le 10.42, il quarto
le 10.52 ed il quinto le 10.57. Sia lerrore di un lotto pari al valore assoluto della differenza
tra il suo tempo di fine lavorazione e lora di consegna. Si vuole minimizzare la somma
degli errori dei lotti (ipotesi: il reparto comincia a lavorare alle 8.30).

Soluzione. Il problema richiede di scrivere un modello in grado di determinare gli istanti


di inizio lavirazione dei lotti in esame; si pu`o assumere come zero del tempo lora delle
8:30, per cui i lotti hanno date di scadenza (espresse in minuti) di 122, 128, 132, 142
e 147. Una serie di variabili `e necessaria per rappresentare i tempi di inizio lavorazione:

ti istante di lavorazione (in minuti dalle 8:30) del lotto i.

Inoltre lerrore del lotto i `e dato da i = |ti +pi di |, dove pi e di indicano rispettivamente
il tempo di lavorazione e la scadenza del lotto. La funzione obiettivo `e quindi del tipo

5
X
|ti + pi di |.
i=1

Questo genere di funzione `e non lineare quindi occorre nuovamente ricorrere ad un


espediente per rappresentare i valori assoluti in un modello lineare. Ricordando che
|x| = max(x, x), si pu`o pensare di utilizzare la stessa tecnica usata per obiettivi di
tipo min / max. Si introducono quindi le variabili

i errore del lotto i.

Il modello `e quindi il seguente.

min 1 + 2 + 3 + 4 + 5

1.4. Programmazione Lineare per esempi

13

soggetto a

(1.24)

t1 + 5 t2
t2 + 7 t3
t3 + 4 t4
t4 + 7 t5

(1.25)

1
1
2
2
3
3
4
4
1
1

(1 2)
(2 3)
(3 4)
(4 5)

t1 + 5 122
(t1 + 5 122)
t2 + 7 128
(t2 + 7 128)
t3 + 4 132
(t3 + 4 132)
t4 + 7 142
(t4 + 7 142)
t5 + 10 147
(t5 + 10 147)

ti 0,

i 0,

i = 1, . . . , 5.

I vincoli (1.24) garantiscono il rispetto della sequenza di lavorazione che, secondo il testo,
`e predeterminata, mentre i vincoli (1.25) vincolano i i ad assumere il valore assoluto di
ti + pi di .

1.4.7 Un problema di copertura tramite lapertura di impianti. Scrivere il


modello in programmazione lineare del seguente problema.
Si consideri un territorio sul quale siano localizzati 7 punti di domanda (ad es. 7 citt`a)
indicati in tabella con 1, 2, 3, 4, 5, 6, 7. Si considerino, inoltre, 5 punti di offerta indicati in
tabella con A, B, C, D, E nei quali potrebbero essere aperti dei centri vendita di unimpresa di distribuzione. Tale impresa `e interessata a soddisfare la domanda sopramenzionata
in modo tale che i clienti non percorrano pi`
u di 30 minuti di auto per raggiungere almeno
uno dei centri vendita. In tabella, per ogni coppia di punti di domanda e di offerta, viene
indicato il tempo auto necessario.
Limpresa ha inoltre fatto sapere che accetter`a soluzioni che prevedano lattivazione del
centro vendita B solo se `e gi`a attivo uno dei centri C o D.
Lapertura dei centri vendita costa rispettivamente (in milioni di euro): A = 310, B = 250,
C = 260, D = 330, E = 280.
Lobiettivo dellimpresa `e di minimizzare i costi di apertura dei centri vendita garantendo
il fatto che che tutti i punti di domanda vengano serviti.

14

Capitolo 1. Problemi e Modelli

1
2
3
4
5
6
7

A
41
25
21
21
11
47
37

B
33
12
43
42
23
23
47

C
24
22
34
39
24
19
51

D
29
58
54
26
29
16
26

E
58
41
18
18
53
31
19

Soluzione. Lapertura di un centro `e una decisione che differisce da quelle modellate


fino a questo momento, per il fatto di essere puramente binaria (un centro viene aperto
oppure no, non esistono casi intermedi). Per modellare questo genere di decisioni, `e
possibile inserire nei programmi lineari variabili binarie, cio`e interi con valori limitati
` da notare che queste variabili, a parte il loro campo di esistenza,
allinsieme {0, 1}. E
non hanno alcun ruolo privilegiato rispetto alle altre; in particolare, non sono disponibili i
consueti operatori logici (tipo and, or, not) comuni nei linguaggi di programmazione, che
vanno quindi emulati per mezzo di espressioni lineari puramente algebriche. Inoltre, non
`e consentito in alcun modo introdurre prodotti del tipo (variabile logica)(altre variabili),
errore sorprendentemente comune.
Il problema in esame si pu`o modellare con cinque variabili binarie A, B, C, D, E che
rappresentano lapertura (variabile= 1) o la non-apertura (variabile= 0) del rispettivo
centro.
min 310A + 250B + 260C + 330D + 280E
soggetto a
(1.26)
(1.27)
(1.28)
(1.29)
(1.30)
(1.31)
(1.32)
(1.33)

C +D 1
A+B+C 1
A+E 1
A+D+E 1
A+B+C +D 1
B+C +D 1
D+E 1
B C +D

I vincoli (1.26)(1.32) modellano operatori logici di tipo or: in base ai tempi di percorrenza
dati, per servire il punto 1 occorre aprire C oppure D; per servire il punto 2 occorre aprire
A oppure B oppure C, e cos` via. Il vincolo (1.33) modella unimplicazione logica
B = C D

1.4. Programmazione Lineare per esempi

15

(il requisito B apre solo se . . . specificato dal testo: confrontare con la tabella di verit`a
delloperatore logico).
Si noti anche che nellinsieme di vincoli (1.26)(1.33) esistono vincoli ridondanti : ad
esempio, (1.26) implica (1.30), (1.31) e (1.33); questi tre vincoli potrebbero quindi essere rimossi dal modello. Questa operazione non `e strettamente necessaria ai fini della
correttezza del modello, ma `e desiderabile in ambito applicativo, in quanto semplifica la
risoluzione del modello.
Mostriamo come i vincoli (1.26)(1.32) possono essere scritti in forma compatta. Supponiamo di introdurre la matrice A75 defininendo i suoi elementi aij come segue
(
1 se distanza tra citt`a i e centro j `e 30
.
ai,j =
0 altrimenti
Definiamo quindi la variabile xj come una variabile binaria che assume valore 1 se il centro
j viene aperto, 0 altrimenti. Allora i vincoli (1.26)(1.32) possono essere riscritti in forma
compatta ed equivalente come
Ax 1

t.c. x {0, 1}5.

1.4.8 Un altro problema di pianificazione della produzione. Una raffineria produce benzina verde e gasolio a partire da due tipi di greggio A e B, usando tre impianti.
Il primo impianto pu`o produrre 2 barili di verde e 3 di gasolio a partire da 4 barili di
greggio tipo A e 3 barili di greggio tipo B. Il secondo impianto pu`o produrre 4 barili di
verde e 2 di gasolio a partire da 3 barili di A e 4 barili di B. Il terzo pu`o produrre 2 barili
di verde e 2 barili di gasolio a partire da 3 barili di A e 3 barili di B. Gli impianti lavorano
sempre con le proporzioni specificate. La benzina verde viene venduta a 40$/barile, la
gasolio a 50$/barile. Sono disponibili per questo mese 5000 barili di greggio A e 6000
barili di greggio B. Per esigenze legate ad altre lavorazioni, almeno uno tra gli impianti
deve produrre non pi`
u di 1000 barili. Formulare il programma lineare per massimizzare
il profitto legato alla produzione mensile.
Soluzione. La definizione di variabili che porta a realizzare il modello pi`
u conciso `e
probabilmente la seguente:
xi
yi

numero di lavorazioni svolte allimpianto i = 1, 2, 3.


(
1 iff limpianto i `e limitato a 1000 barili,
i = 1, 2, 3.
0 altrimenti,

La definizione suggerita di xi permette di gestire il funzionamento degli impianti con le


proporzioni specificate, senza ricorrere a vincoli addizionali. Il modello risulta
max 40(2x1 + 4x2 + 2x3 ) + 50(3x1 + 2x2 + 2x3 )

16

Capitolo 1. Problemi e Modelli

soggetto a
(1.34)

4x1 + 3x2 + 3x3 5000


3x1 + 4x2 + 3x3 6000

(1.35)

y1 + y2 + y3 1

(1.36)

5x1 1000y1 + M(1 y1 )


6x2 1000y2 + M(1 y2 )
4x3 1000y3 + M(1 y3 )
xi 0,

yi {0, 1},

i = 1, 2, 3.

I vincoli (1.34) sono relativi al magazzino disponibile per i due tipi di greggio, che limita
la produzione. Il vincolo (1.35) impone che almeno un impianto sia limitato a 1000 barili.
I vincoli (1.36) svolgono limportante funzione di collegare i valori delle variabili binarie yi
con i valori delle xi ; la costante M (detta spesso big-M) `e una costante estremamente
grande. Si noti che ad esempio il primo vincolo di questa serie implica:
y1 = 1 =
y1 = 0 =

5x1 1000,
5x1 M (cio`e 5x1 non vincolato).

Questa tecnica del big-M `e comunemente usata per correlare variabili binarie e variabili
di altro tipo.
1.4.9 Un problema di produzione e gestione del personale. Scrivere il modello
in programmazione lineare del seguente problema. In una centrale elettrica sono a disposizione tre generatori ed ogni giorno si deve decidere quali usare solo di giorno e quali
anche di notte per assicurare una produzione di almeno 4000 megawatts di giorno e di
almeno 2800 megawatts di notte. Luso di un generatore comporta la presenza di personale tecnico che sorvegli il suo funzionamento; tale personale viene retribuito in maniera
differente a seconda dei turni necessari (12h/24h) e del tipo di generatore. Tali costi di
attivazione sono riportati nella tabella che segue (in migliaia di euro) insieme al costo per
ogni megawatt prodotta.
Costo attivazione
giorno giorno/notte
Generatore A
800
1200
Generatore B
700
1000
Generatore C
900
1400

Costo al
megawatt
4
6
7

Il generatore A ha una capacit`a produttiva di 2500 megawatts al giorno ma questa capacit`a


scende a 2000 megawatts se il generatore viene utilizzato sia di giorno che di notte.
Analogamente, il generatore B ha una capacit`a produttiva di 2000 megawatts al giorno
ma questa capacit`a scende a 1500 megawatts se il generatore viene utilizzato sia di giorno
che di notte. Infine, il generatore C ha una capacit`a produttiva di 3000 megawatts al
giorno ma questa capacit`a scende a 2500 megawatts se il generatore viene utilizzato sia
di giorno che di notte. Si vuole minimizzare il costo complessivo.

1.4. Programmazione Lineare per esempi

17

Soluzione. Assumendo i turni possibili specificati dal testo, si possono definire due serie
di variabili binarie:
xi 1 iff il generatore i `e utilizzato di giorno, i = A, B, C,
yi 1 iff il generatore i `e utilizzato sia di giorno che di notte, i = A, B, C.
Inoltre, essendoci un costo/MW, occorrono variabili in grado di specificare il numero
di MW prodotti dai generatori. Per mantenere distinte la produzione diurna da quella
notturna, si usano nuovamente due serie di variabili:
Wi MW prodotti dal generatore i se usato nel turno di giorno, i = A, B, C,
Zi MW prodotti dal generatore i se usato nel turno giorno/notte, i = A, B, C.
Il modello risulta
min

(800xA + 1200yA) + (700xB + 1000yB ) + (900xC + 1400xC )


+ 4(WA + ZA ) + 6(WB + ZB ) + 7(WC + ZC )

soggetto a

(1.37)

xA + yA 1
xB + yB 1
xC + yC 1

(1.38)

WA 2500xA ,
WB 2000xB ,
WC 3000xC ,

(1.39)

WA + WB + WC + ZA + ZB + ZC 4000
ZA + ZB + ZC 2800
Wi , Zi 0,

ZA 2000yA
ZB 1500yB
ZC 2500yC

xi , yi {0, 1},

i = A, B, C.

I vincoli (1.37) impongono che ogni generatore funzioni secondo al pi`


u un tipo di turno. I
vincoli (1.38) fissano i limiti dellerogazione di potenza come da turno per ogni generatore;
si noti anche qui luso di tecniche in stile big-M: ad esempio, il primo vincolo di questa
serie implica
xA = 1 =
xA = 0 =

WA 2500,
WA = 0.

Infine, i vincoli (1.39) impongono il soddisfacimento delle potenze minime per il giorno e
per la notte.

18

Capitolo 1. Problemi e Modelli

1.5

Problemi di Ottimizzazione

Questa sezione illustra alcuni dei modelli classici studiati in Ricerca Operativa ed in
particolare nellambito dellottimizzazione combinatoria. Sono intesi come classici nel
senso che sono quelli che hanno ricevuto, negli anni, maggiore attenzione da parte della
comunit`a scientifica e, di conseguenza, sforzi per la progettazione di algoritmi per la loro
soluzione. Tutto questo per merito della loro struttura matematica esemplificativa di tanti
problemi reali. Nei problemi che seguono infatti scopriremo strutture di vincoli che sono
gi`a state viste nei precedenti esempi. La maggiorparte dei problemi presentati in questa
sezione sono problemi di ottimizzazione N P-ardui.
La formulazione dei problemi presentati nel seguit prevede i seguenti passi:
definizione delle variabili
definizione dei vincoli
definizione della funzione obiettivo
1.5.1 Zaino 0-1 e Bin Packing. Siano dati n progetti. Il j-esimo progetto, j =
1, . . . , n `e caratterizzato da un costo aj e da un ritorno atteso cj . Si pu`o decidere di
investire in un progetto oppure no, cio`e non `e possibile frazionare nessuno dei progetti; si
ha inoltre a disposizione un budget b per finanziare i progetti. Il problema di scegliere un
sottoinsieme di progetti in modo tale da massimizzare il ritorno atteso, non eccedendo i
vincoli di budget `e il problema dello zaino binario. La formulazione del problema consiste
quindi in:
variabili: xj = 1 se si investe nel progetto j, xj = 0 altrimenti.
vincoli: non `e consentito eccedere il budget a disposizione
n
X

aj xj b

j=1

ed inoltre le variabili xj sono binarie


xj {0, 1} j = 1, . . . , n
funzione obiettivo: si vuole massimizzare il ritorno atteso
max

n
X

cj xj

j=1

Il problema pu`o essere quindi formulato come:


( n
)
n
X
X
max
cj xj :
aj xj b, x B n = {0, 1}n
j=1

j=1

1.5. Problemi di Ottimizzazione

19

In questo caso il j-esimo evento `e il j-esimo progetto. Questo problema `e detto problema
dello zaino per lanalogia con il problema dellescursionista che deve decidere cosa mettere
nello zaino, data una limitazione di peso su ci`o che pu`o portarsi dietro.
Il problema del Bin packing `e simile al problema dello zaino. Si supponga quindi di avere
n oggetti ed m zaini o bin (con m > n). Sia wj il peso delloggetto j e C la capacit`a
di ciascun bin (identica per tutti). Si assume, senza perdita di generalit`a, che i pesi wj e
la capacit`a del bin C siano degli interi positivi tali che valga wj C, per j = 1, . . . , n. Il
problema consiste nellassegnare tutti gli n oggetti a qualche bin in modo da non eccederne
la capacit`a con lobiettivo di minimizzare il numero di bin usati. Abbiamo quindi:
variabili: yi = 1 se si usa il bin i, 0 altrimenti (per i = 1, . . . , m)
xij = 1 se loggetto j `e assegnato al bin i, 0 altrimenti (per i = 1, . . . , m e j =
1, . . . , n).
vincoli: si pu`o assegnare ciascun oggetto ad un unico bin
m
X

xij = 1 ,

j = 1, . . . , n

i=1

gli oggetti assegnati a bin aperti non devono eccedere la capacit`a del bin stesso
n
X

wj xij Cyi ,

i = 1, . . . , m

j=1

ed inoltre le variabili xij ed ji sono binarie


xij {0, 1} i = 1, . . . , m, j = 1, . . . , n
e
yj {0, 1} j = 1, . . . , n
funzione obiettivo: si vuole minimizzare il numero di bin utilizzati
m
X
min
yi
i=1

La formulazione completa del problema `e lasciata per esercizio.


1.5.2 Assegnamento e Matching. Un altro classico problema riguarda lassegnamento di persone a job. Supponiamo che ci siano n persone e m job, con n m. Ogni job
deve essere eseguito esattamente da una persona; inoltre, ogni persona pu`o svolgere, al
pi`
u, un job. Alcune persone sono pi`
u adatte a svolgere determinati job di altre, cos`viene
stimato il costo cij di assegnare la persona j al job i. Il problema consiste nellassegnare
le persone ai job in modo tale da minimizzare il costo di completamento di tutti i job.
Per formulare questo problema, noto come problema di assegnamento, si segue la solita
metodologia:

20

Capitolo 1. Problemi e Modelli

variabili: si introducono le variabili binarie xij , con i = 1, . . . , m, j = 1, . . . , n


corrispondenti allevento di assegnare la persona j al job i. Cio`e:
xij = 1 se il job i `e assegnato alla persona j, xij = 0 altrimenti.
vincoli: poiche esattamente una persona deve svolgere il job i, si ha il vincolo:
n
X

xij = 1 i 1, . . . , m

j=1

Poiche ogni persona non pu`o effettuare pi`


u di un job, si ha il vincolo:
m
X

xij 1 j 1, . . . , n

j=1

ed inoltre le variabili xij sono binarie


xij {0, 1} i = 1, . . . , m j = 1, . . . , n
funzione obiettivo: si vuole trovare un assegnamento di costo minimo, cio`e
min

m X
n
X

cij xij

i=1 j=1

Nel problema di assegnamento gli m + n elementi sono partizionati in insiemi disgiunti


di job e persone. Ma in altri modelli di questo tipo, non `e possibile assumere una tale
partizione.
Consideriamo ad esempio il caso di 2n studenti che devono essere asegnati ad n camere
doppie: in questo caso ad ogni studente deve essere assegnato esattamente un compagno
di stanza. Supponiamo che lij-esimo evento, con i < j, corrisponda ad assegnare gli
studenti i e j alla stessa stanza; supponiamo anche che ci sia un beneficio pari a cij
quando gli studenti i e j condividono la stessa camera. Il problema
)
(2n1 2n
X
X X
X
xki +
xij = 1, i = 1, . . . 2n, x {0, 1}n(2n1)
max
cij xij :
i=1 j=i+1

k<i

j>i

`e noto come problema di accoppiamento o matching.


1.5.3 Set-Covering, Set-Packing e Set-Partitioning. Sia M = {1, . . . , m} un
insieme finito e sia {Mj } per j N = {1, . . . , n} una collezione di sottoinsiemi di M. Per
esempio, la collezione potrebbe essere costituita da tutti i sottoinsiemi di dimensione k,
per qualche k m.
Si dice che F N copre M se jF Mj = M. Si dice invece che F N `e un packing
rispetto ad M se Mj Mk = per tutti i j, k F, j 6= k. Se invece F N `e sia un covering
che un packing, allora F si dice una partizione di M. Nel problema di set-covering, cj `e

1.5. Problemi di Ottimizzazione

21

il costo di Mj e cerchiamo una copertura di costo minimo; nel problema di set-packing,


cj `e il peso di Mj e cerchiamo un packing di peso massimo.
Questi problemi possono essere formulati seguendo i seguenti passi:
variabili:
xj =

1
0

se j F
se j
/F

vincoli: indichiamo con A la matrice di incidenza m n della famiglia {Mj } per


j N; cio`e, per i M,

1 se i Mj
aij =
0 se i
/ Mj
Allora F `eg una copertura (rispettivamente packing e partizione) se e solo se x
B n soddisfa Ax 1 (rispettivamente Ax 1, Ax = 1), dove 1 `e un vettore di
dimensione m le cui componenti sono tutte uguali ad 1.
funzione obiettivo: nel caso del problema di set-covering la funzione obiettivo
diviene
min

n
X

cj xj

j=1

Si osservi che un problema di assegnamento con m job e m persone `e un problema di


set-partitioning in cui M = {1, . . . , m, m + 1, . . . , 2m} e Mj per j = 1, . . . , m2 `e un
sottoinsieme di M costituito da un job e da una persona.
Molti problemi pratici possono essere formulati come problemi di set-covering; una tipica
applicazione consiste nella localizzazione di impianti. Si veda, ad esempio, il problema
descritto nella sezione 1.4.7 a pagina 13.
I modelli di set-covering, set-packing e set-partitioning, mostrano come utilizzare vincoli lineari su variabili binarie per rappresentare relazioni tra le variabili stesse o tra gli
eventi che esse rappresentano. Un vincolo di packing stabilisce che al pi`
u uno tra un
insieme di eventi pu`o verificarsi, mentre i vincoli di covering e di partitioning stabiliscono rispettivamente che almeno uno, ed esattamente uno tra un insieme di eventi deve
verificarsi.
1.5.4 Facility Location. Questi problemi, cos` come il modello di set-covering, riguardano la localizzazione di facility per servire i clienti al minor costo possibile. Siano
dati un insieme N = {1, . . . , n} di potenziali siti per linstallazione delle facility e un
insieme di clienti I = {1, . . . , m}. Aprire una facility nel cito j ha un costo cj per j N.
Questo problema `e tuttavia pi`
u complesso del set-covering perche ogni cliente ha anche
una domanda per una certa merce e soddisfare la domanda del cliente i attraverso la

22

Capitolo 1. Problemi e Modelli

facility j ha un costo complessivo pari ad hij . Il problema di ottimizzazione consiste nel


selezionare un sottoinsieme di localit`a in cui aprire le facility e nellassegnare i clienti a
queste facility in modo tale da minimizzare il costo totale. In un problema di facility
location non capacitato, non c`e nessuna restrizione sul numero di clienti che una facility
pu`o servire.
Occorre come al solito seguire i seguenti passi:
variabili: Oltre alla variabile binaria xj = 1, se si installa una facility nel sito j e
xj = 0 altrimenti, si introduce la variabile continua yij , che rappresenta la frazione
della domanda del cliente i soddisfatta dalla facility j.
vincoli: la domanda di ogni cliente deve essere soddisfatta, cio`e
X
yij = 1 i I
jN

Inoltre il cliente i pu`o essere servito da j solo se la facility j `e stata aperta, cio`e
yij xj 0 i I, j N
mn
Si hanno poi i vincoli sulle variabili x B n , y R+
.

funzione obiettivo: occorre minimizzare sia i costi di installazione delle facility


che i costi di servizio dei clienti, cio`e:
X
XX
min
cj xj +
hij yij
jN

iI jN

Pu`o essere poco realistico assumere che una facility possa servire un numero qualsiasi
di clienti: supponiamo che la facility j abbia una capacit`a pari a uj e che il cliente
i abbia una domanda pari a bi . In questo caso yij rappresenta la quantit`a di merce
inviata dalla facility j al cliente i e hij `e il costo unitario di trasporto. Nel problema
di facility location capacitato i vincoli divengono quindi:
X
yij = bi i I
jN

yij uj xj 0 j N

iI

1.5.5 Traveling Salesman (Problema del commesso viaggiatore). Siano dati


un insieme di nodi V = {1, . . . , n} ed un insieme di archi A, con |A| = m. I nodi
rappresentano le citt`a e gli archi rappresentano coppie ordinate di citt`a tra cui esistono
strade dirette. Per ogni (i, j) A, cij `e il tempo necessario per andare dalla citt`a i alla
citt`a j. Il commesso viaggiatore deve visitare ciascuna delle n citt`a esattamente una volta
e poi tornare al punto di partenza: si vuole determinare lordine in cui egli dovrebbe
effettuare il suo tour in modo tale da terminare il prima possibile.

1.5. Problemi di Ottimizzazione

23

variabili: xij = 1 se il commesso viaggiatore va direttamente dalla citt`a i alla citt`a


j e xij = 0 altrimenti.
vincoli: Il commesso viaggiatore entra nella citt`a j esattamente una volta
X
xij = 1 j V
{i:(i,j)A}

Egli lascia la citt`a i esattamente una volta


X
xij = 1 i V
{j:(i,j)A}

Le variabili del problema sono binarie, cio`e x B |A| .


1

Figura 1.1: Subtour.


I vincoli finora introdotti sono sostanzialmente i vincoli del problema di accoppiamento perfetto, una soluzione del quale potrebbe essere della forma mostrata in
figura 1.1, cio`e un insieme di subtours disconnessi. Per eliminare queste soluzioni,
occorre introdurre ulteriori vincoli che garantiscano la connettivit`a imponendo che
il commesso viaggiatore passi da un sottoinsieme di citt`a allaltro. Vincoli di questo
tipo sono detti vincoli di cut-set e possono essere formulati come
X
xij 1 U V t.c. 2 |U| |V | 2
{(i,j)A:iU,jV \U }

oppure equivalentemente come


X
xij |U| 1 U V t.c. 2 |U| |V | 2
{(i,j)A:iU,jU }

funzione obiettivo: Si vuole minimizzare il tempo totale necessario per terminare


il tour, cio`e
X
min
cij xij
(i,j)A

24

Capitolo 1. Problemi e Modelli

Indipendentemente dalla formalizzazione scelta, i vincoli di cut-set sono allincirca


2|V | : occorrer`a quindi determinare formulazioni pi`
u compatte o ricorrere a metologie
che consentano di trattare con successo un gran numero di vincoli.
1.5.6 Vincoli disgiuntivi. In generale, in un problema di ottimizzazione, si assume
che tutti i vincoli debbano essere soddisfatti. In alcune applicazioni tuttavia, solo uno tra
due vincoli deve essere soddisfatto o pi`
u in generale k su m: in questo caso si dice che i
vincoli sono disgiuntivi.
Si consideri ad esempio il semplice caso in cui si vuol definire una variabile che assuma il
minimo di altre due variabili, cio`e y = min(u1 , u2 ). Ci`o pu`o essere fatto con le seguenti
disuguaglianze
y u1 e y u2
insieme ad una tra le seguenti disuguaglianze
y u1 o y u2 .
1.5.7 Scheduling. I vincoli disgiuntivi si incontrano di sovente nei problemi di scheduling in cui vari job devono essere eseguiti su una macchina e lordine in cui vengono
effettuati non `e rilevante. In questo caso si ottengono vincoli disgiuntivi del tipo o il job
k precede il job j sulla macchina i o viceversa.
Sia n il numero dei job ed m il numero di macchine. Supponiamo inoltre che ogni job debba
essere eseguito su ogni macchina, e che per ogni job lordine con cui deve essere eseguito
sulle varie macchine sia fissato: cio`e, il job j deve essere eseguito prima sulla machcina
j(1), poi sulla macchina j(2) e cos`via. Ciascuna macchina pu`o eseguire un solo job per
volta, ed inoltre una volta che un job `e partito su una macchina deve essere eseguito fino
al suo completamento. Lobiettivo `e quello di minimizzare il tempo di completamento di
tutti i job. I dati che specificano unistanza del problema sono oltre naturalmente ad n
e m, il tempo di elaborazione del job j sulla macchina i, indicato con pij per ogni i, j e
lordine di macchina j(1), . . . , j(m) per ogni job j.
Sia inoltre tij il tempo di inizio del job j sulla macchina i. Poiche la (r + 1)-esima passata
sul job j non pu`o iniziare prima che la passata di indice r sia stata completata, avremo i
seguenti vincoli:
tj(r+1),j tj(r),j + pj(r),j

r = 1, . . . , m 1, j

Per rappresentare i vincoli disgiuntivi relativi ai job j e k sulla macchina i, definiamo la


variabile xijk = 1 se il job j precede il job k sulla macchina i e xijk = 0 altrimenti dove
j < k. Si hanno quindi i vincoli:
tik tij + pij se xijk = 1
tij tik + pik se xijk = 0

1.5. Problemi di Ottimizzazione

25

Data una limitazione superiore su tij tik + pij per ogni i, j, k, si ottengono i vincoli
disgiuntivi:
tij tik pij + (1 xijk ) i, j, k
tik tij pik + xijk
i, j, k
In questo caso la funzione obiettivo `e
min

n
X

tj(m),j

j=1


Questo modello richiede m n2 variabili binarie. A differenza dei modelli di programmazione intera precedentemente visti, questo modello di programmazione intera mista non
`e stato risolto con successo per valori di m ed n che siano di interesse pratico, proprio a
causa dellelevato numero di variabili.
Appare quindi evidente la necessit`a di determinare buone formulazioni per risolvere in
modo efficiente i problemi di programmazione intera.
1.5.8 Relazioni Logiche. Spesso, le relazioni tra i valori di variabili booleane sono
assimilabili alle ben note relazioni logiche tra variabili proposizionali, ossia variabili che
possono assumere i valori vero o falso. In effetti, si possono costruire vincoli lineari tra
variabili logiche equivalenti alle classiche relazioni logiche del calcolo proposizionale. Nel
seguito, dato un letterale (proposizione elementare) a del calcolo proposizionale indicheremo con x(a) la corrispondente variabile booleana, associando il valore 1 di x(a) al valore
vero di a ed il valore 0 di x(a) al valore falso di a. Analizziamo adesso le pi`
u comuni
relazioni tra variabili proposizionali.
Negazione. Data la variabile proposizionale a, la variabile complementare b = a viene
rappresentata facilmente dalla variabile complementare x(b) = 1 x(a), con x(b) {0, 1}.
Se si hanno due variabili proposizionali a e b e si vuole imporre che una sia il complemento
dellaltra, `e sufficiente imporre alle corrispondenti variabili booleane di rispettare il vincolo
x(a) + x(b) = 1.
Implicazione. La relazione logica a b (a implica b) `e esprimibile mediante la disuguaglianza x(b) x(a); infatti, x(b) `e forzata ad assumere il valore 1 se x(a) =
1.
Unione (Or). Date due variabili proposizionali a e b, la variabile c = a b, che assume
il valore vero quando almeno una delle due variabili `e vera, pu`o essere espressa mediante
le seguenti relazioni:
x(c) x(a),

x(c) x(b),

x(c) x(a) + x(b),

x(c) {0, 1}

Infatti, le due prime diseguaglianze impongono alla variabile booleana x(c) di assumere il
valore 1 se una delle due altre variabili ha il valore 1. La terza impone il valore x(c) = 0
se x(a) = x(b) = 0.

26

Capitolo 1. Problemi e Modelli

Unione esclusiva (Or esclusivo). Date due variabili proposizionali a e b, la variabile


c = a b, che assume il valore vero quando una sola delle due variabili `e vera, pu`o essere
espressa mediante le seguenti relazioni:
x(c) x(a) x(b),
x(c) x(a) + x(b),

x(c) x(b) x(a),

x(c) 2 x(a) x(b),

x(c) {0, 1}.

Infatti, le due prime diseguaglianze impongono alla variabile booleana x(c) di assumere il
valore 1 quando una sola delle due altre variabili ha il valore 1. La terza impone il valore
x(c) = 0 se x(a) = x(b) = 0 e la quarta impone x(c) = 0 se x(a) = x(b) = 1.
Intersezione (And). Date due variabili logiche a e b, la variabile c = a b, che assume il
valore vero solo quando entrambe le due variabili siano vere, pu`o essere espressa mediante
le seguenti relazioni:
x(c) x(a),

x(c) x(b),

x(c) x(a) + x(b) 1,

x(c) {0, 1}.

Infatti, le prime due diseguaglianze impongono alla variabile booleana x(c) di assumere
il valore 0 quando almeno una delle due altre variabili ha il valore 0. La terza impone il
valore x(c) = 1 se x(a) = x(b) = 1.
1.5.9 Soddisfattibilit`
a Proposizionale. In generale, `e possibile formulare molti
problemi del calcolo proposizionale sotto forma di problemi di ottimizzazione. Questo
tipo di formulazione permette di utilizzare tecniche di ottimizzazione in alternativa o in
appoggio alle normali tecniche inferenziali usate nel calcolo logico.
Il problema della Soddisfattibilit`a Proposizionale richiede di determinare se una data
formula del calcolo proposizionale in Forma Normale Congiuntiva (FNC)
A = C1 C2 . . . Cm
`e soddisfattibile, dove C1 , C2 , . . . , Cm sono clausole del tipo
Ci = P1 P2 . . . Pr
e con Pj si indica o il letterale Pj o la sua negazione Pj , j = 1, . . . n. Si vuole cio`e
determinare se esiste un assegnamento di valore di verit`a vero o falso alle proposizioni
elementari P1 , P2 , . . . , Pn che renda vera la formula A. Siccome qualsiasi formula del calcolo proposizionale pu`o essere portata in FNC, questo problema ha rilevanti applicazioni
pratiche, ad esempio per il progetto e la verifica di circuiti digitali VLSI.
Introduciamo n variabili

1
aij = 1

logiche xj associate ai letterali Pj , j = 1, . . . n, e definiamo


se il letterale Pj appare diretto nella clausola Ci
se il letterale Pj appare negato nella clausola Ci .
se il letterale Pj non appare nella clausola Ci

1.5. Problemi di Ottimizzazione

27

Dato un qualunque vettore x {0, 1}n , che possiamo interpretare come un assegnamento di valori di verit`a agli n letterali P1 , . . . , Pn , `e facile verificare che la clausola Ci `e
soddisfatta dallassegnamento di valori di verit`a corrispondente ad x se e solo se risulta
X
aij xj 1 n(i),
j

dove n(i) `e il numero di letterali che appaiono negati in Ci . Di conseguenza, una


formulazione per il problema `e la seguente:
X
X
aij xj
t.c.
aij xj 1 n(i), i = 2, . . . , m
xj {0, 1}n .
max z =
j

Una qualsiasi soluzione ammissibile x per il problema corrisponde ad un assegnamento di


valori di verit`a alle proposizioni elementari che rende vere tutte le clausole C2 , C3 , . . . , Cm .
Se la soluzione ottima x del problema soddisfa anche la clausola C1 , cio`e se risulta
X
a1j xj 1 n(1),
j

allora x corrisponde ad un assegnamento di valori di verit`a alle proposizioni elementari


che soddisfa A, e quindi A `e soddisfattibile; altrimenti, non pu`o esistere nessun assegnamento di valori di verit`a alle variabili che soddisfa contemporaneamente C1 e tutte le altre
clausole, e quindi A non `e soddisfattibile.
Esiste una diretta connessione tra problemi legati al calcolo logico e problemi di ottimizzazione. Questo permette di utilizzare tecniche di ottimizzazione per la soluzione di
problemi relativi al calcolo logico e, viceversa, tecniche di inferenza per risolvere problemi di ottimizzazione. Esistono persino alcuni interessanti risultati teorici che mostrano
come le deduzioni logiche nel calcolo proposizionale possono essere viste come combinazioni lineari dei vincoli nella corrispondente formulazione di Programmazione Lineare con
variabili intere, e quindi come le tecniche inferenziali siano un caso particolare di alcune
tecniche per la risoluzione di problemi di Programmazione Lineare con variabili intere,
dimostrando come la relazione tra ottimizzazione e calcolo logico sia profonda.

28

Capitolo 1. Problemi e Modelli

Capitolo 2
Programmazione lineare
2.1

Programmi lineari e forma standard

2.1.1 Problemi di ottimizzazione e programmi lineari. Dato un insieme (finito


o infinito) Sa e una funzione f : Sa R, un problema di ottimizzazione consiste nel
determinare un elemento x Sa tale che
(2.1)

f (x ) = max{z = f (x) : x Sa }

oppure eventualmente stabilire che tale elemento non esiste.


Linsieme Sa `e detto insieme delle soluzioni ammissibili (o regione ammissibile), i suoi
elementi sono detti soluzioni ammissibili del problema, la f `e chiamata funzione obiettivo
e le x che soddisfano la (2.1) sono dette soluzioni ottime. Linsieme delle soluzioni ottime
del problema `e definito come
S = {x : f (x ) f (x) ,

x Sa }.

Benche la definizione data riguardi un problema di massimizzazione, non c`e alcuna difficolt`a nel comprendervi anche problemi di minimizzazione nei quali si cerca un x con
f (x ) f (x) per ogni x Sa , in quanto
(2.2)

min{z = f (x) : x Sa } max{z = f (x) : x Sa }.

Il problema (2.1) `e detto problema di programmazione lineare (o semplicemente programma lineare) se Sa `e costituito da tutti e soli i punti (scritti come vettori-colonna)
(x1 , . . . , xn )T Rn che soddisfano una serie di relazioni lineari (dette vincoli )

ai1 x1 + ai2 x2 + + ain xn = bi


i = 1, . . . , m,

29

30

Capitolo 2. Programmazione lineare

e la funzione obiettivo f (x) si scrive come


f (x) = c1 x1 + c2 x2 + + cn xn .
La scrittura convenzionale di un programma lineare in forma generale `e la seguente, con
opportune costanti bi , cj , aij , i = 1, . . . , m, j = 1, . . . , n.

(2.3a)

max z = c1 x1 + + an xn



n
X
oppure: min z =
cj xj
j=1

soggetto a
(2.3b)
(2.3c)
(2.3d)

ai1 x1 + ai2 x2 + + ain xn bi


ai1 x1 + ai2 x2 + + ain xn bi
ai1 x1 + ai2 x2 + + ain xn = bi

i = 1, . . . , k,
i = k + 1, . . . , l,
i = l + 1, . . . , m,

2.1.2 Convessit`
a della regione ammissibile. La regione ammissibile Sa di un programma lineare `e in generale lintersezione di un numero finito di semispazi e iperpiani.
` quindi ovvia la seguente
E
Propriet`
a 2.1. La regione Sa = {x Rn : Ax = b, x 0} `e un insieme convesso.
In particolare, un tale insieme di punti `e chiamato poliedro convesso; se inoltre il poliedro
`e limitato viene anche chiamato politopo.
Esempio 2.1.

(a) Il seguente programma lineare ha, nel piano (x1 , x2 ), la regione ammissibile rappresentata in figura.
In questo caso si tratta di un poliedro convesso illimitato
x2
Sa

max z = x1 + 3x2
soggetto a

1
2x1 + 3x2 6
3x1 4x2 7
x1 , x2 0

x1
1

1
La regione Sa `e data dallintersezione dei semipiani
2

1 = {x R : 2x1 + 3x2 6},

2 = {x R : 3x1 4x2 7},

3 = {x R : x1 0},

4 = {x R : x2 0}.

2.1. Programmi lineari e forma standard

31

(b) Il seguente programma ha invece una regione ammissibile che `e un politopo convesso si tratta del
poligono OABC.
x2
max z = 8x1 + 3x2
2
soggetto a
4x1 +5x2

10

4x1 +10x2

15

x2

x1 , x2 0.

A
1
b

Sa
b

x1
3

Qui Sa `e lintersezione dei semipiani

2
2

1 = {x R : 4x1 + 5x2 10}, 2 = {x R : 4x1 + 10x2 15},


2

3 = {x R : x2 1},

4 = {x R : x1 0},

5 = {x R : x2 0}.

2.1.3 Il metodo grafico in due variabili. Se il programma lineare in esame `e formulato in due sole variabili per semplicit`a, x1 , x2 la regione ammissibile Sa e la
ricerca di soluzioni ottime si prestano ad essere studiate graficamente. In particolare, `e
sufficiente
rappresentare la Sa nel piano (x1 , x2 );
se Sa 6= , studiare graficamente il fascio di rette
c1 x1 + c2 x2 = z
(dette anche rette isoprofitto) per valori crescenti del parametro z.
Se Sa 6= , sono possibili due casi:
(i) esiste un valore massimo z = z per il quale la retta c1 x1 + c2 x2 = z ha intersezione
non vuota con Sa , mentre tale intersezione `e vuota per z > z ; in questo caso z `e
il valore ottimo per il programma studiato, e si `e identificato graficamente linsieme
delle soluzioni ottime
S = {(x1 , x2 )T Sa : c1 x1 + c2 x2 = z }.
(ii) la retta c1 x1 + c2 x2 = z ha intersezione non vuota con Sa per valori arbitrariamente
grandi di z; in questo caso risulta S = 0, e il programma in esame ha funzione
obiettivo non limitata superiormente. Si noti che questo pu`o accadere solo (ma non
necessariamente) se Sa `e un poliedro illimitato.

32

Capitolo 2. Programmazione lineare

Esempio 2.2.

(a) Si consideri il seguente programma lineare, gi`a studiato negli esempi precedenti.
x2
c
max z = x1 + 3x2
soggetto a

z=6
z=5
z=4

2
b

= (2, 2)
x
Sa

2x1 + 3x2 6
3x1 4x2 7
x1 , x2 0

x1
1

1
Sa e si traccia la
Ogni retta isoprofitto ha espressione x1 + 3x2 = z, per z fissato. Si sceglie un x
= (2, 2), dove la funzione obiettivo vale
retta isoprofitto passante per questo punto: ad esempio, per x
z = 2 + 3 2 = 4, passa la retta isoprofitto
x1 + 3x2 = 4.
Per valori crescenti di z, la retta isoprofitto si sposta nella direzione identificata dal vettore c = (1, 3)T ;
sono tracciate come esempio le rette per z = 4, 5, 6. Vista la forma della regione ammissibile Sa e
la direzione di crescita di z, lintersezione di tali rette con Sa non `e mai vuota per quanto grande sia
z. Il programma lineare `e quindi privo di soluzione ottime, perche la funzione obiettivo `e illimitata
superiormente.
(b) Si consideri il seguente programma lineare.
x2
max z = 8x1 + 3x2

1
2c

soggetto a
4x1 +5x2
4x1 +10x2
x2

10
15
1

Sa
b

x1 , x2 0.

x1
3

20
z=
15
z=
10
z=

In figura sono tracciate come esempio le rette isoprofitto 8x1 + 3x2 = z per z = 10, 15, 20. La direzione
di crescita di z `e data dalla direzione del vettore
c = (8, 3)T . La retta che interseca Sa con z massima

5
possibile `e quella che passa per il punto 2 , 0 , che risulta quindi ottimo.

2.1.4 Forma standard. Un caso particolarmente importante `e quello in cui il programma lineare si presenta nella forma standard
(2.4a)

max z = c1 x1 + c2 x2 + + cn xn

2.1. Programmi lineari e forma standard

33

soggetto a
(2.4b)
(2.4c)

ai1 x1 + ai2 x2 + + ain xn = bi


x1 , . . . , xn 0.

i = 1, . . . , m

Questa corrisponde ad un programma nel quale:


la funzione obiettivo deve essere massimizzata;
gli unici vincoli di disuguaglianza impongono la non-negativit`a di tutte le variabili;
tutti gli altri vincoli sono vincoli di uguaglianza.
In forma compatta (matriciale), il programma (2.4a)(2.4c) si scrive convenzionalmente
come
max{z = cT x : Ax = b, x 0}
dove si `e definito


c1
x1
c2
x2


c = .. ,
x = .. ,
.
.
cn
xn

a11 a12 . . . a1n


a21 a22 . . . a2n

A=
. . . . . . . . . . . . . . . . . . . .
am1 am2 . . . amn

b1
b2

b = .. ,
.
bm

Si osserva che la disuguaglianza x 0 significa x1 0, x2 0, . . . , xn 0.


2.1.5 Conversione di un programma in forma standard. Senza perdita di generalit`a, lo studio delle propriet`a dei programmi lineari pu`o limitarsi allo studio dei
programmi in forma standard.
Le seguenti conversioni permettono di riscrivere qualunque programma lineare nella forma
generale (2.3a)(2.3d) come un programma lineare equivalente in forma standard.
C0. In base alla (2.2) ogni programma di minimizzazione pu`o essere convertito in un
programma di massimizzazione equivalente, cambiando segno alla funzione obiettivo.
C1. Per ogni variabile xi per la quale appare il vincolo xi 0, si applica il cambio di
variabili
xi = xi .

34

Capitolo 2. Programmazione lineare

C2. Per ogni variabile libera in segno si introducono due variabili x+


i , xi e si applica il
cambio di variabili

xi = x+
i xi

aggiungendo i vincoli

x+
i 0, xi 0.

C3. Per ogni vincolo del tipo (2.3b) si introduce una nuova variabile xn+i (detta variabile
di surplus associata al vincolo i-esimo) e si sostituisce
n
X

aij xj bi

j=1

con
n
X

aij xj xn+i = bi ,

j=1

xn+i 0.

C4. Per ogni vincolo del tipo (2.3c) si introduce una nuova variabile xn+i (detta variabile
di slack associata al vincolo i-esimo) e si sostituisce
n
X

aij xj bi

j=1

con
n
X

aij xj + xn+i = bi ,

j=1

xn+i 0.

Esempio 2.3.
Il programma lineare
min z = 4x1 + 5x2 x3
soggetto a
2x1 + x3 7
x1 + x2 16
x1 + 2x2 = 8
x1 0, x2 0, x3 libera,
si pu`
o trasformare in un programma equivalente in forma standard come segue.

2.1. Programmi lineari e forma standard

35

Applicando la C0 si passa al programma equivalente di massimizzazione


max z = 4x1 5x2 + x3
soggetto a
2x1 + x3 7
x1 + x2 16
x1 + 2x2 = 8
x1 0, x2 0, x3 libera.
Applicando C1 si cambia x
2 = x2 .
max z = 4x1 + 5
x2 + x3
soggetto a
2x1 + x3 7
x1 x
2 16
x1 2
x2 = 8
x1 , x2 0, x3 libera.

Applicando C2 si sostituisce x3 = x+
3 x3 .

max z = 4x1 + 5
x2 + x+
3 x3

soggetto a

2x1 + x+
3 x3 7
x1 x
2 16

x1 2
x2 = 8

x1 , x2 , x+
3 , x3 0.

Infine, applicando C3 e C4 con lintroduzione di una variabile di surplus x4 e di una variabile di slack
x5 si ottiene

max z = 4x1 + 5
x2 + x+
3 x3

soggetto a

2x1 + x+
3 x3 x4 = 7

x1 x
2 + x5 = 16
x1 2
x2 = 8

x1 , x2 , x+
3 , x3 , x4 , x5 0.

2.1.6 Forma canonica di un programma lineare. Un programma lineare `e detto


in forma canonica se presenta solo variabili non negative e vincoli di disuguaglianza, cio`e
`e scritto come
(2.5)

max{cT x : Ax b, x 0},

(c Rn , b Rm , A Rmn ).

Ogni programma lineare in forma generale pu`o essere riscritto come un programma
equivalente in forma canonica. A tale scopo, `e sufficiente

36

Capitolo 2. Programmazione lineare

trasformare il programma in forma standard,


e poi
sostituire ogni vincolo di uguaglianza
n
X

aij xj = bi

j=1

con la coppia di vincoli


n
X

aij xj bi ,

j=1

n
X

aij xj bi .

j=1

2.1.7 Assunzioni fondamentali. Poiche ogni programma lineare si pu`o trasformare


in un programma lineare equivalente in forma standard, dora in poi si considerano (salvo
diverso avviso) sempre programmi lineari espressi nella forma standard
max{z = cT x : Ax = b, x 0}.
Si assume inoltre per evitare casi banali che
la matrice A Rmn abbia m < n e (A) = m.
2.1.8

Ottimalit`
a di una soluzione ammissibile.

Per un programma lineare

max{z = cT x : Ax = b, x 0}
si possono determinare le seguenti condizioni di ottimalit`a.
Lemma 2.2. Per ogni x Sa = {x : Ax = b, x 0}, sono condizioni equivalenti:
(i) cT x = max{z = cT x : Ax = b, x 0} (cio`e, x `e una soluzione ottima);
(ii) non esiste y Rn tale che
(2.6)

Ay = 0,
cT y > 0,
con yj 0 per ogni indice j tale che xj = 0.

Dimostrazione. (i) = (ii). Per assurdo, si supponga che esista un tale y. Allora, per
> 0 sufficientemente piccolo risulta (x + y) 0, e
A(x + y) = b.
Quindi (x + y) Sa , e inoltre
cT (x + y) = cT x + cT y > cT x ,
contraddicendo lottimalit`a di x .

2.2. Geometria della regione ammissibile

37

(i) = (ii). Se x non `e una soluzione ottima, esiste un x Sa tale che cT x cT x =


> 0. Ponendo y = (x x ) risulta
cT y = cT (x x ) = cT x cT x = > 0.
Poiche x , x Sa , risulta Ax = b e Ax = b, quindi
Ay = A(x x ) = Ax Ax = b b = 0.
Infine, per ogni indice j tale che xj = 0, risulta yj = xj xj = xj 0.
I vettori che soddisfano le condizioni (2.6) sono detti direzioni ammissibili di crescita della
funzione obiettivo cT x rispetto al dato punto x Sa . Si dice quindi che un certo punto di
Sa `e ottimo se e solo se rispetto ad esso non esistono direzioni ammissibili di crescita. Nota
una direzione ammissibile di crescita y rispetto ad un punto x Sa , esistono soluzioni
ammissibili x + y migliori di x, per valori opportuni del passo > 0.

2.2

Geometria della regione ammissibile

2.2.1 Richiami e definizioni. Un punto x Rn `e combinazione lineare convessa di


altri due punti u, v Rn se esiste [0, 1] tale che x = u + (1 )v. Un insieme di
punti S Rn `e convesso se per ogni u, u S tutti i punti del segmento
uv = {x(t) = u + (1 )v}
appartengono a S.
Un punto x di un insieme convesso S `e un punto di estremo (o vertice) di S se non esistono
due punti distinti u, v S \ x e [0, 1] tale che
x = u + (1 )v.
Ci`o equivale a dire che x non `e punto interno di alcun segmento interamente contenuto
in S (se un segmento incluso in S contiene x, questo pu`o solo essere un estremo del
segmento). In R2 , R3 , ci`o corrisponde alla classica nozione (intuitiva) di vertice.
Si pu`o dare la seguente definizione alternativa di punto di estremo: un punto x di un
insieme convesso S Rn `e un punto di S tale che non esistono due punti distinti u, v S
per cui x = 12 u + 21 v (cio`e, x non `e punto medio di alcun segmento contenuto in S).
Si pu`o verificare facilmente che le due definizioni sono equivalenti.

2.2.2 Risultati fondamentali. I punti di estremo della regione ammissibile di un


programma lineare hanno una particolare importanza, a causa del seguente risultato.

38

Capitolo 2. Programmazione lineare

Teorema 2.3 (Teorema fondamentale della programmazione lineare Dantzig,


1947). Se il programma lineare
max{z = cT x : Ax = b, x 0}
ammette soluzioni ottime, allora almeno una di esse `e un vertice di Sa = {x
Rn : Ax = b, x 0}.
Dimostrazione del Teorema 2.3. Si scelga un ottimo x con il minimo numero possibile
di componenti strettamente positive, e si indichi cT x = z . Nel seguito si dimostra che
il punto di ottimo cos` scelto deve essere un vertice.
Se x = 0, esso `e ovviamente un vertice (lorigine non pu`o essere combinazione lineare
convessa di vettori 0). Se x 6= 0, sia per semplicit`a
x = (x1 , . . . , xk , xk+1 , . . . , xn )T .
| {z } |
{z
}
>0

=0

Per assurdo, si supponga che x non sia un vertice di Sa , e quindi x = 12 u + 21 v, per


u, v Sa distinti da x . Si pu`o osservare che
(i) z = cT x = 21 cT u + 21 cT v = cT u = cT v = z , cio`e anche u, v sono soluzioni
ottime;
(ii) Per ognuna delle componenti di indice j = k + 1, . . . , n,
1
1
0 = xj = uj + vj , uj , vj 0 = uj = vj = 0.
2
2
Si ponga y = (u v); risulta y 6= 0, e senza perdita di generalit`a si pu`o assumere che
almeno una componente di y sia < 0 altrimenti, si pu`o porre y = v u e quanto segue
() = x + y con > 0. Questo x
`e un elemento
vale ugualmente. Si consideri un punto x
di Sa per > 0 scelto sufficientemente piccolo, in quanto risulta:
(a) A
x = Ax + Ay = Ax + Au Av = b + b b = b;
(b) xj = xj + yj = 0 + 0 = 0 per ogni j = k + 1, . . . , n;
(c) xj = xj + yj 0 se

xj
yj

per ogni j {1, . . . , k} tale che yj < 0.

In particolare, fissato proprio




xj
= min : yj < 0 = ,
yj
almeno una tra le componenti x1 , . . . , x
k `e nulla, mentre le altre rimangono 0. Senza
`e una soluzione ottima:
perdita di generalit`a, si assuma xk = 0. Inoltre x
= cT x + y = z + cT u cT v = z + z z = z .
cT x

2.2. Geometria della regione ammissibile

39

Ma allora
= (x1 + y1 , . . . , xk1 + yk1 , xk + = 0, 0, . . . , 0)
x
`e una soluzione ottima e ammissibile con meno di k componenti > 0. Questo `e in contraddizione con il fatto che x fosse stato scelto in modo da avere il minimo numero possible di
ne ha almeno una in meno, la k-esima).
componenti strettamente positive (infatti x
Esiste una semplice caratterizzazione algebrica dei vertici di Sa , data dal seguente risultato.
Lemma 2.4. Per qualunque x Sa , sono condizioni equivalenti:
(i) x `e un vertice di Sa ;
(ii) le colonne di A = (A1 , . . . , An ) in {Aj : xj > 0} sono linearmente indipendenti.
Dimostrazione. (i) = (ii). Sia x un vertice di Sa . Siano x1 , x2 , . . . , xk le componenti
strettamente positive di x, e quindi xj = 0 per ogni altro indice j > k. Per lammissibilit`a
di x risulta
k
X

xj Aj = bj .

j=1

Per assurdo, siano A1 , . . . , Ak linearmente dipendenti. Questa ipotesi implica che il


sistema di equazioni lineari
y1 A1 + + yk Ak = 0
abbia almeno una soluzione (y1 , . . . , yk )T 6= 0. Per > 0 sufficientemente piccolo si ottiene
allora
k
X

(xj + yj )Aj = b

j=1

k
X

(xj yj )Aj = b

j=1

con (xj yj ) 0 per ogni j = 1, . . . , k. Allora sono elementi di Sa le soluzioni u, v Rn


cos` definite:
u = (x1 + y1 , . . . , xk + yk , 0, . . . , 0)T ,
v = (x1 y1 , . . . , xk yk , 0, . . . , 0)T .
Da queste, risulta x = 21 u + 21 v assurdo.
(ii) = (i). Siano per semplicit`a x1 , . . . , xk le componenti strettamente positive di x.
Per assurdo, si supponga che x non sia un vertice, cio`e x = 12 u + 12 v con u, v Sa distinti.
Per le componenti j = k + 1, . . . , n risulta
1
1
0 = xj = uj + vj , uj , vj 0 = ui = vj = 0.
2
2

40

Capitolo 2. Programmazione lineare

Per le componenti j = 1, . . . , k, lammissibilit`a di u, v Sa implica che devono valere le


condizioni
u1 A1 + + uk Ak = b,
v1 A1 + + vk Ak = b,
P
e quindi kj=1 (uj vj )Ai = 0 con (u1 v1 , . . . , uk vk )T 6= 0, contraddicendo lindipendenza lineare delle colonne A1 , . . . , Ak .
Il lemma, oltre ad offrire un metodo algebrico per riconoscere un vertice di Sa , evidenzia
lutilit`a del Teorema Fondamentale: il numero di vertici di Sa `e al pi`
u pari al numero
di insiemi liberi di colonne estraibili dalla matrice A. Questo numero `e finito, quindi la
soluzione ottima di un programma lineare si pu`o cercare nellinsieme finito dei vertici di
Sa , anziche nellintero Sa che ha in generale la potenza del continuo.

2.3

Soluzioni di base di un programma lineare

2.3.1 Soluzioni ammissibili di base. Dato un programma lineare in forma standard, un insieme di m variabili B = {xj1 , xj2 , . . . , xjm } `e detto insieme di variabili di base
(o semplicemente base, con un abuso di terminologia) se le colonne di A Aj1 , . . . , Ajm sono
tra loro linearmente indipendenti poiche (A) = m, esse formano una base dello spazio
delle colonne di A. Le rimanenti variabili N = {x1 , x2 , . . . , xn } \ B sono dette variabili
fuori base. Si definisce anche un (sotto)vettore di variabili di base xB = (xJ : xJ B)
e un sottovettore di variabili fuori base xN = (xj : xJ 
N); riordinando
eventualmen
xB
te le componenti, il vettore x si scrive quindi come x =
. La matrice invertibile
xN
AB = (Aj : xj B) `e detta matrice di base (associata a B); la matrice formata dalle
rimanenti colonne si denota con AN = (Aj : xj N). Il sistema di vincoli Ax = b si pu`o
riscrivere come
AB xB + AN xN = b
o, equivalentemente, esprimendo le variabili xB come dipendenti da xN , come
(2.7)

1
xB = A1
B b AB AN xN .

La soluzione x(B) definita dal sistema (2.7) per xN = 0 ( = xB = A1


e detta
B b). `
soluzione di base del sistema Ax = b associata a B. Essa `e lunica soluzione per la quale
xj = 0 xj
/ B.
Utilizzando le relazioni (2.7), anche la funzione obiettivo z = cT x si pu`o scrivere
 in

cB
funzione delle variabili fuori base xN . Partizionando anche il vettore dei costi c =
cN

2.3. Soluzioni di base di un programma lineare

41

analogamente a quanto fatto per x, si ottiene per qualunque x Sa :


z = cT x = cTB xB + cTN xN =
1
T
= cTB (A1
B b AB AN xN ) + cN xN =

(2.8)

T
T
1
= cTB A1
B b + (cN cB AB AN )xN =
def

= z(B) + rT (B)xN

Il vettore a |N| = n m componenti rT (B) = (cTN cTB A1


B AN ) di componenti (rj =
1
T
cj cB AB Aj : xj N) `e detto vettore dei costi ridotti delle variabili fuori base. La
quantit`a z(B) = cTB A1
e il valore di funzione obiettivo della soluzione di base associata
B b`
a B (ottenuto infatti quando xN = 0).
Se per una soluzione di base x(B) risulta anche
xj (B) 0 per ogni xj B
allora x(B) Sa , e si dice che:
B `e una base ammissibile per il programma lineare;
x(B) `e la soluzione ammissibile di base associata a B.
Se una o pi`
u componenti xj (B) B risultano nulle la base B `e detta degenere.
Esempio 2.4.
Il programma lineare
max z = 8x1 + 3x2
soggetto a
4x1 +5x2

10

4x1 +10x2
x2

15
1

x1 , x2 0.
equivale al seguente programma in forma standard.
max z = 8x1 + 3x2
soggetto a
4x1 + 5x2

+x3

4x1 + 10x2
x2
x1 , . . . , x5 0.

= 10
+ x4

= 15
+x5 = 1

42

Si possono identificare le seguenti basi ammissibili.

1 0 0
{x3 , x4 , x5 } = AB = 0 1 0
(2.9a)
0 0 1

5 1 0
{x2 , x3 , x4 } = AB = 10 0 1
(2.9b)
1 0 0

4 5 1
(2.9c)
{x1 , x2 , x3 } = AB = 4 10 0
0 1 0

4 5 0
(2.9d)
{x1 , x2 , x4 } = AB = 4 10 1
0 1 0

4 5 0
{x1 , x2 , x5 } = AB = 4 10 0
(2.9e)
0 1 1

4 0 0
(2.9f)
{x1 , x4 , x5 } = AB = 4 1 0
0 0 1

Capitolo 2. Programmazione lineare

xB

xB

xB

xB

xB

xB


10
x3
= x4 = 15
1
x5

x2
1
= x3 = 5
x4
5
5
x1
4
= x2 = 1
0
x3
5
x1
4
= x2 = 1
0
x4
5
x1
4
= x2 = 1
x5
0
5
x1
2
= x4 = 5
1
x5

Non sono riportate esplicitamente le variabili fuori base, perche esse hanno sempre valore 0. Si noti come
` invece una
le basi degeneri (2.9c)(2.9e) descrivano tutte la stessa soluzione, pur essendo basi distinte. E
base non ammissibile, ad esempio, la

15
4 1 0
x1
4
5 .
{x1 , x3 , x5 } = AB = 4 0 0
(2.9g)
xB = x3 =
1
0 0 1
x5
perche la xB viola i vincoli di non-negativit`a.

Propriet`
a 2.5. Dato un programma lineare in forma standard, sono condizioni
equivalenti:
Sa `e una soluzione ammissibile di base;
(i) x
`e un vertice di Sa .
(ii) x
Dimostrazione. Sia per semplicit`a x1 , . . . , x
k > 0, xk+1 = = xn = 0.
= x(B) dove B `e una base opportuna, le colonne {Aj : xj >
Banale: in questo caso x
`e un vertice.
0} {Aj : xj B} sono linearmente indipendenti, e quindi x
`e un vertice di Sa , e quindi le colonne A1 , . . . , Ak sono linearmente indipendenti.
x
Sono possibili due casi.
(a) Se k = m, linsieme di variabili B = {x1 , . . . , xk } `e un insieme di variabili di base
= x(B).
completo, e x
(b) Se k < m, linsieme {A1 , . . . , Ak } pu`o essere completato a una base dello spazio
delle colonne di A aggiungendovi altre m k colonne opportunamente scelte. Siano

2.4. Lalgoritmo del simplesso.

43

queste Ak+1, . . . , Am , senza perdita di generalit`a. Allora B = {x1 , . . . , xm } `e un


= x(B) si noti che la base risulta
insieme di variabili di base completo e x
degenere nelle componenti xk+1 , . . . , xm .

2.4

Lalgoritmo del simplesso.

Lalgoritmo del simplesso `e una procedura in grado di determinare una soluzione ottima di
un programma lineare (si assume sempre in forma standard, nota bene) se questa esiste,
oppure di determinare che si tratta di un problema illimitato. I passi fondamentali dellalgoritmo sono comuni a molti algoritmi numerici di ottimizzazione, e si basano sulla generazione di una successione di soluzioni ammissibili di base x(B0 ), x(B1 ), x(B2 ), . . . , x(Bt )
dove ogni x(Bk ) `e ricavato in un intorno di x(Bk1 ) sfruttando una direzione ammissibile
di crescita.
Per lo sviluppo dellalgoritmo nelle sue linee generali `e conveniente basarsi sulla seguente
Ipotesi. il programma lineare non possiede basi ammissibili degeneri.
Lipotesi potr`a poi essese lasciata cadere, purche si seguano alcune cautele nellimplementazione dellalgoritmo.

2.4.1 Direzioni di crescita ammissibili del simplesso. Lalgoritmo del simplesso


genera rispetto alla soluzione di base corrente sia x(B) una specifica famiglia di
direzioni ammissibili di crescita. Si consideri quindi la base corrente B. Per lipotesi
di non-degenerazione si ha xB (B) = A1
B b > 0, mentre xN (B) = 0. Una vettore che
fornisce una direzione ammissibile di crescita rispetto a x(B) soddisfa le condizioni (2.6),
che possono essere scritte, riformulando le equazioni Ay = 0 rispetto alla base B, come
yB = A1
B AN yN
cT y = cTB yB + cTN yN > 0
yN 0.
Sostituendo le yB in cT y = cTB yB + cTN yN si ottiene
(2.10)

yB = A1
B AN yN

(2.11)
(2.12)

T
(cTN cTB A1
B AN )yN = r (B)yN > 0
yN 0.

Poiche le yB non hanno vincoli di segno, la soddisfacibilit`a delle relazioni (2.10)(2.12)


dipende solo dalle equazioni (2.11)(2.12). In particolare vale il seguente:

44

Capitolo 2. Programmazione lineare

Criterio di ottimalit`
a. Non esistono y che soddisfino le (2.10)(2.12) (e
quindi x(B) `e ottima) se e solo se il vettore r(B) non ha componenti strettamente positive.
Se il criterio di ottimalit`a non `e verificato si procede a generare una direzione ammissibile
di crescita y scegliendo un costo ridotto rq > 0 e fissando
(
yq = 1
yN =
yj = 0
per ogni j tale che xj N \ {xq }.
(2.13)
yB = A1
B Aq
2.4.2 Aggiornamento della soluzione. Determinata la direzione di crescita ammissibile (2.13) si genera una nuova soluzione ammissibile
x = x(B) + y

(con opportuno > 0).

Si noti che per ogni > 0 si ha A(x+y) = b, e inoltre cT (x(B)+y) = z(B)+rT (B)y =
z(B) + rq (B) > z(B). Il valore parametro deve essere scelto in modo da massimizzare
lincremento in funzione obiettivo garantendo sempre lammissibilit`a, quindi
= max{ > 0 : x(B) + y 0}.
La soluzione x(B) + y ha componenti

xj (B) + yj
xq (B) + yq =
x(B) + y :

xj (B) + yj = 0

per ogni indice j t. c. xj B,


(perche xq (B) = 0, yq = 1)
per ogni indice j t. c. xj N \ {xq }.

Si pu`o osservare che, al crescere del parametro > 0, ognuna delle componenti xj (B)+yj :
decresce se yj < 0, mentre
non decresce, e quindi rimane non negativa per ogni > 0, se yj 0.

Il valore cercato `e quindi il pi`


u grande che garantisce
xj (B) + yj 0

per ogni j tale che yj < 0.

cio`e



xj (B)
= min
: yj < 0 .
j
yj
Se non esistono componenti yj strettamente negative nel vettore yB = A1
B Aq , il parametro pu`o crescere indefinitamente senza compromettere lammissibilit`a di x + y, e
con esso la funzione obiettivo
z() = z(B) + rq (B) +.
+

Vale quindi il seguente

2.4. Lalgoritmo del simplesso.

45

Criterio di arresto per illimitatezza. Se risulta rq (B) > 0 e yB = A1


B Aq
0, il programma lineare non ammette soluzione ottima.
Se invece viene determinato con valore finito


xj (B)
xp (B)
= min
: yj < 0 =
j
yj
yp
la soluzione x = x + y ha le seguenti componenti.

xj = xj (B) + yj
per ogni j t. c. xj B \ {xp }

xp (B)

x = x (B) + y = 0
)
(perche =
p
p
p

yp
x:

(perche xq (B) = 0, yq = 1)
xq xq (B) + =

x = 0
per ogni indice j tale che xj N \ {xq }
j
Propriet`
a 2.6. La soluzione x `e la soluzione ammissibile di base associata alla base
B = (B \ {xp }) {xq }.
Dimostrazione. Si supponga, per semplicit`a, B = {x1 , . . . , xm }. Le variabili in B =
(B \ {xp }) {xq } formano un insieme di variabili di base se e solo se la matrice AB =
(A1 , . . . , Ap1 , Aq , Ap+1, . . . , Am ) `e invertibile o, equivalentemente, se `e inveribile la matrice

1 0 0 . . . 0 y1 0 . . . 0
0 1 0 . . . 0 y2 0 . . . 0

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

0 0 0 . . . 1 yp1 0 . . . 0
1

AB AB =
0 0 0 . . . 0 yp 0 . . . 0 riga p

0 0 0 . . . 0 yp+1 1 . . . 0

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0 0 0 . . . 0 ym 0 . . . 1


p+q

e ci`o vale, poiche risulta A1
(yp ) 6= 0.
B AB = (1)
Lalgoritmo del simplesso ha, riassumendo, la seguente formulazione.
1: Input: un programma lineare max{z = cT x : Ax = b, x 0},
2: e una sua base ammissibile B.
3: loop
4:
Calcola la soluzione di base x(B) = A1
B b, xN = 0.
1
T
5:
Calcola i costi ridotti rj = cj cB AB Aj
per ogni j t. c. xj N.
6:
if rj 0 per ogni j t. c. xj N then
7:
return x(B), ottima!
8:
else
9:
Scegli rq > 0.

46

10:
11:
12:
13:
14:
15:
16:
17:
18:

Capitolo 2. Programmazione lineare

Calcola yB = A1
B Aq .
if yB 0 then
return Problema illimitato!
else
x (B)
Scegli xp B tale che xpy(B)
= min{ jyj : yj < 0}
p
Aggiorna B (B \ {xp }) {xq }.
end if
end if
end loop

Le selezioni alle righe 9 e 14 dellalgoritmo non sono, in questa versione base, definite completemente e lasciano spazio alluso di diversi criteri per la scelta della variabile entrante
in base xq e della variabile uscente xp . La seguente `e la regola suggerita nella formulazione
storica dellalgoritmo.
Regola di Dantzig. La variabile entrante xq deve avere
rq = rmax = max{rj : xj N} > 0.
Nel caso che pi`
u variabili presentino lo stesso costo ridotto rmax la scelta avviene a caso
tra queste.

x (B)
scegliere arbitraNel caso in cui pi`
u variabili presentino il minimo rapporto jyj
yj <0

riamente come xp una tra queste ultime.

2.4.3 Implementazione. Se `e nota una base ammissibile B, tutte le informazioni


necessarie allesecuzione dellalgoritmo, inclusa la determinazione di una direzione ammissibile di crescita, sono disponibili nella riformulazione del programma lineare rispetto
alla base B:
max
soggetto a

z = z(B) +rT (B)xN


1
x(B) = A1
B b AB AN xn
xB 0, xN 0.

La determinazione esplicita del passo di aggiornamento non `e necessaria, in quanto basta


identificare
la variabile xq
/ B destinata ad entrare in base con laggiornamento deve essere
scelta in base ai costi ridotti;
la variabile xp B destinata a lasciare la base con laggiornamento per farlo,
basta notare che le componenti di yB = A1
B Aq appaiono come coefficienti della
variabile xq nella riformulazione.
La riformulazione rispetto alla nuova base B = (B \ {xp }) {xq } si calcola in modo
1
incrementale, ricavando xq dalle equazioni xB = A1
B b AB AN xN e sostituendola
nelle altre equazioni della riformulazione, al fine di eliminare xq .

2.4. Lalgoritmo del simplesso.

47

Esempio 2.5.
Si vuole risolvere il seguente programma lineare.
max z =4x1 + x2
soggetto a

max z =4x1 + x2

x1 x2 3
2x1 + x2 5
x1
2

soggetto a

x1 x2 +x3
2x1 + x2
x1

x1 , x2 0

=3
+ x4

=5
+x5 = 2

x1 , . . . , x5 0

Dalla forma standard si pu`


o notare che B0 = {x3 , x4 , x5 } `e una base ammissibile, quindi si pu`
o
scrivere la riformulazione
max

z
x3
x4
x5

=
=
=
=

0 +4x1 +x2
3 x1 +x2
5 2x1 x2
2 x1
x1 , . . . , x5 0.

y3 = 1
y4 = 2
y5 = 1

3
1
5
2
2
1

La base B0 non `e ottima in quanto r1 , r2 > 0. Scegliendo il costo ridotto r1 = 4 si genera la


direzione ammissibile di crescita y = (1, 0, 1, 2, 1)T . Il valore del passo `e dato da


5
2
3
= 2.
,
,
= min
1 2 1
La variabile che si azzera con questo passo `e x5 . La successiva base ammissibile `e quindi B1 =
B0 \{x5 }{x1 }. La riformulazione rispetto a B1 si calcola incrementalmente ricavando x1 = 2x5
dalla terza equazione ed eliminando la x1 dalle altre.
max

z
x3
x4
x5

=
=
=
=

0 +4x1 +x2
3
x1 +x2
5 2x1 x2
2 x1
x1 , . . . , x5 0.

max
=

z
x3
x4
x1

=
=
=
=

8 4x5 +x2
1 +x5 +x2
1 +2x5 x2
2 x5
x1 , . . . , x5 0.

La base B1 ancora non risulta ottima, essendo r2 = 1 > 0. In base a questo costo ridotto si genera
quindi la direzione ammissibile di crescita y = (0, 1, 1, 1, 0)T .
max

z
x3
x4
x1

=
=
=
=

8 4x5 +x2
1 +x5 +x2
1 +2x5 x2
2 x5
x1 , . . . , x5 0.

y3 = 1
y4 = 1
y1 = 0

1
1

Si aggiorna quindi la riformulazione, passando a B2 = B1 \ {x4 } {x2 } = {x1 , x2 , x3 }.


max

z
x3
x4
x1

=
=
=
=

8 4x1
+x2
1 +x5
+x2
1 +2x5 x2
2 x5
x1 , . . . , x5 0

max
=

z
x3
x2
x1

= 9 2x5 x4
= 2 +3x5 x4
= 1 +2x5 x4
= 2 x5
x1 , . . . , x5 0.

Avendo r4 , r5 0, la base B2 risulta ottima. La soluzione ottima del programma lineare in esame
`e quindi x = (2, 1, 2, 0, 0)T , di valore z = 9. Si noti che, rappresentando le operazioni svolte nel
piano x1 , x2 , lalgoritmo ha compiuto le seguenti mosse (Figura 2.1):
dal vertice (0, 0) (base B0 ) ha utilizzato la direzione y = (1, 0) per spostarsi nel vertice
(2, 0) (base B1 );

48

Capitolo 2. Programmazione lineare

dal vertice (2, 0) ha utilizzato la direzione y = (0, 1) per spostarsi nel vertice (2, 1) (base
B2 ).

x2
x1 = 2

5
4
3

x1 x2 = 3

2
1
1
1

x1
3
4
2x1 + x2 = 5

Figura 2.1: Soluzioni generate dal simplesso.


Esempio 2.6.
Risolvere il programma lineare
max z =x1 + 3x2
soggetto a

max z =x1 + 3x2

2x1 + 3x2 6
3x1 4x2 7

soggetto a 2x1 + 3x2 x3


3x1 4x2
+ x4

x1
4
x1 , x2 0

x1
x1 , . . . , x5 0

=6
=7
+x5 = 4

partendo dalla base ammissibile B0 = {x1 , x2 , x5 }.


Riformulando rispetto a B0 e applicando lalgoritmo del simplesso si ottiene quanto segue.
max z =

33
17

5
+ 17
x3

x1 =

45
17
4
17
23
17

4
+ 17
x3

x2 =
x5 =
max z
x4
x2
x5

=
=
=
=

9
+ 17
x4
3
17
x4

3
2
+ 17
x3
+ 17
x4
4
3
17 x3
+ 17 x4
x1 , . . . , x5 0

6
3x1
15 17
3 x1
2 23 x1
4
1x1
x1 , . . . , x5

+1x3
+ 34 x3
+ 31 x3
0

B0 = {x1 , x2 , x5 }

B1 = {x2 , x4 , x5 }.

2.5. Determinazione di una base ammissibile

49

Lultima riformulazione non risulta ottima in quanto r3 > 0; tuttavia questo porta a generare la
direzione ammissibile di crescita y = (0, 13 , 1, 34 , 0)T , lungo la quale si trovano, per ogni > 0 le
soluzioni
x1
x2
x3
x4
x5
z

=
0
=
2 + 31
=

= 10 + 34
=
4
= 6+

Il programma `e quindi illimitato.


4
In questo caso lalgoritmo si `e spostato nel piano x1 , x2 , dal vertice ( 45
17 , 17 ) seguendo la direzione
3
2
ammissibile di crescita y = ( 17 , 17 ), per giungere al vertice (0, 2). Da qui, la direzione ammissibile
di crescita y = (0, 13 ) permette di ottenere soluzioni ammissibili con valore di funzione obiettivo
arbitrariamente grande sulla semiretta verticale con origine in (0, 2) Figura 2.2.

x2
3
2
1
1
1

x1

Figura 2.2: Soluzioni generate dal simplesso.

2.5

Determinazione di una base ammissibile

Lo sviluppo e la specifica dellalgoritmo del simplesso sono stati finora svolti assumendo che una base ammissibile del programma lineare in esame esista e sia nota
nellesempio 2.5 una base ammissibile era ricavabile per semplice ispezione dal
programma in forma standard, mentre nellesempio 2.6 era data senza spiegazioni.
Se una base ammissibile non `e ricavabile per semplice ispezione del programmain
forma standard, `e possibile determinarne una o eventualmente certificare che
non ne esistono risolvendo un programma lineare ausiliario. Questa operazione
`e spesso denominata nei testi fase 1.

50

Capitolo 2. Programmazione lineare

2.5.1
(2.14)

Programma della Fase 1. Sia dato il problema in forma standard


max{z = cT x : Ax = b x 0}

A Rmn .

Per semplicit`a, si assuma b 0; questa condizione `e semplice da ottenere, eventualmente moltiplicando per 1 alcuni vincoli. Si definisca ora il seguente programma
ausiliario, definito nelle variabili x1 , . . . , xn del (2.14) pi`
u altre m variabili ausiliarie
s1 , . . . , sm (una per ogni riga di Ax = b). Queste variabili sono anche chiamate
variabili artificiali.
(2.15)

min{z =

m
X

si : Ax + Is = b, x 0, s 0}.

i=1

Propriet`
a 2.7. Sono condizioni equivalenti:
(i) Il programma (2.14) possiede soluzioni ammissibili;
(ii) P
Il programma (2.15) possiede una soluzione ottima (x , s ) di valore z =
m

i=1 si = 0.
Dimostrazione.
PmSi noti che per ogni soluzione ammissibile (x, s) del programma (2.15)
risulta z =
i=1 si 0. Se quindi una sua soluzione ammissibile ha funzione
obiettivo pari a 0, essa `e anche ottima.
`e una soluzionePammissibile per (2.14) allora (x = x
, s = 0) `e
(i) = (ii). Se x
m
ammissibile per (2.15), ed avendo i=1 si = 0 `e anche ottima.
P

(ii) = (i). Se m
i=1 si = 0 allora si deve avere s1 = s2 = = sm = 0, e quindi
Ax + Is = Ax = b.

Quindi x `e una soluzione ammissibile per il programma (2.14).


2.5.2

Fase 1 del simplesso.


max{z =

m
X

Il programma (2.15) in forma standard `e

si : Ax + Is = b, x 0, s 0}.

i=1

Una base ammissibile per questo programma esiste sempre, ed `e ovvia: B =


{s1 , s2 , . . . , sm }. Risolvendo per mezzo dellalgoritmo del simplesso il programma (2.15) sono possibli due risultati.
(i) Lalgoritmo genera per il programma un ottimo (x , s ) di valore 0: allora x
`e una soluzione ammissibile di base per il programma originale (2.14).
(ii) Lalgoritmo genera per il programma un ottimo di valore < 0: allora il
programma originale (2.14) non ha soluzioni ammissibili.

2.5. Determinazione di una base ammissibile

51

P
Si noti che, essendo la funzione obiettivo m
i=1 si 0 limitata superiormente
non si pu`o ottenere larresto dellalgoritmo per illimitatezza: il programma della
fase 1 ha sempre una soluzione ottima.
Esempio 2.7.
Risolvere il seguente programma lineare (gi`
a in forma standard).
max z =x1 + 2x2
soggetto a 2x1 +3x2 x3
=6
x1 2x2
x4 = 7
x2 + x3
x1 , . . . , x4 0

=3

Una base ammissibile iniziale non `e ricavabile per semplice ispezione. Si imposta quindi il problema
della fase 1, con variabili artificiali s1 , s2 , s3 .
max z =s1 s2 s3
soggetto a 2x1 +3x2 x3
+ s1 = 6
x1 2x2
x4 + s2 = 7
x2 + x3
+ s3 = 3
x1 , . . . , x4 , s1 , s2 , s3 0.
Partendo dalla base iniziale B0 = {s1 , s2 , s3 } si ottiene quanto segue.
max z
s1
s2
s3

=
=
=
=

16 +3x1 +2x2
+x4
6 2x1 3x2 +x3
7 x1 +2x2
x4
3
x2 x3
x1 , . . . , x4 , s1 , s2 , s3 0

B0 = {s1 , s2 , s3 }.

Entra in base x1 , esce s1 .


max z
x1
s2
s3

=
=
=
=

7
32 + 21 x2 + 32 x3
1
3 2 s1 23 x2 + 12 x3
4 + 12 s1 + 27 x2 12 x3
3
x2
x3
x1 , . . . , x4 , s1 , s2 , s3 0

+x4
x4

B1 = {x1 , s2 , s3 }.

4x2 32 s3 x4
9
2x2 12 s3
2
5
+4x2 + 12 s3 +x4
2
3
x2
s3
x1 , . . . , x4 , s1 , s2 , s3 0

B2 = {x1 , s2 , x3 }.

Entra in base x3 , esce s3 .


max z
x1
s2
x3

=
=
=
=

52

23 s1
21 s1
+ 21 s1

A questo punto il problema della fase 1 `e risolto allottimo. Il valore ottimo di fase 1, z = 52 < 0
certifica che il programma lineare originale `e privo di soluzioni ammissibili.

Esempio 2.8.

52

Capitolo 2. Programmazione lineare

Risolvere il programma lineare


max z =2x1 x2
soggetto a

x1 +x2 3
x1 2x2 2

max z =2x1 x2
soggetto a

x2 1
x1 , x2 0

x1 +x2 x3 = 3
x1 2x2 + x4 = 2
x2 x5 = 1
.x1 , . . . , x5 0

Il problema della fase 1 si imposta con variabili s1 , s2 , s3 .


max z =s1 s2 s3
soggetto a

x1 +x2 x3 +s1 = 3
x1 2x2 + x4 +s2 = 2
x2 x5 +s3 = 1
.x1 , . . . , x5 , s1 , s2 , s3 0

Partendo dalla base ammissibile B0 = {s1 , s2 , s3 } si ottiene quanto segue.


max z
s1
s2
s3

=
=
=
=

6 +2x1
x3 x4
3
x1
x2 +x3
x4
2 x1 +2x2
1
x2
x1 , . . . , x5 , s1 , s2 , s3 0

max z
s1
x1
s3

=
=
=
=

2 2s2
+4x2 x3 x4
1 +s2 3x2 +x3 +x4
2 s2
+2x2
x4
1
x2
x1 , . . . , x5 , s1 , s2 , s3 0

max z
x2
x1
s3

=
=
=
=

32

max z
x2
x1
x3

=
=
=
=

0 s2 s1
s3
1
4 s2
2s3 x4
2 s2 +s1 3s3 x4
x1 , . . . , x5 , s1 , s2 , s3 0

23 s2 34 s1 + 13 x3
1
+ 13 s2 31 s1 + 13 x3
3
8
13 s2 32 s1 + 23 x3
3
2
13 s2 + 31 s1 13 x3
3
x1 , . . . , x5 , s1 , s2 , s3 0

+x5

+x5
x5

+x5

+ 13 x4
+ 13 x4
13 x4
13 x4

+x5
+2x5
+3x5

x5

+x5

(ottimo della fase 1).

Poiche la fase 1 termina con un ottimo di valore nullo si pu`


o concludere che esiste una soluzione
ammissibile per il problema originale. Una base ammissibile si legge a questo punto direttamente
sulla riformulazione finale della fase 1: B = {x2 , x1 , x3 }. Questa base fornisce un punto di partenza
valido per lesecuzione dellalgoritmo del simplesso. Riformulando il problema originale rispetto a
B si ottiene la
max z
x2
x1
x3

=
=
=
=

6 2x4 +3x5
1
+x5
4 x4 +2x5
2 x4 +3x5
x1 , . . . , x5 0.

2.6. Il caso degenere

53

A questo punto si applica il solito algoritmo del simplesso, ottimizzando il problema originale
(incidentalmente, esso qui risulta gi`a illimitato).

Osservazioni.
1. Nellesempio 2.8 era possibile impostare un problema pi`
u compatto facendo
a meno di una variabile artificiale: la variabile x4 poteva entrare a far parte
di una base iniziale, quindi il problema ausiliario poteva essere scritto come
max z =s1 s3
soggetto a x1 +x2 x3 +s1 = 3
x1 2x2 + x4
=2
x2 x5 +s3 = 1
.x1 , . . . , x5 , s1 , s3 0
e si poteva usare {s1 , x4 , s3 } come base di partenza per la fase 1.
` importante ricordare che alla conclusione della fase 1 non si ha alcuna garan2. E
zia sulla qualit`a della base ammissibile determinata: la base ottima potrebbe
essere lontana parecchie iterazioni, poiche la funzione obiettivo della fase 1 `e
completamente scorrelata dalla funzione obiettivo del problema originale.

2.6

Il caso degenere

2.6.1 Presenza di basi degeneri. Fin qui si `e sviluppato lalgoritmo del simplesso assumendo che i programmi lineari studiati non possedessero basi degeneri.
Questa restrizione pu`o essere ignorata con alcune cautele, ma la presenza di basi
degeneri ha implicazioni importanti sullefficienza dellalgoritmo e persino sulla sua
capacit`a di terminare. Si consideri il seguente esempio.
Esempio 2.9.
Risolvere il seguente programma lineare.
max z =x1 + x2
soggetto a

2x1 +x2 3
x1
1
x1 +x2 2
x1 , x2 0

max z =x1 + x2

soggetto a 2x1 +x2 + x3 = 3


x1
+ x4 = 1
x1 +x2 + x5 = 2
x1 , . . . , x5 0.

54

Capitolo 2. Programmazione lineare

Partendo dalla base ammissibile B0 = {x3 , x4 , x5 } si ottiene quanto segue.


max z
x3
x4
x5
max z
x3
x1
x5

=
=
=
=

=
=
=
=

0
3
1
2

+x1 +x2
2x1 x2
x1
x1 x2
x1 , . . . , x5 0

1 x4
1 +2x4
1 x4
1 +x4
x1 , . . . , x5

B0 = {x3 , x4 , x5 }

+x2
x2
B1 = {x3 , x1 , x5 }.
x2
0

Qui la colonna della variabile entrante x2 produce due rapporti minimi sono candidate ad
uscire di base sia x3 che x5 . Seguendo la regola di Dantzig si sceglie arbitrariamente (a caso) la
variabile x2 come uscente.
max z
x2
x1
x5

=
=
=
=

2
1
1
0

+x4 x3
+2x4 x3
x4
x4 +x3
x1 , . . . , x5 0

B2 = {x2 , x1 , x5 }.

Qui il rapporto minimo `e 10 , che indica x5 come variabile uscente.


max z
x2
x1
x4

=
=
=
=

2
1
1
0

x5
2x5 +x3
+x5 x3
x5 +x3
x1 , . . . , x5 0

B3 = {x2 , x1 , x4 } (ottimo).

2.6.2 Impatto sulle direzioni ammissibili di crescita. Nellesempio 2.9 lalgoritmo del simplesso ha un comportamento particolare: le ultime due basi generate,
B2 e B3 , descrivono lo stesso punto x = (1, 1, 0, 0, 0)T ma solo la riformulazione
rispetto a B3 esibisce il certificato di ottimalit`a corrispondente ad avere costi ridotti tutti 0. In presenza di basi degeneri quindi la condizione r(B) 0 `e solo
sufficiente, ma non necessaria per garantire lottimalit`a. Inoltre ad un attento esame della terza iterazione si pu`o osservare che la direzione ammissibile di crescita
generata `e y = (1, 2, 0, 1, 1)T . Questa direzione `e sbagliata, in quanto la condizione x5 = 0 richiederebbe y5 0 anziche y5 = 1. Questa `e una conseguenza del
metodo con cui lalgoritmo genera direzioni ammissibili di crescita (non pone vincoli
di segno sulle componenti yB ). Lanomalia si pu`o apprezzare meglio proiettando la
situazione sul piano delle variabili originali x1 , x2 Figura 2.3. Lalgoritmo visita
i vertici (0, 0)T , (1, 0)T , (1, 1)T (questultimo due volte). La direzione y = (1, 2)T
generata alla penultima iterazione punta verso lesterno della regione ammissibile.
Lalgoritmo compie un passo di ampiezza = 0, la soluzione corrente non cambia
ma la base corrente viene in effetti aggiornata, e si arriva alla conclusione seppure
con una perdita di efficienza (uniterazione `e inutile).

2.6. Il caso degenere

55

Si noti come anche in due dimensioni la degenerazione causa una sovradefinizione


del vertice (1, 1)T : esso si trova allintersezione di tre rette (mentre ne bastano due
per individuarlo). Se il primo vincolo 2x1 + x2 3 avesse un termine noto di valore
inferiore (si suponga 3 ), la regione ammissibile presenterebbe due vertici distinti,
e la direzione ammissibile di crescita y parallela allo spigolo 2x1 + x2 = 3
sarebbe perfettamente lecita. Invece qui i due vertici sono collassati in uno solo, e
lalgoritmo si muove lungo uno spigolo di lunghezza nulla.
x2
3
2
1
1
1

y
b

x
2

x1

Figura 2.3: Direzioni ammissibili di crescita dellalgoritmo del simplesso. A causa della
degenerazione, la direzione y non `e una direzione ammissibile di crescita. Nellultima
iterazione lalgoritmo cambia base ma rimane sulla soluzione x = (1, 1)T .

2.6.3 Conseguenze. La presenza di basi degeneri non comporta solo una perdita di efficienza. In effetti, senza particolari cautele nella scelta della variabile
entrante in base xq e di quella uscente xp , non `e possibile garantire la regolare
terminazione dellalgoritmo del simplesso. In presenza di programmi particolari,
fortemente degeneri, `e possibile che lalgoritmo ripeta allinfinito la stessa sequenza
di basi ammissibili degeneri sono reperibili esempi in letteratura. In particolare,
sono noti esempi per i quali la Regola di Dantzig permette tale comportamento. Il
fenomeno `e chiamato cycling. Per garantire la regolare terminazione dellalgoritmo
impedendo il cycling `e sufficiente sostituire la Regola di Dantzig con la pi`
u forte
Regola di Bland. La variabile entrante in base xq `e la variabile di indice pi`
u
piccolo tra quelle con costo ridotto positivo.

xj (B)
Se pi`
u variabili presentano rapporto minimo yj
la variabile uscente xp `e
yj <0

tra queste quella con indice minimo.

Teorema 2.8. Se la variabile entrante e quella uscente sono scelte ad ogni iterazione secondo la Regola di Bland, lalgoritmo del simplesso termina in un numero
finito di iterazioni.

56

Capitolo 2. Programmazione lineare

Nota. La Regola di Bland non `e il solo strumento per prevenire il cycling e assicurare la terminazione, ma `e sicuramente quello formalmente pi`
u semplice.

Capitolo 3
Dualit`
a nella programmazione
lineare
3.1

Definizioni

3.1.1 Duale di un programma lineare. Dato un programma lineare nel


seguito verr`a chiamato programma primale nella forma standard
(P)

max{z = cT x : Ax = b, x 0}

(A Rmn , . . . )

si definisce il suo programma duale come


(D)

min{w = uT b : uT A cT }

Il programma (D), che ha variabili di controllo u Rm libere in segno, non `e


espresso in forma standard (ma pu`o esservi facilmente trasformato alloccorrenza).
Una seconda forma equivalente alla (D) fa uso di ulteriori n variabili di surplus non
negative v Rn+ :
(D )

min{w = uT b : uT A vT = cT , v 0}

Notazioni. Le due forme proposte sono completamente equivalenti, e nel seguito si


far`a riferimento indifferentemente alluna o allaltra. In particolare, si noti che data
una soluzione u di (D) anche le v della forma (D ) sono univocamente determinate
vT = uT A cT . Viceversa, se si considera una data soluzione ammissibile (u, v)
di (D ) basta specificare v per determinare completamente la corrispondente u:
infatti uT A = (c + v)T ha, fissato v, soluzione unica in quanto (A) = m.
La regione di Rm
Da = {u Rm : uT A cT }
`e chiamata regione ammissibile duale. La scrittura v Da si referisce al vettore
vT = uT A cT , dove u Da .
57

58

Capitolo 3. Dualit`a nella programmazione lineare

Esempio 3.1.
Il programma lineare
max z = x1 x2
soggetto a

x1 +2x2 5
3x1 +x2 6

max z = x1 x2

x1 , x2 0

soggetto a x1 +2x2 x3 = 5
3x1 +x2 + x4 = 6
x, 1 . . . , x4 0

ha come duale il seguente programma lineare, nelle variabili u1 , u2 .


min w = 5u1 + 6u2
soggetto a
(A)

u1 +3u2 1
2u1 +u2 1
u1

0
u2 0.

Equivalentemente, scrivendolo con vincoli di uguaglianza, il duale `e anche


min w = 5u1 + 6u2
soggetto a
(B)

u1 +3u2 v1 = 1
2u1 +u2 v2 = 1
u1

v3 = 0
u2 v4 = 0

v1 , . . . , v4 0.
La regione ammissibile duale Da per questo esempio `e riportata in Figura 3.1. Si noti tale Da ,
che rappresenta i vincoli del duale (A), corrisponde alla proiezione sul piano (u1 , u2 ) della regione
definita in sei dimensioni dal duale equivalente (B).

Il programma duale (D) (o rispettivamente, (D )) si scrive direttamente per ispezione del primale, ricordando che:
il duale contiene una variabile libera u. per ogni vincolo del primale;
la funzione obiettivo duale contiene le variabili libere u1, . . . , um pesate dai
termini noti del primale b1 , . . . , bm ;
i coefficienti delle variabili u1 , . . . , um del k-esimo vincolo duale corrispondono
ai coefficienti della k-esima colonna dei vincoli primali.

3.2

Relazioni notevoli

3.2.1 Simmetria. La relazione che lega primale e duale `e simmetrica, come


stabilisce la seguente
Propriet`
a 3.1. Il programma duale di (D) `e (P).

3.2. Relazioni notevoli

59

u2
6
5
4
3
2
1
3

1
1

u1

Figura 3.1: Regione ammissibile duale per lesempio 3.1 la regione `e illimitata.
Dimostrazione. Trasformando (D) in forma standard si ottiene
(D) (D ) min{w = uT b : uT A vT = cT , v 0}
max{w = uT b : uT A vT = cT , v 0}
Sostituendo le variabili libere u con unaa combinazione di variabili non negative
u = (u u ), u , u 0, il programma (D) in forma standard equivale a
max w = bT u +bT u
soggetto a

AT u AT u Iv= c
v 0, u 0, u 0.

La matrice dei vincoli (AT AT I) ha n righe e 2m + n colonne. Il duale di


questultimo programma `e, scritto con variabili libere in segno y Rn ,
min z =yT c
soggetto a yT AT bT
yT AT
y 0

bT

max z =cT y
soggetto a Ay= b

y 0.

0 si arriva ad un problema a variabili non negative


Cambiando y =
y, y

max z =cT y
soggetto a A
y= b
0,
y
che a meno dei nomi delle variabili coincide con il programma (P).

60

Capitolo 3. Dualit`a nella programmazione lineare

3.2.2 Dualit`
a debole. Le soluzioni ammissibili del duale (se esistono) forniscono limiti superiori alla funzione obiettivo primale. Simmetricamente, le soluzioni
ammissibili del primale limitano inferiormente la funzione obiettivo duale.
Propriet`
a 3.2 (Dualit`
a debole). Se x Sa e u Da , risulta cT x uT b.
Dimostrazione. Se u Da esso soddisfa uT A vT = cT con v 0. Allora segue
uT A vT = b =
T

= u Ax v x = c x =

(x Sa = x 0)
(x Sa = Ax = b)

= uT b vT x = cT x =

(v, x 0)

= uT b cT x = vT x 0.

Corollario 3.3.
(i) Se esistono due soluzioni x Sa , u Da tali che uT b = cT x , allora
esse sono ottime (per (P) e (D) rispettivamente).
(ii) Se (P) `e illimitato, allora (D) non ha soluzioni ammissibili (Da = ).
(iii) Se (D) `e illimitato, allora (P) non ha soluzioni ammissibili (Sa = ).
Esempio 3.2.
(a) Per il programma dellesempio 3.1, si considerino le soluzioni x = (x1 = 75 , x2 = 95 ) e u =
o verificare facilmente che x Sa , u Da . Inoltre risulta
(u1 = 54 , u2 = 53 ). Si pu`
7 9
2
=
5 5  5
3
4
2
T
+6 = .
u b=5
5
5
5
cT x =

In base al Corollario 3.3(i), luguaglianza dei due valori `e sufficiente per stabilire lottimalit`a delle
due soluzioni.
(b) Si consideri la seguente coppia primale-duale.
min w =3u1 + 2u2 + u3
max z =2x1 x2
soggetto a x1 +x2 x3 = 3
x1 2x2 + x4 = 2
x2 x5 = 1
x1 , . . . , x5 0

soggetto a u1 +u2
v1 = 2
u1 2u2 + u3 v2 = 1
u1
u2

v3 = 0
v4 = 0

u3 v5 = 0
v1 , . . . , v5 0.

Si pu`
o verificare ad esempio tentando di risolverlo con lalgoritmo del simplesso che il primale
`e illimitato. Si pu`
o pervenire infatti alla riformulazione
max z
x2
x3
x1

=
=
=
=

7 +3x5 2x4
1 +x5
2 +3x5
x4
4 +2x5
x4
x1 , . . . , x5 0.

3.2. Relazioni notevoli

61

In base al Corollario 3.3(ii), questo `e sufficiente per stabilire che il duale `e privo di soluzioni
ammissibili. Come controprova si pu`
o osservare che la somma dei primi due vincoli duali implica
2u1 u2 + u3 v1 v2 = 1.
Inoltre, ricavando dagli ultimi tre vincoli le u1 = v3 , u2 = v4 e u3 = v5 e sostituendo nella
relazione precedente si ottiene
2v3 v4 v5 v1 v2 = 1,
che `e incompatibile con v1 , . . . , v5 0.
(c) Si noti che limplicazione del Corollario 3.3(ii) (e, analogamente, la (iii)) non `e, in generale,
reversibile. Se il primale `e privo di soluzioni ammissibili il duale non `e necessariamente illimitato
in particolare, potrebbe essere anchesso privo di soluzioni ammissibili. Come esempio si consideri
la seguente coppia primale-duale, per la quale si pu`
o verificare che Sa = , Da = .
max z =x1 + x2
soggetto a x1 x2 2x3 +x4 = 1
x1 +x2

min w =u1 + u2
soggetto a u1 u2 1

x4 = 1

x1 , . . . , x4 0

u1 +u2 1
2u1
0
u1 u2 0.

3.2.3 Basi ammissibili duali. Data una base B del programma primale (non
necessariamente una base ammissibile), `e possibile associare a tale B una soluzione
u(B), v(B) del sistema di vincoli duali uT A vT = cT nota: questa soluzione
`e ammissibile per il duale solo se v(B) 0.
 
vB
n
Si partizioni v R+ in v =
dove vB = (vj : xj B). La soluzione v(B) `e
vN
definita come lunica soluzione per la quale vB = 0.
Che ci sia ununica v(B) `e una conseguenza delle seguenti osservazioni. Le n
equazioni uT A vT = cT si possono partizionare in
(
uT AB vB = cTB
(3.1)
uT AN vN = cTN .
Fissando vB = 0 e ricordando che AB `e una matrice di base (perci`o quadrata
e invertibile) la prima equazione determina univocamente uT = cTB A1
B . Dalla
seconda si determina quindi univocamente
T
T
vN
= uT AN cTN = cTB A1
B A N cN .

Si noti che vN (B) = rN (B), dove r(B) sono i costi ridotti delle variabili primali
fuori base xN rispetto alla base B.

62

Capitolo 3. Dualit`a nella programmazione lineare

Riassumendo, ad una base primale B si pu`o associare la soluzione dei vincoli duali

vB = 0
v(B), u(B) :
uT = cTB A1
B

vN = r(B)

Se risulta vN (B) 0, la v(B), u(B) `e una soluzione ammissibile per il duale, e si


dice che la base (primale) B `e ammissibile duale.

Esempio 3.3.
Si consideri nuovamente la coppia primale-duale dellesermpio 3.1.

(Primale)

max z = x1 x2
soggetto a x1 +2x2 5
3x1 +x2 6
x1 , x2 0

(Duale)

u1 +3u2 1
2u1 +u2 1
u1

0
u2 0.

3x1 +x2 + x4 = 6
x1 , . . . , x4 0
min z = 5u1 + 6u2

min z = 5u1 + 6u2


soggetto a

max z = x1 x2
soggetto a x1 +2x2 x3 = 5

soggetto a

u1 +3u2 v1 = 1
2u1 +u2 v2 = 1
u1

v3 = 0
u2 v4 = 0

v1 , . . . , v4 0.

Le regioni ammissibili dei due problemi (in due dimensioni) sono riportate in Figura 3.2. Si possono
verificare le seguenti corrispondenze.
(a) La base B3 = {x1 , x3 } non `e ammissibile primale, in quanto corrisponde alla soluzione
x2 = x4 = 0, x1 = 2, x3 = 3. Essa `e per`o ammissibile duale, in quanto imponendo
v1 = v3 = 0 nei vincoli duali e risolvendo si ottiene

v1 = 0
v3 = 0

1
u1 = 0
u2 =
u(B3 ), v(B3 ) :
3

v2 = 4
v4 =
3
3
e quindi v(B3 ) 0.

(b) La base B2 = {x1 , x2 } `e ammissibile primale: x3 = x4 = 0, x1 = 57 , x2 = 59 . Essa `e anche


ammissibile duale in quanto imponendo v3 = v4 = 0 dai vincoli duali risulta

v1 = 0
v2 = 0

3
4
u2 =
u1 = .
u(B2 ), v(B2 ) :
5
5

4
3

v3 =
v4 =
5
5

(c) La base B0 = {x3 , x4 } `e una base non ammissibile del primale corrisponde alla soluzione
x1 = x2 = 0, x3 = 5, x4 = 6. La corrispondente soluzione duale, ottenuta imponendo
v3 = v4 = 0 e risolvendo i vincoli `e u1 = u2 = 0, v1 = 1, v2 = 1. Quindi B non `e
ammissibile duale.

3.2. Relazioni notevoli

63

Svolgendo unanalisi completa su tutte le possibili basi del primale, si pu`


o compilare la seguente
tabella.
B

u(B)

x3 = 5
x4 = 6
5
x2 = 2
x4 = 27
7
x1 = 5
x2 = 59
x1 = 2 x3 = 3
x2 = 6
x3 = 1
x1 = 5 x4 = 9

B0 :
B1 :
B2 :
B3 :
B4 :
B5 :

Prim. amm. Duale amm.

v(B)

u1

u2

v1

v2

v3

v4

0
0

1
23
0
0
4
0

1
0
0

0
1
2
4
5

0
0

12
45

3
5
1
3

0
0
1

1
0

4
3

0
3

NO
SI
SI
NO
SI
NO

3
5
1
3

0
0 1
1
0

x2

u2

6
b

B4

5
da

Sa

B1
b

2
b

B2

B2 1
b

1
1

NO
NO
SI
SI
NO
NO

B0
b

B3

B5

B3

x1

B5
b

2 1B1 B0 1
2
1 B4
Reg. ammiss. duale

u1

Reg. ammiss. primale

Figura 3.2: Basi ammissibili primali e ammissibili duali, esempio 3.3.


Osservazioni. Le basi (primali) ammissibili duali dellesempio, B2 , B3 , corripsondono a vertici di Da . Questa `e la norma, in quanto in generale se la base B (del
primale (P)) `e ammissibile duale essa corrisponde ad una vera e propria soluzione
ammissibile di base per il programma lineare (D ). Se vB = 0 le uniche variabili non
nulle nella soluzione duale sono le u, vN . Il sistema dei vincoli duali (trasponendo
uT A vT = cT ) si pu`o scrivere riordinando righe e colonne, come


u
ATB
ATN

vB
IB
0

vN
 u
0
vB = c..
IN
vN

64

Capitolo 3. Dualit`a nella programmazione lineare

Si noti che il sistema ha rango n. La sottomatrice delle colonne u, vN `e la




u
ATB
ATN

vN

0
,
IN

che ha rango massimo perche det(ATB ), det(IN ) 6= 0. Quindi le variabili u, vN sono


effettivamente m + (n m) = n variabili di base per il programma lineare duale.

3.2.4

Dualit`
a forte. Vale il seguente

Teorema 3.4. Il programma primale (P) ammette una soluzione ottima x


se e solo se il programma duale (D) (o, equivalentemente (D )) ammette una
soluzione ottima u .
Inoltre i valori di funzione obiettivo dei due ottimi coincidono:
w = uT b = cT x = z .
Dimostrazione. (=) Limplicazione si dimostra costruendo un ottimo duale. Se (P)
ammette un ottimo, si pu`o senza perdita di generalit`a considerare un ottimo generato per mezzo dellalgoritmo del simplesso. Lottimo `e quindi un ottimo di base
x = x(B ), per il quale risulta rN (B ) 0. La soluzione duale associata a B `e

vB = 0
1
u(B ), v(B ) :
uT = cT
B AB

vN = rN (B ) 0

(per lottimalit`a di B ).

La B `e quindi ammissibile duale. Che le soluzioni x(B ), u(B ) siano ottime si


pu`o dimostrare calcolandone i valori di funzione obiettivo:
cT x = cTB x(B )

= cTB A1
B b

uT (B )b = cTB A1
B b.
Dalluguaglianza di questi valori segue (Propriet`a 3.2) lottimalit`a di u(B ), che `e
quindi la u cercata.
Questo stabilisce anche luguaglianza dei valori ottimi z = w .
Limplicazione inversa segue per la simmetria primale-duale.
Nellesempio 3.3 si pu`o notare come la B2 , essendo contemporaneamente una base
ammissibile del primale ed anche una base ammissibile duale, corrisponde ad una
soluzione ottima per entrambi i problemi.

3.2. Relazioni notevoli

65

Corollario 3.5 (Condizioni di complementariet`


a primale-duale). Date

x Sa , u Da , sono condizioni equivalenti:


(i) x e u sono soluzioni ottime (del primale e del duale, rispettivamente);
(ii) vT x = 0
(vT = uT A cT ).
Dimostrazione. Per il teorema precedente, le due soluzioni sono ottime se e solo se
uT b = cT x . Vale quanto segue.
uT b = cT x

(Ax = b)

uT Ax = cT x
(uT A cT )x = 0

(uT A cT = vT )

vT x = 0.

Le condizioni di complementariet`a legano caratteristiche della soluzione ottima primale a caratteristiche della soluzione ottima duale. In particolare, si pu`o osservare
che
T

v x =

n
X

vj xj ,

j=1

e per lammissibilit`a sia di v (duale) che di x (primale) si ha vT x = 0 se e solo


se
vj xj = 0

per ogni j = 1, . . . , n.

Quindi risulta che


xj > 0 = vj = 0,
vj > 0 = xj = 0.
Esempio 3.4.
Si consideri il seguente programma lineare.
max z =2x1 + 3x2 x3
soggetto a x1 +x2 + x3
x2 2x3
x1 , x2 , x3 0

7
8

max z =2x1 + 3x2 x3


soggetto a x1 +x2 + x3
x2 2x3
x1 , . . . , x5 0.

+x4 = 7
+x5 = 8

Si vuole risolverne il duale e, dalla soluzione ottima di questultimo, ricavarne la soluzione ottima.
La richiesta ha senso, in quanto il duale ha due sole variabili libere e si presta ad unanalisi semplice,
basata ad esempio sul metodo grafico. Benche primale e duale abbiano in teoria la stessa identica
complessit`
a, esistono in pratica situazione nelle quali uno dei due pu`
o essere risolto con maggiore
efficienza computazionale.

66

Capitolo 3. Dualit`a nella programmazione lineare

Il duale risulta essere


min z =7u1 + 8u2
soggetto a u1
2
u1
u1

+u2 3
2u2 1

u1

0
u2 0

min z =7u1 + 8u2


soggetto a u1
v1

=2

u1
u1

+u2 v2
2u2 v3

=3
= 1

u1

v4
u2 v5

=0
=0

Lottimo duale risulta avere coordinate


v1 = 1
v2 = 0
v3 = 2

u1 = 3
u2 = 0

v4 = 1
v5 = 0.

(Si veda la regione ammissibile duale in Figura 3.3). Dai valori delle v si deduce
v1 > 0 = x1 = 0
v3 > 0 = x3 = 0
v4 > 0 = x4 = 0.
La soluzione ottima primale deve quindi rispettare le condizioni x1 = x3 = x4 = 0. Queste, unite
alle condizioni di ammissibilit`a
x1 + x2 + x3 + x4
x2

2x3

x5

=7
=8

permettono di dedurre che allottimo duale si ha


x1 = x3 = x4 = 0
x2 = 7
x5 = 1.

3.3

Simplesso duale

Se B `e una base non ammissibile del primale ma duale ammissibile, `e possibile


pervenire alla soluzione ottima del primale ottimizzando la soluzione duale. Lintera ottimizzazione pu`o avvenire comunque manipolando la riformulazione del primale, semplicemente utilizzando una diversa regola per i cambi di base. Data la
riformulazione rispetto a B
X
rj xj
max z = z(B) +
1
T
T
x
N
j
max z = cB AB b + rN xN
X

1
1
xB =
AB b AB AN xN
xp =
+
j xj
...............

xj N

3.3. Simplesso duale

67

x2
4
3
2
1
OPT(1, 32 )
x1
3
4
b

1
1

Figura 3.3: Regione ammissibile duale, esempio 3.4.


si applica la seguente
Regola duale per il cambio di base. La variabile uscente xp deve avere valore
xp (B) < 0.
La variabile entrante xq `e scelta in modo tale da avere

rj
rq
= min{ : j > 0}.
q
j

Propriet`
a 3.6. Se B `e ammissibile duale, e xp , xq sono scelte secondo la regola
duale per il cambio di base allora B = (B \ {xp }) {xq } `e ammissibile duale, e
z(B ) z(B).
Se non esiste j > 0, il primale `e privo di soluzioni ammissibili.
Dimostrazione. Effettuando il cambio di base si ottiene la nuova riformulazione
rispetto a B
X
rj xj
max z = z(B ) + rp xp +
xj N
j6=q

xq =

+ p xp

xq

xj N
j6=q

....................................
Se B non `e ammissibile duale allora esiste almeno una variabile in base con valore
< 0; la scelta della variabile uscente `e quindi sempre possibile in accordo con la
regola data.
Si noti che se B `e ammissibile duale si deve avere rN (B) 0. Si vuole dimostrare
che

68

Capitolo 3. Dualit`a nella programmazione lineare

(i) rN (B ) 0, cio`e B `e ancora una base ammissibile duale.


(ii) z(B ) < z(B), cio`e la funzione obiettivo di B `e migliore di z(B) (il duale `e un
programma di minimizzazione).
I valori di , p , {j } jN si ottengono ricavando la xq dalla riformulazione rispetto
j6=q
a B:
X
X j

1
xp = +
j xj xq = xp
xj .

q
q
q
x N
x N
j
j6=p

Quindi risulta
1
q
j
j =
q

p =

per ogni j t. c. xJ N, j 6= q.

I costi ridotti rispetto a B sono, svolgendo i conti sulla funzione obiettivo riformulata:
rq
rp = rq p =
0
q
j
per ogni j t. c. xj N, j 6= q.
rj = rj + j rq = rj rq
q
Per questultima serie di costi ridotti, preso un qualunque indice j sono possibili
due casi
(a) j 0. Allora, essendo per la scelta effettuata j > 0, e rq , rj 0 per

lammissibilit`a duale di B, si ha rj = rj qj rj 0.
r

(b) j > 0. Allora, siccome la scelta effettuata garantisce rqq jj , da questo

risulta rj qj rq 0, cio`e rj 0.
Questo prova che B `e ammissibile duale.
Per provare che z(B ) < z(B) basta svolgere i calcoli sulla funzione obiettivo
riformulata:
rq
z(B ) = z(B)
< z(B).
q |{z}
| {z} <0
0

Infine, se j 0 per ogni j t. c. xj N, lequazione di xp nella riformulazione


rispetto a B corrisponde a
X
xp +
(j ) xj = ,
|{z}
| {z }
x N
j

<0

incompatibile con i vincoli di non-negativit`a delle variabili di un programma lineare


in forma standard x1 , . . . , xn 0, quindi il programma primale non ha soluzioni
ammissibili.

3.3. Simplesso duale

69

Esempio 3.5.
Per la coppia primale-duale dellesempio 3.1, la base primale B3 = {x1 , x3 } non `e ammissibile, ma
risulta duale-ammissibile come si vede dalla riformulazione
max z =
x3 =
x1 =

2 34 x2 13 x4
3 + 53 x2 13 x4
2 31 x2 13 x4
x1 , . . . , x4 0.

Scegliendo, secondo la regola duale per il cambio di base, x3 come variabile uscente e x2 come
entrante, si passa alla base B2 = {x1 , x2 }:
max z =
x2 =
x1 =

52
9
5
7
5

54 x3 35 x4
+ 53 x3 + 15 x4
51 x3 25 x4
x1 , . . . , x4 0.

La nuova base risulta ora ammissibile e ottima per il primale (e quindi anche per il duale).
Proiettando le soluzioni sui piani (x1 , x2 ) per il primale e (u1 , u2 ) per il duale, si pu`
o notare che il
cambio di base corrisponde ad un legittimo passo di simplesso sulla regione ammissibile duale (ci
si `e spostati tra due vertici adiacenti).

x2
6

u2
b

B4

B1
b

2
b

B2

B2 1

B3

B0

1
1

B5

B3

x1
3

1B1
1

B0 1
B4

Figura 3.4: Cambio di base duale per lesempio 3.5

Esempio 3.6.

B5
2

u1

70

Capitolo 3. Dualit`a nella programmazione lineare

(Unopportunit`a per saltare la fase 1!) Si vuole risolvere il seguente programma lineare.
max z = 2x1 3x2
soggetto a
x1 +2x2

x2
x2

3
5

3x1

max z = 2x1 3x2


soggetto a
x1 +2x2 x3

=4

x2 x4
x2 + x5

=3
=5

3x1

x1 , . . . , x5 0.

x1 , x2 0

Nella matrice dei vincoli appare un blocco diagonale in corrispondenza delle variabili x3 , x4 , x5 .
La base B = {x3 , x4 , x5 } non `e per`
o ammissibile nella soluzione di base corrispondente si ha
x3 = 4, x4 = 3 < 0. Se per`
o si osserva la riformulazione rispetto a questa base per`o si pu`
o
notare che r1 , r2 0 e quindi B `e duale-ammissibile. Si pu`
o allora procedere con il simplesso
duale.
max z
x3
x4
x5

=
=
=
=

0 2x1
3x2
4 +x1 +2x2
3 +3x1
x2
5
x2
x1 , . . . , x5 0.

r11 = 21 , r22 =

3
2

Scegliendo come variabile entrante la x3 < 0, la regola di cambio di base duale richiede di far entrare
in base x2 (nota: si poteva anche scegliere x4 uscente, quindi x1 entrante, con unesecuzione diversa
ma ugualmente corretta). Si prosegue quindi con
max z =
x2 =

6
2

x4 =

x5 =

21 x1
21 x1
+ 27 x1

3
+ 21 x1
x1 , . . . , x5

23 x3
+ 21 x3
21 x3
21 x3
0.

Si noti che la nuova base {x2 , x4 , x5 } continua ad essere duale ammissibile: r1 , r3 0. Infine, con
x4 uscente e x1 entrante si passa a:
max z
x2
x1
x5

=
=
=
=

71 x4 11
7 x3
1
9
7 x4 + 73 x3
7
10
+ 72 x4 + 71 x3
7
26
+ 71 x4 73 x3
7
x1 , . . . , x5 0.

47
7

Con lultimo passo si `e raggiunta la base {x1 , x2 , x5 } che risulta sia ammissibile primale che dualeammissibile, quindi ottima.

Capitolo 4
Programmazione lineare intera
4.1

Introduzione

4.1.1
come

Programmi lineari interi. Un problema di ottimizzazione formulato

(4.1)

max z =

n
X

cj xj

j=1

soggetto a
(4.2)

n
X

oppure: min z =

n
X
j=1

aij xj bi

i = 1, . . . , k,

aij xj bi

i = k + 1, . . . , l,

aij xj = bi

i = l + 1, . . . , m,

cj xj

j=1

(4.3)
(4.4)

n
X

j=1
n
X
j=1

(4.5)

x1 , . . . , xn Z

`e detto problema di programmazione lineare intera (o semplicemente programma


lineare intero). Nel seguito si analizzano tecniche volte a risolvere programmi lineari
interi. Nello studio presentato si manterranno sempre (salvo casi esplicitamente
segnalati) le seguenti ipotesi, che non sono strettamente necessarie ma semplificano
alcuni aspetti della trattazione.
(i) Le costanti aij , cj , bi (i = 1, . . . , m, j = 1, . . . , n) sono numeri razionali ; nel
caso in cui il problema venga risolto su calcolatore, questa `e sostanzialmente
una necessit`a.
(ii) Tutte le variabili di controllo del problema assumono valori interi; le tecniche
presentate si estendono comunuqe facilmente ai casi di programmazione mista,
dove parte delle variabili sono di tipo continuo e parte di tipo intero.
71

72

Capitolo 4. Programmazione lineare intera

Se le costanti del problema sono numeri razionali, senza perdita di generalit`a si


possono considerare solo i programmi lineari interi formulati nella forma standard
per programmazione lineare intera:
(4.6)

max{z = cT x : Ax = b, x Z+ },

con c Zn , b Zm , A Zmn .

Per trasformare qualunque programma della forma (4.1)(4.4) in uno della forma (4.6) si moltiplicano se necessario funzione obiettivo e vincoli per opportuni
numeri interi per eliminare eventuali coefficienti frazionari e dopo si applicano
le trasformazioni usate per porre i programmi lineari in forma standard.

4.1.2 Regione ammissibile intera. Dato un programma lineare intero nella


forma standard (4.6), in modo analogo a quanto fatto per i programmi lineari a
variabili continue si pu`o definire una regione ammissibile
Za = {x Zn+ : Ax = b},

` importante segnalare che, benche la rappresentazione di un programma lineare


E
intero in termini di funzione obiettivo e vincoli sia simile a quella di un programma
lineare a variabili continue, il livello di difficolt`a nella sua risoluzione `e, in generale,
molto pi`
u alto.

4.2

Branch and bound

4.2.1 Rilassamento. Un rilassamento di un problema di ottimizzazione (non


necessariamente un programma lineare)
(4.7)

max{z = f (x) : x Sa }

`e un altro problema di ottimizzazione


(4.8)

max{w = g(x) : x Ta }

per cui risulta


(4.9)

Ta Sa

e inoltre g(x) f (x) per ogni x Sa .

Se esistono gli ottimi x e x dei problemi (4.7) e (4.8) si ha necessariamente f (


x)

g(x ); il rilassamento fornisce quindi una sovrastima dellottimo di (4.7).

4.2. Branch and bound

73

4.2.2 Rilassamento continuo. Dato un programma lineare intero P nella forma standard (4.6), il programma lineare a variabili continue
max{z = cT x : Ax = b, x 0},

(4.10)

c Zn , b Zm , A Zmn .

`e un rilassamento del programma intero (4.6), poiche Sa Za . Il programma (4.10)


`e detto rilassamento continuo (o anche rilassamento lineare) del programma intero.
Lalgoritmo del simplesso, in generale, non risolve il programma lineare intero P
ma il suo rilassamento continuo.
Esempio 4.1.
Si consideri il programma lineare intero in due variabili
max z =x1 + 2x2
soggetto a

11
3x1 , x2 Z+ .

3x1 + 5x2
x1 + 2x2

Senza trasformare il problema in forma standard, `e possibile visualizzare nel piano la Za e la Sa


del rilassamento lineare (Figura 4.1). La regione ammissibile del rilassamento `e evidenziata in
grigio, mentre gli elementi di Za sono i singoli punti marcati a coordinate intere. Lottimo del
7
47
rilassamento lineare corrisponde al punto x = (x1 = 11
, x2 = 20
o
11 ), di valore 11 mentre si pu`
verificare che il programma lineare intero ha come soluzione ottima il punto (x1 = 2, x2 = 1), di
valore 4.

x2
4
3
x

2
1
1
1

x1

Figura 4.1: Sa (poligono colorato) e Za (punti ) per lesempio 4.1.

4.2.3 Branch and bound. La tecnica del branch and bound permette di risolvere P generando una serie (potenzialmente molto grande) di programmi lineari
interi P, P1 , . . . , Pt pi`
u semplici e risolvendo i corrispondenti rilassamenti conti , oppure
nui. Al termine delle operazioni si ottiene una soluzione ottima intera x
lindicazione che per P si ha Za = .

74

Capitolo 4. Programmazione lineare intera

La risoluzione del rilassamento di P pu`o portare ad una delle seguenti situazioni.


(i) Sa (P ) = . In tal caso necessariamente Za = , cio`e P `e privo di soluzioni
ammissibili. Si noti che in generale Sa 6= non implica Za 6= come risulta
dallesempio
max{z = x1 + x2 : 1 4x1 3, 1 4x2 3, x1 , x2 Z+ }.
(ii) Il rilassamento di P ha una soluzione ottima x (P ) le cui componenti sono
tutte intere. In tal caso risulta x (P ) Za , e risolvendo il rilassamento si `e
risolto anche P stesso.
(iii) Il rilassamento P ha una soluzione ottima x (P ) con una o pi`
u componenti
non intere.
I casi (i) e (ii) sono casi facili, nei quali lapplicazione del simplesso permette di
chiudere anche il programma intero.
Nel caso (iii), la risoluzione del rilassamento fornisce solo una sovrastima del valore
ottimo di P , detta upper bound:
UB(P) = cT x z.
In questo caso `e necessaria unesplorazione pi`
u approfondita dellinsieme delle soluzioni ammissibili. Lapproccio pi`
u semplice consiste nel generare due sottoproblemi
sfruttando una componente non intera xk della soluzione ottenuta.
P1 :

max{z = cT x : Ax = b, xk xk , x Zn+ },

P2 :

max{z = cT x : Ax = b, xk xk , x Zn+ }.

Loperazione sopra descritta `e anche detta operazione di branch (suddivisione).


Si pu`o osservare che i due programmi lineari interi P1 , P2 hanno come regioni
ammissibili
xk },
Za (P1 ) = {x Zn+ : Ax = b, xk
n
Za (P2 ) = {x Z+ : Ax = b, xk
xk },
che formano una partizione della regione ammissibile Za . Inoltre i corrispondenti
rilassamenti continui hanno regioni ammissibili disgiunte Sa (P1 ), Sa (P2 ) Sa che
non contengono la soluzione x (P ).
La risoluzione di P1 e P2 produce lottimo di P (=il migliore dei due ottimi). Per
risolvere P1 e P2 si risolvono ricorsivamente i rispettivi rilassamenti, ricadendo in
uno dei casi (i), (ii), (iii), e cos` via. Poiche ogni operazione di branch produce
programmi con regione ammissibile pi`
u ristretta dei precedenti, il processo genera
in un tempo finito programmi facili, i cui rilassamenti ricadono nei casi (i) o (ii).
Il processo, iterato, pu`o essere rappresentato come lo sviluppo di un albero, nel
quale il nodo radice rappresenta il problema P , i suoi due figli i problemi P1 e P2 ,

4.2. Branch and bound

75

P
x1 0

x1 1

P1

P2

x2 1
P3

x2 2
P4

Figura 4.2: Albero di ricerca per il programma intero dellesempio 4.1


.
ecc. Ogni nodo, eccetto il nodo radice, rappresenta un problema che `e il prodotto di
unoperazione di branch. Lunione delle Za dei (problemi associati ai) nodi figli di
uno stesso nodo padre corrisponde alla Za del padre. Lalbero ha per foglie (nodi
privi di figli) i nodi corrispondenti a problemi i cui rilassamenti lineari ricadono nei
casi (i) e (ii).
Nel caso dellesempio 4.1, si sviluppa un albero come quello di Figura 4.2.
Il rilassamento di P ha come soluzione ottima il punto
20
7
, x2 = ;
11
11
si generano quindi i programmi P1 e P2 .
x1 =

(P1 )

max z =x1 + 2x2


soggetto a 3x1 + 5x2
11
x1 + 2x2 3
x1
0
x1 , x2 Z+ ,

(P2 )

max z =x1 + 2x2


soggetto a 3x1 + 5x2 11
x1 + 2x2 3
x1 1
x1 , x2 Z+ .

I rilassamenti di P1 , P2 ammettono le soluzioni ottime


3
P1 : x1 = 0, x2 = ,
2
8
P2 : x1 = 1, x2 = ,
5

z = 3,
z =

21
.
5

76

Capitolo 4. Programmazione lineare intera

I rilassamenti di P1 e P2 presentano u ottimi a variabili frazionarie; a partire da uno


dei due, ad esempio P2 , si possono allora generare i programmi interi P3 e P4 .

(P3 )

max z =x1 + 2x2


soggetto a 3x1 + 5x2
11
x1 + 2x2
3
x1 1
x2 1
x1 , x2 Z+ .

(P4 )

max z =x1 + 2x2


soggetto a 3x1 + 5x2
11
x1 + 2x2
3
x1 1
x2 2
x1 , x2 Z+ .

I rilassamenti dei due programmi vengono poi risolti, e il processo, se necessario,


reiterato. In particolare risulta che:
il rilassamento di P3 fornisce un ottimo a coordinate intere x (P3 ) = (2, 1), di
valore z = 4; questa `e la prima soluzione intera che si incontra;
il rilassamento di P4 non ha soluzioni ammissibili.
I problemi P3 , P4 non vengono ulteriormente suddivisi: da P3 non si ricaverebbe
alcuna soluzione con z > 4, mentre P4 ovviamente non pu`o fornire alcuna soluzione
intera (non avendone neanche di continue).
A questo punto, una semplice considerazione permette di evitare di suddividere P2 :
da P2 non si possono ottenere soluzioni intere con z > UB(P2 ) = 3. Essendo gi`a nota
una soluzione intera di valore 4, il confrontoUB(P2 ) 4 dimostra che P2 non pu`o
fornire soluzioni migliori, e si evita quindi la suddivisione. Lo sviluppo dellalbero
quindi non procede oltre.
Lalgoritmo seguente fornisce unimplementazione efficiente dello schema di suddivisione descritto.
:= null, z = ;
1: x
2: Risolvi il rilassamento continuo di P ;
3: if x (P ) Zn
+ then
= x (P ), z = z (P );
4:
x
;
5:
return x
6: else
7:
P = {P }, z = ;
8: end if
9: while P 6= do
10:
Scegli P P;

4.3. Implementazione

11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:

77

Branch(P ), genera P1 , P2 e risolvi i rilassamenti.


for k = 1, 2 do
if x (P ) and x (Pk ) Zn+ and z (Pk ) > z then
= x (Pk ), z = z (Pk );
x
end if
if x (P ) and z (P ) > z then
P = P {Pk };
end if
end for
P = {P P {P1 , P2 } : x (P )
/ Zn+ , UB(P ) = z (P ) > z};
end while
;
return x

Osservazioni.
, di valore
Lalgoritmo mantiene in memoria una miglior soluzione nota x
`e dimostrabilmente lottimo.
z. Solo alla conclusione della procedura questa x
sono
Inizialmente non si conosce una soluzione ammissibile intera, quindi z e x
impostati ai valori convenzionali e null (riga 1).
I problemi dellinsieme P sono detti nodi (o problemi) aperti; essi rappresentano tutti e soli quei sottoproblemi dai quali potrebbe emergere una soluzione
.
intera migliore di x
viene aggiornata quando si risolve un rilassamento
La miglior soluzione nota x
corrente
lineare che produce una soluzione a variabili intere migliore della x
(righe 1216).
I nodi con soluzione intera o privi di soluzioni ammissibili non vengono aggiunti a P. Questi nodi sono detti chiusi per ottimalit`
a o per inammissibilit`
a,
rispettivamente.
Ad ogni iterazione si eliminano da P tutti i nodi con UB z: questi sono
, e quindi sono privi
nodi che non possono dare soluzioni intere migliori di x
di interesse per la ricerca dellottimo intero. I nodi eliminati in questo modo
sono detti nodi (o problemi) chiusi per bound.
La chiusura di nodi limita lo sviluppo dellalbero.
oppure, se
Il verificarsi della condizione P = dimostra lottimalit`a di x
= null e z = , che P `e privo di soluzioni ammissibili.
x

4.3

Implementazione

Il rilassamento continuo di un programma lineare intero si pu`o risolvere naturalmente per mezzo dellalgoritmo del simplesso. I sottoproblemi derivati con loperazione

78

Capitolo 4. Programmazione lineare intera

di branch si possono risolvere in modo efficiente partendo dalla riformulazione ottima dei rispettivi problemi padri sfruttando unapplicazione del simplesso duale.
La tecnica si pu`o illustrare bene sullesempio del paragrafo precedente.
Il programma
max z =x1 + 2x2
soggetto a 3x1 + 5x2
11
x1 + 2x2 3
x1 , x2 Z+ ,
equivale al problema in forma standard

(P )

max z =x1 + 2x2


soggetto a 3x1 + 5x2
+x3 = 11
x1 + 2x2 +x4 = 3
x1 , . . . , x4 Z+ ,

(si noti che anche le x3 , x4 sono intere). Il rilassamento continuo ammette la base
ottima {x1 , x2 } con riformulazione
max z =
x1 =
x2 =

47
11
7
11
20
11

4
1
11
x3 11
x4
2
5
11 x3 + 11 x4
1
3
11
x3 11
x4
x1 , . . . , x4 0.

Loperazione di branch genera i problemi


P1 : P x1 0
P2 : P x1 1.
Conoscendo la base ottima di P , `e possibile risolvere i problemi di P1 , P2 incrementalmente. Si consideri P1 per fissare le idee. Il vincolo addizionale x1 0 si pu`o
inserire in P usando una nuova variabile di slack x5 0 ed il vincolo x1 + x5 = 0.
7 20
7
Nel punto x (P ) = ( 11
, 11 ) risulta x5 = 11
< 0. Se si riformula il vincolo
x1 + x5 = 0 x5 = 0 x1 =

7
2
5
+ x3 x4
11 11
11

(x5 0)

si pu`o osservare che la seguente riformulazione corrisponde alla base {x1 , x2 , x5 } che
risulta
non ammissibile, ma
duale-ammissibile

4.3. Implementazione

79

per il problema P1 .
max z
x1
x2
x5

47
=
11
7
=
11
20
=
11
7
= 11

4
1
11
x3 11
x4
2
5
11 x3 + 11 x4
1
3
11
x3 11
x4
2
5
+ 11 x3 11 x4
x1 , . . . , x5 0.

Applicando il simplesso duale (esce di base x5 , entra x3 ) si ottiene


max z
x1
x2
x3

= 3 2x5 x4
= 0 x5
= 32 21 x5 12 x4
= 27
+x5 52 x4
x1 , . . . , x5 0,

che `e la riformulazione ottima di P1 . Analogamente, il vincolo x1 2 di P2 si pu`o


inserire nella riformulazione di P inserendo una x5 , questa volta di surplus:
x1 1 x1 x5 = 1

(x5 0)

2
5
4
11
x3 + 11
x4 si ottiene anche per (il rilassamento
e, riformulando x5 = x1 1 = 11
di) P2 una riformulazione duale-ammissibile:

max z =
x1 =
x2 =
x5 =

47
11
7
11
20
11
4
11

4
11
x3
2
11 x3
1
11
x3

1
11
x4
5
+ 11 x4
3
11
x4

2
11
x3

5
x
11 4

max z
x1
x2
x4

+
x1 , . . . , x5 0,

=
=
=
=

51 x5
1
+x5
8
1
5 x3 53 x5
5
4
+ 52 x3 + 11
x
5
5 5
x1 , . . . , x5 0.

21
5

25 x3

Questo completa il calcolo degli upper bound di P1 e P2 . Per i rilassamenti di P3 e


P4 si lavora partendo dalla riformulazione ottima del rilassamento di P2 .
P3 : P2 x2 1 P2 x2 + x6 = 1
P4 : P2 x2 2 P2 x2 x6 = 2

(x6 0)
(x6 0).

Per P3 si ha x6 = 1 x2 = 35 + 15 x3 + 53 x5 e quindi
max z
x1
x2
x4

=
=
=
=

x6 =

21
5

25 x3

1
8
5
4
5
35

51 x3
+ 25 x3

15 x5
+x5
35 x5
+ 11
x
5 5

+ 15 x3 + 53 x5
x1 , . . . , x5 0

max z
x1
x2
x4
x5

=
=
=
=
=

4
2
1
3
1

31 x6
+ 35 x6
x6
x
13 x3 + 11
3 6
1
5
3 x3 + 3 x6
x1 , . . . , x6 0
13 x3
13 x3

(sol. intera).

80

Capitolo 4. Programmazione lineare intera

Per P4 risulta x6 = x2 2 = 25 51 x3 35 x5 , quindi si ottiene la riformulazione


max z
x1
x2
x6

= 21
52 x3 15 x5
5
=
1
+x5
1
3
8

x
=
5
5 3
5 5
2
1
3
= 5 5 x3 5 x5
x1 , . . . , x6 0,

che corrisponde ad una situazione con duale illimitato (il rilassamento di P4 non ha
soluzioni ammissibili).

Appendice A
Cycling
A.1

Problemi di terminazione

Se lalgoritmo del simplesso viene eseguito utilizzando la classica regola di Dantzig


per la scelta delle variabili entranti/uscenti dalla base, `e teoricamente possibile che
lalgoritmo generi una serie infinita di basi degeneri
(A.1)

S = . . . , B1 , B2 , . . . , Bs , B1 , B2 , . . . , Bs , B1 , . . .

che compromette la terminazione dellalgoritmo in tempo finito. Il seguente esempio


mostra come ci`o possa accadere.
max

z
x5
x6
x7

=
=
=
=

1
0 + 43 x1 150x2 + 50
x3 6x4
1
1
0 4 x1 +60x2 + 25 x3 9x4
1
0 21 x1 +90x2 + 50
x3 3x4
1
x3
x1 , . . . , x7 0

max

z
x1
x6
x7

=
=
=
=

7
0 3x5 +30x2 + 50
x3 33x4
4
0 4x5 +240x2 + 25 x3 36x4
3
0 +2x5 30x2 50
x3 +15x4
1
x3
x1 , . . . , x7 0

max

z
x1
x2
x7

=
=
=
=

2
0
x5
x6 + 25
x3 18x4
8
0 +12x5 8x6 25 x3 +84x4
1
1
1
0 + 15
x5 30
x6 500
x3 + 12 x4
1
x3
x1 , . . . , x7 0

81

82

Appendice A. Cycling

max

z
x3
x2
x7

=
=
=
=

+3x4
0
+2x5 3x6
14 x1
75
25
0 + 2 x5 25x6 8 x1 + 525
x4
2
1
1
1
1
0 120 x5 60 x6 + 160 x1 40 x4
1 125
x5 +25x6 + 25
x 525
x4
2
8 1
2
x1 , . . . , x7 0

max

z
x3
x4
x7

=
=
=
=

0
+x5
x6
+ 21 x1
120x2
125
0 50x5 +150x6 + 2 x1 10500x2
0 31 x5
+ 23 x6
+ 41 x1
40x2
125
1 +50x5 150x6 2 x1 +10500x2
x1 , . . . , x7 0

max

z
x5
x4
x7

=
=
=
=

1
0 50
x3 +2x6 + 47 x1 330x2
1
0 50
x3 +3x6 + 45 x1 210x2
1
x3 13 x6 61 x1 +30x2
0 + 150
1
x3
x1 , . . . , x7 0

La prossima base `e quella iniziale. Il fenomeno in pratica `e raro, e difficilmente


compromette davvero la convergenza: se le scelte delle variabili entranti uscenti sono,
a parit`a di condizioni sui costi ridotti e rapporti minimi, effettivamente casuali, `e
improbabile che lalgoritmo rimanga intrappolato nel ciclo per un tempo prolungato.
Tuttavia esistono rimedi sufficientemente semplici per prevenire tale eventualit`a e
garantire la convergenza anche a livello teorico.

A.2

Regola anticiclo di Bland

Si vuole dimostrare la validit`a della


Regola di Bland. La variabile entrante in base xq `e la variabile di indice pi`
u
piccolo tra quelle con costo ridotto strettamente positivo.

x (B)
Se pi`
u variabili presentano rapporto minimo jyj
la variabile uscente xp `e
yj <0

tra queste quella con indice minimo.

Questa regola `e lespediente pi`


u semplice tuttora noto per garantire che non si
verifichi il fenomeno del cycling cio`e la ripetizione indefinita di una stessa sequenza
di basi degeneri
Teorema A.1. Se lalgoritmo del simplesso `e applicato utilizzando la regola di
Bland, non `e possibile che si verifichi il cycling.
Dimostrazione. Si supponga per assurdo che si verifichi un ciclo del tipo (A.1) pur
applicando la regola di Bland. Le variabili del programma lineare in esame si possono
dividere in due tipi.

A.2. Regola anticiclo di Bland

83

() Variabili che entrano e successivamente escono da qualche base di S; queste


variabili quando sono in base sono necessariamente di valore nullo.
() Variabili che
(.1) non fanno parte e non entrano mai in alcuna base del ciclo S, oppure
(.2) fanno parte di tutte le basi di S, e non escono mai di base.
Si consideri la variabile di tipo () con indice pi`
u grande, xk , e senza perdita di
generalit`a si supponga xk
/ Bs , xk B1 cio`e, xk `e la variabile entrante nella
riformulazione rispetto a Bs . Perche il ciclo si verifichi, la variabile xk dovr`a necessariamente uscire poi di base prima della successiva Bs ; si supponga quindi xk Bp1 ,
e xk
/ Bp , per 1 < p < s cio`e nella riformulazione rispetto a Bp1 la variabile xk
`e selezionata come uscente, a fronte di una certa xt (anchessa di tipo ) entrante.

Nel seguito, siano per brevit`a Bs = B, Bp1 = B.


Detti rj = cj cTB A1
B Aj i costi ridotti delle variabili fuori base rispetto a B, la
pendenza della funzione obiettivo lungo un qualunque vettore y che soddisfa Ay = 0
si esprime come
cT y = cTB yB + cTN yN =

(yB = A1
B AN yN )

T
= cTB A1
B AN yN + cN yN =

= (cTN cTB A1
B AN )yN =
X
=
rj y j =

(A.2)

j : xj B
/

n
X

rj y j .

j=1

Nellultimo passaggio si `e definito rj = 0 se xj B. Si noti che:


(i) tutte le direzioni y generate dal simplesso per i cambi di base soddisfano
lequazione (A.2) con cT y > 0;
(ii) per la regola di Bland, poiche xk `e entrante in B deve risultare r1 , r2 , . . . , rk1
0, rk > 0.
la direzione generata dal simplesso in corrispondenza del cambio di base
Sia ora y
\ {xk }) {xt }. Deve risultare yt = 1 per come il simplesso costruisce
Bp = (B
direzioni ammissibili, e inoltre
(A.3)

= (ct cTB A1
cT y
t = rt yt > 0.
At ) y
|
{z B }
=
rt >0

Applicando la (A.2) e sotto lipotesi che si sia sempre utilizzata la regola di Bland
si pu`o per`o dimostrare che
(A.4)

=
c y

n
X
j=1

rj yj 0.

84

Appendice A. Cycling
` sufficiente dimostrare che tutti i termini rj yj della somma
Dimostrazione di (A.4). E
in (A.4) sono 0. Si ricordi che gli rj sono i costi ridotti calcolati rispetto alla base
B. Preso un qualunque indice j {1, 2, . . . , n}, questo `e lindice di una variabile xj
che pu`o essere di tipo o .
oppure xj

() Se xj `e di tipo , allora pu`o risultare xj B


/ B.
Se j = k, questo `e lindice della variabile xk che lascia la base B.
Allora
xj B.
per la regola di Bland rk > 0. La componente yk `e < 0 perche xk lascia
la base, quindi yk < 0. Perci`o rk rk < 0.
Se invece j 6= k, necessariamente j < k (xk `e la variabile- con indice
massimo). Allora rj 0, poiche si `e applicata la regola di Bland alla
base B. Inoltre yj 0: se cos` non fosse, la variabile xj produrrebbe

x (B)
= y0j = 0, e per la regola di Bland
un rapporto minimo jyj
yj <0

verrebbe selezionata come variabile uscente al posto di k. Quindi deve


essere yj 0, che con rj 0 implica rj yj 0.

Si pu`o avere j = t (xy `e la variabile entrante) oppure j 6= t. In ogni caso


xj
/ B.
j < k, quindi rj 0.
ha per costruzione yt = 1, quindi rt yt < 0.
Se j = t, la direzione y
una variabile fuori base che rimane fuori base
Se j 6= t, xj `e rispetto a B
presenta yj = 0. Allora
alla prossima iterazione, quindi la direzione y
rj yj = 0.
() Se xj `e di tipo , o non fa parte di alcuna base del ciclo (e quindi ne di B, ne
oppure fa parte di tutte le basi (e quindi sia di B che di B).

di B),

Se xj
/ B, essa `e fuori base e vi rimane, quindi yj = 0, e allora rj yj = 0.
si ha anche xj B e quindi rj = 0: allora rj yj = 0.
Se xj B,
Conclusione. Sotto le ipotesi che si verifichi cycling e che si usi la regola di Bland
in tutte le iterazioni, vale la (A.4), mentre per come `e specificato lalgoritmo del
simplesso deve valere la (A.3): contraddizione.