Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
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.
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.
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)
soggetto a
(1.2)
(1.3)
bi
gi (x) = bi
bi
i = 1, . . . , m,
x = (x1 , . . . , xn ) X Rn .
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
1.4
Prodotto
Panini imbottiti
Acqua minerale
Pacchi di biscotti
Punti
20
20
8
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
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)
x3 150
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)
(1.14)
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
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)
(1.16)
(1.17)
3
X
cij xij y
100000
150000
50000
75000
j = 1, . . . , 4
i=1
xij Z+ , i, j,
y0
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
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
(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).
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
min 1 + 2 + 3 + 4 + 5
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 .
14
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
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
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
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
16
soggetto a
(1.34)
(1.35)
y1 + y2 + y3 1
(1.36)
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
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
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.
WA 2500,
WA = 0.
Infine, i vincoli (1.39) impongono il soddisfacimento delle potenze minime per il giorno e
per la notte.
18
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
n
X
cj xj
j=1
j=1
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
20
xij = 1 i 1, . . . , m
j=1
xij 1 j 1, . . . , n
j=1
m X
n
X
cij xij
i=1 j=1
k<i
j>i
21
1
0
se j F
se j
/F
n
X
cj xj
j=1
22
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+
.
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
23
24
r = 1, . . . , m 1, j
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) {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
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),
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
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
28
Capitolo 2
Programmazione lineare
2.1
f (x ) = max{z = f (x) : x Sa }
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)
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 )
29
30
(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)
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
3 = {x R : x1 0},
4 = {x R : x2 0}.
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
2
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
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
33
soggetto a
(2.4b)
(2.4c)
i = 1, . . . , m
A=
. . . . . . . . . . . . . . . . . . . .
am1 am2 . . . amn
b1
b2
b = .. ,
.
bm
34
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.
35
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.
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
aij xj = bi
j=1
aij xj bi ,
j=1
n
X
aij xj bi .
j=1
Ottimalit`
a di una soluzione ammissibile.
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 .
37
2.2
38
=0
xj
yj
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
(xj + yj )Aj = b
j=1
k
X
(xj yj )Aj = b
j=1
40
2.3
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 .
41
(2.8)
T
T
1
= cTB A1
B b + (cN cB AB AN )xN =
def
= z(B) + rT (B)xN
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
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
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
43
2.4
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.
yB = A1
B AN yN
(2.11)
(2.12)
T
(cTN cTB A1
B AN )yN = r (B)yN > 0
yN 0.
44
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
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
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.
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) +.
+
45
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:
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
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
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
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
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
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
2x1 + 3x2 6
3x1 4x2 7
x1
4
x1 , x2 0
x1
x1 , . . . , x5 0
=6
=7
+x5 = 4
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 }.
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+
x2
3
2
1
1
1
x1
2.5
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
2.5.1
(2.14)
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.
m
X
si : Ax + Is = b, x 0, s 0}.
i=1
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 }.
=
=
=
=
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 }.
=
=
=
=
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
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
x1 +x2 x3 +s1 = 3
x1 2x2 + x4 +s2 = 2
x2 x5 +s3 = 1
.x1 , . . . , x5 , s1 , s2 , s3 0
=
=
=
=
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
=
=
=
=
6 2x4 +3x5
1
+x5
4 x4 +2x5
2 x4 +3x5
x1 , . . . , x5 0.
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
54
=
=
=
=
=
=
=
=
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 }.
=
=
=
=
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).
55
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
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
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
max{z = cT x : Ax = b, x 0}
(A Rmn , . . . )
min{w = uT b : uT A cT }
min{w = uT b : uT A vT = cT , v 0}
58
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
u1 +3u2 1
2u1 +u2 1
u1
0
u2 0.
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
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.
bT
max z =cT y
soggetto a Ay= b
y 0.
max z =cT y
soggetto a A
y= b
0,
y
che a meno dei nomi delle variabili coincide con il programma (P).
60
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.
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
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)
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
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.
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.
63
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 :
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
u
ATB
ATN
vB
IB
0
vN
u
0
vB = c..
IN
vN
64
u
ATB
ATN
vN
0
,
IN
3.2.4
Dualit`
a forte. Vale il seguente
vB = 0
1
u(B ), v(B ) :
uT = cT
B AB
vN = rN (B ) 0
(per lottimalit`a di 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.
65
(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
per ogni j = 1, . . . , n.
7
8
+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
+u2 3
2u2 1
u1
0
u2 0
=2
u1
u1
+u2 v2
2u2 v3
=3
= 1
u1
v4
u2 v5
=0
=0
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
3.3
Simplesso duale
1
1
xB =
AB b AB AN xN
xp =
+
j xj
...............
xj N
67
x2
4
3
2
1
OPT(1, 32 )
x1
3
4
b
1
1
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
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
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
<0
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
Esempio 3.6.
B5
2
u1
70
(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
=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
(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
72
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.2
max{z = f (x) : x Sa }
max{w = g(x) : x Ta }
Ta Sa
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 .
11
3x1 , x2 Z+ .
3x1 + 5x2
x1 + 2x2
x2
4
3
x
2
1
1
1
x1
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
max{z = cT x : Ax = b, xk xk , x Zn+ },
P2 :
max{z = cT x : Ax = b, xk xk , x Zn+ }.
75
P
x1 0
x1 1
P1
P2
x2 1
P3
x2 2
P4
(P1 )
(P2 )
z = 3,
z =
21
.
5
76
(P3 )
(P4 )
4.3. Implementazione
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
77
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
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 )
(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.
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.
= 3 2x5 x4
= 0 x5
= 32 21 x5 12 x4
= 27
+x5 52 x4
x1 , . . . , x5 0,
(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
(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
= 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
S = . . . , B1 , B2 , . . . , Bs , B1 , B2 , . . . , Bs , B1 , . . .
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
A.2
83
(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
= (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
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.